コード例 #1
0
    public void ReplenishDefense(PlayerManager p_raycaster, Card handCard, SoldierBackup backupTarget)
    {
        if (p_raycaster == backupTarget.GetPlayer())
        {
            if (backupTarget.GetCard() == null)
            {
                if (GameConstants.REPLENISH_AS_ACTION)
                {
                    if (p_raycaster.GetMovesLeft() <= 0)
                    {
                        // If no more moves left
                        PlayerPanel.Instance.GetMovesLeftAnimatable().Shake();
                        p_raycaster.GetCardManager().GetDefenseManager().PostDefenseUpdate();
                        return;
                    }
                }
                // Update DefenseManager
                p_raycaster.GetCardManager().GetDefenseManager().ReplenishBackDefense(backupTarget.GetIndex(), handCard);
                // Update Hand
                p_raycaster.GetCardManager().GetHandManager().RemoveFromHand(handCard);

                if (GameConstants.REPLENISH_AS_ACTION)
                {
                    // Successful defense replenish
                    p_raycaster.ConsumeMove();
                    ActionsLeftPanel.Instance.Show();
                }
            }
            else
            {
                SwapBackup(p_raycaster, handCard, backupTarget);
            }
            p_raycaster.GetCardManager().GetDefenseManager().PostDefenseUpdate();
        }
    }
コード例 #2
0
ファイル: Soldier.cs プロジェクト: Creamery/GDAPWonderland
    public SoldierBackup GetBackup()
    {
        int thisIndex = this.parent.FindSoldierIndex(this);

        SoldierBackup thisBackup = this.parent.GetSoldierBackup(thisIndex);

        return(thisBackup);
    }
コード例 #3
0
 public SoldierBackup GetSoldierBackup()
 {
     if (this.backup == null)
     {
         this.backup = GetComponentInParent <SoldierBackup>();
     }
     return(this.backup);
 }
コード例 #4
0
 /// <summary>
 /// Finds the index of the specified soldierBackup.
 /// </summary>
 /// <param name="backup"></param>
 /// <returns>the index of the specified SoldierBackup, -1 if not found. </returns>
 public int FindBackupIndex(SoldierBackup backup)
 {
     for (int i = 0; i < backups.Length; i++)
     {
         if (backup == backups[i])
         {
             return(i);
         }
     }
     return(-1);
 }
コード例 #5
0
ファイル: Soldier.cs プロジェクト: Creamery/GDAPWonderland
    public int GetReinforcedHealth()
    {
        int           thisBackupHealth = 0;
        SoldierBackup thisBackup       = this.GetBackup();

        if (thisBackup.GetCard() != null)
        {
            thisBackupHealth = thisBackup.GetCard().GetCardHealth();
        }

        int reinforcedHealth = this.currentHealth + thisBackupHealth;

        return(reinforcedHealth);
    }
コード例 #6
0
 public void SwapBackup(PlayerManager p_raycaster, Card handCard, SoldierBackup backupTarget)
 {
     if (p_raycaster == backupTarget.GetPlayer())
     {
         if (backupTarget.GetCard() != null)
         {
             // Update SoldierBackup
             Card backupCard = p_raycaster.GetCardManager().GetDefenseManager().SwapBackCard(backupTarget.GetIndex(), handCard);
             // Update Hand
             Debug.Log("Swapping " + handCard.GetCardSuit() + handCard.GetCardRank() + " to " + backupCard.GetCardSuit() + backupCard.GetCardRank());
             p_raycaster.GetCardManager().GetHandManager().SwapToHand(handCard, backupCard);
         }
     }
 }
コード例 #7
0
ファイル: Soldier.cs プロジェクト: Creamery/GDAPWonderland
    /// <summary>
    /// Called by TakeDamage
    /// </summary>
    public void Kill()
    {
        if (this.GetHeartModel() != null)
        {
            this.GetHeartModel().Hide();
        }
        // NEW	8/9/2019
        SoldierBackup thisBackup = this.GetBackup();

        if (thisBackup != null)
        {
            thisBackup.RemoveCard();
        }
        // END OF NEW 8/9/2019

        this.GetSoldierAnimatable().Death();
        this.SetHealthTextActive(false);
        // Death animations could be placed here (or before?)
    }
コード例 #8
0
 private void Awake()
 {
     parent = this.GetComponentInParent <SoldierBackup>();
 }
