/// <summary> /// Occurs when food changed /// </summary> /// <param name="food"></param> protected virtual void OnFoodAdded(IFood food) { if (foodQueue.Count == 1) { ResetFoodEvents(); RestartFoodEvents(); } FoodAdded?.Invoke(this, food); }
protected override void Update() { if (!IsActivated || !GameManager.Instance.hasGameStarted) { return; } base.Update(); if (moneyAndFoodTimer.Check(Time.deltaTime)) { MoneyAdded.Invoke(moneyIncrement); if (isFood) { FoodAdded.Invoke(foodIncrement); } } }
private void GenerateFood(int amount) { Random rand = new Random(); List <Food> newFood = new List <Food>(); for (int i = 0; i < amount; i++) { Point newFoodPoint = GetRandomPointInRoom(); Food newFoodItem = new Food(newFoodPoint); newFood.Add(newFoodItem); int cellX = Math.Min((int)(newFoodItem.Position.X / Cell.WIDTH), cells.Count); int cellY = Math.Min((int)(newFoodItem.Position.Y / Cell.HEIGHT), cells.Count); cells[cellX][cellY].AddFood(newFoodItem); } food.AddRange(newFood); FoodAdded foodAddedGameEvent = new FoodAdded(newFood); OnGameEventOccured?.Invoke(this, new GameEventOccuredEventArgs(foodAddedGameEvent)); }
public static void HandlePackage(byte[] package, int playerId = -1) { try { IncomingGameEvent gameEvent; Debug.Log((IncomingGameEventTypes)package[0]); switch ((IncomingGameEventTypes)package[0]) { case IncomingGameEventTypes.CirclesFrameUpdate: gameEvent = new CirclesFrameUpdate(package); break; case IncomingGameEventTypes.RoundStarted: gameEvent = new RoundStarted(package); break; case IncomingGameEventTypes.PlayerAdded: gameEvent = new PlayerAdded(package); break; case IncomingGameEventTypes.PlayerDied: gameEvent = new PlayerDied(package); break; case IncomingGameEventTypes.RoundOver: gameEvent = new RoundOver(package); break; case IncomingGameEventTypes.CirclesAdded: gameEvent = new CirclesAdded(package); break; case IncomingGameEventTypes.CirclesRemoved: gameEvent = new CirclesRemoved(package); break; case IncomingGameEventTypes.FoodAdded: gameEvent = new FoodAdded(package); break; case IncomingGameEventTypes.FoodRemoved: gameEvent = new FoodRemoved(package); break; case IncomingGameEventTypes.PlayerLeft: gameEvent = new PlayerLeft(package); break; default: throw new Exception(String.Format("Incorrect package type: {0}", (IncomingGameEventTypes)package[0])); break; } GameManager.Instance.GameEvents.Enqueue(gameEvent); } catch (Exception e) { Debug.LogError(e.Message); } }