Example #1
0
    /// <summary>
    /// Tries  to eat the target, doesn't matter if it is not actually edible.
    /// </summary>
    private void TryEatTarget(Vector3Int checkPos)
    {
        if (hasFoodPrefereces)
        {
            var food = registerObj.Matrix.Get <ItemAttributesV2>(checkPos, true).FirstOrDefault(IsInFoodPreferences);

            if (food == null)
            {
                return;
            }

            // Send the sound to all nearby clients
            SoundManager.PlayNetworkedAtPos("EatFood", transform.position, null, false, false, gameObject);

            Despawn.ServerSingle(food.gameObject);
            FoodEatenEvent?.Invoke();
        }
        else
        {
            var food = registerObj.Matrix.GetFirst <Edible>(checkPos, true);

            if (food != null)
            {
                food.TryConsume(gameObject);
            }
        }
    }
Example #2
0
        public void HandleEvent(FoodEatenEvent e)
        {
            Snake.Extend();

            if (Board.IsEntityOutOfBounds(Snake.Parts[Snake.Parts.Count - 1]))
            {
                NotifyObservers(new SnakeDyingEvent());
            }
        }