コード例 #9
0
    // Update is called once per frame
    void Update()
    {
        if (!GameMaster.Instance.IsInActionPhase())
        {
            return;
        }

        if (isHeld)
        {
            if (Input.GetMouseButtonUp(0))
            {
                isHeld            = false;
                this.selectedCard = null;
                UIHandCardManager.Instance.RemovePreview();

                PlayerManager curPlayer = MainScreenManager_GameScene.Instance.GetPlayer();
                SoldierPlacementManager.Instance.SetTargetable(curPlayer, false);
                Card finalCard = UIHandCardManager.Instance.GetSelectedCard();

                bool replenishDefenseMode = GameMaster.Instance.IsReplenishMode();
                if (this.GRGeneral("OutZone"))
                {
                    UIHandCardManager.Instance.StopDragging();

                    // Hearts card was dropped -- Special Interaction
                    if (finalCard.GetCardSuit() == Card.Suit.HEARTS)
                    {
                        // Special interaction
                        int rank = finalCard.GetCardRank();
                        switch (rank)
                        {
                        case 1:                                 // +1 move
                            curPlayer.IncrementMove();
                            ActionsLeftPanel.Instance.Show();
                            Debug.Log("<color='green'> move incremented by 1 </color>");
                            break;

                        case 2:                                 // Swap rule
                            // Show Rule (higher/lower) has been swapped UI
                            bool prevRule = GameMaster.Instance.IsRuleHigher;
                            GameMaster.Instance.SwapHigherLower();
                            PlayerPanel.Instance.UpdateRuleIcon(!prevRule);
                            ActionsLeftPanel.Instance.ShowReverseRule(!prevRule);

                            Debug.Log("<color='green'> RULE SWAPPED: " + prevRule + "->" + GameMaster.Instance.IsRuleHigher + " </color>");
                            break;

                        default:                                 //Do nothing
                            break;
                        }
                        curPlayer.GetCardManager().GetHandManager().RemoveFromHand(finalCard);
                        Debug.Log("<color='blue'> Hearts removed from hand </color>");
                        return;
                    }

                    // Differentiate Defense interactions w/ Bullet-loadings
                    GameObject hit = PRGeneral("Soldier");
                    if (replenishDefenseMode)                           // REPLENISH DEFENSE MDOE INTERACTIONS ((TODO: might want to remove this))
                    {
                        if (hit != null)
                        {
                            // Replenish Soldier
                            Soldier hitSoldier = hit.GetComponent <SoldierCollider>().GetSoldier();
                            SoldierPlacementManager.Instance.ReplenishDefense(curPlayer, finalCard, hitSoldier);
                            Debug.Log("Soldier replenish HIT: " + hitSoldier.name);
                        }
                        else
                        {
                            hit = PRGeneral("Backup");
                            if (hit != null)
                            {
                                // Replenish Backup
                                SoldierBackup hitBackup = hit.GetComponent <SoldierBackupCollider>().GetSoldierBackup();
                                SoldierPlacementManager.Instance.ReplenishDefense(curPlayer, finalCard, hitBackup);
                                Debug.Log("Backup replenish HIT: " + hitBackup.name);
                            }
                        }
                    }
                    else
                    {
                        hit = PRGeneral("Backup");
                        if (hit != null)
                        {
                            SoldierBackup hitBackup = hit.GetComponent <SoldierBackupCollider>().GetSoldierBackup();
                            if (hitBackup.GetPlayer() == curPlayer && !hitBackup.IsHidden)
                            {
                                // Swap backup / place new backup
                                SoundManager.Instance.Play(AudibleNames.Button.SWITCH);
                                Debug.Log("Backup HIT: " + hitBackup.name);
                                SoldierPlacementManager.Instance.ReplenishDefense(curPlayer, finalCard, hitBackup);
                            }
                            else
                            {
                                //Load Bullet
                                if (curPlayer.GetMovesLeft() > 0)
                                {
                                    if (GameMaster.Instance.IsValidCard(finalCard))
                                    {
                                        // If card passes the current rule
                                        AttackManager.Instance.LoadCard(finalCard);
                                        //UIHandCardManager.Instance.ShowHand(false);
                                    }
                                    else
                                    {
                                        RuleManager.Instance.GetRulePanelAnimatable().Shake();
                                    }
                                }
                                else
                                {
                                    PlayerPanel.Instance.GetMovesLeftAnimatable().Shake();
                                }
                            }
                        }
                        else
                        {
                            // Load bullet
                            if (curPlayer.GetMovesLeft() > 0)
                            {
                                if (GameMaster.Instance.IsValidCard(finalCard))
                                {
                                    // If card passes the current rule
                                    AttackManager.Instance.LoadCard(finalCard);
                                    //UIHandCardManager.Instance.ShowHand(false);
                                }
                                else
                                {
                                    RuleManager.Instance.GetRulePanelAnimatable().Shake();
                                }
                            }
                            else
                            {
                                PlayerPanel.Instance.GetMovesLeftAnimatable().Shake();
                            }
                        }
                    }
                }
                else
                {
                    SoundManager.Instance.Play(AudibleNames.Button.RELEASE);
                    UIHandCardManager.Instance.StopDragging();
                }

                return;
            }
        }
        else
        {
            bool hasSelected = this.HandCardGR("UIHandCard");

            if (!hasSelected)
            {
                this.selectedCard = null;
                UIHandCardManager.Instance.RemovePreview();
                if (Input.GetMouseButtonDown(0))
                {
                    if (this.GRGeneral("OutZone"))
                    {
                        UIHandCardManager.Instance.PeekDown(true);
                    }
                }
            }
            else if (hasSelected && Input.GetMouseButtonDown(0))
            {
                isHeld = UIHandCardManager.Instance.BeginDragging();
                SoldierPlacementManager.Instance.SetTargetable(MainScreenManager_GameScene.Instance.GetPlayer(), true);
            }

            // Miscellaneous handling
            if (Input.GetMouseButtonDown(0))
            {
                RaycastHit hit;
                Ray        ray = new Ray(Camera.main.transform.position, Camera.main.transform.forward);
                if (Physics.Raycast(ray, out hit, float.PositiveInfinity))
                {
                    // If Backupmat is pressed on screen, show.
                    GameObject mat = PRGeneral("BMC");
                    if (!isHeld && mat != null)
                    {
                        BackupMatCollider bmc = mat.GetComponent <BackupMatCollider>();
                        if (bmc.GetPlayer() == MainScreenManager_GameScene.Instance.GetPlayer())
                        {
                            bmc.GetParent().ToggleBackupMat();
                        }
                    }
                }
            }
        }
    }