コード例 #1
0
    public void getAttacked(int rawDamage)
    {
        int dmg        = rawDamage - armor;
        int blockValue = 0;

        if (activeBlock != null)
        {
            blockValue = activeBlock.blockValue;
        }
        dmg        -= blockValue;
        dmg         = Mathf.Max(0, dmg);
        health     -= dmg;
        activeBlock = null;
        refreshUI();
        FloatingDamageTextController.Instance().createFloatingDamageText(transform, rawDamage, armor, blockValue, dmg);

        if (health <= 0)
        {
            if (playerCharacter)
            {
                GameAlertUI.Instance().setText("You died!");
            }
            else
            {
                TurnMaster.Instance().handleEnemyDeath(this);
                Destroy(gameObject);
            }
        }
    }
コード例 #2
0
ファイル: BaseBuff.cs プロジェクト: SantanaDVX/CardGameRPG
    public void createBuff(CombatCharacter source, CombatCharacter target)
    {
        this.target = target;
        target.buffs.Add(this);
        applyBuff(1);
        target.refreshUI();

        switch (duration)
        {
        case BuffDuration.UntilEndOfTurn: {
            eventName = TurnMaster.getEndTurnTrigger(source.gameObject.GetInstanceID());
            break;
        }

        case BuffDuration.UntilStartOfNextTurn: {
            eventName = TurnMaster.getStartTurnTrigger(source.gameObject.GetInstanceID());
            break;
        }

        case BuffDuration.UntilEndOfTargetsTurn: {
            eventName = TurnMaster.getEndTurnTrigger(target.gameObject.GetInstanceID());
            break;
        }
        }

        EventManager.StartListening(eventName, removeBuff);
    }
コード例 #3
0
 public void cardClicked()
 {
     if (character != null)
     {
         TurnMaster.Instance().checkTargetListener(cardBase);
         attemptToPlayCard();
     }
 }
コード例 #4
0
 public static TurnMaster Instance()
 {
     if (!turnMaster)
     {
         turnMaster = FindObjectOfType <TurnMaster>();
     }
     return(turnMaster);
 }
コード例 #5
0
 private void resetPriority()
 {
     playerPriorityIndex = 0;
     foreach (CombatCharacter character in TurnMaster.Instance().charactersInCombat)
     {
         character.passedPriority = false;
     }
 }
コード例 #6
0
 public void addToStack(BaseCard card)
 {
     TurnMaster.Instance().setContinueButton(false);
     theStack.Add(card);
     resetPriority();
     precastAbilityIndex      = 0;
     resolvingPrecastTriggers = true;
     executeCurrentPrecastTrigger();
 }
コード例 #7
0
 private void Update()
 {
     if (!targetSource.character.playerCharacter)
     {
         if (targetCatgeory == TargetCategory.Enemy)
         {
             TurnMaster.Instance().checkTargetListener(CombatCharacter.Player());
         }
     }
 }
コード例 #8
0
 public override int getAbilitiesLength()
 {
     if (TurnMaster.Instance().activeCharacter() == character)
     {
         return(abilities.Length);
     }
     else
     {
         return(otherTurnAbilities.Length);
     }
 }
コード例 #9
0
 public override BaseAbility getAbility(int index)
 {
     if (TurnMaster.Instance().activeCharacter() == character)
     {
         return(abilities[index]);
     }
     else
     {
         return(otherTurnAbilities[index]);
     }
 }
コード例 #10
0
ファイル: GlowOnTurn.cs プロジェクト: SantanaDVX/CardGameRPG
 private new void Start()
 {
     base.Start();
     if (character == null)
     {
         character = GetComponentInParent <BaseCard>().character;
     }
     EventManager.StartListening(TurnMaster.getStartTurnTrigger(character.gameObject.GetInstanceID()), startGlow);
     EventManager.StartListening(TurnMaster.getEndTurnTrigger(character.gameObject.GetInstanceID()), endGlow);
     if (TurnMaster.Instance().activeCharacter() == character)
     {
         startGlow();
     }
 }
