BackgroundCreatureManager and BackgroundSpriteManager can be overridden via Content packages
Changed "topshaft"
This commit is contained in:
@@ -16,23 +16,37 @@ namespace Barotrauma
|
|||||||
|
|
||||||
float checkActiveTimer;
|
float checkActiveTimer;
|
||||||
|
|
||||||
private List<BackgroundCreaturePrefab> prefabs;
|
private List<BackgroundCreaturePrefab> prefabs = new List<BackgroundCreaturePrefab>();
|
||||||
private List<BackgroundCreature> activeSprites;
|
private List<BackgroundCreature> activeSprites = new List<BackgroundCreature>();
|
||||||
|
|
||||||
public BackgroundCreatureManager(string configPath)
|
public BackgroundCreatureManager(string configPath)
|
||||||
{
|
{
|
||||||
activeSprites = new List<BackgroundCreature>();
|
LoadConfig(configPath);
|
||||||
prefabs = new List<BackgroundCreaturePrefab>();
|
}
|
||||||
|
public BackgroundCreatureManager(List<string> files)
|
||||||
XDocument doc = ToolBox.TryLoadXml(configPath);
|
{
|
||||||
if (doc == null || doc.Root == null) return;
|
foreach(var file in files)
|
||||||
|
|
||||||
foreach (XElement element in doc.Root.Elements())
|
|
||||||
{
|
{
|
||||||
prefabs.Add(new BackgroundCreaturePrefab(element));
|
LoadConfig(file);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
private void LoadConfig(string configPath)
|
||||||
|
{
|
||||||
|
try
|
||||||
|
{
|
||||||
|
XDocument doc = ToolBox.TryLoadXml(configPath);
|
||||||
|
if (doc == null || doc.Root == null) return;
|
||||||
|
|
||||||
|
foreach (XElement element in doc.Root.Elements())
|
||||||
|
{
|
||||||
|
prefabs.Add(new BackgroundCreaturePrefab(element));
|
||||||
|
};
|
||||||
|
}
|
||||||
|
catch (Exception e)
|
||||||
|
{
|
||||||
|
DebugConsole.ThrowError(String.Format("Failed to load BackgroundCreatures from {0}", configPath), e);
|
||||||
|
}
|
||||||
|
}
|
||||||
public void SpawnSprites(int count, Vector2? position = null)
|
public void SpawnSprites(int count, Vector2? position = null)
|
||||||
{
|
{
|
||||||
activeSprites.Clear();
|
activeSprites.Clear();
|
||||||
|
|||||||
@@ -34,25 +34,39 @@ namespace Barotrauma
|
|||||||
{
|
{
|
||||||
const int GridSize = 1000;
|
const int GridSize = 1000;
|
||||||
|
|
||||||
private List<BackgroundSpritePrefab> prefabs;
|
private List<BackgroundSpritePrefab> prefabs = new List<BackgroundSpritePrefab>();
|
||||||
//private List<BackgroundSprite> sprites;
|
|
||||||
|
|
||||||
private List<BackgroundSprite>[,] sprites;
|
private List<BackgroundSprite>[,] sprites;
|
||||||
|
|
||||||
public BackgroundSpriteManager(string configPath)
|
public BackgroundSpriteManager(string configPath)
|
||||||
{
|
{
|
||||||
//sprites = new List<BackgroundSprite>[2,2]();
|
LoadConfig(configPath);
|
||||||
prefabs = new List<BackgroundSpritePrefab>();
|
}
|
||||||
|
public BackgroundSpriteManager(List<string> files)
|
||||||
XDocument doc = ToolBox.TryLoadXml(configPath);
|
{
|
||||||
if (doc == null || doc.Root == null) return;
|
foreach (var file in files)
|
||||||
|
|
||||||
foreach (XElement element in doc.Root.Elements())
|
|
||||||
{
|
{
|
||||||
prefabs.Add(new BackgroundSpritePrefab(element));
|
LoadConfig(file);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
private void LoadConfig(string configPath)
|
||||||
|
{
|
||||||
|
try
|
||||||
|
{
|
||||||
|
XDocument doc = ToolBox.TryLoadXml(configPath);
|
||||||
|
if (doc == null || doc.Root == null) return;
|
||||||
|
|
||||||
|
foreach (XElement element in doc.Root.Elements())
|
||||||
|
{
|
||||||
|
prefabs.Add(new BackgroundSpritePrefab(element));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
catch (Exception e)
|
||||||
|
{
|
||||||
|
DebugConsole.ThrowError(String.Format("Failed to load BackgroundSprites from {0}", configPath), e);
|
||||||
|
}
|
||||||
|
}
|
||||||
public void PlaceSprites(Level level, int amount)
|
public void PlaceSprites(Level level, int amount)
|
||||||
{
|
{
|
||||||
sprites = new List<BackgroundSprite>[
|
sprites = new List<BackgroundSprite>[
|
||||||
|
|||||||
@@ -10,7 +10,7 @@ namespace Barotrauma
|
|||||||
{
|
{
|
||||||
public enum ContentType
|
public enum ContentType
|
||||||
{
|
{
|
||||||
None, Jobs, Item, Character, Structure, Executable, LocationTypes, RandomEvents, Missions
|
None, Jobs, Item, Character, Structure, Executable, LocationTypes, RandomEvents, Missions, BackgroundCreaturePrefabs, BackgroundSpritePrefabs
|
||||||
}
|
}
|
||||||
|
|
||||||
public class ContentPackage
|
public class ContentPackage
|
||||||
|
|||||||
@@ -30,7 +30,7 @@ namespace Barotrauma
|
|||||||
|
|
||||||
public LevelRenderer(Level level)
|
public LevelRenderer(Level level)
|
||||||
{
|
{
|
||||||
if (shaftTexture == null) shaftTexture = TextureLoader.FromFile("Content/Map/shaft.png");
|
if (shaftTexture == null) shaftTexture = TextureLoader.FromFile("Content/Map/iceWall.png");
|
||||||
|
|
||||||
if (background==null)
|
if (background==null)
|
||||||
{
|
{
|
||||||
@@ -50,7 +50,12 @@ namespace Barotrauma
|
|||||||
|
|
||||||
if (backgroundSpriteManager==null)
|
if (backgroundSpriteManager==null)
|
||||||
{
|
{
|
||||||
backgroundSpriteManager = new BackgroundSpriteManager("Content/BackgroundSprites/BackgroundSpritePrefabs.xml");
|
|
||||||
|
var files = GameMain.SelectedPackage.GetFilesOfType(ContentType.BackgroundSpritePrefabs);
|
||||||
|
if (files.Count > 0)
|
||||||
|
backgroundSpriteManager = new BackgroundSpriteManager(files);
|
||||||
|
else
|
||||||
|
backgroundSpriteManager = new BackgroundSpriteManager("Content/BackgroundSprites/BackgroundSpritePrefabs.xml");
|
||||||
}
|
}
|
||||||
|
|
||||||
this.level = level;
|
this.level = level;
|
||||||
@@ -173,22 +178,21 @@ namespace Barotrauma
|
|||||||
|
|
||||||
Vector2 pos = new Vector2(0.0f, -level.Size.Y);// level.EndPosition;
|
Vector2 pos = new Vector2(0.0f, -level.Size.Y);// level.EndPosition;
|
||||||
|
|
||||||
if (GameMain.GameScreen.Cam.WorldView.Y < -pos.Y - 512) return;
|
if (GameMain.GameScreen.Cam.WorldView.Y < -pos.Y - 1024) return;
|
||||||
|
|
||||||
pos.X = GameMain.GameScreen.Cam.WorldView.X -512.0f;
|
pos.X = GameMain.GameScreen.Cam.WorldView.X -1024;
|
||||||
|
|
||||||
int width = (int)(Math.Ceiling(GameMain.GameScreen.Cam.WorldView.Width / 512.0f + 2.0f) * 512.0f);
|
int width = (int)(Math.Ceiling(GameMain.GameScreen.Cam.WorldView.Width / 1024 + 4.0f) * 1024);
|
||||||
|
|
||||||
|
GUI.DrawRectangle(spriteBatch,new Rectangle((int)(MathUtils.Round(pos.X, 1024)), (int)-GameMain.GameScreen.Cam.WorldView.Y, width, (int)(GameMain.GameScreen.Cam.WorldView.Y - level.Size.Y) + 30),Color.Black, true);
|
||||||
spriteBatch.Draw(shaftTexture,
|
spriteBatch.Draw(shaftTexture,
|
||||||
new Rectangle((int)(MathUtils.Round(pos.X, 512.0f)), (int)pos.Y, width, 512),
|
new Rectangle((int)(MathUtils.Round(pos.X, 1024)), (int)pos.Y, width, 1024),
|
||||||
new Rectangle(0, 0, width, 256),
|
new Rectangle(0, 0, width, 1024),
|
||||||
level.BackgroundColor, 0.0f,
|
level.BackgroundColor, 0.0f,
|
||||||
Vector2.Zero,
|
Vector2.Zero,
|
||||||
SpriteEffects.None, 0.0f);
|
SpriteEffects.None, 0.0f);
|
||||||
|
|
||||||
GUI.DrawRectangle(spriteBatch,
|
|
||||||
new Rectangle((int)(MathUtils.Round(pos.X, 512.0f)), (int)-GameMain.GameScreen.Cam.WorldView.Y, width, (int)(GameMain.GameScreen.Cam.WorldView.Y - level.Size.Y)+10),
|
|
||||||
Color.Black, true );
|
|
||||||
|
|
||||||
//background.DrawTiled(spriteBatch,
|
//background.DrawTiled(spriteBatch,
|
||||||
// (backgroundPos.Y < 0) ? new Vector2(0.0f, -backgroundPos.Y) : Vector2.Zero,
|
// (backgroundPos.Y < 0) ? new Vector2(0.0f, -backgroundPos.Y) : Vector2.Zero,
|
||||||
@@ -199,6 +203,7 @@ namespace Barotrauma
|
|||||||
|
|
||||||
public void RenderWalls(GraphicsDevice graphicsDevice, Camera cam)
|
public void RenderWalls(GraphicsDevice graphicsDevice, Camera cam)
|
||||||
{
|
{
|
||||||
|
|
||||||
if (wallVertices == null) return;
|
if (wallVertices == null) return;
|
||||||
|
|
||||||
basicEffect.World = cam.ShaderTransform
|
basicEffect.World = cam.ShaderTransform
|
||||||
|
|||||||
@@ -34,7 +34,11 @@ namespace Barotrauma
|
|||||||
renderTargetWater = new RenderTarget2D(graphics, GameMain.GraphicsWidth, GameMain.GraphicsHeight);
|
renderTargetWater = new RenderTarget2D(graphics, GameMain.GraphicsWidth, GameMain.GraphicsHeight);
|
||||||
renderTargetAir = new RenderTarget2D(graphics, GameMain.GraphicsWidth, GameMain.GraphicsHeight);
|
renderTargetAir = new RenderTarget2D(graphics, GameMain.GraphicsWidth, GameMain.GraphicsHeight);
|
||||||
|
|
||||||
BackgroundCreatureManager = new BackgroundCreatureManager("Content/BackgroundSprites/BackgroundCreaturePrefabs.xml");
|
var files = GameMain.SelectedPackage.GetFilesOfType(ContentType.BackgroundCreaturePrefabs);
|
||||||
|
if(files.Count > 0)
|
||||||
|
BackgroundCreatureManager = new BackgroundCreatureManager(files);
|
||||||
|
else
|
||||||
|
BackgroundCreatureManager = new BackgroundCreatureManager("Content/BackgroundSprites/BackgroundCreaturePrefabs.xml");
|
||||||
|
|
||||||
#if LINUX
|
#if LINUX
|
||||||
var blurEffect = content.Load<Effect>("blurshader_opengl");
|
var blurEffect = content.Load<Effect>("blurshader_opengl");
|
||||||
|
|||||||
Reference in New Issue
Block a user