// removes GameObject from all lists depending on type public void Remove(GameObject go){ GameObjects.Remove(go); var item = go as ICollidable; if (item != null) Collidables.Remove(item); var moveable = go as IMoveable; if (moveable != null) Moveables.Remove(moveable); var renderable = go as IRenderable; if (renderable != null) Renderables.Remove(renderable); }
private void AddToList(GameObject go) { var item = go as ICollidable; if (item != null) { Collidables.Add(item); } var moveable = go as IMoveable; if (moveable != null) { Moveables.Add(moveable); } var renderable = go as IRenderable; if (renderable != null) { Renderables.Add(renderable); } }
internal bool CheckRespawnCollision(GameObject newGo, List<ICollidable> collidables){ var posList = new List<Vector2D>(); foreach (var c in collidables){ foreach (var v in ((GameObject) c).Body){ posList.Add(v); } } foreach (var v in newGo.Body){ if (posList.Contains(v)){ return false; } } return true; }
public void AddGameObject(GameObject newGo){ GameObjects.Add(newGo); AddToList(newGo); }
private void DeathListener(GameObject go){ LevelManager.Remove(go); if (go is IRespawnable){ var newGo = Activator.CreateInstance(go.GetType()); do{ SpawnManager.Spawn((GameObject) newGo, LevelManager.Width, LevelManager.Height); } while (!(CollisionManager.CheckRespawnCollision((GameObject) newGo, LevelManager.Collidables))); LevelManager.AddGameObject((GameObject) newGo); } }
internal void Spawn(GameObject newGo, int width, int height){ var r = new Random(); for (int i = 0; i < newGo.Body.Count; i++){ newGo.Body[i] = new Vector2D(r.Next(0, width), r.Next(0, height)); } }
private void DeathListener(GameObject go){ var points = go as IPointsValue; if (points != null) { ScoreManager.AddScore(points); } var respawnable = go as IRespawnable; if (respawnable != null){ var newGo = Activator.CreateInstance(respawnable.GetType()); do{ SpawnManager.Spawn((GameObject) newGo, LevelManager.Width, LevelManager.Height); } while (!(CollisionManager.CheckRespawnCollision((GameObject) newGo, LevelManager.Collidables))); if (points != null) { ((IPointsValue) newGo).Points = ((IPointsValue) go).Points; } LevelManager.AddGameObject((GameObject) newGo); } LevelManager.Remove(go); }
protected void SendDeath(GameObject go){ OnDeathListener(go); }