Exemplo n.º 1
0
    // Token: 0x06002320 RID: 8992 RVA: 0x0040D8DC File Offset: 0x0040BADC
    public override void Update(Soldier sam, ArmyGroup parent, float deltaTime)
    {
        Vector3 center = (sam.LastTargetPos + sam.SpreadPos) * 0.5f;

        center.y = 10f;
        sam.transform.position = GameConstants.QuadraticBezierCurves(sam.LastTargetPos, center, sam.SpreadPos, 2f, sam.Timer);
        sam.Timer += deltaTime;
        if (sam.Timer >= 0.5f)
        {
            sam.Flag = 0;
            EStateName name = ArmyGroup.m_FSMMap[sam.Parent.State];
            sam.FSMController = FSMManager.Instance.getState(name);
        }
    }
Exemplo n.º 2
0
    // Token: 0x060022AB RID: 8875 RVA: 0x00409820 File Offset: 0x00407A20
    public virtual void Update(float deltaTime, float moveDeltaTime)
    {
        if (this.SoldierCount == 0)
        {
            if (this.heroSoldier != null)
            {
                this.heroSoldier.FSMController.Update(this.heroSoldier, this, deltaTime);
            }
            return;
        }
        this.checkMove(moveDeltaTime);
        FSMUnit fsmunit = null;

        if (this.ForceEnterFSM || this.lastState != this.m_State)
        {
            EStateName name = ArmyGroup.m_FSMMap[this.m_State];
            fsmunit = ArmyGroup.FSMMgr.getState(name);
            if (this.m_State == ArmyGroup.EGROUPSTATE.MOVE_OUTOF_TOWN || this.m_State == ArmyGroup.EGROUPSTATE.JUMP_FROM_WALL)
            {
                this.bAttackMode = true;
            }
            else if (((WarManager.IsNpcModeEnable && this.Side != 0) || !this.hasLord) && (this.m_State == ArmyGroup.EGROUPSTATE.ATTACKER_RUN_AWAY || this.m_State == ArmyGroup.EGROUPSTATE.DEFENSER_RUN_AWAY))
            {
                this.LordRunAway(this.m_State == ArmyGroup.EGROUPSTATE.ATTACKER_RUN_AWAY);
            }
            this.ForceEnterFSM = false;
        }
        int num = this.SoldierCountDefault - this.CurrentSoldierCount;

        if (num != this.DeadCount)
        {
            int num2 = num - this.DeadCount;
            if (num2 > 5)
            {
            }
            this.DeadCount = num;
        }
        for (int i = 0; i < this.SoldierCount; i++)
        {
            if (i >= this.CurrentSoldierCount)
            {
                EStateName curFSM = this.soldiers[i].CurFSM;
                if (curFSM != EStateName.DIE && curFSM != EStateName.DYING)
                {
                    this.soldiers[i].Flag = 2;
                    if (this.AttackBy != null)
                    {
                        this.soldiers[i].Target = ((this.AttackBy.heroSoldier == null) ? this.AttackBy.soldiers[0] : this.AttackBy.heroSoldier);
                    }
                    else
                    {
                        this.soldiers[i].Target = null;
                    }
                    this.soldiers[i].FSMController = ArmyGroup.FSMMgr.getState(EStateName.DYING);
                }
            }
            else if (fsmunit != null)
            {
                this.soldiers[i].FSMController = fsmunit;
            }
            this.soldiers[i].FSMController.Update(this.soldiers[i], this, deltaTime);
            this.soldiers[i].Update(deltaTime);
        }
        if (this.heroSoldier != null)
        {
            if (!this.bAttackMode && this.hasLord)
            {
                this.SiegeModeDefenserLordRun(deltaTime);
            }
            else
            {
                if (this.CurrentSoldierCount != 0 && fsmunit != null && this.m_State != ArmyGroup.EGROUPSTATE.ATTACKER_RUN_AWAY && this.m_State != ArmyGroup.EGROUPSTATE.DEFENSER_RUN_AWAY)
                {
                    if (this.heroSoldier.IsLord && this.m_State == ArmyGroup.EGROUPSTATE.MOVE_OUTOF_TOWN)
                    {
                        this.heroSoldier.FSMController = FSMManager.Instance.getState(EStateName.JUMP_FROM_WALL);
                    }
                    else
                    {
                        this.heroSoldier.FSMController = fsmunit;
                    }
                }
                this.heroSoldier.FSMController.Update(this.heroSoldier, this, deltaTime);
                this.heroSoldier.Update(deltaTime);
            }
        }
        if (this.bInsideSkill)
        {
            if (this.heroSoldier != null)
            {
                ((Lord)this.heroSoldier).bExtraScaleWork = false;
            }
            this.bInsideSkill = false;
        }
        this.OnceFlag  = 0u;
        this.AttackBy  = null;
        this.lastState = this.m_State;
    }
Exemplo n.º 3
0
 // Token: 0x06002327 RID: 8999 RVA: 0x0040DC14 File Offset: 0x0040BE14
 public FSMUnit getState(EStateName name)
 {
     return(this.m_FSMUnit[(int)name]);
 }