示例#1
0
 public void Build(ICardData cardData, Vector3 scale,
                   ICombatCard combat, IAbility ability)
 {
     Build(cardData, scale);
     Warrior = new WarriorCards(Moving, View, combat);
     Ability = ability;
 }
示例#2
0
 public WarriorCards(IMovingCard moving, CardBase cardBase, ICombatCard combat)
 {
     (this.Moving, this.View, Combat) = (moving, cardBase, combat);
     Enemies = new List <WarriorCards>();
 }
 void PutCardToCharacter(ICombatCard playedCardObject, CharacterGraphic character)
 {
     if (character == null)
         throw new System.Exception("Null character!");
     playedCardObject.GetTransform().SetParent(character.appliedCardsGroup, false);
     playedCardObject.GetTransform().SetAsLastSibling();
 }
    IEnumerator CombatCardPlayed(ICombatCard playedCardObject)
    {
        uiToggler.DisablePlayerActionsDuringCardPlay();
        CombatCard playedCard = playedCardObject.GetAssignedCard();
        CharacterGraphic userGraphic = playedCard.GetUserChar();

        //Visualize card play
        if (playedCard.targetType == CombatCard.TargetType.None)
            PutCardToCharacter(playedCardObject, userGraphic);
        if (playedCard.targetType == CombatCard.TargetType.AllEnemies || playedCard.targetType == CombatCard.TargetType.AllFriendlies)
            PutCardToCenter(playedCardObject);
        if (playedCard.targetType != CombatCard.TargetType.None && playedCard.targetType != CombatCard.TargetType.AllEnemies
            && playedCard.targetType != CombatCard.TargetType.AllFriendlies)
        {
            CharacterGraphic targetGraphic = null;
            targetGraphic = playedCard.targetChars[0];
            PutCardToCharacter(playedCardObject, targetGraphic);
        }
        //Actual effects
        playedCard.PlayCard();
        playedCard.userCharGraphic.RemovePlayedCombatCardFromHand(playedCard);
        yield return new WaitForSeconds(cardPlayAnimationTime);
        GameObject.Destroy(playedCardObject.GetTransform().gameObject);

        if (userGraphic.GetHealth() > 0)
            userGraphic.TurnFinished();

        characterManager.CleanupCharactersWhoDied();

        if (turnStatus == TurnStatus.Player)
            uiToggler.ReenablePlayerActions();

        TransferTurn();
        yield break;
    }
 public void StartCombatCardPlay(ICombatCard cardObject)
 {
     CombatCard playedCard = cardObject.GetAssignedCard();
     if (EligibleCombatCardType(playedCard))
     {
         uiToggler.DisableTurnoverButton();
         combatCardTargeter.CombatCardPlayStarted(cardObject);
     }
 }
 public void PutCardToCenter(ICombatCard playedCardObject)
 {
     playedCardObject.GetTransform().SetParent(centerPlayArea, false);
 }
 public void CombatCardPlayStarted(ICombatCard playedCard)
 {
     StartCoroutine("CombatCardPlayed", playedCard);
 }
