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); } }
private void OnCrossButtonPointerUp() { FoodRemoved?.Invoke(this.activeFoodSlot.Type); }
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); } }