コード例 #11
0
ファイル: GlowOnPhase.cs プロジェクト: SantanaDVX/CardGameRPG
    private new void Start() {
        base.Start();
        if (character == null) {
            character = GetComponentInParent<BaseCard>().character;
        }

        if (!glowOnlyOnActivePlayer || (glowOnlyOnActivePlayer && character.playerCharacter)) {
            EventManager.StartListening(TurnMaster.getStartPhaseTrigger(glowPhase, character.gameObject.GetInstanceID()), startGlow);
            EventManager.StartListening(TurnMaster.getEndPhaseTrigger(glowPhase, character.gameObject.GetInstanceID()), endGlow);
            if (TurnMaster.currentPhase == glowPhase) {
                startGlow();
            }
        }
    }
コード例 #12
0
 private bool playableNow()
 {
     return(character == StackController.Instance().getPriorityCharacter() &&
            (character == TurnMaster.Instance().activeCharacter() &&
             TurnMaster.currentPhase == Phase.Action &&
             StackController.Instance().theStack.Count == 0 &&
             (subTypes.Contains(CardSubType.Skill) ||
              subTypes.Contains(CardSubType.Attack))) ||
            (character != TurnMaster.Instance().activeCharacter() &&
             TurnMaster.currentPhase == Phase.Action &&
             StackController.Instance().isCharacterBeingTargeted(character) &&
             (subTypes.Contains(CardSubType.Fast) ||
              (subTypes.Contains(CardSubType.Defend) &&
               character.activeBlock == null &&
               !StackController.Instance().isCardSubTypeInStack(CardSubType.Defend)))));
 }
コード例 #13
0
 public void continueWithAdventure()
 {
     if (preBattle)
     {
         List <CombatCharacter> enemies = EnemySpawner.Instance().spawnEnemies(currentEncounter.enemies);
         TurnMaster.Instance().startBattle(enemies);
     }
     else
     {
         currentEncounter = adventure.getNextEncounter();
         if (currentEncounter == null)
         {
             finishAdventure();
         }
         else
         {
             startEncounter();
         }
     }
 }
コード例 #14
0
    private void Awake()
    {
        shuffleDeck();
        activeBlock = null;
        EventManager.StartListening(TurnMaster.getGenericStartPhaseTrigger(), refreshUI);
        EventManager.StartListening(TurnMaster.getStartPhaseTrigger(Phase.Draw, gameObject.GetInstanceID()), drawStep);
        if (!playerCharacter)
        {
            EventManager.StartListening(TurnMaster.getEndTurnTrigger(gameObject.GetInstanceID()), turnOffUI);
        }

        if (equippedWeapon != null)
        {
            equippedWeapon.equip(this);
        }

        if (equippedArmor != null)
        {
            equippedArmor.equip(this);
        }
    }
コード例 #15
0
    public bool hasPlay()
    {
        bool hasPlay = false;

        if (!passedPriority)
        {
            foreach (BaseCard card in hand.cards)
            {
                if (card.details.isCardPlayable())
                {
                    hasPlay = true;
                }
            }

            if (!hasPlay &&
                playerCharacter &&
                isSideboardAllowedNow() &&
                atleastOneSideboardLearnable())
            {
                hasPlay = true;
            }
        }
        if (hasPlay)
        {
            if (playerCharacter)
            {
                TurnMaster.Instance().setContinueButton(true);
            }
            else
            {
                ai.nudgeAIForDecision();
            }
            return(true);
        }
        else
        {
            return(false);
        }
    }
