Beispiel #1
0
        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);
                    //}
                }
            }
        }
Beispiel #2
0
        BlockInstance GetBlockInstanceOfAttacker(CardInstance attacker, Dictionary <CardInstance, BlockInstance> blockInstances)
        {
            BlockInstance r = null;

            blockInstances.TryGetValue(attacker, out r);

            return(r);
        }
Beispiel #3
0
        BlockInstance GetBlockInstanceOfAttacker(CardInstance attacker)
        {
            BlockInstance r = null;

            blockInstances.TryGetValue(attacker, out r);

            return(r);
        }
Beispiel #4
0
        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;
        }
Beispiel #5
0
        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);
        }
Beispiel #6
0
        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);
            }
        }
Beispiel #7
0
        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);
            }
        }
Beispiel #8
0
        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;
        }
Beispiel #9
0
        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);
            }
        }
Beispiel #10
0
        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;
        }
Beispiel #11
0
        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);
        }
Beispiel #12
0
        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;
        }
Beispiel #13
0
 public void SetCardsOffBatlleLine(CardInstance card) // SetCardsDown
 {
     Settings.SetParentForCard(card.viz.gameObject.transform, downGrid.value.transform);
 }
Beispiel #14
0
 public void Set(CardInstance v)
 {
     value = v;
 }