public void RemoveEntity(int p_x, int p_z) { foreach (Script_IEntity entity in _entityList.ToList()) { if (entity is Script_TradingPost) { int x = entity.GetGridPosition().x; int z = entity.GetGridPosition().z; if (x == p_x && z == p_z) { _tradingPost = null; _entityList.Remove(entity); entity.Destruction(); } } if (entity is Script_StarChaser) { int x = entity.GetGridPosition().x; int z = entity.GetGridPosition().z; if (x == p_x && z == p_z) { _chaser = null; _entityList.Remove(entity); entity.Destruction(); } } if (entity is Script_SpaceShip) { int x = entity.GetGridPosition().x; int z = entity.GetGridPosition().z; if (x == p_x && z == p_z) { _spaceShip = null; _entityList.Remove(entity); entity.Destruction(); } } if (entity is Script_FallenStar) { int x = entity.GetGridPosition().x; int z = entity.GetGridPosition().z; if (x == p_x && z == p_z) { _fallenStar = null; _entityList.Remove(entity); entity.Destruction(); } } } }
void InstantiateEntityAtRandomLocation <T> () where T : Script_IEntity { //While this does not have a 100% chance of success, seeing as there is a very small chance of not having any walkable tiles, //and we could also be randoming at positions that aren't walkable until we've tried 64 times, i deem it enough. //if this fails, we will have to place them on our own. int randomWalkablePositionX = Random.Range(0, width); int randomWalkablePositionZ = Random.Range(0, height); int attemptsToSpawn = 64; int currentAttempts = 0; while (_grid.AccessGridTile(randomWalkablePositionX, randomWalkablePositionZ).GetWalkable() == false || currentAttempts < attemptsToSpawn) { randomWalkablePositionX = Random.Range(0, width); randomWalkablePositionZ = Random.Range(0, height); currentAttempts++; } if (_grid.AccessGridTile(randomWalkablePositionX, randomWalkablePositionZ).GetWalkable() == true) { Vector3Int spawnLocation = new Vector3Int(randomWalkablePositionX, 0, randomWalkablePositionZ); if (typeof(T) == typeof(Script_StarChaser)) { _chaser = new Script_StarChaser(this, _grid, spawnLocation); _entityList.Add(_chaser as Script_IEntity); } if (typeof(T) == typeof(Script_TradingPost)) { _tradingPost = new Script_TradingPost(this, _grid, spawnLocation); _entityList.Add(_tradingPost as Script_IEntity); } if (typeof(T) == typeof(Script_FallenStar)) { _fallenStar = new Script_FallenStar(this, _grid, spawnLocation); _entityList.Add(_fallenStar as Script_IEntity); } if (typeof(T) == typeof(Script_SpaceShip)) { _spaceShip = new Script_SpaceShip(this, _grid, spawnLocation); _entityList.Add(_spaceShip as Script_IEntity); } } }
public Script_StateRest(Script_Grid p_grid, Script_GameManager p_manager, Script_StarChaser p_creator) { _pathObjectScale = new Vector3(0.1f, 0.1f, 0.1f); _pathObjectColor = Color.yellow; _pathObjectString = "PathObject"; _manager = p_manager; _pathObjects = new List <GameObject> (); _pathObjectsMaterials = new List <Material> (); _pathfinding = new Script_AStar(p_grid); _gridPosition = p_creator.GetGridPosition(); _pathList = new List <Script_Node> (); _grid = p_grid; _pathfinding = new Script_AStar(_grid); _creator = p_creator; _nextState = StateIDs.DOINGNOTHING; }
public Script_StateDoNothing(Script_GameManager p_manager, Script_StarChaser p_creator) { _creator = p_creator; _manager = p_manager; _nextState = StateIDs.DOINGNOTHING; }
public void PlaceEntity <T> (int p_x, int p_z) where T : Script_IEntity { if (typeof(T) == typeof(Script_TradingPost)) { bool alreadyExists = false; foreach (Script_IEntity entity in _entityList.ToList()) { if (entity is Script_TradingPost) { entity.Destruction(); _entityList.Remove(entity); Vector3Int position = new Vector3Int(p_x, 0, p_z); _tradingPost = new Script_TradingPost(this, _grid, position); _entityList.Add(_tradingPost); alreadyExists = true; break; } } if (!alreadyExists) { Vector3Int position = new Vector3Int(p_x, 0, p_z); _tradingPost = new Script_TradingPost(this, _grid, position); _entityList.Add(_tradingPost); } } if (typeof(T) == typeof(Script_StarChaser)) { bool alreadyExists = false; foreach (Script_IEntity entity in _entityList.ToList()) { if (entity is Script_StarChaser) { entity.Destruction(); _entityList.Remove(entity); Vector3Int position = new Vector3Int(p_x, 0, p_z); _chaser = new Script_StarChaser(this, _grid, position); _entityList.Add(_chaser); alreadyExists = true; break; } } if (!alreadyExists) { Vector3Int position = new Vector3Int(p_x, 0, p_z); _chaser = new Script_StarChaser(this, _grid, position); _entityList.Add(_chaser); } } if (typeof(T) == typeof(Script_FallenStar)) { bool alreadyExists = false; foreach (Script_IEntity entity in _entityList.ToList()) { if (entity is Script_FallenStar) { entity.Destruction(); _entityList.Remove(entity); Vector3Int position = new Vector3Int(p_x, 0, p_z); _fallenStar = new Script_FallenStar(this, _grid, position); _entityList.Add(_fallenStar); alreadyExists = true; break; } } if (!alreadyExists) { Vector3Int position = new Vector3Int(p_x, 0, p_z); _fallenStar = new Script_FallenStar(this, _grid, position); _entityList.Add(_fallenStar); } } if (typeof(T) == typeof(Script_SpaceShip)) { bool alreadyExists = false; foreach (Script_IEntity entity in _entityList.ToList()) { if (entity is Script_SpaceShip) { entity.Destruction(); _entityList.Remove(entity); Vector3Int position = new Vector3Int(p_x, 0, p_z); _spaceShip = new Script_SpaceShip(this, _grid, position); _entityList.Add(_spaceShip); alreadyExists = true; break; } } if (!alreadyExists) { Vector3Int position = new Vector3Int(p_x, 0, p_z); _spaceShip = new Script_SpaceShip(this, _grid, position); _entityList.Add(_spaceShip); } } }