コード例 #16
0
    public override bool checkTarget(Targetable target)
    {
        if (targetCatgeory == TargetCategory.Enemy &&
            target is CombatCharacter &&
            target != targetSource.character &&
            (!uniqueTargets || (uniqueTargets && !targets.Contains(target))))
        {
            targets.Add(target);
        }
        else if (targetCatgeory == TargetCategory.CardInOwnHand &&
                 target is BaseCard)
        {
            BaseCard card = target as BaseCard;
            if (card.character.hand.cards.Contains(card))
            {
                targets.Add(target);
            }
        }

        bool resolve = false;

        if (targets.Count == targetCount)
        {
            resolve = true;
        }
        else if (uniqueTargets)
        {
            if (targetCatgeory == TargetCategory.Enemy &&
                target is CombatCharacter)
            {
                CombatCharacter tarCharacter = target as CombatCharacter;
                if (tarCharacter.playerCharacter)
                {
                    resolve = true;
                }
                else if (targets.Count == (TurnMaster.Instance().charactersInCombat.Count - 1))
                {
                    resolve = true;
                }
            }
            else if (targetCatgeory == TargetCategory.CardInOwnHand &&
                     target is BaseCard)
            {
                BaseCard card = target as BaseCard;
                if (targets.Count == card.character.hand.cards.Count)
                {
                    resolve = true;
                }
            }
        }

        if (resolve)
        {
            multiTargetSourceAbility.resolveTargeting(targets);
            return(true);
        }
        else
        {
            return(false);
        }
    }
コード例 #17
0
 public void informOfRealDad(TurnMaster master)
 {
     keeper = master;
 }
コード例 #18
0
    public CombatCharacter getPriorityCharacter()
    {
        int index = (playerPriorityIndex + TurnMaster.Instance().currentCharacterTurnIndex) % TurnMaster.Instance().charactersInCombat.Count;

        return(TurnMaster.Instance().charactersInCombat[index]);
    }
コード例 #19
0
 private void OnMouseDown()
 {
     TurnMaster.Instance().checkTargetListener(this);
 }
コード例 #20
0
 private bool isSideboardAllowedNow()
 {
     return(this == TurnMaster.Instance().activeCharacter() &&
            TurnMaster.currentPhase == Phase.Action &&
            StackController.Instance().theStack.Count == 0);
 }
コード例 #21
0
    private void Update()
    {
        if (TurnMaster.Instance().gameStarted)
        {
            if (waitTimer > 0)
            {
                waitTimer -= Time.deltaTime;
            }
            else
            {
                bool movingCard = false;
                foreach (BaseCard card in theStack)
                {
                    if (card.lerping)
                    {
                        movingCard = true;
                        break;
                    }
                }

                if (resolvingPrecastTriggers)
                {
                    if (stackTop().details.getAbility(precastAbilityIndex).isPrecastResolved())
                    {
                        precastAbilityIndex++;
                        if (precastAbilityIndex == stackTop().details.getAbilitiesLength())
                        {
                            resolvingPrecastTriggers = false;
                        }
                        else
                        {
                            executeCurrentPrecastTrigger();
                        }
                    }
                }
                else if (resolvingAbilities)
                {
                    resolveTopOfStack();
                }
                else if (movingCard)
                {
                    // Do nothing?
                }
                else if (transitionPhases)
                {
                    phaseBuffer += Time.deltaTime;
                    if (phaseBuffer >= phaseBufferLength)
                    {
                        TurnMaster.Instance().incrementPhase();
                        transitionPhases = false;
                        phaseBuffer      = 0.0f;
                    }
                }
                else
                {
                    bool someoneHasPlay = false;

                    for (; playerPriorityIndex < TurnMaster.Instance().charactersInCombat.Count; playerPriorityIndex++)
                    {
                        CombatCharacter character = getPriorityCharacter();
                        someoneHasPlay = character.hasPlay();

                        if (someoneHasPlay)
                        {
                            break;
                        }
                    }
                    if (!someoneHasPlay)
                    {
                        resetPriority();
                        if (theStack.Count == 0)
                        {
                            transitionPhases = true;
                        }
                        else
                        {
                            resolvingAbilities = true;
                        }
                    }
                }
            }
        }
    }
コード例 #22
0
 public void informOfRealDad(TurnMaster master)
 {
     this.turnMaster = master;
 }
コード例 #23
0
 public void informOfRealDad(TurnMaster master)
 {
 }
コード例 #24
0
 private void Awake()
 {
     TurnMaster.Instance().targetListener = this;
 }