private void OnCarriageSelected(Carriage c) { if (ReadyToFight) { Debug.Log("READY TO FIGHT"); OnReadyToFight?.Invoke(m_player1, m_player2); return; } CarriageDefinition.Color color = c.CarriageDefinition.GetColor(); if (color == CarriageDefinition.Color.Wild) { int rand = UnityEngine.Random.Range(0, 3); color = (CarriageDefinition.Color)rand; } CarriageDefinition.Ability ability = c.CarriageDefinition.GetAbility(); Beetle player = GetCurrentPlayer(); Beetle otherPlayer = GetOtherPlayer(); switch (ability) { case CarriageDefinition.Ability.None: player.AddCarriage(color); break; case CarriageDefinition.Ability.Copy: if (player.CarriageCount == 0) { return; } Carriage lastCarriage = player.GetLastCarriage(); color = lastCarriage.CarriageDefinition.GetColor(); player.AddCarriage(color); break; case CarriageDefinition.Ability.Send: if (otherPlayer.CarriageCount == GameConstants.MAX_CARRIAGE_CAPACITY) { player.AddCarriage(color); } else { otherPlayer.AddCarriage(color); } break; case CarriageDefinition.Ability.Swap: if (player.CarriageCount > 0 && otherPlayer.CarriageCount > 0) { Carriage c1 = player.RemoveLastCarriage(); Carriage c2 = otherPlayer.RemoveLastCarriage(); player.AddCarriage(c2.CarriageDefinition.GetColor()); otherPlayer.AddCarriage(c1.CarriageDefinition.GetColor()); Destroy(c1.gameObject); Destroy(c2.gameObject); } player.AddCarriage(color); break; case CarriageDefinition.Ability.DoubleDip: m_doubleDip = true; player.AddCarriage(color); break; case CarriageDefinition.Ability.Shuffle: player.AddCarriage(color); m_carriageContainer.GetComponent <CarriageMenu>().Reset(); m_currentHand.Clear(); DrawHand(); m_carriageContainer.GetComponent <CarriageMenu>().Init(); break; } c.gameObject.SetActive(false); if (m_doubleDip) { m_doubleDip = false; } else { NextTurn(); } if (ReadyToFight) { OnReadyToFight?.Invoke(m_player1, m_player2); } }