public void SetCurrentFieldMapID(uint map_id, float map_x, float map_z, float map_dir)
    {
        current = new CurrentFieldData();
        current.fieldTransitionInfo.portalID = 0u;
        current.fieldTransitionInfo.mapID    = map_id;
        current.fieldTransitionInfo.mapX     = map_x;
        current.fieldTransitionInfo.mapZ     = map_z;
        current.fieldTransitionInfo.mapDir   = map_dir;
        if (current.fieldTransitionInfo.mapID != 0)
        {
            current.mapData = Singleton <FieldMapTable> .I.GetFieldMapData(current.fieldTransitionInfo.mapID);
        }
        else
        {
            current.mapData = null;
        }
        current.isValidBoss = false;
        List <FieldMapTable.EnemyPopTableData> enemyPopList = Singleton <FieldMapTable> .I.GetEnemyPopList(currentMapID);

        if (enemyPopList != null)
        {
            int i = 0;
            for (int count = enemyPopList.Count; i < count; i++)
            {
                FieldMapTable.EnemyPopTableData enemyPopTableData = enemyPopList[i];
                if (enemyPopTableData != null && enemyPopTableData.bossFlag)
                {
                    current.isValidBoss = true;
                    break;
                }
            }
        }
        _SetFieldPortalInfoList(current.fieldTransitionInfo.mapID);
    }
示例#2
0
 private bool IsPreferredType(ENEMY_POP_TYPE now, FieldMapTable.EnemyPopTableData popData)
 {
     if (now == ENEMY_POP_TYPE.RARE_SPECIES && popData.enemyPopType == ENEMY_POP_TYPE.FIELD_BOSS)
     {
         return(true);
     }
     return(false);
 }
 public void Init(CoopLocalServerStage stage, int idx, FieldMapTable.EnemyPopTableData data, int count)
 {
     this.stage = stage;
     popIndex   = idx;
     this.data  = data;
     this.count = count;
     enemys     = new List <CoopLocalServerEnemy>();
     isStart    = false;
 }
示例#4
0
    public bool TryGetEnableLastEndTime(int mapId, out FieldMapEnemyPopTimeZoneData resultTimeZone, out ENEMY_POP_TYPE resultType)
    {
        resultTimeZone = null;
        resultType     = ENEMY_POP_TYPE.RARE_SPECIES;
        if (!MonoBehaviourSingleton <FieldManager> .IsValid())
        {
            return(false);
        }
        List <FieldMapEnemyPopTimeZoneData> enemyTimeZoneDataList = GetEnemyTimeZoneDataList(mapId);

        if (enemyTimeZoneDataList == null || enemyTimeZoneDataList.Count <= 0)
        {
            return(false);
        }
        List <FieldMapTable.EnemyPopTableData> rareOrBossEnemyList = Singleton <FieldMapTable> .I.GetRareOrBossEnemyList(mapId);

        if (rareOrBossEnemyList == null || rareOrBossEnemyList.Count <= 0)
        {
            return(false);
        }
        bool     result   = false;
        DateTime minValue = DateTime.MinValue;

        if (!MonoBehaviourSingleton <FieldManager> .I.fieldData.field.TryGetCreatedAt(out DateTime createdAt))
        {
            return(false);
        }
        DateTime now = TimeManager.GetNow();
        int      i   = 0;

        for (int count = enemyTimeZoneDataList.Count; i < count; i++)
        {
            FieldMapEnemyPopTimeZoneData fieldMapEnemyPopTimeZoneData = enemyTimeZoneDataList[i];
            if (fieldMapEnemyPopTimeZoneData.TryGetStartTime(out DateTime result2) && fieldMapEnemyPopTimeZoneData.TryGetEndTime(out DateTime result3))
            {
                result2 = TimeManager.CombineDateAndTime(createdAt, result2);
                result3 = TimeManager.CombineDateAndTime(createdAt, result3);
                if (createdAt >= result2 && now <= result3)
                {
                    FieldMapTable.EnemyPopTableData enemyPopTableData = FindEnemyPopData(rareOrBossEnemyList, mapId, fieldMapEnemyPopTimeZoneData.enemyId);
                    if (enemyPopTableData != null && (result3 > minValue || IsPreferredType(resultType, enemyPopTableData)))
                    {
                        result         = true;
                        resultType     = enemyPopTableData.enemyPopType;
                        resultTimeZone = fieldMapEnemyPopTimeZoneData;
                    }
                }
            }
        }
        return(result);
    }
示例#5
0
    private FieldMapTable.EnemyPopTableData FindEnemyPopData(List <FieldMapTable.EnemyPopTableData> specialEnemyList, int mapId, int enemyId)
    {
        int i = 0;

        for (int count = specialEnemyList.Count; i < count; i++)
        {
            FieldMapTable.EnemyPopTableData enemyPopTableData = specialEnemyList[i];
            if (enemyPopTableData.mapID == mapId && enemyPopTableData.enemyID == enemyId)
            {
                return(enemyPopTableData);
            }
        }
        return(null);
    }
