From d5ff5415bad1fdf061b8f04b705d7ae6f15d6da8 Mon Sep 17 00:00:00 2001 From: Ino Date: Thu, 31 Jul 2025 09:36:58 +0900 Subject: [PATCH] =?UTF-8?q?=EC=B4=88=EC=9B=94=20=EC=98=B5=EC=85=98=20?= =?UTF-8?q?=EB=B3=80=EA=B2=BD=20=EC=8B=9C=20=EB=A6=AC=EC=8A=A4=ED=8A=B8=20?= =?UTF-8?q?=EB=AA=A8=EB=91=90=20=EC=82=AC=EC=9A=A9=20=EC=8B=9C,=20?= =?UTF-8?q?=EB=A7=88=EC=A7=80=EB=A7=89=20=EC=83=81=ED=83=9C=20=EC=A0=80?= =?UTF-8?q?=EC=9E=A5?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../Editor/Resources/.CloudScript.js | 9 ++++++- Assets/Res_Addr/MainUI/NewGameUI.prefab | 16 ++++++++++-- Assets/Script/Server/ServerInfo.cs | 12 ++++++--- Assets/Script/UI/Menu/BotMenuBase.cs | 6 ++--- Assets/Script/UI/PC/Limit/PCLimitSlotCard.cs | 2 ++ Assets/Script/UI/PC/Limit/PCLimitUI_Right.cs | 17 ++++++++++++- Assets/Script/UI/PC/PCUI.cs | 25 +++++++++++++------ Assets/Script/Util/ButtonPress.cs | 10 +++++++- 8 files changed, 77 insertions(+), 20 deletions(-) diff --git a/Assets/PlayFabEditorExtensions/Editor/Resources/.CloudScript.js b/Assets/PlayFabEditorExtensions/Editor/Resources/.CloudScript.js index 6c279ce3d..f6bce482b 100644 --- a/Assets/PlayFabEditorExtensions/Editor/Resources/.CloudScript.js +++ b/Assets/PlayFabEditorExtensions/Editor/Resources/.CloudScript.js @@ -1181,14 +1181,21 @@ handlers.Save_PC_LimitLvUp = function(args) else return Get_Return(1); // PC 레벨 부족 } -handlers.Get_PC_LimitSlotOption = function(args) +handlers.Save_PC_LimitSlotOption = function(args) { var readonlydata = Get_UserReadOnlyData(); var error = Get_Error(readonlydata, args.Token); if (error < 0) return Get_Return(error); var urod = Get_JsonUserData(readonlydata); + var table = Get_MissionTable(); + Use_Item(table, urod, Get_GlobalValue_nValue("n_BreakingLimitSlotMaterialID"), args.UseAmount); + urod.LimitSlot = args.LimitSlot; Make_LimitBreakOption(urod); + + Add_MissionCount(table, urod, "HERO_OPTION_CHANGE", 0, args.ChangeCount, false); + Add_MissionCount(table, urod, "HERO_OPTION_CHANGE_ACC", 0, args.ChangeCount, false); + Set_JsonUserData(urod); return Get_Return(0, { option : urod.LimitBreakOption }); } diff --git a/Assets/Res_Addr/MainUI/NewGameUI.prefab b/Assets/Res_Addr/MainUI/NewGameUI.prefab index bcd047546..031ca7099 100644 --- a/Assets/Res_Addr/MainUI/NewGameUI.prefab +++ b/Assets/Res_Addr/MainUI/NewGameUI.prefab @@ -54437,8 +54437,6 @@ MonoBehaviour: - {fileID: 6175458548714744768} gos: - {fileID: 8756686011241429274} - CostumeIdWhenEnter: 0 - firstInit: 0 --- !u!1 &3425181212953318094 GameObject: m_ObjectHideFlags: 0 @@ -90544,6 +90542,20 @@ MonoBehaviour: m_Price: {fileID: 7272963551066374066} texts: - {fileID: 6448853900749789264} + Btn_Change: {fileID: 4568369408838017681} + ChangeOption: 0 + TotalPrice: + currentCryptoKey: 1879508726 + hiddenValue: 1879508726 + inited: 1 + fakeValue: 0 + fakeValueActive: 0 + MissionCount: + currentCryptoKey: 1367352314 + hiddenValue: 1367352314 + inited: 1 + fakeValue: 0 + fakeValueActive: 0 --- !u!1 &6013485104962013168 GameObject: m_ObjectHideFlags: 0 diff --git a/Assets/Script/Server/ServerInfo.cs b/Assets/Script/Server/ServerInfo.cs index 2d1276c48..5e6bb7d0a 100644 --- a/Assets/Script/Server/ServerInfo.cs +++ b/Assets/Script/Server/ServerInfo.cs @@ -1128,9 +1128,10 @@ public class ServerInfo : MyCoroutine Set_Coroutine(() => { Save_PC_LimitLvUp(_act); }, 2f); }); } - public void Get_PC_LimitSlotOption(Action _act) + public void Save_PC_LimitSlotOption(int useAmount, int change, Action _act) { NetWait.Ins.Set(true); + var serverread = m_ServerData.Get_ServerRead(); PlayFabClientAPI.ExecuteCloudScript(new ExecuteCloudScriptRequest { FunctionName = MethodBase.GetCurrentMethod().Name, @@ -1138,6 +1139,9 @@ public class ServerInfo : MyCoroutine FunctionParameter = new { Token = m_LoginInfo.EntityToken.EntityToken, + UseAmount = useAmount, + ChangeCount = change, + LimitSlot = serverread.LimitSlot } }, result => @@ -1154,14 +1158,14 @@ public class ServerInfo : MyCoroutine _act(); } else - Set_Coroutine(() => { Get_PC_LimitSlotOption(_act); }, 2f); + Set_Coroutine(() => { Save_PC_LimitSlotOption(useAmount, change, _act); }, 2f); } else - Set_Coroutine(() => { Get_PC_LimitSlotOption(_act); }, 2f); + Set_Coroutine(() => { Save_PC_LimitSlotOption(useAmount, change, _act); }, 2f); }, fail => { - Set_Coroutine(() => { Get_PC_LimitSlotOption(_act); }, 2f); + Set_Coroutine(() => { Save_PC_LimitSlotOption(useAmount, change, _act); }, 2f); }); } public void Save_PC_LimitSlotOptionChange(string preset, Action _act) diff --git a/Assets/Script/UI/Menu/BotMenuBase.cs b/Assets/Script/UI/Menu/BotMenuBase.cs index 742ea3556..1fcb7d893 100644 --- a/Assets/Script/UI/Menu/BotMenuBase.cs +++ b/Assets/Script/UI/Menu/BotMenuBase.cs @@ -1,7 +1,3 @@ -using System.Collections; -using System.Collections.Generic; -using UnityEngine; - public class BotMenuBase : uScrollViewMgr { public MoneyForm[] moneyForms; @@ -20,6 +16,8 @@ public class BotMenuBase : uScrollViewMgr moneyForms[i].Refresh(); } + public virtual void Check_ServerSave(bool exitui) { } + public override void OnClick_Back() { base.OnClick_Back(); diff --git a/Assets/Script/UI/PC/Limit/PCLimitSlotCard.cs b/Assets/Script/UI/PC/Limit/PCLimitSlotCard.cs index fa9472581..de73a20cd 100644 --- a/Assets/Script/UI/PC/Limit/PCLimitSlotCard.cs +++ b/Assets/Script/UI/PC/Limit/PCLimitSlotCard.cs @@ -100,6 +100,8 @@ public class PCLimitSlotCard : CardBase sdata.Set_LimitSlotID(preset, m_Slot, option.id, option.lv); sdata.Add_MissionCount(ePurpose.HERO_OPTION_CHANGE); sdata.Add_MissionCount(ePurpose.HERO_OPTION_CHANGE_ACC); + ++PCLimitUI.Ins.m_PCLimitUI_Right.MissionCount; + PCLimitUI.Ins.m_PCLimitUI_Right.MissionCount.RandomizeCryptoKey(); } } diff --git a/Assets/Script/UI/PC/Limit/PCLimitUI_Right.cs b/Assets/Script/UI/PC/Limit/PCLimitUI_Right.cs index f57f22d37..27f1ac861 100644 --- a/Assets/Script/UI/PC/Limit/PCLimitUI_Right.cs +++ b/Assets/Script/UI/PC/Limit/PCLimitUI_Right.cs @@ -8,8 +8,10 @@ public class PCLimitUI_Right : uScrollViewMgr public TabUIBase m_Tab; public MoneyForm m_Price; public TextMeshProUGUI[] texts; // 0 보호 등급 + public ButtonPress Btn_Change; public bool ChangeOption; + public ObscuredInt TotalPrice, MissionCount; string m_Preset = "1"; int m_matID, m_CurProtectGrade, m_ProtectMaxGrade; ObscuredInt mPrice; @@ -134,7 +136,20 @@ public class PCLimitUI_Right : uScrollViewMgr MyValue.Get_ActorStatInfoorNull(eRole.PC); NewGameUI.Ins.m_PCUI.Refresh_Money(); - if (ChangeOption) { ServerInfo.Ins.Get_PC_LimitSlotOption(() => { ChangeOption = false; }); } + TotalPrice += mPrice; TotalPrice.RandomizeCryptoKey(); + + if (ChangeOption) + { + Btn_Change.ControlPress(false); + ServerInfo.Ins.Save_PC_LimitSlotOption(TotalPrice, MissionCount, + () => + { + ChangeOption = false; + Btn_Change.ControlPress(true); + TotalPrice = 0; TotalPrice.RandomizeCryptoKey(); + MissionCount = 0; MissionCount.RandomizeCryptoKey(); + }); + } //ServerInfo.Ins.Save_PC_LimitSlotOptionChange(m_Preset, options => //{ diff --git a/Assets/Script/UI/PC/PCUI.cs b/Assets/Script/UI/PC/PCUI.cs index 4e60430e4..b4d925d23 100644 --- a/Assets/Script/UI/PC/PCUI.cs +++ b/Assets/Script/UI/PC/PCUI.cs @@ -26,9 +26,6 @@ public class PCUI : BotMenuBase } m_Tab.Set(list_TabData); - foreach (var key in dic_EnterID.Keys.ToList()) - dic_EnterID[key] = 0; - OnClick_Tab(); } @@ -40,10 +37,11 @@ public class PCUI : BotMenuBase for (int i = 0; i < m_PCMenu.Length; i++) m_PCMenu[i].Off(); m_PCMenu[m_Tab.Get_Index()].Set(); + Check_ServerSave(false); } CS_AwakenData emptyawaken = new CS_AwakenData(); - public override void OnClick_Back() + public override void Check_ServerSave(bool exitui) { var sdata = ServerInfo.Ins.m_ServerData; @@ -73,14 +71,27 @@ public class PCUI : BotMenuBase { PCInfo.Ins.Make_Actors(false, ServerInfo.Ins.m_ServerData); InGameInfo.Ins.StartCam(); - base.OnClick_Back(); + if (exitui) base.OnClick_Back(); }, 0.02f); } else - base.OnClick_Back(); + { + if (exitui) base.OnClick_Back(); + } }); } else - base.OnClick_Back(); + { + if (exitui) base.OnClick_Back(); + } + + foreach (var key in dic_EnterID.Keys.ToList()) + dic_EnterID[key] = 0; + if (PCAwakenUI.isIns) PCAwakenUI.Ins.Get_CS_AwakenData().Init(); + } + + public override void OnClick_Back() + { + Check_ServerSave(true); } } \ No newline at end of file diff --git a/Assets/Script/Util/ButtonPress.cs b/Assets/Script/Util/ButtonPress.cs index 8cf1c03b6..519c3c303 100644 --- a/Assets/Script/Util/ButtonPress.cs +++ b/Assets/Script/Util/ButtonPress.cs @@ -53,7 +53,7 @@ public class ButtonPress : UnityEngine.UI.Button private void Update() { - if (!_pressed) + if (!_pressed || !interactable) { return; } @@ -65,4 +65,12 @@ public class ButtonPress : UnityEngine.UI.Button onClick.Invoke(); } } + + /// + /// 외부에서 강제로 눌림 상태를 변경할 수 있도록 함 + /// + public void ControlPress(bool active) + { + interactable = active; + } } \ No newline at end of file