RandomGFGoStop/Assets/Scripts/UI/GamePanel/GamePanel_BringGetableCardM...

134 lines
5.7 KiB
C#

using CodeJay.Enum;
using UnityEngine;
public partial class GamePanel : MonoBehaviour
{
public enum EBringGetableCardState
{
Start,
MoveCards,
SortCards,
CheckFloorCardNumber,
Complete
}
internal int _bringGetableIndex = 0;
private EBringGetableCardState _bringGetableState;
internal void InitBringGetableData()
{
_bringGetableIndex = 0;
_bringGetableState = EBringGetableCardState.Start;
}
private void BringGetableStateMachine()
{
switch (_bringGetableState)
{
case EBringGetableCardState.Start:
if (PlayerTurn)
SortPlayerCards();
_bringGetableState = EBringGetableCardState.MoveCards;
_bringGetableIndex = 0;
break;
case EBringGetableCardState.MoveCards:
if (_lstAvailableCardTypes.Count <= 0)
{
_lstAvailableCardTypes.Clear();
_delay = 0;
_bringGetableIndex = 0;
_bringGetableState = EBringGetableCardState.SortCards;
}
else
{
if (_bringGetableIndex < _lstAvailableCardTypes.Count)
{
if (PlayerTurn)
{
CardSlot slot = GetCardSlot(_lstAvailableCardTypes[_bringGetableIndex]);
slot.Move(ECardLocationType.Floor, ECardLocationType.Player_Score, GetRectTransformAndModifyContainer(ECardLocationType.Player_Score, _lstAvailableCardTypes[_bringGetableIndex]));
DataMove(ECardLocationType.Floor, _lstAvailableCardTypes[_bringGetableIndex]);
GameManager.Sound.PlaySFX(ESFXType.CardMove_1);
if (_lstAvailableCardTypes[_bringGetableIndex] == ECardType.Bonus_1 || _lstAvailableCardTypes[_bringGetableIndex] == ECardType.Bonus_2 ||
_lstAvailableCardTypes[_bringGetableIndex] == ECardType.Bonus_3)
{
BringOtherPlayersPeeCard(1, PlayerTurn);
}
_delay = 0.1f;
}
else
{
CardSlot slot = GetCardSlot(_lstAvailableCardTypes[_bringGetableIndex]);
slot.Move(ECardLocationType.Floor, ECardLocationType.AI_Score, GetRectTransformAndModifyContainer(ECardLocationType.AI_Score, _lstAvailableCardTypes[_bringGetableIndex]));
DataMove(ECardLocationType.Floor, _lstAvailableCardTypes[_bringGetableIndex]);
GameManager.Sound.PlaySFX(ESFXType.CardMove_1);
if (_lstAvailableCardTypes[_bringGetableIndex] == ECardType.Bonus_1 || _lstAvailableCardTypes[_bringGetableIndex] == ECardType.Bonus_2 ||
_lstAvailableCardTypes[_bringGetableIndex] == ECardType.Bonus_3)
{
BringOtherPlayersPeeCard(1, PlayerTurn);
}
_delay = 0.1f;
}
if (_dicReservedBonusCard.ContainsKey(_lstAvailableCardTypes[_bringGetableIndex]))
_dicReservedBonusCard.Remove(_lstAvailableCardTypes[_bringGetableIndex]);
_bringGetableIndex++;
}
else
{
_lstAvailableCardTypes.Clear();
_delay = 0.25f;
_bringGetableState = EBringGetableCardState.SortCards;
_bringGetableIndex = 0;
}
}
break;
case EBringGetableCardState.SortCards:
{
SortFloorCards();
_delay = 0.25f;
_bringGetableState = EBringGetableCardState.CheckFloorCardNumber;
}
break;
case EBringGetableCardState.CheckFloorCardNumber:
{
int floorCardNum = GetMatchedCardSlotNumber(ECardLocationType.Floor);
if (floorCardNum <= 0)
{
if (PlayerTurn)
{
if (GetMatchedCardSlotNumber(ECardLocationType.Player_Hand) > 0)
{
BringOtherPlayersPeeCard(1, PlayerTurn);
_delay = EffectPanel.Direct(EEffectDirectType.Clean, PlayerTurn);
}
}
else
{
if (GetMatchedCardSlotNumber(ECardLocationType.AI_Hand) > 0)
{
BringOtherPlayersPeeCard(1, PlayerTurn);
_delay = EffectPanel.Direct(EEffectDirectType.Clean, PlayerTurn);
}
}
}
_bringGetableState = EBringGetableCardState.Complete;
}
break;
case EBringGetableCardState.Complete:
{
_lstAvailableCardTypes.Clear();
InitBringGetableData();
CurrentCoroutineType = EGameWorkFlowType.CheckCombination;
GameManager.Event.InvokeEvent(EEventType.OnSynchronizeScore);
}
break;
}
}
}