示例#6
0
    protected override void OnInitialize()
    {
        base.OnInitialize();
        if (enemy.brainParam != null)
        {
            param = enemy.brainParam;
            FieldMapTable.EnemyPopTableData enemyPopData = Singleton <FieldMapTable> .I.GetEnemyPopData(MonoBehaviourSingleton <FieldManager> .I.currentMapID, enemy.enemyPopIndex);

            if (enemyPopData != null && enemyPopData.autoActivate)
            {
                param.scoutParam = enemyPopData.scoutingParam;
            }
        }
        base.opponentMemSpanTimer.PauseOn();
        base.targetUpdateSpanTimer.PauseOn();
        if (enemy.isBoss)
        {
            base.opponentMem.SetHateParam(enemy.enemyTableData.personality);
        }
        else
        {
            base.opponentMem.SetHateParam(HateParam.GetDefault());
        }
        base.fsm = new StateMachine(this);
        if (enemy.enemyTableData.active)
        {
            base.fsm.ChangeState(STATE_TYPE.ACTIVE);
        }
        else
        {
            base.fsm.ChangeState(STATE_TYPE.NONACTIVE);
        }
        if (QuestManager.IsValidInGameWaveMatch())
        {
            SetNearWaveMatchTarget();
        }
        actionCtrl = new EnemyActionController(this);
        actionCtrl.LoadTable();
    }
示例#7
0
 private void InitEnemyPop(List <CoopOfflineManager.EnemyPopParam> enemy_pop_params)
 {
     if (QuestManager.IsValidInGameWaveMatch())
     {
         MonoBehaviourSingleton <InGameProgress> .I.BattleRetire();
     }
     else
     {
         enemyPops = new List <CoopLocalServerEnemyPop>();
         int i = 0;
         for (int count = enemy_pop_params.Count; i < count; i++)
         {
             FieldMapTable.EnemyPopTableData data = enemy_pop_params[i].data;
             if (data != null && enemy_pop_params[i].data.enemyPopType == ENEMY_POP_TYPE.NONE)
             {
                 int count2 = enemy_pop_params[i].count;
                 CoopLocalServerEnemyPop coopLocalServerEnemyPop = new CoopLocalServerEnemyPop();
                 coopLocalServerEnemyPop.Init(this, i, data, count2);
                 enemyPops.Add(coopLocalServerEnemyPop);
             }
         }
     }
 }
示例#8
0
    public IEnumerator InitializeEnemyPop()
    {
        if (MonoBehaviourSingleton <StageObjectManager> .IsValid() && MonoBehaviourSingleton <FieldManager> .IsValid())
        {
            List <FieldMapTable.EnemyPopTableData> enemy_pop_list = Singleton <FieldMapTable> .I.GetEnemyPopList(MonoBehaviourSingleton <FieldManager> .I.currentMapID);

            if (enemy_pop_list != null && enemy_pop_list.Count > 0)
            {
                uint quest_enemy_id = 0u;
                int  quest_enemy_lv = 0;
                if (QuestManager.IsValidInGame())
                {
                    quest_enemy_id = (uint)MonoBehaviourSingleton <QuestManager> .I.GetCurrentQuestEnemyID();

                    quest_enemy_lv = MonoBehaviourSingleton <QuestManager> .I.GetCurrentQuestEnemyLv();
                }
                if (HasArenaInfo())
                {
                    quest_enemy_lv = arenaInfo.arenaData.level;
                }
                List <uint> enemy_list = new List <uint>();
                int         load_count = 0;
                int         i          = 0;
                for (int len = enemy_pop_list.Count; i < len; i++)
                {
                    FieldMapTable.EnemyPopTableData enemy_pop = enemy_pop_list[i];
                    if (enemy_pop != null)
                    {
                        uint enemy_id;
                        int  enemy_level;
                        if (enemy_pop.enemyID != 0)
                        {
                            enemy_id    = enemy_pop.enemyID;
                            enemy_level = (int)enemy_pop.enemyLv;
                        }
                        else
                        {
                            if (quest_enemy_id == 0)
                            {
                                continue;
                            }
                            enemy_id    = quest_enemy_id;
                            enemy_level = quest_enemy_lv;
                        }
                        if (!enemy_list.Contains(enemy_id))
                        {
                            enemy_list.Add(enemy_pop.enemyID);
                            MonoBehaviourSingleton <StageObjectManager> .I.CreateEnemy(0, Vector3.get_zero(), 0f, (int)enemy_id, enemy_level, enemy_pop.bossFlag, true, true, delegate(Enemy o)
                            {
                                //IL_0001: Unknown result type (might be due to invalid IL or missing references)
                                o.get_gameObject().SetActive(false);
                                MonoBehaviourSingleton <StageObjectManager> .I.enemyStokeList.Add(o);
                                ((_003CInitializeEnemyPop_003Ec__Iterator1F2) /*Error near IL_01fc: stateMachine*/)._003Cload_count_003E__4++;
                            });
                        }
                    }
                }
                while (load_count < enemy_list.Count)
                {
                    yield return((object)null);
                }
            }
        }
    }