미믹 던전 결과, hudui 버그 수정, 기타 등등

This commit is contained in:
Ino 2025-01-24 07:16:18 +09:00
parent 27a6b995be
commit 52c0b022e7
21 changed files with 1325 additions and 48 deletions

View File

@ -53,4 +53,6 @@ messageinfo 엄청 느린 버그
- 입장권 매일 충전 : 2장까지 충전, 단 2장이상 가지고 있으면 충전 안됨 - 입장권 매일 충전 : 2장까지 충전, 단 2장이상 가지고 있으면 충전 안됨
- 기본 공격 시 주변에 몹이 있다면 몹을 바라보게 - 기본 공격 시 주변에 몹이 있다면 몹을 바라보게
- 펫 왜 공격 안하냐 - 펫 왜 공격 안하냐
- 미믹 던전 클리어 후 다음 레벨로 - 몬스터 젠 이펙트가 zero 위치에 나옴
- 미믹 던전 클리어 후 다음 레벨로
- 결과 화면 (입장권 차감, 승리 시 lv 올리기)

View File

@ -1 +1 @@
[{"n_MapID": "맵 ID", "n_Chapter": "챕터 정보", "e_MapType": "맵 타입", "e_Dungeon": "던전 타입", "s_Scene": "씬 정보", "s_BGM": "BGM 정보", "n_MapName": "맵 이름", "n_MapDesc": "맵 설명", "s_MapIcon": "맵 아이콘", "n_Portals": "연계 포탈 정보"}, {"n_MapID": "-1", "n_Chapter": "-1", "e_MapType": "Lobby", "e_Dungeon": "None", "s_Scene": "Lobby", "s_BGM": "Chapter1", "n_MapName": "1", "n_MapDesc": "0", "s_MapIcon": "Map1", "n_Portals": "0"}, {"n_MapID": "0", "n_Chapter": "0", "e_MapType": "MyFarm", "e_Dungeon": "None", "s_Scene": "MyFarm", "s_BGM": "Chapter1", "n_MapName": "1", "n_MapDesc": "0", "s_MapIcon": "Map2", "n_Portals": "0"}, {"n_MapID": "1", "n_Chapter": "1", "e_MapType": "Stage", "e_Dungeon": "None", "s_Scene": "Map_C01", "s_BGM": "Chapter1", "n_MapName": "1", "n_MapDesc": "0", "s_MapIcon": "Map3", "n_Portals": "1"}, {"n_MapID": "2", "n_Chapter": "2", "e_MapType": "Stage", "e_Dungeon": "None", "s_Scene": "Map_C02", "s_BGM": "Chapter2", "n_MapName": "1", "n_MapDesc": "0", "s_MapIcon": "Map4", "n_Portals": "1"}, {"n_MapID": "1001", "n_Chapter": "0", "e_MapType": "Dungeon", "e_Dungeon": "d1_Mimic", "s_Scene": "Map_Mimic", "s_BGM": "Chapter2", "n_MapName": "1001", "n_MapDesc": "1101", "s_MapIcon": "Map", "n_Portals": "1"}, {"n_MapID": "1002", "n_Chapter": "0", "e_MapType": "Dungeon", "e_Dungeon": "d2_Maze", "s_Scene": "Map_Maze", "s_BGM": "Chapter2", "n_MapName": "1002", "n_MapDesc": "1102", "s_MapIcon": "Map", "n_Portals": "1"}, {"n_MapID": "1003", "n_Chapter": "0", "e_MapType": "Dungeon", "e_Dungeon": "d3_Nightmare", "s_Scene": "Map_Nightmare", "s_BGM": "Chapter2", "n_MapName": "1003", "n_MapDesc": "1103", "s_MapIcon": "Map", "n_Portals": "1"}, {"n_MapID": "1004", "n_Chapter": "0", "e_MapType": "Dungeon", "e_Dungeon": "d4_Wave", "s_Scene": "Map_Wave", "s_BGM": "Chapter2", "n_MapName": "1004", "n_MapDesc": "1104", "s_MapIcon": "Map", "n_Portals": "1"}] [{"n_MapID": "맵 ID", "n_Chapter": "챕터 정보", "e_MapType": "맵 타입", "e_Dungeon": "던전 타입", "s_Scene": "씬 정보", "s_BGM": "BGM 정보", "n_MapName": "맵 이름", "n_MapDesc": "맵 설명", "s_MapIcon": "맵 아이콘", "n_Portals": "연계 포탈 정보", "n_TicketID": "입장권 ID"}, {"n_MapID": "-1", "n_Chapter": "-1", "e_MapType": "Lobby", "e_Dungeon": "None", "s_Scene": "Lobby", "s_BGM": "Chapter1", "n_MapName": "1", "n_MapDesc": "0", "s_MapIcon": "Map1", "n_Portals": "0", "n_TicketID": "0"}, {"n_MapID": "0", "n_Chapter": "0", "e_MapType": "MyFarm", "e_Dungeon": "None", "s_Scene": "MyFarm", "s_BGM": "Chapter1", "n_MapName": "1", "n_MapDesc": "0", "s_MapIcon": "Map2", "n_Portals": "0", "n_TicketID": "0"}, {"n_MapID": "1", "n_Chapter": "1", "e_MapType": "Stage", "e_Dungeon": "None", "s_Scene": "Map_C01", "s_BGM": "Chapter1", "n_MapName": "1", "n_MapDesc": "0", "s_MapIcon": "Map3", "n_Portals": "1", "n_TicketID": "0"}, {"n_MapID": "2", "n_Chapter": "2", "e_MapType": "Stage", "e_Dungeon": "None", "s_Scene": "Map_C02", "s_BGM": "Chapter2", "n_MapName": "1", "n_MapDesc": "0", "s_MapIcon": "Map4", "n_Portals": "1", "n_TicketID": "0"}, {"n_MapID": "1001", "n_Chapter": "0", "e_MapType": "Dungeon", "e_Dungeon": "d1_Mimic", "s_Scene": "Map_Mimic", "s_BGM": "Chapter2", "n_MapName": "1001", "n_MapDesc": "1002", "s_MapIcon": "Map", "n_Portals": "1", "n_TicketID": "501"}, {"n_MapID": "1002", "n_Chapter": "0", "e_MapType": "Dungeon", "e_Dungeon": "d2_Maze", "s_Scene": "Map_Maze", "s_BGM": "Chapter2", "n_MapName": "1011", "n_MapDesc": "1012", "s_MapIcon": "Map", "n_Portals": "1", "n_TicketID": "502"}, {"n_MapID": "1003", "n_Chapter": "0", "e_MapType": "Dungeon", "e_Dungeon": "d3_Nightmare", "s_Scene": "Map_Nightmare", "s_BGM": "Chapter2", "n_MapName": "1021", "n_MapDesc": "1022", "s_MapIcon": "Map", "n_Portals": "1", "n_TicketID": "503"}, {"n_MapID": "1004", "n_Chapter": "0", "e_MapType": "Dungeon", "e_Dungeon": "d4_Wave", "s_Scene": "Map_Wave", "s_BGM": "Chapter2", "n_MapName": "1031", "n_MapDesc": "1032", "s_MapIcon": "Map", "n_Portals": "1", "n_TicketID": "0"}]

