예제 #1
0
        public void LoadPlayer(PlayerHolder p, PlayerStatsUI statsUI)
        {
            if (p == null)
            {
                return;
            }
            playerHolder = p;

            foreach (CardInstance c in playerHolder.cardsDown)
            {
                Settings.SetParentForCard(c.viz.gameObject.transform, downGrid.value.transform);
            }

            foreach (CardInstance c in playerHolder.handCards)
            {
                if (c.viz != null)
                {
                    Settings.SetParentForCard(c.viz.gameObject.transform, handGrid.value.transform);
                }
            }

            foreach (ResourceHolder r in playerHolder.resourcesList)
            {
                Settings.SetParentForCard(r.cardObj.transform, resourcesGrid.value.transform);
            }

            p.statsUI = statsUI;
            p.LoadPlayerOnStatsUI();
        }
예제 #2
0
        public void Update()
        {
            if (switchPlayer)
            {
                switchPlayer = false;
                playerOneHolder.LoadPlayer(allPlayers[1], statsUI[1]);
                otherPlayersHolder.LoadPlayer(allPlayers[0], statsUI[0]);
            }

            bool isComplete = turns[turnIndex].Execute();

            if (isComplete)
            {
                turnIndex++;
                if (turnIndex > turns.Length - 1)
                {
                    turnIndex = 0;
                }
                //the current player has changed here
                currentPlayer = turns[turnIndex].player;
                turns[turnIndex].OnTurnStart();
                turnText.value = turns[turnIndex].player.username;
                onTurnChanged.Raise();
            }
            if (currentState != null)
            {
                currentState.Tick(Time.deltaTime);
            }
        }
예제 #3
0
        public override bool IsComplete()
        {
            PlayerHolder p = Settings.gameManager.currentPlayer;
            PlayerHolder e = Settings.gameManager.GetEnemyOf(p);

            if (p.atackingCards.Count == 0)
            {
                return(true);
            }
            for (int i = 0; i < p.atackingCards.Count; i++)
            {
                CardInstance   inst   = p.atackingCards[i];
                Card           c      = inst.viz.card;
                CardProperties attack = c.GetProperty(attackElement);
                if (attack == null)
                {
                    Debug.Log("You are attacking with a card that cannot attack");
                    continue;
                }
                p.DropCard(inst, false);
                p.currentHolder.SetCardDown(inst);
                inst.SetTapped();

                e.DoDamage(attack.intValue);
            }
            p.atackingCards.Clear();
            return(true);
        }
예제 #4
0
 public void LoadPlayerActive(PlayerHolder p)
 {
     if (playerOneHolder.playerHolder != p)
     {
         PlayerHolder prevPlayer = playerOneHolder.playerHolder;
         LoadPlayerOnHolder(prevPlayer, otherPlayersHolder, statsUI[1]);
         LoadPlayerOnHolder(p, playerOneHolder, statsUI[0]);
     }
 }
예제 #5
0
 public override void Execute(PlayerHolder player)
 {
     foreach (CardInstance c in player.cardsDown)
     {
         if (c.isTapped)
         {
             c.ResetTapped();
         }
     }
 }
예제 #6
0
 private void Awake()
 {
     singleton  = this;
     allPlayers = new PlayerHolder[turns.Length];
     for (int i = 0; i < turns.Length; i++)
     {
         allPlayers[i] = turns[i].player;
     }
     currentPlayer = turns[0].player;
 }
예제 #7
0
 public PlayerHolder GetEnemyOf(PlayerHolder p)
 {
     for (int i = 0; i < allPlayers.Length; i++)
     {
         if (allPlayers[i] != p)
         {
             return(allPlayers[i]);
         }
     }
     return(null);
 }
예제 #8
0
        public override void Execute(float d)
        {
            if (Input.GetMouseButtonDown(0))
            {
                List <RaycastResult> results = Settings.GetUIObjects();

                foreach (RaycastResult r in results)
                {
                    CardInstance inst = r.gameObject.GetComponentInParent <CardInstance>();
                    PlayerHolder p    = Settings.gameManager.currentPlayer;

                    if (!p.cardsDown.Contains(inst))
                    {
                        return;
                    }
                    if (inst.CanAttack())
                    {
                        p.atackingCards.Add(inst);
                        p.currentHolder.SetCardOnBattleLine(inst);
                    }
                }
            }
        }
예제 #9
0
        public override bool isValid()
        {
            GameManager  gm = GameManager.singleton;
            PlayerHolder p  = gm.currentPlayer;

            int count = gm.currentPlayer.cardsDown.Count;

            for (int i = 0; i < p.cardsDown.Count; i++)
            {
                if (p.cardsDown[i].isTapped)
                {
                    count--;
                }
            }

            if (count > 0)
            {
                return(true);
            }
            else
            {
                return(false);
            }
        }
예제 #10
0
 public void LoadPlayerOnHolder(PlayerHolder p, CardHolders h, PlayerStatsUI ui)
 {
     h.LoadPlayer(p, ui);
 }
예제 #11
0
 public override void Execute(PlayerHolder player)
 {
     GameManager.singleton.LoadPlayerActive(player);
 }
예제 #12
0
 public abstract void Execute(PlayerHolder player);