Ejemplo n.º 1
0
        private void Update()
        {
            // TODO delete
            Console.WriteLine("Update");
            // TODO delete

            if (!IsGameRunning)
            {
                return;
            }

            UpdatePositions();
            UpdateEatenObjects();

            players.Sort();

            CirclesFrameUpdate positionsUpdatedGameEvent = new CirclesFrameUpdate(players);

            OnGameEventOccured?.Invoke(this, new GameEventOccuredEventArgs(positionsUpdatedGameEvent));

            GenerateFood(FOOD_AMOUNT_PER_UPDATE);

            if (IsRoundOver())
            {
                StopGame();
            }

            UpdateAllCells();

            // TODO delete
            foreach (Player player in players)
            {
                Console.WriteLine("Player {0}: ({1:0.00}; {2:0.00}) | {3}", player.Id, player.PlayerCircles[0].Position.X, player.PlayerCircles[0].Position.Y, player.PlayerCircles[0].Radius);
            }
            // TODO delete
        }
Ejemplo n.º 2
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);
        }
    }