File diff suppressed because one or more lines are too long

Binary file not shown.

File diff suppressed because it is too large Load Diff

View File

@ -140,7 +140,7 @@ public class Actor : MyCoroutine
protected virtual void OnDestroy() protected virtual void OnDestroy()
{ {
if (m_HUDUI) Destroy(m_HUDUI.gameObject); if (m_HUDUI) m_HUDUI.Off();
} }
protected override void Update() protected override void Update()
@ -228,7 +228,8 @@ public class Actor : MyCoroutine
Init_CC(); Init_CC();
DeadStatus = false; DeadStatus = false;
m_Enemy = isEnemy; m_Enemy = isEnemy;
Make_HUDUI(); m_HUDUI = InGameInfo.Ins.Get_HUDUI();
m_HUDUI.Init(this, transform);
m_ServerData = sdata; m_ServerData = sdata;
CurAnim = eAnim.Idle; CurAnim = eAnim.Idle;
Play_Idle(); Play_Idle();
@ -274,20 +275,6 @@ public class Actor : MyCoroutine
m_attackCoolTime = cooltime; m_attackCoolTime = cooltime;
} }
protected void Make_HUDUI(Action act = null)
{
#if UNITY_EDITOR
if (SceneManager.GetActiveScene().name == "StatTest" ||
SceneManager.GetActiveScene().name == "Settings") return;
#endif
InGameInfo.Ins.Get_HUDUI(hudui =>
{
m_HUDUI = hudui;
m_HUDUI.name = name;
m_HUDUI.Init(this, tf_HUD_HP);
act?.Invoke();
});
}
public virtual DamageInfo Get_DamageInfo(ProjectileData _pd, double _attackrate = 1d, bool forceCri = false) public virtual DamageInfo Get_DamageInfo(ProjectileData _pd, double _attackrate = 1d, bool forceCri = false)
{ {
var atkData = Get_CCData(eCC.ATK_Up); var atkData = Get_CCData(eCC.ATK_Up);

View File

@ -22,7 +22,7 @@ public class StoneActor : Actor
m_Enemy = true; m_Enemy = true;
Init_CC(); Init_CC();
Make_HUDUI(); //Make_HUDUI();
m_Stat = new ActorStatInfo(m_Role); m_Stat = new ActorStatInfo(m_Role);
if (dic_hp.ContainsKey(step)) if (dic_hp.ContainsKey(step))

View File

@ -15,11 +15,9 @@ public class SummonActor : MyActor
public void Set(bool isEnemy, Actor owner, float _time, float _attackrate, float _hprate, int projctileamount) public void Set(bool isEnemy, Actor owner, float _time, float _attackrate, float _hprate, int projctileamount)
{ {
gameObject.SetActive(true); gameObject.SetActive(true);
Make_HUDUI(() => m_HUDUI = InGameInfo.Ins.Get_HUDUI();
{ m_HUDUI.gameObject.SetActive(true);
m_HUDUI.gameObject.SetActive(true); m_HUDUI.Set_HPSlider(1d, 1d);
m_HUDUI.Set_HPSlider(1d, 1d);
});
OwnerActor = owner; OwnerActor = owner;
projctile_amount = projctileamount; projctile_amount.RandomizeCryptoKey(); projctile_amount = projctileamount; projctile_amount.RandomizeCryptoKey();

View File

@ -13,7 +13,13 @@ public class DungeonInfo : MonoBehaviourSingletonTemplate<DungeonInfo>
ObscuredInt m_DieCount; ObscuredInt m_DieCount;
public void Stop_Dungeon() { act_Time = null; StopAllCoroutines(); } public void Stop_Dungeon(bool win)
{
act_Time = null;
StopAllCoroutines();
Time.timeScale = 0f;
Ingame_DungeonResult.Ins.Show_Result(win);
}
IEnumerator Co_Update_Time() IEnumerator Co_Update_Time()
{ {
while (m_Time > 0f) while (m_Time > 0f)
@ -25,7 +31,7 @@ public class DungeonInfo : MonoBehaviourSingletonTemplate<DungeonInfo>
} }
// 시간 오버 // 시간 오버
Stop_Dungeon(); Stop_Dungeon(false);
} }
void Set_MobDie(int mobid) void Set_MobDie(int mobid)
{ {
@ -33,7 +39,7 @@ public class DungeonInfo : MonoBehaviourSingletonTemplate<DungeonInfo>
m_DieCount.RandomizeCryptoKey(); m_DieCount.RandomizeCryptoKey();
act_MobDieCount?.Invoke(m_DieCount); act_MobDieCount?.Invoke(m_DieCount);
if (m_DieCount == m_MaxDieMobCount) if (m_DieCount == m_MaxDieMobCount)
Stop_Dungeon(); Stop_Dungeon(true);
} }
public void Start_Mimic() { StartCoroutine(Co_Update_Mimic()); } public void Start_Mimic() { StartCoroutine(Co_Update_Mimic()); }
@ -44,9 +50,8 @@ public class DungeonInfo : MonoBehaviourSingletonTemplate<DungeonInfo>
yield return new WaitForSeconds(1f); yield return new WaitForSeconds(1f);
StartCoroutine(Co_Update_Time()); StartCoroutine(Co_Update_Time());
var data = MyValue.MyChoiceMapData; var mapdata = MyValue.MyChoiceMapData.Get_MapData();
var mapdata = table_battlemapconfig.Ins.Get_Data(data.n_MapID); var dungeonData = MyValue.MyChoiceMapData.Get_DungeonMapData_orNull();
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 mimicData = table_monsterlist.Ins.Get_Data_orNull(dungeonData.n_MobID);
var mobCount = dungeonData.n_MobCount; var mobCount = dungeonData.n_MobCount;
while (mobCount > 0) while (mobCount > 0)

View File

@ -13,6 +13,7 @@ public partial class InGameInfo : MyCoroutine
public Transform tf_Effects, tf_Objs; public Transform tf_Effects, tf_Objs;
List<HUDDMGUI> list_HUDDMGUI = new List<HUDDMGUI>(); List<HUDDMGUI> list_HUDDMGUI = new List<HUDDMGUI>();
List<HUDUI> list_HUDUI = new List<HUDUI>();
HUDLvUp m_HUDLvUp; HUDLvUp m_HUDLvUp;
Dictionary<string, List<GameObject>> dic_str_Effect = new Dictionary<string, List<GameObject>>(); Dictionary<string, List<GameObject>> dic_str_Effect = new Dictionary<string, List<GameObject>>();
@ -112,6 +113,13 @@ public partial class InGameInfo : MyCoroutine
} }
}); });
AddrResourceMgr.Ins.LoadObject<GameObject>("Assets/Res_Addr/Ingame/HUDUI.prefab", handle =>
{
for (int i = 0; i < 100; i++)
list_HUDUI.Add(DSUtil.Get_Clone<HUDUI>(handle.Result, NewGameUI.Ins.tf_HUD));
list_HUDUI.ForEach(f => f.Off());
});
//var sinfo = ServerInfo.Ins; //var sinfo = ServerInfo.Ins;
//Init_StageInfo(eGameMode.Stage, sinfo.m_ServerData.Get_Common(eCommon.TotalStage)); //Init_StageInfo(eGameMode.Stage, sinfo.m_ServerData.Get_Common(eCommon.TotalStage));
@ -167,14 +175,25 @@ public partial class InGameInfo : MyCoroutine
} }
#region HUD #region HUD
public void Get_HUDUI(Action<HUDUI> act) public HUDUI Get_HUDUI()
{ {
AddrResourceMgr.Ins.LoadObject<GameObject>("Assets/Res_Addr/Ingame/HUDUI.prefab", handle => HUDUI temp = null;
for (int i = 0; i < list_HUDUI.Count; i++)
{ {
var hud = DSUtil.Get_Clone<HUDUI>(handle.Result, NewGameUI.Ins.tf_HUD); if (!list_HUDUI[i].gameObject.activeInHierarchy)
AddrResourceMgr.Ins.Set_AddressableReleaseSelf(hud.gameObject); {
act(hud); temp = list_HUDUI[i];
}); break;
}
}
if (DSUtil.CheckNull(temp) && list_HUDUI.Count > 0)
{
temp = DSUtil.Get_Clone<HUDUI>(list_HUDUI[0].gameObject, NewGameUI.Ins.tf_HUD);
list_HUDUI.Add(temp);
}
return temp;
} }
public HUDDMGUI Get_HUDDMGUI() public HUDDMGUI Get_HUDDMGUI()
@ -189,9 +208,9 @@ public partial class InGameInfo : MyCoroutine
} }
} }
if (DSUtil.CheckNull(temp)) if (DSUtil.CheckNull(temp) && list_HUDDMGUI.Count > 0)
{ {
temp = DSUtil.Get_Clone<HUDDMGUI>("InGame/HUDDMGUI", NewGameUI.Ins.tf_HUD); temp = DSUtil.Get_Clone<HUDDMGUI>(list_HUDDMGUI[0].gameObject, NewGameUI.Ins.tf_HUD);
list_HUDDMGUI.Add(temp); list_HUDDMGUI.Add(temp);
} }

