diff --git a/Assets/ResWork/Table/Export/MissionList.json b/Assets/ResWork/Table/Export/MissionList.json index aea8713c5..b2e58d68f 100644 --- a/Assets/ResWork/Table/Export/MissionList.json +++ b/Assets/ResWork/Table/Export/MissionList.json @@ -1 +1 @@ -[{"n_MissionIndex": "1", "n_MissionGroupId": "0", "s_LinkedQuestType": "None", "n_MissionDesc": "100034", "e_MissionConditionType": "DAILY_MISSION_CLEAR_ALL", "n_MissionConditionValue": "0", "l_MissionConditionCount": "5", "e_RewardType": "", "n_RewardValue": "1", "n_RewardCount": "100", "b_RepeatMission": "False"}, {"n_MissionIndex": "2", "n_MissionGroupId": "0", "s_LinkedQuestType": "None", "n_MissionDesc": "100001", "e_MissionConditionType": "KILL_MONSTER_ALL", "n_MissionConditionValue": "0", "l_MissionConditionCount": "20", "e_RewardType": "", "n_RewardValue": "2", "n_RewardCount": "1000", "b_RepeatMission": "False"}] \ No newline at end of file +[{"n_MissionIndex": "1", "n_MissionGroupId": "0", "e_LinkedQuestType": "None", "n_MissionDesc": "100034", "e_MissionConditionType": "DAILY_MISSION_CLEAR_ALL", "n_MissionConditionValue": "0", "l_MissionConditionCount": "5", "e_RewardType": "", "n_RewardValue": "1", "n_RewardCount": "100", "b_RepeatMission": "False"}, {"n_MissionIndex": "2", "n_MissionGroupId": "0", "e_LinkedQuestType": "None", "n_MissionDesc": "100001", "e_MissionConditionType": "KILL_MONSTER", "n_MissionConditionValue": "101", "l_MissionConditionCount": "20", "e_RewardType": "", "n_RewardValue": "2", "n_RewardCount": "100", "b_RepeatMission": "False"}, {"n_MissionIndex": "3", "n_MissionGroupId": "0", "e_LinkedQuestType": "None", "n_MissionDesc": "100002", "e_MissionConditionType": "KILL_MONSTER_ALL", "n_MissionConditionValue": "0", "l_MissionConditionCount": "30", "e_RewardType": "", "n_RewardValue": "2", "n_RewardCount": "200", "b_RepeatMission": "False"}, {"n_MissionIndex": "4", "n_MissionGroupId": "0", "e_LinkedQuestType": "First", "n_MissionDesc": "100003", "e_MissionConditionType": "KILL_MONSTER_ACC", "n_MissionConditionValue": "0", "l_MissionConditionCount": "40", "e_RewardType": "", "n_RewardValue": "2", "n_RewardCount": "300", "b_RepeatMission": "False"}] \ No newline at end of file diff --git a/Assets/ResWork/Table/butler.xlsm b/Assets/ResWork/Table/butler.xlsm index 3832d9af1..962ac87f6 100644 Binary files a/Assets/ResWork/Table/butler.xlsm and b/Assets/ResWork/Table/butler.xlsm differ diff --git a/Assets/ResWork/UIPrefabs/Mission/MissionCard.prefab b/Assets/ResWork/UIPrefabs/Mission/MissionCard.prefab index d9dc2c52b..d58281517 100644 --- a/Assets/ResWork/UIPrefabs/Mission/MissionCard.prefab +++ b/Assets/ResWork/UIPrefabs/Mission/MissionCard.prefab @@ -1239,7 +1239,19 @@ MonoBehaviour: m_TargetGraphic: {fileID: 5574855886466035148} m_OnClick: m_PersistentCalls: - m_Calls: [] + m_Calls: + - m_Target: {fileID: 316400532164236271} + m_TargetAssemblyTypeName: MissionCard, Assembly-CSharp + m_MethodName: OnClick_GetReward + m_Mode: 1 + m_Arguments: + m_ObjectArgument: {fileID: 0} + m_ObjectArgumentAssemblyTypeName: UnityEngine.Object, UnityEngine + m_IntArgument: 0 + m_FloatArgument: 0 + m_StringArgument: + m_BoolArgument: 0 + m_CallState: 2 --- !u!114 &2990336255413429717 MonoBehaviour: m_ObjectHideFlags: 0 diff --git a/Assets/Res_Addr/MainUI/NewGameUI.prefab b/Assets/Res_Addr/MainUI/NewGameUI.prefab index 8dea1e262..84cd26e31 100644 --- a/Assets/Res_Addr/MainUI/NewGameUI.prefab +++ b/Assets/Res_Addr/MainUI/NewGameUI.prefab @@ -51441,7 +51441,7 @@ RectTransform: m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} m_AnchorMin: {x: 0.5, y: 0.5} m_AnchorMax: {x: 0.5, y: 0.5} - m_AnchoredPosition: {x: -1.34, y: -127.58} + m_AnchoredPosition: {x: 0, y: -127.58} m_SizeDelta: {x: 908.49, y: 602.29} m_Pivot: {x: 0.5, y: 0.5} --- !u!222 &8809303088549965169 @@ -58453,6 +58453,7 @@ RectTransform: m_Children: - {fileID: 4615820290691843644} - {fileID: 8180201768747246641} + - {fileID: 7176626439662055994} - {fileID: 7962533988007672671} m_Father: {fileID: 2975530085048663680} m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} @@ -93443,7 +93444,7 @@ GameObject: - component: {fileID: 630267724400035499} - component: {fileID: 4941279522961301053} m_Layer: 5 - m_Name: btn_ + m_Name: btn_bg m_TagString: Untagged m_Icon: {fileID: 0} m_NavMeshLayer: 0 @@ -114420,6 +114421,7 @@ MonoBehaviour: m_Content: {fileID: 0} go_card: {fileID: 5840162431427643664, guid: 7f901e994eb763545b216b8f31498484, type: 3} m_Tab: {fileID: 3248488230996330858} + m_Complete: {fileID: 7517454807443385503} --- !u!1 &9168678807105416018 GameObject: m_ObjectHideFlags: 0 @@ -138055,6 +138057,152 @@ MonoBehaviour: m_Script: {fileID: 11500000, guid: c2d3bea595a34c94981f5760375e7387, type: 3} m_Name: m_EditorClassIdentifier: +--- !u!1001 &7797782415955722096 +PrefabInstance: + m_ObjectHideFlags: 0 + serializedVersion: 2 + m_Modification: + serializedVersion: 3 + m_TransformParent: {fileID: 1065787735305380702} + m_Modifications: + - target: {fileID: 1130181902522142026, guid: 7f901e994eb763545b216b8f31498484, + type: 3} + propertyPath: m_Pivot.x + value: 0.5 + objectReference: {fileID: 0} + - target: {fileID: 1130181902522142026, guid: 7f901e994eb763545b216b8f31498484, + type: 3} + propertyPath: m_Pivot.y + value: 0.5 + objectReference: {fileID: 0} + - target: {fileID: 1130181902522142026, guid: 7f901e994eb763545b216b8f31498484, + type: 3} + propertyPath: m_AnchorMax.x + value: 0.5 + objectReference: {fileID: 0} + - target: {fileID: 1130181902522142026, guid: 7f901e994eb763545b216b8f31498484, + type: 3} + propertyPath: m_AnchorMax.y + value: 0.5 + objectReference: {fileID: 0} + - target: {fileID: 1130181902522142026, guid: 7f901e994eb763545b216b8f31498484, + type: 3} + propertyPath: m_AnchorMin.x + value: 0.5 + objectReference: {fileID: 0} + - target: {fileID: 1130181902522142026, guid: 7f901e994eb763545b216b8f31498484, + type: 3} + propertyPath: m_AnchorMin.y + value: 0.5 + objectReference: {fileID: 0} + - target: {fileID: 1130181902522142026, guid: 7f901e994eb763545b216b8f31498484, + type: 3} + propertyPath: m_SizeDelta.x + value: 908 + objectReference: {fileID: 0} + - target: {fileID: 1130181902522142026, guid: 7f901e994eb763545b216b8f31498484, + type: 3} + propertyPath: m_SizeDelta.y + value: 100 + objectReference: {fileID: 0} + - target: {fileID: 1130181902522142026, guid: 7f901e994eb763545b216b8f31498484, + type: 3} + propertyPath: m_LocalPosition.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 1130181902522142026, guid: 7f901e994eb763545b216b8f31498484, + type: 3} + propertyPath: m_LocalPosition.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 1130181902522142026, guid: 7f901e994eb763545b216b8f31498484, + type: 3} + propertyPath: m_LocalPosition.z + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 1130181902522142026, guid: 7f901e994eb763545b216b8f31498484, + type: 3} + propertyPath: m_LocalRotation.w + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 1130181902522142026, guid: 7f901e994eb763545b216b8f31498484, + type: 3} + propertyPath: m_LocalRotation.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 1130181902522142026, guid: 7f901e994eb763545b216b8f31498484, + type: 3} + propertyPath: m_LocalRotation.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 1130181902522142026, guid: 7f901e994eb763545b216b8f31498484, + type: 3} + propertyPath: m_LocalRotation.z + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 1130181902522142026, guid: 7f901e994eb763545b216b8f31498484, + type: 3} + propertyPath: m_AnchoredPosition.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 1130181902522142026, guid: 7f901e994eb763545b216b8f31498484, + type: 3} + propertyPath: m_AnchoredPosition.y + value: 229 + objectReference: {fileID: 0} + - target: {fileID: 1130181902522142026, guid: 7f901e994eb763545b216b8f31498484, + type: 3} + propertyPath: m_LocalEulerAnglesHint.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 1130181902522142026, guid: 7f901e994eb763545b216b8f31498484, + type: 3} + propertyPath: m_LocalEulerAnglesHint.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 1130181902522142026, guid: 7f901e994eb763545b216b8f31498484, + type: 3} + propertyPath: m_LocalEulerAnglesHint.z + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 1168384990060815034, guid: 7f901e994eb763545b216b8f31498484, + type: 3} + propertyPath: m_AnchorMax.x + value: 0.5 + objectReference: {fileID: 0} + - target: {fileID: 1168384990060815034, guid: 7f901e994eb763545b216b8f31498484, + type: 3} + propertyPath: m_AnchorMax.y + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 5840162431427643664, guid: 7f901e994eb763545b216b8f31498484, + type: 3} + propertyPath: m_Name + value: MissionCard + objectReference: {fileID: 0} + m_RemovedComponents: [] + m_RemovedGameObjects: [] + m_AddedGameObjects: [] + m_AddedComponents: [] + m_SourcePrefab: {fileID: 100100000, guid: 7f901e994eb763545b216b8f31498484, type: 3} +--- !u!224 &7176626439662055994 stripped +RectTransform: + m_CorrespondingSourceObject: {fileID: 1130181902522142026, guid: 7f901e994eb763545b216b8f31498484, + type: 3} + m_PrefabInstance: {fileID: 7797782415955722096} + m_PrefabAsset: {fileID: 0} +--- !u!114 &7517454807443385503 stripped +MonoBehaviour: + m_CorrespondingSourceObject: {fileID: 316400532164236271, guid: 7f901e994eb763545b216b8f31498484, + type: 3} + m_PrefabInstance: {fileID: 7797782415955722096} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 0} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: ed2923fa018a52644b6d941924384b81, type: 3} + m_Name: + m_EditorClassIdentifier: --- !u!1001 &7824460769494381830 PrefabInstance: m_ObjectHideFlags: 0 diff --git a/Assets/Script/Character/Mob/MobActor.cs b/Assets/Script/Character/Mob/MobActor.cs index 3639b6bbe..4fedee1fe 100644 --- a/Assets/Script/Character/Mob/MobActor.cs +++ b/Assets/Script/Character/Mob/MobActor.cs @@ -413,29 +413,16 @@ public class MobActor : Actor } } - sdata.Add_CollectionMobKill(m_MonsterTableData.n_MonsterID); - } - base.Set_Die(); - m_DieTime = m_MonsterAppearData.f_SpawnerDelay; - - if (IsSubRole(eSubRol.Boss)) - { - //Time.timeScale = 0.3f; - //Set_Coroutine(() => - //{ - // Time.timeScale = MyValue.Get_GameSpeed(); - //}, 0.4f); - //sdata.Add_MissionCount(MyValue.arr_Mission[0], 3); - //sdata.Add_MissionCount(MyValue.arr_Mission[1], 2); - } - else - { #if UNITY_EDITOR if (SceneManager.GetActiveScene().name == "StatTest") return; #endif - //sdata.Add_MissionCount(MyValue.arr_Mission[0], 2); - //sdata.Add_MissionCount(MyValue.arr_Mission[1], 1); + sdata.Add_CollectionMobKill(m_MonsterTableData.n_MonsterID); + sdata.Add_MissionCount(ePurpose.KILL_MONSTER, m_MonsterTableData.n_MonsterID); + sdata.Add_MissionCount(ePurpose.KILL_MONSTER_ALL); + sdata.Add_MissionCount(ePurpose.KILL_MONSTER_ACC); } + base.Set_Die(); + m_DieTime = m_MonsterAppearData.f_SpawnerDelay; } protected override void After_Die() { diff --git a/Assets/Script/Server/ServerClass.cs b/Assets/Script/Server/ServerClass.cs index 1ca9c1fc5..a7fed2edb 100644 --- a/Assets/Script/Server/ServerClass.cs +++ b/Assets/Script/Server/ServerClass.cs @@ -1,6 +1,7 @@ using System; using System.Collections.Generic; using System.Linq; +using System.Security.Cryptography; using CodeStage.AntiCheat.ObscuredTypes; using UnityEngine; @@ -79,7 +80,7 @@ public partial class ServerData /// public Dictionary> Dungeon = new Dictionary>(); /// - /// { 미션그룹, { 미션 ID, 0 미션 레벨, 1 미션 카운트 } } + /// { 미션그룹, { 미션 Index, 0 미션 레벨, 1 미션 카운트 } } /// public Dictionary>> Mission = new Dictionary>>(); @@ -1122,15 +1123,17 @@ public partial class ServerData } } } - public void Add_MissionCount(int group, int _id, int _v = 1) + public void Add_MissionCount(ePurpose purpose, int conditionvalue = 0, int _v = 1) { - if (_v < 1) return; - var key1 = Get_Key(group); - if (Mission.ContainsKey(key1)) + var lst = table_missionlist.Ins.Get_DataList(purpose); + for (int i = 0; i < lst.Count; i++) { - var key2 = Get_Key(_id); - if (Mission[key1].ContainsKey(key2)) + if (conditionvalue == lst[i].n_MissionConditionValue) { + var key1 = Get_Key(lst[i].n_MissionGroupId); + var key2 = Get_Key(lst[i].n_MissionIndex); + if (!Mission.ContainsKey(key1)) Mission.Add(key1, new Dictionary>()); + if (!Mission[key1].ContainsKey(key2)) Mission[key1].Add(key2, new List { 0, 0 }); Mission[key1][key2][1] += _v; Mission[key1][key2][1].RandomizeCryptoKey(); } @@ -1147,73 +1150,19 @@ public partial class ServerData } return 0; } - public bool CanGet_MissionDaily() + public bool CanGet_Mission(int group, int _id) { - //var dm = Mission[MyValue.arr_Mission[0]]; - //var tdata = table_dailymission.Ins.Get_DataList(); - //for (int i = 0; i < dm.Count; i++) - //{ - // if (dm[i][2] == 0) - // { - // var purposecount = tdata.Find(f => f.n_MissionIndex == dm[i][0]).n_PurposeCount; - // if (dm[i][1] >= purposecount) - // return true; - // } - //} - return false; - } - public bool CanGet_MissionRepeat() - { - //var dm = Mission[MyValue.arr_Mission[1]]; - //var tdata = table_repeatmission.Ins.Get_DataList(); - //for (int i = 0; i < dm.Count; i++) - //{ - // var purposecount = tdata.Find(f => f.n_MissionIndex == dm[i][0]).n_PurposeCount; - // var curCount = dm[i][1] - dm[i][2] * purposecount; - // if (curCount >= purposecount) - // return true; - //} - return false; - } - public bool CanGet_MissionAchi(int chapter) - { - //var dm = Mission[MyValue.arr_Mission[2]]; - //var t_achi = table_achievementsmission.Ins.Get_DataList(chapter); - //for (int i = 0; i < t_achi.Count; i++) - //{ - // var mdata = dm.Find(f => f[0] == t_achi[i].n_MissionIndex); - // if (mdata[2] < 1) - // { - // var tabledata = t_achi[i]; - // if (Get_AchiCount(t_achi[i].n_MissionIndex) >= tabledata.n_PurposeCount) - // return true; - // } - //} - return false; - } - int Get_EquipmentObtainCount(int type, int minid, int maxid) - { - int count = 0; - //var items = Equipment[MyValue.str_EquipMent[type]].FindAll(f => f[0] >= minid && f[0] <= maxid); - //for (int i = 0; i < items.Count; i++) - // count += items[i][1] > 0 ? 1 : 0; - return count; - } - int Get_MagicObtainCount(int minid, int maxid) - { - int count = 0; - - // 조건에 맞는 항목 필터링 - var items = Skill.Values.Where(list => list[0] >= minid && list[0] <= maxid); - - // 필터링된 항목에 대해 처리 - foreach (var item in items) + var key1 = Get_Key(group); + if (Mission.ContainsKey(key1)) { - if (item[2] > 0) - count++; + var key2 = Get_Key(_id); + if (Mission[key1].ContainsKey(key2)) + { + var condition = table_missionlist.Ins.Get_Data(group, _id); + return Mission[key1][key2][1] >= condition.l_MissionConditionCount; + } } - - return count; + return false; } #endregion diff --git a/Assets/Script/Table/Mission/table_missionlist.cs b/Assets/Script/Table/Mission/table_missionlist.cs index 11511f747..053677ead 100644 --- a/Assets/Script/Table/Mission/table_missionlist.cs +++ b/Assets/Script/Table/Mission/table_missionlist.cs @@ -2,7 +2,8 @@ using CodeStage.AntiCheat.ObscuredTypes; using Newtonsoft.Json; using System; using System.Collections.Generic; -using UnityEngine; + +public enum eLinkedQuestType { None, First, Ing, Last } [Serializable] public class MissionListTableData : TableDataBase @@ -21,7 +22,7 @@ public class MissionListTableData : TableDataBase set { _MissionGroupId = value; _MissionGroupId.RandomizeCryptoKey(); } } - public string s_LinkedQuestType; + public eLinkedQuestType e_LinkedQuestType; public int n_MissionDesc; public ePurpose e_MissionConditionType; @@ -67,7 +68,10 @@ public class table_missionlist : table_missionbase { public static table_missionlist Ins; List tableDatas; + Dictionary> dic_alldatas = new Dictionary>(); + Dictionary> dic_purposdatas = new Dictionary>(); Dictionary> dic_datas = new Dictionary>(); + Dictionary dic_Completedata = new Dictionary(); protected override void Awake() { @@ -83,9 +87,28 @@ public class table_missionlist : table_missionbase { var temp = Get_DataList()[i]; var itemtype = temp.n_MissionGroupId; + + if (!dic_alldatas.ContainsKey(temp.n_MissionGroupId)) + dic_alldatas.Add(temp.n_MissionGroupId, new List()); + dic_alldatas[temp.n_MissionGroupId].Add(temp); + + if (!dic_purposdatas.ContainsKey(temp.e_MissionConditionType)) + dic_purposdatas.Add(temp.e_MissionConditionType, new List()); + dic_purposdatas[temp.e_MissionConditionType].Add(temp); + if (!dic_datas.ContainsKey(temp.n_MissionGroupId)) dic_datas.Add(temp.n_MissionGroupId, new List()); - dic_datas[temp.n_MissionGroupId].Add(temp); + switch (temp.e_MissionConditionType) + { + case ePurpose.DAILY_MISSION_CLEAR_ALL: + case ePurpose.WEEKLY_MISSION_CLEAR_ALL: + case ePurpose.ACHIEVEMENT_CLEAR_ALL: + dic_Completedata.Add(temp.n_MissionGroupId, temp); + break; + default: + dic_datas[temp.n_MissionGroupId].Add(temp); + break; + } } base.Start(); @@ -93,4 +116,7 @@ public class table_missionlist : table_missionbase public List Get_DataList() { return tableDatas; } public List Get_DataList(int group) { return dic_datas[group]; } + public List Get_DataList(ePurpose purpose) { return dic_purposdatas[purpose]; } + public MissionListTableData Get_CompleteData(int group) { return dic_Completedata[group]; } + public MissionListTableData Get_Data(int group, int id) { return dic_alldatas[group][id]; } } \ No newline at end of file diff --git a/Assets/Script/UI/GameUI.cs b/Assets/Script/UI/GameUI.cs index 64ac3d208..bcd47f76a 100644 --- a/Assets/Script/UI/GameUI.cs +++ b/Assets/Script/UI/GameUI.cs @@ -63,7 +63,6 @@ public class Lobby_Bundle if (!gos_noti[4].activeSelf) gos_noti[4].SetActive(MyValue.CanGetMemoryForestReward()); gos_noti[5].SetActive(sdata.CanShow_ShopAD()); gos_noti[7].SetActive(false); - gos_noti[9].SetActive(sdata.CanGet_MissionDaily() || sdata.CanGet_MissionRepeat() || sdata.CanGet_MissionAchi(-1)); gos_noti[10].SetActive(TitleGetUI.list_gettitle.Count > 0); gos_noti[12].SetActive(sdata.ExistCanGetPass()); diff --git a/Assets/Script/UI/Mission/MissionCard.cs b/Assets/Script/UI/Mission/MissionCard.cs index b04c02c12..92a7dc989 100644 --- a/Assets/Script/UI/Mission/MissionCard.cs +++ b/Assets/Script/UI/Mission/MissionCard.cs @@ -25,5 +25,12 @@ public class MissionCard : CardBase public virtual void OnClick_GetReward() { + var sdata = ServerInfo.Ins.m_ServerData; + if (sdata.CanGet_Mission(m_Data.n_MissionGroupId, m_Data.n_MissionIndex)) + { + Popup.Ins.Set(ePopupType.One, 174, null, null, "미션 보상 받을 수 있음"); + } + else + Popup.Ins.Set(ePopupType.One, 174, null, null, "미션 보상 받을 수 없음"); } } \ No newline at end of file diff --git a/Assets/Script/UI/Mission/MissionUI.cs b/Assets/Script/UI/Mission/MissionUI.cs index ec6d3ce44..9c09e222a 100644 --- a/Assets/Script/UI/Mission/MissionUI.cs +++ b/Assets/Script/UI/Mission/MissionUI.cs @@ -3,6 +3,7 @@ using System.Collections.Generic; public class MissionUI : uScrollViewMgr { public TabUIBase m_Tab; + public MissionCard m_Complete; List list_tabData = new List { @@ -22,6 +23,7 @@ public class MissionUI : uScrollViewMgr public override void Set_UI() { + m_Complete.Set(table_missionlist.Ins.Get_CompleteData(m_Tab.Get_Index())); Set_ScrollView(table_missionlist.Ins.Get_DataList(m_Tab.Get_Index())); } } \ No newline at end of file