Example #1
0
 /// <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);
 }
Example #2
0
    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);
            }
        }
    }
Example #3
0
        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));
        }
Example #4
0
    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);
        }
    }