View File

@ -58,4 +58,16 @@ public class ChoiceMapData
get { return _DungeonLv; } get { return _DungeonLv; }
set { _DungeonLv = value; _DungeonLv.RandomizeCryptoKey(); } set { _DungeonLv = value; _DungeonLv.RandomizeCryptoKey(); }
} }
public BattleMapConfigTableData Get_MapData() { return table_battlemapconfig.Ins.Get_Data(n_MapID); }
public DungeonMapConfigTableData Get_DungeonMapData_orNull()
{
var mapData = Get_MapData();
return table_dungeonmapconfig.Ins.Get_Data_orNull(mapData.e_Dungeon, _DungeonLv);
}
public int Get_DungeonIndex()
{
var dgData = Get_DungeonMapData_orNull();
return DSUtil.CheckNull(dgData) ? 0 : MyEnumToInt.Ins.Get_Int(dgData.e_DungeonType) - 1;
}
} }

View File

@ -79,6 +79,11 @@ public class table_dungeonmapconfig : table_missionbase
public List<DungeonMapConfigTableData> Get_DataList(eDungeon dungeon) { return dic_Data[dungeon]; } public List<DungeonMapConfigTableData> Get_DataList(eDungeon dungeon) { return dic_Data[dungeon]; }
public DungeonMapConfigTableData Get_Data_orNull(eDungeon dungeon, int lv) public DungeonMapConfigTableData Get_Data_orNull(eDungeon dungeon, int lv)
{ {
return dic_Data[dungeon].Count <= lv ? dic_Data[dungeon][lv - 1] : null; for (int i = 0; i < dic_Data[dungeon].Count; i++)
{
if (dic_Data[dungeon][i].n_MapLv == lv)
return dic_Data[dungeon][i];
}
return null;
} }
} }

