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(); } }
public SoldierBackup GetBackup() { int thisIndex = this.parent.FindSoldierIndex(this); SoldierBackup thisBackup = this.parent.GetSoldierBackup(thisIndex); return(thisBackup); }
public SoldierBackup GetSoldierBackup() { if (this.backup == null) { this.backup = GetComponentInParent <SoldierBackup>(); } return(this.backup); }
/// <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); }
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); }
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); } } }
/// <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?) }
private void Awake() { parent = this.GetComponentInParent <SoldierBackup>(); }
// 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(); } } } } } }