예제 #1
0
    void ExcuteHeroAction()
    {
        var ActiveHero = BattleHeroManager.Instance.GetHeroControl(ActiveTurnHeroNo);

        if (ActiveHero != null)
        {
            Debug.Log("ActiveHero Action : " + ActiveHero.ActionType);
        }

        var TargetHero = BattleHeroManager.Instance.GetHeroControl(ActiveTargetHeroNo);

        if (TargetHero != null)
        {
            Debug.Log("TargetHero Action : " + TargetHero.ActionType);
        }

        bool isWinner = false;
        EHeroBattleAction ActiveAction = ResultBattleAction(ActiveHero, TargetHero, ref isWinner);
        Vector3           vPos         = Battleground.GetTeamPos(ActiveAction, ActiveHero.IsMyTeam);

        ActiveHero.ExcuteAction(ActiveAction, vPos, TargetHero, isWinner);

        EHeroBattleAction TargetHeroAction = ResultBattleAction(TargetHero, ActiveHero, ref isWinner);

        vPos = Battleground.GetTeamPos(TargetHeroAction, TargetHero.IsMyTeam);
        TargetHero.ExcuteAction(TargetHeroAction, vPos, ActiveHero, isWinner);
    }
예제 #2
0
 public void ChangeState(EHeroBattleAction eAction, byte[] data = null, bool bRefresh = false)
 {
     if (mActionManager != null)
     {
         mActionManager.ChangeAction(eAction, data, bRefresh);
     }
 }
예제 #3
0
    // 실제 전투 행동
    public void ExcuteAction(EHeroBattleAction heroAction, Vector3 vPos, BattleHero targetHero, bool isWinner)
    {
        this.BattleTargetHero = targetHero;

        int sortingOrder = isWinner ? Define.BATTLE_WINNER_SORTINGORDER : Define.BATTLE_LOSER_SORTINGORDER;

        SetSortingOrder(sortingOrder);
        SetPosition(vPos);
        SetScale(new Vector3(Define.ACTION_START_SCALE, Define.ACTION_START_SCALE, Define.ACTION_START_SCALE));
        ChangeState(heroAction);
    }
    public virtual void ChangeAction(EHeroBattleAction eAction, byte[] data = null, bool bRefresh = false)
    {
        if (m_eCurrentAction != eAction || bRefresh == true)
        {
            m_ePreviousAction = m_eCurrentAction;
            m_Actions[(int)m_ePreviousAction].DoEnd(eAction);

            m_eCurrentAction = eAction;
            m_Actions[(int)m_eCurrentAction].DoStart(data);
        }
    }
    public virtual void Initialize(BattleHero owner)
    {
        m_ePreviousAction = m_eCurrentAction = EHeroBattleAction.HeroAction_Idle;

        m_Owner = owner;

        for (int i = (int)EHeroBattleAction.HeroAction_Idle; i < (int)EHeroBattleAction.HeroAction_Max; i++)
        {
            m_Actions[i].Initialize(m_Owner, this);
        }

        m_Actions[(int)m_eCurrentAction].DoStart();
    }
예제 #6
0
 public Vector3 GetTeamPos(EHeroBattleAction stateAction, bool myTeam)
 {
     if (stateAction == EHeroBattleAction.HeroAction_CntWin ||
         stateAction == EHeroBattleAction.HeroAction_AtkDefeat)
     {
         if (myTeam)
         {
             return(BattleActionPosMyTeam[(int)BattlePosType.BPT_ATK_FAKE].position);
         }
         else
         {
             return(BattleActionPosEnemy[(int)BattlePosType.BPT_ATK_FAKE].position);
         }
     }
     else if (stateAction == EHeroBattleAction.HeroAction_FakeWin ||
              stateAction == EHeroBattleAction.HeroAction_CntDefeat)
     {
         if (myTeam)
         {
             return(BattleActionPosMyTeam[(int)BattlePosType.BPT_CNT_ATK].position);
         }
         else
         {
             return(BattleActionPosEnemy[(int)BattlePosType.BPT_CNT_ATK].position);
         }
     }
     else if (stateAction == EHeroBattleAction.HeroAction_AtkWin ||
              stateAction == EHeroBattleAction.HeroAction_FakeDefeat)
     {
         if (myTeam)
         {
             return(BattleActionPosMyTeam[(int)BattlePosType.BPT_FAKE_CNT].position);
         }
         else
         {
             return(BattleActionPosEnemy[(int)BattlePosType.BPT_FAKE_CNT].position);
         }
     }
     else
     {
         if (myTeam)
         {
             return(BattleActionPosMyTeam[(int)BattlePosType.BPT_DRAW].position);
         }
         else
         {
             return(BattleActionPosEnemy[(int)BattlePosType.BPT_DRAW].position);
         }
     }
 }
예제 #7
0
    protected bool IsMovingAction(EHeroBattleAction action)
    {
        if (action == EHeroBattleAction.HeroAction_AtkWin ||
            action == EHeroBattleAction.HeroAction_CntWin ||
            action == EHeroBattleAction.HeroAction_FakeWin ||
            action == EHeroBattleAction.HeroAction_AtkDefeat ||
            action == EHeroBattleAction.HeroAction_CntDefeat ||
            action == EHeroBattleAction.HeroAction_FakeDefeat ||
            action == EHeroBattleAction.HeroAction_DrawAtkDefeat ||
            action == EHeroBattleAction.HeroAction_DrawDefeatAtk)
        {
            return(true);
        }

        return(false);
    }
예제 #8
0
    public virtual void DoEnd(EHeroBattleAction eNextAction)
    {
        if (IsMovingAction(m_ActionManager.GetCurrentAction()) && eNextAction != EHeroBattleAction.HeroAction_BattleDie)
        {
            m_Owner.IsAction = false;
        }

        // idle Action을 제외하고 모든 행동 끝에는 targetHero를 초기화 시킨다.
        if (m_ActionManager.GetCurrentAction() != EHeroBattleAction.HeroAction_Idle)
        {
            m_Owner.BattleTargetHero = null;

            // 전투시 공격 승리자를 더 높게 설정했던 SortingOrder를 원래대로 초기화.
            m_Owner.SetDefaultSortingOrder();
        }
    }
예제 #9
0
    public override void DoEnd(EHeroBattleAction eNextAction)
    {
        base.DoEnd(eNextAction);

        m_Owner.StopCoroutine(ActionProc());
    }
예제 #10
0
 public override void DoEnd(EHeroBattleAction eNextAction)
 {
     base.DoEnd(eNextAction);
 }
예제 #11
0
 public virtual void ActionRemind(EHeroBattleAction eAction, HeroBattleAction action)
 {
     m_Actions[(int)eAction] = action;
 }
예제 #12
0
 public virtual HeroBattleAction GetAction(EHeroBattleAction eAction)
 {
     return(m_Actions[(int)eAction]);
 }