View File

@ -40,6 +40,13 @@ public class BattleMapConfigTableData : TableDataBase
set { _Portals = value; _Portals.RandomizeCryptoKey(); } set { _Portals = value; _Portals.RandomizeCryptoKey(); }
} // 포탈 개수 } // 포탈 개수
ObscuredInt _TicketID;
public int n_TicketID
{
get { return _TicketID; }
set { _TicketID = value; _TicketID.RandomizeCryptoKey(); }
} // 포탈 개수
public override string Get_Name() { return table_localtext.Ins.Get_Text(n_MapName); } public override string Get_Name() { return table_localtext.Ins.Get_Text(n_MapName); }
public string Get_Desc() { return table_localtext.Ins.Get_Text(n_MapDesc); } public string Get_Desc() { return table_localtext.Ins.Get_Text(n_MapDesc); }

View File

@ -0,0 +1,17 @@
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class DungeonResultBase : BackKeyAdd
{
public virtual void Set(bool win)
{
base.Set();
}
public override void OnClick_Back()
{
base.OnClick_Back();
InGameInfo.Ins.Return_To_Lobby();
}
}

View File

@ -0,0 +1,11 @@
fileFormatVersion: 2
guid: dbfb4c867b83d254d99ff5cc32c4fd8b
MonoImporter:
externalObjects: {}
serializedVersion: 2
defaultReferences: []
executionOrder: 0
icon: {instanceID: 0}
userData:
assetBundleName:
assetBundleVariant:

