Exemple #1
0
    public void RemoveTail()
    {
        bool Forged = false;

        if (Dying)
        {
            GameAssets.Sound.Explosion.Play();
        }
        if (Bodies.Last.Value.Engorged)
        {
            switch (Bodies.Last.Value.Digestion)
            {
            case SnakeBody.FoodType.Food:
                if (Tier + 1 <= 4)
                {
                    GameController.PlaceEgg(Bodies.Last.Value.Position, Tier + 1);
                }
                else
                {
                    GameController.PlaceWall(Bodies.Last.Value.Position);
                }
                break;

            case SnakeBody.FoodType.Egg:
                if (IsPlayer)
                {
                    ForgeSnake(Bodies.Last.Value.FoodTier);
                    Forged = true;
                }
                else
                {
                    GameController.PlaceEgg(Bodies.Last.Value.Position, Bodies.Last.Value.FoodTier);
                }
                break;

            case SnakeBody.FoodType.None:
                Debug.LogError("Body was engorged with no food type.");
                break;

            default:
                Debug.LogError("No recognized food type: " + Bodies.Last.Value.Digestion);
                break;
            }
        }
        else
        {
            if (Dying)
            {
                GameController.PlaceEgg(Bodies.Last.Value.Position, IsPlayer ? Tier + 1 : Tier);
            }
            else
            {
                GameController.CollisionMap[Bodies.Last.Value.Position.y, Bodies.Last.Value.Position.x] = false;
            }
        }

        if (ForgingSnake != null && !Forged)
        {
            DeforgeSnake();
        }

        Bodies.RemoveLast();
    }