From aa6972a5d052d1f57dfda3dadb79fcd5d8ded30b Mon Sep 17 00:00:00 2001 From: aldrikboy Date: Wed, 17 Jan 2018 21:11:18 +0100 Subject: optimization --- Penguloon/Levels/LevelBase.cs | 41 ++++++++++++----------------------------- 1 file changed, 12 insertions(+), 29 deletions(-) (limited to 'Penguloon/Levels/LevelBase.cs') diff --git a/Penguloon/Levels/LevelBase.cs b/Penguloon/Levels/LevelBase.cs index a9340b2..f2d8234 100644 --- a/Penguloon/Levels/LevelBase.cs +++ b/Penguloon/Levels/LevelBase.cs @@ -121,7 +121,7 @@ namespace Penguloon.Levels Rectangle rangeCircleRec = new Rectangle(tilePos.X - ((rangeWidth - objWidth) / 2), tilePos.Y - ((rangeHeight - objHeight) / 2), rangeWidth, rangeHeight); if (obj.RangeCircle == null) - obj.RangeCircle = obj.CreateCircle((int)obj.Range * 2); + obj.RangeCircle = ContentManager.GetTexture("UI/circle"); if (obj.RangeCircle != null) Map.ParentScene.Main.SpriteBatch.Draw(obj.RangeCircle, @@ -228,45 +228,28 @@ namespace Penguloon.Levels int tileX = (int)touchLocations[i].Position.X / Map.TileWidth; int tileY = (int)touchLocations[i].Position.Y / Map.TileHeight; - if (Map.TileMap[tileY, tileX].Direction != Direction.None) - { - ParentScene.ObjectSeletor.State = Controls.State.Idle; - ParentScene.ObjectSeletor.SelectedObjectIndex = -1; - return; - } - int posToSpawnX = tileX * Map.TileWidth; int posToSpawnY = tileY * Map.TileHeight; - List spawnPosToCheck = new List(); - for(int x = 0; x < ParentScene.ObjectSeletor.Objects[ParentScene.ObjectSeletor.SelectedObjectIndex].Item1.TileSpanX; x++) - { - for (int y = 0; y < ParentScene.ObjectSeletor.Objects[ParentScene.ObjectSeletor.SelectedObjectIndex].Item1.TileSpanY; y++) - { - spawnPosToCheck.Add(new Vector2(posToSpawnX + (Map.TileWidth * x), posToSpawnY + (Map.TileHeight * y))); - } - } + Rectangle objectToPlaceRect = new Rectangle(posToSpawnX, posToSpawnY, + ParentScene.ObjectSeletor.Objects[ParentScene.ObjectSeletor.SelectedObjectIndex].Item1.TileSpanX * Map.TileWidth, + ParentScene.ObjectSeletor.Objects[ParentScene.ObjectSeletor.SelectedObjectIndex].Item1.TileSpanY * Map.TileHeight); // check if there isnt an object already for (int x = 0; x < Map.Objects.Count; x++) { - for (int px = 0; px < Map.Objects[x].TileSpanX; px++) + Rectangle objRec = new Rectangle((int)Map.Objects[x].Position.X, (int)Map.Objects[x].Position.Y, + Map.Objects[x].TileSpanX * Map.TileWidth, Map.Objects[x].TileSpanY * Map.TileHeight); + + if (objRec.Intersects(objectToPlaceRect)) { - for (int py = 0; py < Map.Objects[x].TileSpanY; py++) - { - Vector2 posToCheck = Map.Objects[x].Position + new Vector2(px * Map.TileWidth, py * Map.TileHeight); - - for (int t = 0; t < spawnPosToCheck.Count; t++) - if (posToCheck == spawnPosToCheck[t]) - { - ParentScene.ObjectSeletor.State = Controls.State.Idle; - ParentScene.ObjectSeletor.SelectedObjectIndex = -1; - return; - } - } + ParentScene.ObjectSeletor.State = Controls.State.Idle; + ParentScene.ObjectSeletor.SelectedObjectIndex = -1; + return; } } + // check if it isnt touching any walkable tiles for (int px = 0; px < ParentScene.ObjectSeletor.Objects[ParentScene.ObjectSeletor.SelectedObjectIndex].Item1.TileSpanX; px++) { -- cgit v1.2.3-70-g09d2