示例#8
0
 public void TryPlayCardInHand(ICombatCard cardObject)
 {
     CombatManager.main.StartCombatCardPlay(cardObject);
     //CombatCardTargeter.main.try
     //if (CombatManager.main.TryPlayCombatCard(cardObject, handOwner))
         //RemoveCardFromHand(cardObject.GetAssignedCard());
 }
    IEnumerator SelectCardUserByPlayer(ICombatCard playedCardGraphic)
    {
        CombatCard playedCard = playedCardGraphic.GetAssignedCard();

        CharacterGraphic cardUserChar = null;
        characterManager.SetMercPortraitsEnabled(false);
        string centerMessageText = "Select character";

        uiToggler.DisablePlayerActionsDuringCardPlay();
        modeTextDisplayer.DisplayCenterMessage(centerMessageText);

        bool characterFound = false;
        while (true)
        {
            if (Input.GetMouseButton(1))
            {
                uiToggler.EnableTurnoverButton();
                uiToggler.ReenablePlayerActions();
                break;
            }
            if (Input.GetMouseButton(0))
            {
                if (characterManager.RaycastForCharacter(true, out cardUserChar))
                {
                    if (cardUserChar.CharacterMeetsCardRequirements(playedCard))
                    {
                        characterFound = true;
                        break;
                    }
                }
            }
            yield return new WaitForFixedUpdate();
        }

        if (characterFound)
        {
            while (Input.GetMouseButton(0))
                yield return new WaitForFixedUpdate();
            playedCard.SetUserChar(cardUserChar);

            PlayerCardTargetAssignment(playedCardGraphic, cardUserChar);
        }
        else
        {
            characterManager.SetMercPortraitsEnabled(true);
            modeTextDisplayer.HideCenterMessage();
        }
    }
    IEnumerator SelectCardTargetCharacterByPlayer(ICombatCard playedCardObject)
    {
        CombatCard playedCard = playedCardObject.GetAssignedCard();

        CharacterGraphic targetChar = null;
        bool selectFriendly = false;
        bool selectOtherFriendly = false;
        string centerMessageText = "Select enemy";
        if (playedCard.targetType == CombatCard.TargetType.SelectEnemy)
        {
            selectFriendly = false;
            centerMessageText = "Select enemy";
        }
        if (playedCard.targetType == CombatCard.TargetType.SelectFriendly)
        {
            selectFriendly = true;
            characterManager.SetMercPortraitsEnabled(false);
            centerMessageText = "Select friendly";
        }
        if (playedCard.targetType == CombatCard.TargetType.SelectFriendlyOther)
        {
            selectFriendly = true;
            selectOtherFriendly = true;
            characterManager.SetMercPortraitsEnabled(false);
            centerMessageText = "Select friendly";
        }

        uiToggler.DisablePlayerActionsDuringCardPlay();
        modeTextDisplayer.DisplayCenterMessage(centerMessageText);

        bool targetFound = false;

        while (true)
        {
            if (Input.GetMouseButton(1))
            {
                uiToggler.EnableTurnoverButton();
                uiToggler.ReenablePlayerActions();
                break;
            }
            if (Input.GetMouseButton(0))
            {
                if (selectOtherFriendly)
                {
                    if (characterManager.RaycastForOtherFriendlyCharacter(selectedCharacter, out targetChar))
                    {
                        targetFound = true;
                        break;
                    }
                }
                else
                    if (characterManager.RaycastForCharacter(selectFriendly, out targetChar))
                    {
                        targetFound = true;
                        break;
                    }
            }
            yield return new WaitForFixedUpdate();
        }

        if (targetFound)
        {
            while (Input.GetMouseButton(0))
                yield return new WaitForFixedUpdate();
            playedCard.targetChars.Add(targetChar);
            combatManager.CombatCardPlayStarted(playedCardObject);
        }
        if (selectFriendly)
            characterManager.SetMercPortraitsEnabled(true);
        modeTextDisplayer.HideCenterMessage();
    }
    void PlayerCardTargetAssignment(ICombatCard cardObject,CharacterGraphic selectedCharacter)
    {
        CombatCard playedCard = cardObject.GetAssignedCard();
        this.selectedCharacter = selectedCharacter;

        if (playedCard.targetType == CombatCard.TargetType.SelectFriendly | playedCard.targetType == CombatCard.TargetType.SelectFriendlyOther)
        {
            ManuallyAssignCardTarget(cardObject);
            return;
        }

        if (playedCard.targetType == CombatCard.TargetType.SelectEnemy)
        {
            if (playedCard.GetType().BaseType == typeof(MeleeCard) && meleeCardTargetOverrideEnemy != null)
            {
                AutoAssignCardTargetAndPlay(cardObject, selectedCharacter);
                return;
            }
            if (playedCard.GetType().BaseType == typeof(RangedCard) && rangedCardTargetOverrideEnemy != null)
            {
                AutoAssignCardTargetAndPlay(cardObject, selectedCharacter);
                return;
            }

            ManuallyAssignCardTarget(cardObject);
            return;
        }
        if (playedCard.targetType != CombatCard.TargetType.SelectFriendly
            && playedCard.targetType != CombatCard.TargetType.SelectFriendlyOther
            && playedCard.targetType != CombatCard.TargetType.SelectEnemy)
            AutoAssignCardTargetAndPlay(cardObject, selectedCharacter);
    }
 void ManuallyAssignCardTarget(ICombatCard cardObject)
 {
     StartCoroutine("SelectCardTargetCharacterByPlayer", cardObject);
 }
 void AutoAssignCardTargetAndPlay(ICombatCard cardObject, CharacterGraphic selectedCharacter)
 {
     characterManager.SetMercPortraitsEnabled(true);
     modeTextDisplayer.HideCenterMessage();
     CombatCard playedCard = cardObject.GetAssignedCard();
     AssignCardTargets(playedCard, selectedCharacter);
     combatManager.CombatCardPlayStarted(cardObject);
 }
 public void CombatCardPlayStarted(ICombatCard cardObject)
 {
     //CombatCard playedCard = cardObject.GetAssignedCard();
     //playedCard.SetUserChar(cardPlayer);
     //PlayerCardTargetAssignment(cardObject, cardPlayer);
     StartCoroutine(SelectCardUserByPlayer(cardObject));
 }
示例#15
0
 public void HandCardClicked(ICombatCard cardGraphic)
 {
     handManager.TryPlayCardInHand(cardGraphic);
 }