Esempio n. 1
0
        private void UpdateEatenObjects()
        {
            Console.BackgroundColor = ConsoleColor.Black;
            List <EatPair <Circle> > eatPairsCircles = new List <EatPair <Circle> >();
            List <EatPair <Food> >   eatPairsFood    = new List <EatPair <Food> >();

            for (int playerInd1 = 0; playerInd1 < players.Count; playerInd1++)
            {
                for (int playerInd2 = playerInd1 + 1; playerInd2 < players.Count; playerInd2++)
                {
                    eatPairsCircles.AddRange(players[playerInd1].CalculateCirclesEatPairs(players[playerInd2]));
                    eatPairsCircles.AddRange(players[playerInd2].CalculateCirclesEatPairs(players[playerInd1]));
                }

                foreach (Food foodItem in food)
                {
                    eatPairsFood.AddRange(players[playerInd1].CalculateFoodEatPairs(foodItem));
                }
            }

            if (eatPairsCircles.Count > 0)
            {
                CirclesRemoved circlesRemovedGameEvent = new CirclesRemoved(eatPairsCircles.ConvertAll <int>(eatPair => eatPair.Eaten.Id));
                OnGameEventOccured?.Invoke(this, new GameEventOccuredEventArgs(circlesRemovedGameEvent));
            }

            if (eatPairsFood.Count > 0)
            {
                FoodRemoved foodRemovedGameEvent = new FoodRemoved(eatPairsFood.ConvertAll <int>(eatPair => eatPair.Eaten.Id));
                OnGameEventOccured?.Invoke(this, new GameEventOccuredEventArgs(foodRemovedGameEvent));
            }

            foreach (EatPair <Circle> pair in eatPairsCircles)
            {
                pair.Eater.EatObject(pair.Eaten);
            }

            foreach (EatPair <Food> pair in eatPairsFood)
            {
                pair.Eater.EatObject(pair.Eaten);
                food.Remove(pair.Eaten);
            }
        }
Esempio n. 2
0
        private void OnPlayerCirclesRemoved(object sender, PlayerCirclesRemovedEventArgs eventArgs)
        {
            CirclesRemoved circlesRemovedGameEvent = new CirclesRemoved(eventArgs.NewCircles.ConvertAll(circle => circle.Id));

            OnGameEventOccured?.Invoke(this, new GameEventOccuredEventArgs(circlesRemovedGameEvent));
        }
Esempio n. 3
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);
        }
    }