public void Receive(IMessage message)
    {
        switch (message.GetMessageType())
        {
        case MessageType.SPAWN_NEW_FOOD:
            SpawnFood((SpawnFood)message);
            break;

        case MessageType.FOOD_EATEN:
            OtherAteFood eatenMessage = (OtherAteFood)message;
            FoodEaten(eatenMessage.foodID);
            break;

        case MessageType.ATE_FOOD:
            PlayerAteFood ateMessage = (PlayerAteFood)message;
            AteFood(ateMessage.foodID);
            break;
        }
    }
    private void OnTriggerEnter2D(Collider2D collision)
    {
        if (collision.tag == "food")
        {
            string name = collision.gameObject.name;

            int id = int.Parse(name.Split(' ')[1]);

            PlayerAteFood ateFood = new PlayerAteFood(id);
            MessageSystem.instance.DispatchMessage(ateFood);
        }
        if (collision.tag == "segment")
        {
            if (collision.gameObject.transform.parent.tag == "otherPlayer")
            {
                if (cantHitOtherSnake)
                {
                    return;
                }
                DisableColliderTemp();

                int id = int.Parse(collision.gameObject.transform.parent.name.Split(':')[0].Trim());
                MessageSystem.instance.DispatchMessage(new HitSnake(id));
            }
        }

        if (collision.gameObject.tag == "otherPlayer")
        {
            if (cantHitOtherSnake)
            {
                return;
            }
            DisableColliderTemp();

            int id = int.Parse(collision.gameObject.transform.parent.name.Split(':')[0].Trim());
            MessageSystem.instance.DispatchMessage(new HitSnake(id));
        }
    }