コード例 #1
0
ファイル: Player.cs プロジェクト: arg2502/PowerCard
 void BeginNormalSummon(Card summon)
 {
     cardHandleState = CardHandleState.TRIBUTE;
     cardToSummon    = summon;
     tributedCards   = new List <Card>();
     ConfirmNormalSummon();
 }
コード例 #2
0
ファイル: Player.cs プロジェクト: arg2502/PowerCard
    public void BeginAttack(Card target)
    {
        SetTurnState(TurnState.ATTACK);
        cardHandleState = CardHandleState.NORMAL;
        currentTarget   = target;

        if (currentAttacker.face == Card.Face.FACEDOWN)
        {
            currentAttacker.FlipCard();
        }
        if (currentTarget.face == Card.Face.FACEDOWN)
        {
            currentTarget.FlipCard();
        }

        var denAttacker = currentAttacker.dataInstance as DenigenData;
        var denTarget   = currentTarget.dataInstance as DenigenData;

        int atk = 0, sh = 0;

        GetTypeStats(denAttacker, denTarget, ref atk, ref sh);
        var diff = atk - sh;

        // if atk is greater, then discard target and player loses pp
        if (diff > 0)
        {
            currentTarget.player.LosePoints(Mathf.Abs(diff));
            currentTarget.Destroy();
            GameControl.control.tributeMessage.gameObject.SetActive(false);
        }
        else
        {
            currentAttacker.player.LosePoints(Mathf.Abs(diff));
            GameControl.control.tributeMessage.text = "not stronk enough";
        }

        // after attack
        currentAttacker.hasAttacked = true;

        currentTarget   = null;
        currentAttacker = null;

        // check if we go to POST
        bool canStillAttack = false;

        foreach (var c in field)
        {
            if (!c.hasAttacked)
            {
                canStillAttack = true;
                break;
            }
        }
        if (!canStillAttack)
        {
            SetTurnState(TurnState.POST);
        }
    }
コード例 #3
0
ファイル: Player.cs プロジェクト: arg2502/PowerCard
 void BeginTarget(Card card)
 {
     if (OpponentTargetsExist() && !card.hasAttacked)
     {
         currentAttacker = card;
         cardHandleState = CardHandleState.TARGET;
         GameControl.control.tributeMessage.text = "Select target";
         GameControl.control.tributeMessage.gameObject.SetActive(true);
     }
 }
コード例 #4
0
ファイル: Player.cs プロジェクト: arg2502/PowerCard
 public void EndTurn()
 {
     if (GameControl.control.CurrentPlayer != this)
     {
         return;
     }
     cardHandleState = CardHandleState.NORMAL;
     SetTurnState(TurnState.STANDBY);
     GameControl.control.NextTurn();
 }
コード例 #5
0
ファイル: Player.cs プロジェクト: arg2502/PowerCard
    public void SetTurnState(TurnState newState)
    {
        if (turnState == newState)
        {
            return;
        }

        turnState = newState;
        switch (turnState)
        {
        case TurnState.DRAW:
            break;

        case TurnState.SUMMON:
            normalSummonsPerformed = 0;
            break;

        case TurnState.ATTACK:
            break;

        case TurnState.POST:
            break;

        case TurnState.OUTOFGAME:
            break;

        case TurnState.STANDBY:
            // at end of turn, set any field cards hasAttacked flag to false
            foreach (var c in field)
            {
                c.hasAttacked = false;
            }
            tributedCards.Clear();
            cardHandleState     = CardHandleState.NORMAL;
            currentAttacker     = null;
            currentTarget       = null;
            cardToSummon        = null;
            readyToNormalSummon = false;
            break;
        }
    }