public bool addRegion(Region.Region _Region, bool _Loaded) { if (!containsRegion(_Region.Id)) { this.regions.Add(_Region); _Region.setNeighbours(); if (_Loaded) { } else { _Region.createRegion(); if (GameLibrary.Configuration.Configuration.isHost || Configuration.Configuration.isSinglePlayer) { this.saveRegion(_Region); } else { } } return(false); } else { Logger.Logger.LogErr("World->addRegion(...) : Region mit Id: " + _Region.Id + " schon vorhanden!"); return(false); } }
public Chunk.Chunk createChunkAt(Vector3 _Position) { Region.Region var_Region = this.getRegionAtPosition(_Position); if (var_Region != null) { return(var_Region.createChunkAt(_Position)); } return(null); }
public bool removeChunk(Chunk.Chunk _Chunk) { Region.Region var_Region = this.getRegionAtPosition(_Chunk.Position); if (var_Region != null) { return(var_Region.removeChunk(_Chunk)); } return(false); }
public Block.Block getBlockAtCoordinate(Vector3 _Position) { Region.Region var_Region = this.getRegionAtPosition(_Position); if (var_Region != null) { return(var_Region.getBlockAtCoordinate(_Position)); } return(null); }
public bool setBlockAtCoordinate(Vector3 _Position, Block.Block _Block) { Region.Region var_Region = this.getRegionAtPosition(_Position); if (var_Region != null) { return(var_Region.setBlockAtCoordinate(_Position, _Block)); } return(false); }
public Object.Object addPreEnvironmentObject(Object.Object _Object) { Dimension.Dimension var_Dimension = this.getDimensionById(_Object.DimensionId); Region.Region var_Region = var_Dimension.getRegionObjectIsIn(_Object); if (var_Dimension != null) { return(var_Dimension.addPreEnvironmentObject(_Object, var_Region)); } return(null); }
private Region.Region loadRegion(Vector3 _Position) { String var_Path = "Save/" + this.Id + "/" + _Position.X + "_" + _Position.Y + "/RegionInfo.sav"; if (System.IO.File.Exists(var_Path)) { Region.Region var_Region = (Region.Region)Utility.IO.IOManager.LoadISerializeAbleObjectFromFile(var_Path); var_Region.Parent = this; return(var_Region); } return(null); }
private void saveRegion(Region.Region _Region) { String var_Path = "Save/" + this.Id + "/" + _Region.Position.X + "_" + _Region.Position.Y + "/RegionInfo.sav"; Utility.IO.IOManager.SaveISerializeAbleObjectToFile(var_Path, _Region); for (int i = 0; i < _Region.Chunks.Length; i++) { if (_Region.Chunks[i] != null) { _Region.saveChunk(_Region.Chunks[i]); } } }
public Region.Region createRegionAt(Vector3 _Position) { _Position = Region.Region.parsePosition(_Position); Region.Region var_Region = this.loadRegion(_Position); if (var_Region == null) { int var_RegionType = 0;//Utility.Random.Random.GenerateGoodRandomNumber(0, Enum.GetValues(typeof(RegionEnum)).Length - 1); var_Region = GameLibrary.Factory.RegionFactory.generateRegion("Region", (int)_Position.X, (int)_Position.Y, (RegionEnum)var_RegionType, this); this.addRegion(var_Region); } else { this.addRegion(var_Region, true); } return(var_Region); }
public Chunk(String _Name, int _PosX, int _PosY, Region.Region _ParentRegion) : base() { this.Name = _Name; this.Position = new Vector3(_PosX, _PosY, 0); this.Size = new Vector3(chunkSizeX, chunkSizeY, 0); this.blocks = new Block.Block[chunkSizeX * chunkSizeY]; this.pathEntries = new List <Vector3>(); this.Parent = _ParentRegion; if (Configuration.Configuration.isHost || Configuration.Configuration.isSinglePlayer) { } else { this.requestFromServer(); } }
public Object.Object addPreEnvironmentObject(Object.Object _Object, Region.Region _Region) { if (_Region != null) { Chunk.Chunk chunk = _Region.getChunkAtPosition(_Object.Position); if (chunk != null) { Block.Block var_Block = chunk.getBlockAtCoordinate(_Object.Position); if (var_Block != null) { var_Block.addPreEnvironmentObject(_Object); if (Configuration.Configuration.isHost) { Configuration.Configuration.networkManager.addEvent(new GameLibrary.Connection.Message.UpdatePreEnvironmentObjectMessage(_Object), GameMessageImportance.VeryImportant); } } } } else { Logger.Logger.LogInfo("World.addObject: Object konnte der Region nicht hinzugefügt werden, da diese null war"); } return(_Object); }
public Object.Object addObject(Object.Object _Object, Boolean insertInQuadTree) { Dimension.Dimension var_Dimension = this.getDimensionById(_Object.DimensionId); Region.Region var_Region = var_Dimension.getRegionObjectIsIn(_Object); return(addObject(_Object, insertInQuadTree, var_Region)); }
public Object.Object addObject(Object.Object _Object, Boolean _InsertInQuadTree) { Region.Region var_Region = this.getRegionObjectIsIn(_Object); return(addObject(_Object, _InsertInQuadTree, var_Region)); }
public void updatePlayerObjectNeighborhood(GameTime _GameTime, Object.PlayerObject _PlayerObject) { List <Chunk.Chunk> var_ChunksInRange = new List <Chunk.Chunk>(); foreach (Chunk.Chunk var_Chunk in this.chunksOutOfRange) { if (Vector3.Distance(var_Chunk.Position, new Vector3(_PlayerObject.Position.X, _PlayerObject.Position.Y, 0)) <= (Setting.Setting.blockDrawRange * Block.Block.BlockSize)) { var_ChunksInRange.Add(var_Chunk); } } foreach (Chunk.Chunk var_Chunk in var_ChunksInRange) { this.chunksOutOfRange.Remove(var_Chunk); } if (_PlayerObject != null) { Vector3 var_PlayerPos = _PlayerObject.Position; if (_PlayerObject.CurrentBlock != null) { var_PlayerPos = _PlayerObject.CurrentBlock.Position; } int var_DrawSizeX = Setting.Setting.blockDrawRange; int var_DrawSizeY = Setting.Setting.blockDrawRange; for (int x = 0; x < var_DrawSizeX; x++) { for (int y = 0; y < var_DrawSizeY; y++) { Vector3 var_Position = new Vector3(var_PlayerPos.X + (-var_DrawSizeX / 2 + x) * Block.Block.BlockSize, var_PlayerPos.Y + (-var_DrawSizeY / 2 + y) * Block.Block.BlockSize, 0); Block.Block var_Block = this.getBlockAtCoordinate(var_Position); if (var_Block != null) { var_Block.update(_GameTime); } else { Region.Region var_Region = this.getRegionAtPosition(var_Position); if (var_Region == null) { var_Region = this.createRegionAt(var_Position); } else { Chunk.Chunk var_Chunk = this.getChunkAtPosition(var_Position); if (var_Chunk == null) { var_Chunk = this.createChunkAt(var_Position); } } } } } } List <Object.Object> var_Objects = this.getObjectsInRange(_PlayerObject.Position, 600); foreach (Object.Object var_Object in var_Objects) { if (!this.objectsToUpdate.Contains(var_Object)) { this.objectsToUpdate.Add(var_Object); } } }
public bool addRegion(Region.Region _Region) { return(this.addRegion(_Region, false)); }
public bool containsRegion(Region.Region _Region) { return(containsRegion(_Region.Id)); }
public Object.Object addObject(Object.Object _Object, Boolean _InsertInQuadTree, Region.Region _Region) { Dimension.Dimension var_Dimension = this.getDimensionById(_Object.DimensionId); if (var_Dimension != null) { return(var_Dimension.addObject(_Object, _InsertInQuadTree, _Region)); } return(null); }