From 718fdce99654795bff7f9c6f810588f656b695bc Mon Sep 17 00:00:00 2001 From: Ino Date: Fri, 26 Sep 2025 09:11:53 +0900 Subject: [PATCH] =?UTF-8?q?=EC=B1=84=ED=8C=85?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- Assets/ResWork/Table/Export/Girl.json | 16 +- Assets/ResWork/Table/SheGotWet.xlsm | Bin 61757 -> 62032 bytes Assets/ResWork/Table/table_girl.cs | 2 +- Assets/ResWork/UI_Prefab/ChatDayCard.prefab | 326 +++ .../ResWork/UI_Prefab/ChatDayCard.prefab.meta | 7 + Assets/ResWork/UI_Prefab/ChatGirlCard.prefab | 434 ++++ .../UI_Prefab/ChatGirlCard.prefab.meta | 7 + Assets/ResWork/UI_Prefab/ChatMyCard.prefab | 281 +++ .../ResWork/UI_Prefab/ChatMyCard.prefab.meta | 7 + Assets/Scenes/SampleScene.unity | 1931 +---------------- Assets/Scripts/AttachToGameObject/SaveMgr.cs | 27 + Assets/Scripts/Chat.meta | 8 + Assets/Scripts/Chat/ChatGirlCard.cs | 14 + Assets/Scripts/Chat/ChatGirlCard.cs.meta | 2 + Assets/Scripts/Chat/ChatMyCard.cs | 12 + Assets/Scripts/Chat/ChatMyCard.cs.meta | 2 + Assets/Scripts/Chat/ChatUI.cs | 166 ++ Assets/Scripts/Chat/ChatUI.cs.meta | 2 + Assets/Scripts/UI/LobbyUI.cs | 1 + Assets/Scripts/UI/ProfileCard.cs | 6 +- Assets/Scripts/Util/TMPImageResizer.cs | 26 + Assets/Scripts/Util/TMPImageResizer.cs.meta | 2 + 22 files changed, 1407 insertions(+), 1872 deletions(-) create mode 100644 Assets/ResWork/UI_Prefab/ChatDayCard.prefab create mode 100644 Assets/ResWork/UI_Prefab/ChatDayCard.prefab.meta create mode 100644 Assets/ResWork/UI_Prefab/ChatGirlCard.prefab create mode 100644 Assets/ResWork/UI_Prefab/ChatGirlCard.prefab.meta create mode 100644 Assets/ResWork/UI_Prefab/ChatMyCard.prefab create mode 100644 Assets/ResWork/UI_Prefab/ChatMyCard.prefab.meta create mode 100644 Assets/Scripts/Chat.meta create mode 100644 Assets/Scripts/Chat/ChatGirlCard.cs create mode 100644 Assets/Scripts/Chat/ChatGirlCard.cs.meta create mode 100644 Assets/Scripts/Chat/ChatMyCard.cs create mode 100644 Assets/Scripts/Chat/ChatMyCard.cs.meta create mode 100644 Assets/Scripts/Chat/ChatUI.cs create mode 100644 Assets/Scripts/Chat/ChatUI.cs.meta create mode 100644 Assets/Scripts/Util/TMPImageResizer.cs create mode 100644 Assets/Scripts/Util/TMPImageResizer.cs.meta diff --git a/Assets/ResWork/Table/Export/Girl.json b/Assets/ResWork/Table/Export/Girl.json index 27fdec7..4ed9839 100644 --- a/Assets/ResWork/Table/Export/Girl.json +++ b/Assets/ResWork/Table/Export/Girl.json @@ -4,46 +4,46 @@ 몸무게: 51kg 가슴 사이즈: 35in 허리 사이즈: 24in -엉덩이 사이즈: 35in", "s_ProfileImage": "Girl/1/Coin/01.png"}, {"n_GirlID": "2", "s_Name": "오유나", "s_Profile": "나이: 26세 +엉덩이 사이즈: 35in", "s_ProfileImage": "Girl/1/Coin/01.png", "s_PersonaId": "SGW_HanYoojin"}, {"n_GirlID": "2", "s_Name": "오유나", "s_Profile": "나이: 26세 직업 : 인턴 사원 키: 162cm 몸무게: 49kg 가슴 사이즈: 33in 허리 사이즈: 23in -엉덩이 사이즈: 33in", "s_ProfileImage": "Girl/2/Coin/01.png"}, {"n_GirlID": "3", "s_Name": "강소윤", "s_Profile": "나이: 24세 +엉덩이 사이즈: 33in", "s_ProfileImage": "Girl/2/Coin/01.png", "s_PersonaId": "SGW_OhYuna"}, {"n_GirlID": "3", "s_Name": "강소윤", "s_Profile": "나이: 24세 직업 : 게임 스트리머 키: 160cm 몸무게: 52kg 가슴 사이즈: 35in 허리 사이즈: 26in -엉덩이 사이즈: 36in", "s_ProfileImage": "Girl/3/Coin/01.png"}, {"n_GirlID": "4", "s_Name": "이지우", "s_Profile": "나이: 29세 +엉덩이 사이즈: 36in", "s_ProfileImage": "Girl/3/Coin/01.png", "s_PersonaId": "SGW_KangSoyoon"}, {"n_GirlID": "4", "s_Name": "이지우", "s_Profile": "나이: 29세 직업 : 국어 교사 키: 170cm 몸무게: 54kg 가슴 사이즈: 33in 허리 사이즈: 24in -엉덩이 사이즈: 34in", "s_ProfileImage": "Girl/4/Coin/01.png"}, {"n_GirlID": "5", "s_Name": "박하영", "s_Profile": "나이: 23세 +엉덩이 사이즈: 34in", "s_ProfileImage": "Girl/4/Coin/01.png", "s_PersonaId": "SGW_LeeJiwoo"}, {"n_GirlID": "5", "s_Name": "박하영", "s_Profile": "나이: 23세 직업 : 패션 모델 키: 172cm 몸무게: 55kg 가슴 사이즈: 35in 허리 사이즈: 23in -엉덩이 사이즈: 35in", "s_ProfileImage": "Girl/5/Coin/01.png"}, {"n_GirlID": "6", "s_Name": "카와시마 노조미", "s_Profile": "나이: 21세 +엉덩이 사이즈: 35in", "s_ProfileImage": "Girl/5/Coin/01.png", "s_PersonaId": "SGW_ParkHayoung"}, {"n_GirlID": "6", "s_Name": "카와시마 노조미", "s_Profile": "나이: 21세 직업 : 미대 유학생 키: 158cm 몸무게: 46kg 가슴 사이즈: 32in 허리 사이즈: 22in -엉덩이 사이즈: 32in", "s_ProfileImage": "Girl/6/Coin/01.png"}, {"n_GirlID": "7", "s_Name": "최하린", "s_Profile": "나이: 28세 +엉덩이 사이즈: 32in", "s_ProfileImage": "Girl/6/Coin/01.png", "s_PersonaId": "SGW_Nozomi"}, {"n_GirlID": "7", "s_Name": "최하린", "s_Profile": "나이: 28세 직업 : 변호사 키: 168cm 몸무게: 53kg 가슴 사이즈: 33in 허리 사이즈: 25in -엉덩이 사이즈: 34in", "s_ProfileImage": "Girl/7/Coin/01.png"}, {"n_GirlID": "8", "s_Name": "김소영", "s_Profile": "나이: 30세 +엉덩이 사이즈: 34in", "s_ProfileImage": "Girl/7/Coin/01.png", "s_PersonaId": "SGW_ChoiHarin"}, {"n_GirlID": "8", "s_Name": "김소영", "s_Profile": "나이: 30세 직업 : 요리사 키: 166cm 몸무게: 52kg 가슴 사이즈: 34in 허리 사이즈: 25in -엉덩이 사이즈: 35in", "s_ProfileImage": "Girl/8/Coin/01.png"}] \ No newline at end of file +엉덩이 사이즈: 35in", "s_ProfileImage": "Girl/8/Coin/01.png", "s_PersonaId": "SGW_KimSoyoung"}] \ No newline at end of file diff --git a/Assets/ResWork/Table/SheGotWet.xlsm b/Assets/ResWork/Table/SheGotWet.xlsm index 2b38989febbcf0e920e037c199e4978f0c7988de..f51239ef69742981cacf7826c3c4cafdd8afe343 100644 GIT binary patch delta 34298 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%0D7%^)|tV*ev zWrs=`axz*QFF3xb*CwfXSBzUFooY z7aGOJBP4mz`noF?At7H1E*|ZXugCwPmw#LBf8obiR8*f~#9MKaMBk9uHH~|(SgRfj z=uRvpyutOF^fC*Re422t24-A9GcmfaVX-(wmorTvd&0$5FgJ^zKwNXp7Jzr?txywa^NFPw{4#VL7L%D$@O zW5%;Du4bl8AJdFzT~@R*SC>0$rP;hL*_^jBd8Q9j-NO^j>~U|zMy-$KCT2~^Hsg8X zl=R%3yi7R%odAPsQ*vOKEj@Q)c6MH-CEJ>vJJGr^X92?$?yj6&)WDpTpzmORfoJy0 zVkeA8Rk8}umnyMyvVkFyVYbv9nv~J(Xs(@A`{p#S$;-M~MnTM`uA#=;ycrtX_vc1E zd+@X=F7FLJ8+b^XvrjW5&&RhWnd4>xvi!nf`KgC(&tyYqg=ftRAHHG8Q?v4<%)GbO zdjB>ePg5Z2(+(xxy4RFvxJsXYCk@$f8}W>)*vs!9d$a1foi7@nnaPYct?oBF*s&_s zdAjb+Do6mlF#O<9mLRojK76q4gNJuiu@7(W{P2fQR=w}rvHyd%pJsicKQLfO_sFxi zJw3p*5PPE?^$y?21@%4&>1Ha}0{D*3famC9{E`u_4rw*v%X-9-hr64{O*wHQHW^fkM*QkI7F2HB zDL?LB!*^&OwKW+jPWZQKD--#onlfKjZS_?rIDO(rb>%?msivKOC;<+PLHJCxO(k0P zTGV#|>Li211xT~67z^Ngkz%9TqAxR$I~nm+!}g^EZ>S}TkzzG(Q5Wo`24637*|X4I zMIONaonDp2a}iumi;#l`e&k=xdr~>_K~w-3Q$(9&p}h2@kOc6Yfv0-pITM)|4L zn}DPK7ija~lBD{7TRaPW2?u(`7r7NBnTUQ=h#1mQLuUNt0U}@Jp3$;>!I!ed? zBzs8ni>NiKKaxbG5L9bf=xr3jitotpdmet-{#v6k5*R0ci%_z82vx!sp;Xk`q3vIY z-c55_U?%9RykZWZHIZzue4D;5F=J2lqLO5L1}VP7V>CMKJF*rPM+s~G(XU;+pU+0Qu_~g(V%Ey%z1NQCVqk0dEQd9ckAp@&>ebOa znU}5-wNkEs%zRYp41{dPIO%&X`0lkso0V>LB~}(<+FOyMb@;5(NjTHSBTxc%O@r}A z;(w?q%CCAN3t?S>Z9L2dnIIq0cn+17 zrJZ5#a6LV@?p0}?`SE-NXbj757n z(LPOl%@p~ganf6sx2GpV6B-hm!p}u?Bu~UXiWfOlJCoY9l*37VM7RYx3=P}U^Z6(d zC5bMvt{jT8ce>fU1}~L1?&LPVN_ZN?Kk{lv$KP_Mq~q15 z4+kZBu2k_)PkHp6ZMT0uw_{M-gcqtmeNDx0dgH|@cYc;sxb5hoZBacMy^0DbUZL|iQvB7>{j zh;B;{LfB;57SK3!Wn}14kcWFv9?*Dy3Gw@Aq7SRG9Xm>h8zRhmIBGe^WvNU=UlIzW z#7HXembZ!cOrjuJXo@H%L<_jk!8Q=xVu_q3MDu`aSdtV)WPC;HKuG0%`Z*D61<^hd zG`DzNps1L|0n`0$~_cDPFbL(U;U7N6|aGm7Y^A{N zybp*A0^;)DT~ryI604BHUIH&hFEBqNvLaICuQ{W}{aX{&hk_z9gWco)$thlV(8Y7z zi?61yo9odLKKKRI<*MrZIu}}h-RWAhgfo2RE(c;b$hSfOhjMKJwNZzVR@cB$)Lf`B zNLPC*oDdVAJck-bN2mWXa5KV~kPrD0m<_~AAj zX}paw7{xmUwFc;`5w+CY6b?aA!%N^XMXHaGlzTLlcQ_b6FIijx(*L`E9aLWhC54~f zNm-p!S6|<997Tv$*=X~0^g)0t)DB8z44Nd!f7NpIXwEnT=^OJy(L&UGF9uF0sv(*M z`^(ZpC@k4qf+t-gV*8-oClBJ)!BH(c=O(wW5 z`>qH|+{!hGg2X^fN;(7lCB$AmsI(skZ3UwH!24p2HR!Rg@n>+-aJH7KmK(GE*m>ZM^T z$(EvWsc{&C!mBtP%M21tY6*gO2f>-WVq@%dP)vF@AV7c$Y6}4#^vk?l@``=zmtnZ{ zotv_i+$hdPxJQMH$Eyp8`cus#_a+FjP{9 zi#l;#Qp7;1#3rZG<#c)~1)P~vS#Yhj;D6Y=n%_2xD86=odH_=kH}uxa;sYO29Cp_0 z^{&E-tk-rE2vVE!sRW@wLRFCx7Y9)h1&H_q2p4V$MWQ{xfd)|tDM8HvsW+PTh!B^; z1tdfT2gHfrd_3>$Iwp3?0imwqc)auV-kUdXcIN$NXKJ+ZT!T0xl@SkM#M_3ZfW#ZR zyQne-T^YuIhNg_Ip1fJ9W>W2+$|xfBq^9#kDoK1z zi@UCc*L#vWwfkr3ubE?ouYWQ=HR?Z1lei!2CGLOLD8ix;6eZ1yY!+f=tpneSH7ct> zhnrelsCDH_U95EVCgIv>lh73qPzarSE4Z^l;&|+TS-31LuJuIFbxjTQFv<6bW;bqW zMD1!s@w5`%guu}AC&nM%yf_?vSh!H%oO*m#*^g``mM^yo!l6O_4030XH$ylxAW?Z< zF8mop?k$a+y~w>^DzKKV3xt)pdOmu=97;n zj}^9m&O`CMN4HdSXO&6QCIa+qtWxBUVi_TZs1hs6XzmF(OQ}qZ{~T8_>2KBEZ@(qu zJB1Q)@i@8n_{y{GH)h9W;B9QOp1bvNFr$r_g$@TD&AN+5qU0<}Q7$&t@=O4_EYdwv zZXJKfQnKmiC-9#M?)u3yk3{#WF+aU@G$;vw!&n63Me)|Sw@2ok+_`6GM!(POGWo41 zd*uK;>sfGw_Q3epGbrG+DrD(jsGqlf0UuhJ*sntdGmYs}lQ==NGHT&4sM-QflrmQ$*A87Dhleq@9+eo2aCTV3 z_ez!%ZJQRl(rV%5nBIQIqX%`Dt-R33QGZhVKzLyFS&g#rkGUG*`74aCZrtCp|H|iA zTi?Fbw(m;{SJzMe$g>PsTATiPmTIwv>yXvN8cl_D4L2p9M(1jtzssc@1Cti4U@jd%?`}9EXV9ijW(tm1uYMNu+`7iw6dHjcM=-Gn- z?+ttF**ES#;3GYMWuwD&-a59#HPU_27r(eQEOuEEuxeG%s^HVb>-B*rW?#R>z^cDj z&7^PUv*z38Wp?*}p4+pf@agr_;x2|P)+~Ojf_aLMxIMgm^PEz83g`8nL>2Xv*mGhL ztc)h9n)5poFDzMeda+~V92c?lgwnUC3?livw6`vkXR3c4q`UL$1#Qc#S_||i%1^bq zzcTdA3AY_PyY%AXtA6tGedAWS-fv^TcxBg)Ejv^`cbZIk>rmKV>)VjZv_WRgf^Ez0 zepwrIcy-v+gIT*Yn^`}znPhIUxSq$ZvZ6*WQ0>;_!!FH9HnFTXEh09kPP=$czqm~I zPLtS{h59obwrp_Ws#i$4$=8*-Kj*gD567k#Cm%ar+#0j{(T}pDm+fN&)UzBnhOIZX zwa>Yd6&BI`guU?i;sqz1p55d4Bl1_326f zmAFoBJJi=?X!wvtM>CLzL*(>L-3677({r92kTSHc544+}bFXAg)~zqOS?iwE=5Uo< z&EEYhHe}c2clBzF>zI{q$bly9v!=THteDaCaQW01-+J%P75Y~!^g|kSbJgZsx6?Q| zBm0$NqZk<&5;l82Rbs5a>vh;bqU}8E`-M;T_+I{N;C#FBRG$oopU8QqPr2G=nVyU8 z>bZPy`CwEQ_*u^9_S!NHIkoq*)&1>+{LPKN$2rbk6TqqD*kKc}M_^`@>WezV&*~?P zr)eJi%9&WlY zDRTQ2?HHqfXTlm58^|PcPUB3IT-R84Q}80AW<|SBe91lFjd&B9SyFk`7!TUVa!1Xw z=Qr_OuW7tn_wH=IUA5aD+=O$gcO1 zV++6DE$Ow`K*>(A<#@sa@Dg#{TN``E%C)y~SG@@MFHkr^DR#Qo4&K@NuXvmix%z zA^rZc{lq$EP+(8~`GIfqh3B=*oPXKb1=q7MFg%?c_S%m{kB5O_atx2utdn+J~xSbna&;7|0-?}o*@C7Tc_hp^T@>*cBdWZn< zZZjB2o-F%LO&Wa3GtkNpSqu!kFexzocXHf21!?pf(GW^zPoDYCk@4~5+wWW%KTlSC zuP1|k)dNDUMBU`<_qI$I?o3|w-k(Y2-ejG-nv+#NXfg3Tm>lrIjp^Zo$umAE$-vVu d6XdQ4gaKyHCSUtt%XIw3WYLdGY}a0cWB`b6NRR*k delta 33987 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 public bool GachaChargeTime_Reduce() { return m_SaveData.LuckyGameCharge; } public bool IsInfinityMiniGame() { return m_SaveData.InfinityMiniGame; } + public void Add_ChatData(int girlid, string converid, ChatHistory history) + { + var data = m_SaveData.list_ChatSaveData.Find(f=>f.GirlID == girlid); + if (data == null) + { + data = new ChatSaveData { GirlID = girlid }; + m_SaveData.list_ChatSaveData.Add(data); + } + if (!string.IsNullOrEmpty(converid)) data.conversationId = converid; + data.histories.Add(history); + if (data.histories.Count > 20) data.histories.RemoveAt(0); + + Save(); + } + public ChatSaveData Get_ChatSaveData_orNull(int girlid) + { + return m_SaveData.list_ChatSaveData.Find(f => f.GirlID == girlid); + } + public class SaveData { public bool bSound, bBgm; @@ -404,6 +423,7 @@ public class SaveMgr : MonoBehaviourSingletonTemplate ProtectedBool _BuyShopDisableOne2; public bool BuyShopDisableOne2 { get { return _BuyShopDisableOne2; } set { _BuyShopDisableOne2 = value; _BuyShopDisableOne2.Obfuscate(); } } public List list_ShopLimit = new List(); + public List list_ChatSaveData = new List(); } public class ShopADSaveData @@ -411,4 +431,11 @@ public class SaveMgr : MonoBehaviourSingletonTemplate public string ShopID; ProtectedInt32 _Count; public int Count { get { return _Count; } set { _Count = value; _Count.Obfuscate(); } } } + + public class ChatSaveData + { + public int GirlID; + public string conversationId; + public List histories = new List(); + } } \ No newline at end of file diff --git a/Assets/Scripts/Chat.meta b/Assets/Scripts/Chat.meta new file mode 100644 index 0000000..9e0f11d --- /dev/null +++ b/Assets/Scripts/Chat.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 856f650a1cb2ba14ea29f4fa11d9bbf6 +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Scripts/Chat/ChatGirlCard.cs b/Assets/Scripts/Chat/ChatGirlCard.cs new file mode 100644 index 0000000..d843c90 --- /dev/null +++ b/Assets/Scripts/Chat/ChatGirlCard.cs @@ -0,0 +1,14 @@ +using TMPro; +using UnityEngine; +using UnityEngine.UI; + +public class ChatGirlCard : MonoBehaviour +{ + public Image i_girl; + public TextMeshProUGUI t_msg; + + public void Set(int girlid, string msg) + { + t_msg.text = msg; + } +} \ No newline at end of file diff --git a/Assets/Scripts/Chat/ChatGirlCard.cs.meta b/Assets/Scripts/Chat/ChatGirlCard.cs.meta new file mode 100644 index 0000000..c3ae45f --- /dev/null +++ b/Assets/Scripts/Chat/ChatGirlCard.cs.meta @@ -0,0 +1,2 @@ +fileFormatVersion: 2 +guid: d7ccc17439b405b44a0b0c33e6bca2f1 \ No newline at end of file diff --git a/Assets/Scripts/Chat/ChatMyCard.cs b/Assets/Scripts/Chat/ChatMyCard.cs new file mode 100644 index 0000000..4517d31 --- /dev/null +++ b/Assets/Scripts/Chat/ChatMyCard.cs @@ -0,0 +1,12 @@ +using TMPro; +using UnityEngine; + +public class ChatMyCard : MonoBehaviour +{ + public TextMeshProUGUI t_msg; + + public void Set(string msg) + { + t_msg.text = msg; + } +} \ No newline at end of file diff --git a/Assets/Scripts/Chat/ChatMyCard.cs.meta b/Assets/Scripts/Chat/ChatMyCard.cs.meta new file mode 100644 index 0000000..daf51f5 --- /dev/null +++ b/Assets/Scripts/Chat/ChatMyCard.cs.meta @@ -0,0 +1,2 @@ +fileFormatVersion: 2 +guid: eca62a30839c83949887f943f5f59798 \ No newline at end of file diff --git a/Assets/Scripts/Chat/ChatUI.cs b/Assets/Scripts/Chat/ChatUI.cs new file mode 100644 index 0000000..e8c94bb --- /dev/null +++ b/Assets/Scripts/Chat/ChatUI.cs @@ -0,0 +1,166 @@ +using System; +using System.Collections; +using System.Collections.Generic; +using System.Text; +using TMPro; +using UnityEngine; +using UnityEngine.Networking; +using UnityEngine.UI; + +public class ChatUI : MonoBehaviour +{ + public TextMeshProUGUI[] texts; // 0 이름 + public ScrollRect m_ScrollRect; + public Transform tf_parent; + public GameObject go_chatGirlCard, go_chatMyCard, go_dayCard, go_pictureCard; + public TMP_InputField if_msg; + + List list_chat = new List(); + girltabledata m_Data; + + public void Set(girltabledata data) + { + gameObject.SetActive(true); + + m_Data = data; + texts[0].text = m_Data.s_Name; + ADInfo.Ins.Set_Banner(false); + + for (int i = 0; i < list_chat.Count; i++) + Destroy(list_chat[i]); + list_chat.Clear(); + + var chatdata = SaveMgr.Ins.Get_ChatSaveData_orNull(m_Data.n_GirlID); + if (chatdata != null) + for (int i = 0; i < chatdata.histories.Count; i++) + Set_Chat(chatdata.histories[i]); + } + + private void OnDisable() + { + ADInfo.Ins.Set_Banner(true); + } + + void Set_Chat(ChatHistory chat) + { + if (chat.role.Equals("girl")) + { + var chatscript = DSUtil.Get_Clone(go_chatGirlCard, tf_parent); + chatscript.Set(m_Data.n_GirlID, chat.content); + list_chat.Add(chatscript.gameObject); + } + else if (chat.role.Equals("me")) + { + var chatscript = DSUtil.Get_Clone(go_chatMyCard, tf_parent); + chatscript.Set(chat.content); + list_chat.Add(chatscript.gameObject); + } + + Invoke("Set_ScrollEnd", Time.deltaTime); + } + + void Set_ScrollEnd() + { + Canvas.ForceUpdateCanvases(); + m_ScrollRect.verticalNormalizedPosition = 0; + } + + public void OnClick_Send() + { + StartCoroutine(Send_Chat()); + } + + IEnumerator Send_Chat() + { + if (string.IsNullOrEmpty(if_msg.text)) yield break; + + var myhistory = new ChatHistory + { + role = "me", + content = if_msg.text, + timestamp = InternetTime.Ins.Time.ToString() + }; + // 내 히스토리 추가 + SaveMgr.Ins.Add_ChatData(m_Data.n_GirlID, "", myhistory); + Set_Chat(myhistory); + + string chaturl = $"https://navistalk-yrtti2co7a-dt.a.run.app/personas/{m_Data.s_PersonaId}/chat"; + var token = "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJnYW1lSWQiOiJzaGVnb3R3ZXQiLCJwYXJ0bmVySWQiOiJ0b25ld29ya2VyIiwiZ2FtZVRva2VuIjoiZ2FtZVRva2VuMjIyMyIsImlhdCI6MTc1ODc4OTE5N30.BU52nWyA6oNtiPNoiO6z9J6B9xYxnTOr_bD-z_Xrw10"; + + var chatsaveData = SaveMgr.Ins.Get_ChatSaveData_orNull(m_Data.n_GirlID); + + // ChatData 객체 생성 + ChatData chatData = new ChatData + { + message = if_msg.text, + conversationId = chatsaveData == null ? "" : chatsaveData.conversationId, + userLanguage = "ko", + histories = chatsaveData == null ? new List() : chatsaveData.histories + }; + + // JSON 변환 + string jsonData = JsonUtility.ToJson(chatData); + byte[] bodyRaw = Encoding.UTF8.GetBytes(jsonData); + + using (UnityWebRequest www = new UnityWebRequest(chaturl, "POST")) + { + www.uploadHandler = new UploadHandlerRaw(bodyRaw); + www.downloadHandler = new DownloadHandlerBuffer(); + + // 헤더 설정 + www.SetRequestHeader("Content-Type", "application/json"); + www.SetRequestHeader("Accept", "application/json"); + www.SetRequestHeader("Authorization", "Bearer " + token); + + if_msg.text = ""; + + yield return www.SendWebRequest(); + + if (www.result == UnityWebRequest.Result.Success) + { + ChatResponeData data = JsonUtility.FromJson(www.downloadHandler.text); + + var girlchathistory = new ChatHistory + { + role = "girl", + content = data.response, + timestamp = InternetTime.Ins.Time.ToString() + }; + + // 걸 히스토리 추가 + SaveMgr.Ins.Add_ChatData(m_Data.n_GirlID, data.conversationId, girlchathistory); + Set_Chat(girlchathistory); + } + else + { + Debug.LogError("Error: " + www.error); + } + } + } +} + +[Serializable] +public class ChatHistory +{ // 최대 20개 + public string role; + public string content; + public string timestamp; +} + +[Serializable] +public class ChatData +{ + public string message; + public string conversationId; + //public string userId; + public string userLanguage = "ko"; + public List histories; +} + +[Serializable] +public class ChatResponeData +{ + public string ok; + public string response; + public string conversationId; +} \ No newline at end of file diff --git a/Assets/Scripts/Chat/ChatUI.cs.meta b/Assets/Scripts/Chat/ChatUI.cs.meta new file mode 100644 index 0000000..2ae3d53 --- /dev/null +++ b/Assets/Scripts/Chat/ChatUI.cs.meta @@ -0,0 +1,2 @@ +fileFormatVersion: 2 +guid: 84e2dd12cf508214ab4654169fac4cf9 \ No newline at end of file diff --git a/Assets/Scripts/UI/LobbyUI.cs b/Assets/Scripts/UI/LobbyUI.cs index 929e9f3..23a451b 100644 --- a/Assets/Scripts/UI/LobbyUI.cs +++ b/Assets/Scripts/UI/LobbyUI.cs @@ -16,6 +16,7 @@ public class LobbyUI : MonoBehaviourSingletonTemplate [SerializeField] LobbyCenterProfileUI m_LobbyCenterProfileUI; public AlbumUI m_AlbumUI; [SerializeField] GachaUI m_GachaUI; + public ChatUI m_ChatUI; [Header("Bot UI")] [SerializeField] GameObject[] gos_homeBot; // 게임 버튼 diff --git a/Assets/Scripts/UI/ProfileCard.cs b/Assets/Scripts/UI/ProfileCard.cs index 7b9eabb..c48174b 100644 --- a/Assets/Scripts/UI/ProfileCard.cs +++ b/Assets/Scripts/UI/ProfileCard.cs @@ -48,8 +48,8 @@ public class ProfileCard : MonoBehaviour i_openbtn.sprite = UIAtlasMgr.Ins.Get_Sprite(CanOpen() ? "red btn long" : "black btn"); go_viewbtn.SetActive(count == 0); go_albumbtn.SetActive(count > 0); - //go_chatbtn.SetActive(count > 0); - go_chatbtn.SetActive(false); // 게등위 테스트 + go_chatbtn.SetActive(count > 0); + //go_chatbtn.SetActive(false); // 게등위 테스트 } bool CanOpen() @@ -70,7 +70,7 @@ public class ProfileCard : MonoBehaviour public void OnClick_Chat() { - + LobbyUI.Ins.m_ChatUI.Set(m_Data); } public void OnClick_Preview() diff --git a/Assets/Scripts/Util/TMPImageResizer.cs b/Assets/Scripts/Util/TMPImageResizer.cs new file mode 100644 index 0000000..613eb61 --- /dev/null +++ b/Assets/Scripts/Util/TMPImageResizer.cs @@ -0,0 +1,26 @@ +using TMPro; +using UnityEngine; + +[RequireComponent(typeof(RectTransform))] +public class TMPImageResizer : MonoBehaviour +{ + public RectTransform myRect; + public TMP_Text tmpText; // 글자를 가진 TextMeshProUGUI + public RectTransform imageRect; // 크기를 조절할 Image의 RectTransform + public Vector2 padding = new Vector2(20, 20); // 텍스트 주변 여백 + public Vector2 myRectPadding = new Vector2(0, 20); + + void Update() + { + if (tmpText == null || imageRect == null) return; + + // TMP 실제 크기 + Vector2 size = tmpText.textBounds.size; + float currentWidth = size.x + padding.x; + float currentHeight = size.y + padding.y; + + // Image 크기 변경 + imageRect.sizeDelta = new Vector2(currentWidth, currentHeight); + myRect.sizeDelta = new Vector2(myRect.sizeDelta.x, currentHeight + myRectPadding.y); + } +} \ No newline at end of file diff --git a/Assets/Scripts/Util/TMPImageResizer.cs.meta b/Assets/Scripts/Util/TMPImageResizer.cs.meta new file mode 100644 index 0000000..c238edc --- /dev/null +++ b/Assets/Scripts/Util/TMPImageResizer.cs.meta @@ -0,0 +1,2 @@ +fileFormatVersion: 2 +guid: 32ca1f1f25f9cb04a95a3c78caa222f5 \ No newline at end of file