Project_WL/Assets/Script/Info/DungeonInfo.cs

68 lines
2.3 KiB
C#

using CodeStage.AntiCheat.ObscuredTypes;
using System;
using System.Collections;
using UnityEngine;
using WebSocketSharp;
public class DungeonInfo : MonoBehaviourSingletonTemplate<DungeonInfo>
{
public ObscuredFloat m_Time;
public ObscuredInt m_MaxDieMobCount;
public Action<float> act_Time;
public Action<int> act_MobDieCount;
ObscuredInt m_DieCount;
public void Stop_Dungeon() { act_Time = null; StopAllCoroutines(); }
IEnumerator Co_Update_Time()
{
while (m_Time > 0f)
{
yield return null;
m_Time -= Time.deltaTime;
m_Time.RandomizeCryptoKey();
act_Time?.Invoke(m_Time);
}
// 시간 오버
Stop_Dungeon();
}
void Set_MobDie(int mobid)
{
++m_DieCount;
m_DieCount.RandomizeCryptoKey();
act_MobDieCount?.Invoke(m_DieCount);
if (m_DieCount == m_MaxDieMobCount)
Stop_Dungeon();
}
public void Start_Mimic() { StartCoroutine(Co_Update_Mimic()); }
IEnumerator Co_Update_Mimic()
{
m_DieCount = 0;
m_DieCount.RandomizeCryptoKey();
yield return new WaitForSeconds(1f);
StartCoroutine(Co_Update_Time());
var data = MyValue.MyChoiceMapData;
var mapdata = table_battlemapconfig.Ins.Get_Data(data.n_MapID);
var dungeonData = table_dungeonmapconfig.Ins.Get_Data_orNull(mapdata.e_Dungeon, data.n_DungeonLv);
var mimicData = table_monsterlist.Ins.Get_Data_orNull(dungeonData.n_MobID);
var mobCount = dungeonData.n_MobCount;
while (mobCount > 0)
{
--mobCount;
AddrResourceMgr.Ins.LoadObject<GameObject>(mimicData.s_MonsterPrefab, handle =>
{
var mob = DSUtil.Get_Clone<MobActor>(handle.Result);
ActorInfo.Ins.Add_Actor(mob, eRole.Mob, dungeonData.n_SpawnID, mimicData.s_MonsterPrefab);
mob.Set(true, null, null, dungeonData.n_SpawnID, false);
var rdnpos = DSUtil.Get_RandomPos_onNavMesh(MyValue.MyPC.Get_position(), 0f, 10f);
mob.Set(eRole.Mob, mimicData, rdnpos, Set_MobDie, 0);
mob.m_SubRole = eSubRol.Mimic;
});
yield return new WaitForSeconds(dungeonData.f_MakeGap);
}
}
}