View File

@ -0,0 +1,25 @@
using TMPro;
public class DungeonResult_Mimic : DungeonResultBase
{
public TextMeshProUGUI[] texts; // 0 성공 or 실패
public MoneyForm[] moneys;
public override void Set(bool win)
{
base.Set(win);
var sdata = ServerInfo.Ins.m_ServerData;
texts[0].text = table_localtext.Ins.Get_Text(win ? 321 : 322);
moneys[0].Set(1, 0);
moneys[1].Set(2, 0);
// TODO 정인호 : 승리 시 보상 지급
if (win)
{
}
// 입장권 차감
var mapData = MyValue.MyChoiceMapData.Get_MapData();
sdata.Use_Item(mapData.n_TicketID, 1);
}
}

View File

@ -0,0 +1,11 @@
fileFormatVersion: 2
guid: 31ea3ab9c8b8ef8488c9259fe3298745
MonoImporter:
externalObjects: {}
serializedVersion: 2
defaultReferences: []
executionOrder: 0
icon: {instanceID: 0}
userData:
assetBundleName:
assetBundleVariant:

View File

@ -0,0 +1,9 @@
public class Ingame_DungeonResult : MonoBehaviourSingletonTemplate<Ingame_DungeonResult>
{
public DungeonResultBase[] dungeonResults;
public void Show_Result(bool win)
{
dungeonResults[MyValue.MyChoiceMapData.Get_DungeonIndex()].Set(win);
}
}

