Beispiel #1
0
    private void SetState_Idle(bool shouldBeNormal)
    {
        if (_curState == CharacterState.Dead)
        {
            return;
        }

        CharacterState lastState = _curState;

        _curState = CharacterState.Idle;

        List <CharVisualActionInfo> acts = new List <CharVisualActionInfo>();

        CharVisualActionInfo act = new CharVisualActionInfo();

        act.actionType = CharVisualActionType.Idle;

        if (shouldBeNormal)
        {
            act.idleType = SetIdleTypeInNormalMode();
        }
        else
        {
            act.idleType = lastState == CharacterState.Prefight ? CharVisualIdleType.Prefight : SetIdleTypeInNormalMode();
        }

        acts.Add(act);

        _charVisual.StartActionList(acts);

        if (Event_StateChange != null)
        {
            Event_StateChange(this, _curState);
        }
    }
Beispiel #2
0
    private void SetState_SpecificAnim(CharacterSpecificAnimation animType)
    {
        if (_curState != CharacterState.Idle)
        {
            return;
        }

        if (_isSelected)
        {
            return;
        }

        _curState = CharacterState.SpecificAnim;

        DivineDebug.Log("Run Specific Anim " + moniker + " AnimType: " + animType.ToString());

        List <CharVisualActionInfo> acts = new List <CharVisualActionInfo>();

        CharVisualActionInfo act = new CharVisualActionInfo();

        act                  = new CharVisualActionInfo();
        act.actionType       = CharVisualActionType.SpecificAnimation;
        act.specificAnimType = animType;
        acts.Add(act);

        _charVisual.StartActionList(acts);

        if (Event_StateChange != null)
        {
            Event_StateChange(this, _curState);
        }
    }
Beispiel #3
0
    private void SetState_Dying(bool shownAnimBefore)
    {
        _curState = CharacterState.Dying;

        List <CharVisualActionInfo> acts = new List <CharVisualActionInfo>();

        _charVisual.charUI.SetActivity(false);

        _extraSpellHandler.Die();

        CharVisualActionInfo act = null;

        if (!shownAnimBefore)
        {
            act            = new CharVisualActionInfo();
            act.actionType = CharVisualActionType.Dying;
            acts.Add(act);
        }

        HeroInfo hInfo  = _charInfo as HeroInfo;
        bool     isHero = hInfo != null;

        if (!isChakra && !isHero)
        {
            act            = new CharVisualActionInfo();
            act.actionType = CharVisualActionType.Fading;
            acts.Add(act);

            act            = new CharVisualActionInfo();
            act.actionType = CharVisualActionType.AppearGrave;
            act.moveTarget = _startingPoint;
            acts.Add(act);
        }
        else
        {
            _curState = CharacterState.Dead;
        }

        _charVisual.StartActionList(acts);

        if (Event_StateChange != null)
        {
            Event_StateChange(this, _curState);
        }
    }
Beispiel #4
0
    private void SetState_Prefight()
    {
        _curState = CharacterState.Prefight;

        List <CharVisualActionInfo> acts = new List <CharVisualActionInfo>();

        CharVisualActionInfo act = new CharVisualActionInfo();

        act.actionType = CharVisualActionType.Prefight;
        acts.Add(act);

        _charVisual.StartActionList(acts);

        if (Event_StateChange != null)
        {
            Event_StateChange(this, _curState);
        }
    }
Beispiel #5
0
    private void SetState_BattleEndingAction(bool isVictorious)
    {
        _curState = CharacterState.BattleEndAction;

        List <CharVisualActionInfo> acts = new List <CharVisualActionInfo>();

        CharVisualActionInfo act = new CharVisualActionInfo();

        act.actionType   = CharVisualActionType.BattleEnding;
        act.isVictorious = isVictorious;

        acts.Add(act);

        _charVisual.StartActionList(acts);

        if (Event_StateChange != null)
        {
            Event_StateChange(this, _curState);
        }
    }
Beispiel #6
0
    private void Setstate_JumpBack()
    {
        _curState = CharacterState.JumpBack;

        List <CharVisualActionInfo> acts = new List <CharVisualActionInfo>();

        CharVisualActionInfo act = new CharVisualActionInfo();

        act.actionType = CharVisualActionType.JumpBack;
        act.moveTarget = _startingPoint;
        act.moveScale  = _startingScale;
        acts.Add(act);

        _charVisual.StartActionList(acts);

        if (Event_StateChange != null)
        {
            Event_StateChange(this, _curState);
        }
    }
Beispiel #7
0
    private void Revive()
    {
        List <CharVisualActionInfo> acts = new List <CharVisualActionInfo>();

        DivineDebug.Log("Revive Happened for this character: " + moniker);

        _charVisual.charUI.SetActivity(true);

        CharVisualActionInfo act = new CharVisualActionInfo();

        act.actionType = CharVisualActionType.Revive;

        acts.Add(act);

        _charVisual.StartActionList(acts);

        if (Event_StateChange != null)
        {
            Event_StateChange(this, _curState);
        }
    }
Beispiel #8
0
    private void SetState_Incoming(Vector3 targetPos, Vector3 targetScale)
    {
        _curState = CharacterState.Incoming;

        List <CharVisualActionInfo> acts = new List <CharVisualActionInfo>();

        CharVisualActionInfo act = new CharVisualActionInfo();

        act.actionType = CharVisualActionType.Move;
        act.moveTarget = targetPos;
        act.moveScale  = targetScale;
        act.moveTime   = .5f;

        acts.Add(act);

        _charVisual.StartActionList(acts);

        if (Event_StateChange != null)
        {
            Event_StateChange(this, _curState);
        }
    }
