public override void Execute(float d) { if (Input.GetMouseButtonDown(0)) { List <RaycastResult> results = Settings.GetUIObjs(); foreach (RaycastResult r in results) { CardInstance inst = r.gameObject.GetComponentInParent <CardInstance>(); PlayerHolder p = Settings.gameManager.currentPlayer; if (!p.downCards.Contains(inst)) { return; } MultiplayerManager.singleton.PlayerWantsToUseCard(inst.viz.card.instID, p.photonId, MultiplayerManager.CardOpertation.setCardForBattle); //if ( inst.CanAttack()) //{ // p.attackingCards.Add(inst); // p.currentHolder.SetCardsOnBatlleLine(inst); //} } } }
BlockInstance GetBlockInstanceOfAttacker(CardInstance attacker, Dictionary <CardInstance, BlockInstance> blockInstances) { BlockInstance r = null; blockInstances.TryGetValue(attacker, out r); return(r); }
BlockInstance GetBlockInstanceOfAttacker(CardInstance attacker) { BlockInstance r = null; blockInstances.TryGetValue(attacker, out r); return(r); }
public void SetCardsOnBatlleLine(CardInstance card) { Vector3 position = card.viz.gameObject.transform.position; Settings.SetParentForCard(card.viz.gameObject.transform, battleLine.value.transform); position.z = card.viz.gameObject.transform.position.z; position.y = card.viz.gameObject.transform.position.y; card.viz.gameObject.transform.position = position; }
public static void DropHeroCard(Transform c, Transform p, CardInstance cardInst) { cardInst.isFlatfooted = true; // Execute any special card abilities on drop SetParentForCard(c, p); // if ( cardInst.isFlatfooted ) //{ cardInst.SetFlatfooted(cardInst.isFlatfooted); //} gameManager.currentPlayer.UseResourceCards(cardInst.viz.card.cost); gameManager.currentPlayer.DropCard(cardInst); }
public void DropCard(CardInstance inst, bool registerEvent = true) { if (handCards.Contains(inst)) { handCards.Remove(inst); } downCards.Add(inst); if (registerEvent) { Settings.RegisterEvent(userName + " used " + inst.viz.card.name + " for " + inst.viz.card.cost + " resources", playerColor); } }
public bool TypeAllowsForAttack(CardInstance inst) { /// e.g. Flying type can attack even if flatfooted /// bool r = logic.Execute(inst) -> if (inst.isFlatfooted)/inst.isFlatfooted = false return true if (canAttack) { return(true); } else { return(false); } }
public void PutCardOnGraveyard(CardInstance c) { c.owner.CardToGraveyard(c); graveyardCards.Add(c); c.transform.SetParent(graveyardVariable.value); Vector3 p = Vector3.zero; p.x -= graveyardCards.Count * 5; p.z = graveyardCards.Count * 5; c.transform.localPosition = p; c.transform.localRotation = Quaternion.identity; c.transform.localScale = Vector3.one; }
public void CardToGraveyard(CardInstance c) { if (attackingCards.Contains(c)) { attackingCards.Remove(c); } if (handCards.Contains(c)) { handCards.Remove(c); } if (downCards.Contains(c)) { downCards.Remove(c); } }
public void AddBlockInstance(CardInstance attacker, CardInstance blocker, ref int count) { BlockInstance b = null; b = GetBlockInstanceOfAttacker(attacker); if (b == null) { b = new BlockInstance(); b.attacker = attacker; blockInstances.Add(attacker, b); } if (!b.blocker.Contains(blocker)) { b.blocker.Add(blocker); } count = b.blocker.Count; }
public bool CanBeBlocked(CardInstance block, ref int count) { bool result = owner.attackingCards.Contains(this); if (result && viz.card.cardType.canAttack) { result = true; // if a card has flying than can be blocked by non flying , you can check it here, or cases like that //if ( result ) // Settings.gameManager.AddBlockInstance(this, block, ref count); } else { result = false; } return(result); }
void BattleResolveForPlayers() { PlayerHolder player = Settings.gameManager.currentPlayer; PlayerHolder enemy = Settings.gameManager.GetEnemyOf(player); if (enemy.attackingCards.Count == 0) { photonView.RPC("RPC_BattleResolveCallback", PhotonTargets.All, enemy.photonId); // photonView.RPC("RPC_PlayerEndsPhase", PhotonTargets.All, player.photonId); return; } Dictionary <CardInstance, BlockInstance> blockDict = Settings.gameManager.GetBlockInstances(); for (int i = 0; i < enemy.attackingCards.Count; i++) { CardInstance inst = enemy.attackingCards[i]; Card c = inst.viz.card; CardProperties attack = c.GetProperty(dataHolder.attackElement); if (attack == null) { Debug.LogError("You are attacking with a card that can't attack"); continue; } int damageValue = attack.intValue; BlockInstance bi = GetBlockInstanceOfAttacker(inst, gm.GetBlockInstances()); if (bi != null) { for (int b = 0; b < bi.blocker.Count; b++) { CardProperties def = c.GetProperty(gm.defenceProperty); if (def == null) { Debug.LogWarning("You are trying to block with a card with no defense element!"); continue; } damageValue -= def.intValue; if (def.intValue <= damageValue) { bi.blocker[b].CardInstanceToGraveyard(); } } } if (damageValue <= 0) { damageValue = 0; PlayerWantsToUseCard(inst.viz.card.instID, enemy.photonId, CardOpertation.cardToGraveyard); } enemy.DropCard(inst, false); player.DoDamage(damageValue); photonView.RPC("RPC_SyncPlayerHealth", PhotonTargets.All, player.photonId, player.health); } photonView.RPC("RPC_BattleResolveCallback", PhotonTargets.All, enemy.photonId); //photonView.RPC("RPC_PlayerEndsPhase", PhotonTargets.All, player.photonId); return; }
public void SetCardsOffBatlleLine(CardInstance card) // SetCardsDown { Settings.SetParentForCard(card.viz.gameObject.transform, downGrid.value.transform); }
public void Set(CardInstance v) { value = v; }