View File

@ -0,0 +1,11 @@
fileFormatVersion: 2
guid: 5a7e49710ad54b743bead07336d94e8e
MonoImporter:
externalObjects: {}
serializedVersion: 2
defaultReferences: []
executionOrder: 0
icon: {instanceID: 0}
userData:
assetBundleName:
assetBundleVariant:

View File

@ -52,9 +52,8 @@ public class MapChoiceUI_Dungeon : uScrollViewMgr
public void OnClick_GoDungeon() public void OnClick_GoDungeon()
{ {
var mapData = table_battlemapconfig.Ins.Get_Data(SelectMapID); var mapData = table_battlemapconfig.Ins.Get_Data(SelectMapID);
var ticketid = MyEnumToInt.Ins.Get_Int(mapData.e_Dungeon) + 500;
// 웨이브는 무한 입장 가능 // 웨이브는 무한 입장 가능
if (ticketid == 504 || ServerInfo.Ins.m_ServerData.Check_ItemAmount(ticketid, 1)) if (mapData.n_TicketID == 0 || ServerInfo.Ins.m_ServerData.Check_ItemAmount(mapData.n_TicketID, 1))
{ {
NewGameUI.Ins.m_MapChoiceUI.OnClick_Back(); NewGameUI.Ins.m_MapChoiceUI.OnClick_Back();

View File

@ -63,10 +63,12 @@ public class NewGameUI : MonoBehaviourSingletonTemplate<NewGameUI>
DSUtil.InActivateGameObjects(gos, 2); DSUtil.InActivateGameObjects(gos, 2);
gos_etc[0].SetActive(false); gos_etc[0].SetActive(false);
DSUtil.InActivateGameObjects(gos_ingame, 1); DSUtil.InActivateGameObjects(gos_ingame, 1);
var mapData = table_battlemapconfig.Ins.Get_Data(MyValue.MyChoiceMapData.n_MapID); var dungeonData = MyValue.MyChoiceMapData.Get_DungeonMapData_orNull();
var dungeonData = table_dungeonmapconfig.Ins.Get_Data_orNull(mapData.e_Dungeon, MyValue.MyChoiceMapData.n_DungeonLv); if (!DSUtil.CheckNull(dungeonData))
ingame_Dungeons[0].Set(dungeonData.f_Time); {
ingame_Dungeons[0].Set_MaxMobCount(dungeonData.n_MobCount); ingame_Dungeons[0].Set(dungeonData.f_Time);
ingame_Dungeons[0].Set_MaxMobCount(dungeonData.n_MobCount);
}
break; break;
} }