Beispiel #9
0
    private void StartAction(CharVisualActionInfo action)
    {
        _currentAction = action;

        if (_extraVisualLogic != null && !_extraVisualLogic.CanRunMainLogic(_currentAction))
        {
            return;
        }

        switch (_currentAction.actionType)
        {
        case CharVisualActionType.Idle:
            StartAct_Idle();
            break;

        case CharVisualActionType.Move:
            StartAct_Move();
            break;

        case CharVisualActionType.Jump:
            StartAct_Jump();
            break;

        case CharVisualActionType.JumpBack:
            StartAct_JumpBack();
            break;

        case CharVisualActionType.Prefight:
            StartAct_PreFight();
            break;

        case CharVisualActionType.CastSpell:
            StartAct_CastSpell();
            break;

        case CharVisualActionType.ReceiveSpell:
            StartAct_ReceiveSpell();
            break;

        case CharVisualActionType.SpecificAnimation:
            StartAct_RunSpecificAnim();
            break;

        case CharVisualActionType.Dying:
            StartAct_Dying();
            break;

        case CharVisualActionType.Fading:
            StartAct_Fading();
            break;

        case CharVisualActionType.AppearGrave:
            StartAct_AppearGrave();
            break;

        case CharVisualActionType.Revive:
            StartAct_Revive();
            break;

        case CharVisualActionType.BattleEnding:
            StartAct_BattleEndingAction();
            break;
        }

        if (_extraVisualLogic != null)
        {
            _extraVisualLogic.RunExtraLogic(_currentAction);
        }
    }
Beispiel #10
0
    private void SetState_ReceiveSpell(SpellInfo spellInfo, int effectIndex, bool shouldWaitForLastStateDone)
    {
        if (shouldWaitForLastStateDone)
        {
            _waitingSpellInfo        = spellInfo;
            _waitingSpellEffectIndex = effectIndex;
            return;
        }

        RemoveWaitingSpells();

        _curState = CharacterState.ReceiveSpell;

        if (Event_SpellReceived != null)
        {
            Event_SpellReceived(spellInfo, effectIndex, this);
        }

        if (spellInfo.spellEffectInfos[effectIndex].effectOnCharacter == SpellEffectOnChar.Revive)
        {
            Revive();
            return;
        }

        //Here comes Chakra! AAAA...
        if (spellInfo.spellEffectInfos[effectIndex].effectOnCharacter == SpellEffectOnChar.Appear)
        {
            _becomingChakra = true;

            SetActive(true, false);

            if (Event_ChakraApeared != null && isChakra)
            {
                Event_ChakraApeared();
            }
        }

        _extraSpellHandler.SpellReceieved(spellInfo.spellEffectInfos[effectIndex].effectOnCharacter);

        List <CharVisualActionInfo> acts = new List <CharVisualActionInfo>();

        DivineDebug.Log("ReceiveSpell: " + spellInfo.spellEffectInfos[effectIndex].effectOnCharacter + " Reciever: " + moniker);

        CharVisualActionInfo act = new CharVisualActionInfo();

        act.actionType       = CharVisualActionType.ReceiveSpell;
        act.spellInfo        = spellInfo;
        act.spellEffectIndex = effectIndex;

        if (spellInfo.spellEffectInfos[effectIndex].finalCharacterStats.hp <= 0)
        {
            act.isDied  = true;
            _dieWithHit = true;
        }
        else
        {
            act.isDied  = false;
            _dieWithHit = false;
        }

        acts.Add(act);

        _charVisual.StartActionList(acts);

        if (Event_StateChange != null)
        {
            Event_StateChange(this, _curState);
        }
    }
Beispiel #11
0
    private void SetState_CastSpell(SpellInfo spellInfo, int consumedAP)
    {
        _curState = CharacterState.CastSpell;

        DivineDebug.Log("CastSpell: Casted character " + moniker + " SpellType: " + spellInfo.spellType);

        if (spellInfo.spellType == SpellType.DamageReturn)
        {
            _extraSpellHandler.CastSpell(spellInfo, OnCharVisualSpellCast, OnCharVisualActionsFinish);
        }
        else
        {
            List <CharVisualActionInfo> acts = new List <CharVisualActionInfo>();

            CharVisualActionInfo act = new CharVisualActionInfo();

            if (spellInfo.needTargetToComeNear)
            {
                act.actionType = CharVisualActionType.Jump;
                act.moveScale  = _charVisual.transform.localScale + ScaleRatio(
                    spellInfo.spellEffectInfos[0].targetCharacter.charFormationPoint.formationIndex,
                    charFormationPoint.formationIndex);
                act.moveTarget = TargetPos(act.moveScale.x, spellInfo.spellEffectInfos[0].targetCharacter.position_pivot) + new Vector3(0f, 0f, -0.05f);
                act.spellInfo  = spellInfo;

                acts.Add(act);

                _jumped = true;

                _charVisual.charUI.SetActivity(false);
            }

            act            = new CharVisualActionInfo();
            act.actionType = CharVisualActionType.CastSpell;
            act.spellInfo  = spellInfo;
            acts.Add(act);

            if (spellInfo.spellType == SpellType.Chakra)
            {
                act            = new CharVisualActionInfo();
                act.actionType = CharVisualActionType.Fading;
                act.itsAlive   = true;
                acts.Add(act);

                _goesToChakraMode = true;

                _charVisual.SetUIActivity(false, heroUIHideDelay);

                _extraSpellHandler.Die();
            }

            _charVisual.StartActionList(acts);

            _relatedParty.SetActionPoint(_relatedParty.actionPoint - consumedAP, false);
        }

        if (Event_StateChange != null)
        {
            Event_StateChange(this, _curState);
        }
    }