fix: Update logic select task in dlgnpc.

This commit is contained in:
Tungdv
2025-11-21 17:03:39 +07:00
parent 939b714ced
commit 45ad9bc162
8 changed files with 311 additions and 51 deletions
@@ -12,20 +12,6 @@ namespace ModelRenderer.Scripts.GameData
/// </summary>
public class elementdataman
{
private static elementdataman instance;
public static elementdataman Instance
{
get
{
if (instance == null)
{
instance = new elementdataman();
}
return instance;
}
}
#region Dictionary for mapping id with other stuffs
public Dictionary<uint, DATA_TYPE> essence_id_data_type_map = new Dictionary<uint, DATA_TYPE>();
public Dictionary<int, uint> essence_index_id_map = new Dictionary<int, uint>();
@@ -90,7 +90,7 @@ namespace BrewMonster.Network
public static bool Init()
{
m_pElementDataMan = elementdataman.Instance;
m_pElementDataMan = ElementDataManProvider.GetElementDataMan();
// Load task templates
if (m_pTaskMan == null) m_pTaskMan = new ATaskTemplMan();
@@ -1382,6 +1382,15 @@ namespace CSNetwork.S2CCommand
{
public int idTask;
}
public struct cmd_sevnpc_serve2
{
public int service_type;
public uint len;
public int idTask;
public int idStorage;
public int idRefreshItem;
};
}
// Player and NPC state
@@ -518,20 +518,23 @@ namespace CSNetwork.C2SCommand
public static Octets CreateCmdNPCSevAcceptTask(int idTask, int idStorage, int idRefreshItem)
{
cmd_sevnpc_serve cmd = new cmd_sevnpc_serve()
cmd_sevnpc_serve2 cmd = new cmd_sevnpc_serve2()
{
service_type = NPC_service_type.GP_NPCSEV_TASK_ACCEPT,
len = (uint)Marshal.SizeOf<accept_task_CONTENT>()
};
accept_task_CONTENT content = new accept_task_CONTENT()
{
len = (uint)Marshal.SizeOf<accept_task_CONTENT>(),
idTask = idTask,
idStorage = idStorage,
idRefreshItem = idRefreshItem
};
var octets = SerializeCommand(CommandID.SEVNPC_SERVE, command: cmd, command2: content);
//accept_task_CONTENT content = new accept_task_CONTENT()
//{
// idTask = idTask,
// idStorage = idStorage,
// idRefreshItem = idRefreshItem
//};
var octets = SerializeCommand(CommandID.SEVNPC_SERVE, command: cmd/*, command2: content*/);
return octets;
}
@@ -31,6 +31,7 @@ namespace BrewMonster.UI
[SerializeField] private AUIListBox m_pLst_Main;
[SerializeField] private Button m_btnBack;
[SerializeField] private Button m_btnClose;
[SerializeField] private RectTransform m_rectContent;
int m_iTracedTaskID;
int m_iTracedTaskNPCID;
@@ -270,7 +271,7 @@ namespace BrewMonster.UI
SetData(NPC_DIALOG.NPC_DIALOG_ESSENCE, "");
m_pTxt_npc.SetText(Encoding.Unicode.GetString(MemoryMarshal.AsBytes<ushort>(pEssence.name)));
m_pTxt_Content.SetText(Encoding.Unicode.GetString(MemoryMarshal.AsBytes<ushort>(pEssence.hello_msg)));
ResizeContent();
//m_pLst_Main.SetHOver(true);
m_pLst_Main.ResetContent();
m_pLst_Main.SetActionOnClickBtnItem((int value) => { SelectListItem(value); });
@@ -1132,23 +1133,25 @@ namespace BrewMonster.UI
DataType == DATA_TYPE.DT_NPC_TASK_OUT_SERVICE)
{
int total_count = 0;
if (DataType == DATA_TYPE.DT_NPC_TASK_IN_SERVICE)
if(pData != null)
{
NPC_TASK_IN_SERVICE pService = (NPC_TASK_IN_SERVICE)pData;
a_idTask = pService.id_tasks;
total_count = pService.id_tasks.Length;
}
else
{
NPC_TASK_OUT_SERVICE pService = (NPC_TASK_OUT_SERVICE)pData;
// if storage task not exists
if (pService.storage_id == 0 || pService.storage_open_item == 0)
if (DataType == DATA_TYPE.DT_NPC_TASK_IN_SERVICE)
{
NPC_TASK_IN_SERVICE pService = (NPC_TASK_IN_SERVICE)pData;
a_idTask = pService.id_tasks;
total_count = pService.id_tasks.Length;
}
else
{
NPC_TASK_OUT_SERVICE pService = (NPC_TASK_OUT_SERVICE)pData;
// if storage task not exists
if (pService.storage_id == 0 || pService.storage_open_item == 0)
{
a_idTask = pService.id_tasks;
total_count = pService.id_tasks.Length;
}
}
}
for (j = 0; j < total_count; j++)
@@ -1303,13 +1306,20 @@ namespace BrewMonster.UI
{
string text = Encoding.Unicode.GetString(MemoryMarshal.AsBytes<ushort>(pTemp.GetTribute()));
m_pTxt_Content.SetText(text);
ResizeContent();
}
else
{
if (nNumTasks > 0)
{
m_pTxt_Content.SetText(GetStringFromTable(502));
ResizeContent();
}
else
{
m_pTxt_Content.SetText(GetStringFromTable(501));
ResizeContent();
}
}
}
else if (bTaskNPC)
@@ -1318,14 +1328,21 @@ namespace BrewMonster.UI
{
string text = Encoding.Unicode.GetString(MemoryMarshal.AsBytes<ushort>(pCurNPCEssence.Value.hello_msg));
m_pTxt_Content.SetText(text);
ResizeContent();
}
}
else
{
if (nNumTasks > 0)
{
m_pTxt_Content.SetText(GetStringFromTable(502));
ResizeContent();
}
else
{
m_pTxt_Content.SetText(GetStringFromTable(501));
ResizeContent();
}
}
SetData(NPC_DIALOG.NPC_DIALOG_TASK_LIST, "");
@@ -1356,12 +1373,12 @@ namespace BrewMonster.UI
{
const int COLOR_PREFIX_LENGTH = 7; // "^ffffff"
if (!string.IsNullOrEmpty(name) && name.Length >= COLOR_PREFIX_LENGTH && name[0] == '^')
if (!string.IsNullOrEmpty(szName) && szName.Length >= COLOR_PREFIX_LENGTH && szName[0] == '^')
{
bool bColorPrefix = true;
for (int i = 1; i < COLOR_PREFIX_LENGTH; i++)
{
char c = name[i];
char c = szName[i];
bool isHexDigit =
(c >= '0' && c <= '9') ||
(c >= 'a' && c <= 'f') ||
@@ -1377,11 +1394,11 @@ namespace BrewMonster.UI
if (bColorPrefix)
{
// Lấy phần sau prefix
return name.Substring(COLOR_PREFIX_LENGTH);
return szName.Substring(COLOR_PREFIX_LENGTH);
}
}
return name;
return szName;
}
public void PopupNPCDialog(talk_proc pTalk)
@@ -1394,13 +1411,14 @@ namespace BrewMonster.UI
string talkText = Encoding.Unicode.GetString(MemoryMarshal.AsBytes<ushort>(pTalk.windows[0].talk_text));
m_pTxt_Content.SetText(pTask.FormatTaskTalk(talkText));
ResizeContent();
m_pTxt_npc.SetText("");
m_pLst_Main.ResetContent();
for (i = 0; i < pTalk.windows[0].num_option; i++)
{
strText = GetStringFromTable(249);
strText += pTalk.windows[0].options[i].text;
strText += Encoding.Unicode.GetString(MemoryMarshal.AsBytes<ushort>(pTalk.windows[0].options[i].text));
m_pLst_Main.AddString(strText);
nIndex = m_pLst_Main.GetCount() - 1;
m_pLst_Main.SetItemData(nIndex, pTalk.windows[0].options[i].id);
@@ -1787,6 +1805,7 @@ namespace BrewMonster.UI
if (id != pTalk.windows[i].id) continue;
string text = Encoding.Unicode.GetString(MemoryMarshal.AsBytes<ushort>(pTalk.windows[i].talk_text));
m_pTxt_Content.SetText(pTask.FormatTaskTalk(text));
ResizeContent();
//m_pTxt_Content.SetData(pTalk.windows[i].id_parent);
m_pLst_Main.ResetContent();
@@ -1908,6 +1927,7 @@ namespace BrewMonster.UI
if (id != pTalk.windows[i].id) continue;
string talkText = Encoding.Unicode.GetString(MemoryMarshal.AsBytes<ushort>(pTalk.windows[i].talk_text));
m_pTxt_Content.SetText(pTask.FormatTaskTalk(talkText));
ResizeContent();
//m_pTxt_Content.SetData(pTalk.windows[i].id_parent);
m_pLst_Main.ResetContent();
@@ -3443,5 +3463,13 @@ namespace BrewMonster.UI
//SetData(NPC_DIALOG.NPC_DIALOG_TASK_LIST, "");
}
}
void ResizeContent()
{
var size = m_rectContent.sizeDelta;
size.y = m_pTxt_Content.preferredHeight + 10f; // delta = 10f
m_rectContent.sizeDelta = size;
LayoutRebuilder.ForceRebuildLayoutImmediate(m_rectContent);
}
}
}
+242 -8
View File
@@ -25,18 +25,18 @@ RectTransform:
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 127501564762295495}
m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}
m_LocalRotation: {x: -0, y: -0, z: -0, w: 1}
m_LocalPosition: {x: 0, y: 0, z: 0}
m_LocalScale: {x: 1, y: 1, z: 1}
m_ConstrainProportionsScale: 0
m_Children: []
m_Father: {fileID: 617338231045505643}
m_Father: {fileID: 8223258459727571439}
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: -26.0479, y: 78.75635}
m_SizeDelta: {x: 518.0898, y: 197.7065}
m_Pivot: {x: 0.5, y: 0.5}
m_AnchorMin: {x: 0.5, y: 1}
m_AnchorMax: {x: 0.5, y: 1}
m_AnchoredPosition: {x: 0, y: -0.000015258789}
m_SizeDelta: {x: 518.0898, y: 197.70648}
m_Pivot: {x: 0.5, y: 1}
--- !u!222 &43324519852461835
CanvasRenderer:
m_ObjectHideFlags: 0
@@ -272,6 +272,113 @@ MonoBehaviour:
m_hasFontAssetChanged: 0
m_baseMaterial: {fileID: 0}
m_maskOffset: {x: 0, y: 0, z: 0, w: 0}
--- !u!1 &239632690013192579
GameObject:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
serializedVersion: 6
m_Component:
- component: {fileID: 1373151796210670601}
- component: {fileID: 1322945355177525979}
- component: {fileID: 8115599412736335715}
- component: {fileID: 1582129075081615549}
m_Layer: 0
m_Name: ScrollContent
m_TagString: Untagged
m_Icon: {fileID: 0}
m_NavMeshLayer: 0
m_StaticEditorFlags: 0
m_IsActive: 1
--- !u!224 &1373151796210670601
RectTransform:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 239632690013192579}
m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}
m_LocalPosition: {x: 0, y: 0, z: 0}
m_LocalScale: {x: 1, y: 1, z: 1}
m_ConstrainProportionsScale: 0
m_Children:
- {fileID: 7404808234908356302}
m_Father: {fileID: 617338231045505643}
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: -26.0479, y: 78.75635}
m_SizeDelta: {x: 518.0898, y: 197.7065}
m_Pivot: {x: 0.5, y: 0.5}
--- !u!222 &1322945355177525979
CanvasRenderer:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 239632690013192579}
m_CullTransparentMesh: 1
--- !u!114 &8115599412736335715
MonoBehaviour:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 239632690013192579}
m_Enabled: 1
m_EditorHideFlags: 0
m_Script: {fileID: 11500000, guid: fe87c0e1cc204ed48ad3b37840f39efc, type: 3}
m_Name:
m_EditorClassIdentifier:
m_Material: {fileID: 0}
m_Color: {r: 1, g: 1, b: 1, a: 0.392}
m_RaycastTarget: 1
m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0}
m_Maskable: 1
m_OnCullStateChanged:
m_PersistentCalls:
m_Calls: []
m_Sprite: {fileID: 10907, guid: 0000000000000000f000000000000000, type: 0}
m_Type: 1
m_PreserveAspect: 0
m_FillCenter: 1
m_FillMethod: 4
m_FillAmount: 1
m_FillClockwise: 1
m_FillOrigin: 0
m_UseSpriteMesh: 0
m_PixelsPerUnitMultiplier: 1
--- !u!114 &1582129075081615549
MonoBehaviour:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 239632690013192579}
m_Enabled: 1
m_EditorHideFlags: 0
m_Script: {fileID: 11500000, guid: 1aa08ab6e0800fa44ae55d278d1423e3, type: 3}
m_Name:
m_EditorClassIdentifier:
m_Content: {fileID: 8223258459727571439}
m_Horizontal: 0
m_Vertical: 1
m_MovementType: 1
m_Elasticity: 0.1
m_Inertia: 1
m_DecelerationRate: 0.135
m_ScrollSensitivity: 1
m_Viewport: {fileID: 7404808234908356302}
m_HorizontalScrollbar: {fileID: 0}
m_VerticalScrollbar: {fileID: 0}
m_HorizontalScrollbarVisibility: 2
m_VerticalScrollbarVisibility: 2
m_HorizontalScrollbarSpacing: -3
m_VerticalScrollbarSpacing: -3
m_OnValueChanged:
m_PersistentCalls:
m_Calls: []
--- !u!1 &782714985240968117
GameObject:
m_ObjectHideFlags: 0
@@ -443,6 +550,42 @@ MonoBehaviour:
dwData: 0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
indexItem: 0
strText:
--- !u!1 &912861399304220270
GameObject:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
serializedVersion: 6
m_Component:
- component: {fileID: 8223258459727571439}
m_Layer: 0
m_Name: Content
m_TagString: Untagged
m_Icon: {fileID: 0}
m_NavMeshLayer: 0
m_StaticEditorFlags: 0
m_IsActive: 1
--- !u!224 &8223258459727571439
RectTransform:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 912861399304220270}
m_LocalRotation: {x: -0, y: -0, z: -0, w: 1}
m_LocalPosition: {x: 0, y: 0, z: 0}
m_LocalScale: {x: 1, y: 1, z: 1}
m_ConstrainProportionsScale: 0
m_Children:
- {fileID: 1091462352906544451}
m_Father: {fileID: 7404808234908356302}
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
m_AnchorMin: {x: 0, y: 1}
m_AnchorMax: {x: 1, y: 1}
m_AnchoredPosition: {x: 0, y: 0}
m_SizeDelta: {x: 0, y: 300}
m_Pivot: {x: 0, y: 1}
--- !u!1 &936487781243711958
GameObject:
m_ObjectHideFlags: 0
@@ -518,6 +661,96 @@ MonoBehaviour:
m_FillOrigin: 0
m_UseSpriteMesh: 0
m_PixelsPerUnitMultiplier: 1
--- !u!1 &1614583900709117353
GameObject:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
serializedVersion: 6
m_Component:
- component: {fileID: 7404808234908356302}
- component: {fileID: 2349457999783812021}
- component: {fileID: 3216183545868724545}
- component: {fileID: 6919514772247145536}
m_Layer: 0
m_Name: Viewport
m_TagString: Untagged
m_Icon: {fileID: 0}
m_NavMeshLayer: 0
m_StaticEditorFlags: 0
m_IsActive: 1
--- !u!224 &7404808234908356302
RectTransform:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 1614583900709117353}
m_LocalRotation: {x: -0, y: -0, z: -0, w: 1}
m_LocalPosition: {x: 0, y: 0, z: 0}
m_LocalScale: {x: 1, y: 1, z: 1}
m_ConstrainProportionsScale: 0
m_Children:
- {fileID: 8223258459727571439}
m_Father: {fileID: 1373151796210670601}
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
m_AnchorMin: {x: 0, y: 0}
m_AnchorMax: {x: 1, y: 1}
m_AnchoredPosition: {x: 0, y: 0}
m_SizeDelta: {x: 0, y: 0}
m_Pivot: {x: 0, y: 1}
--- !u!222 &2349457999783812021
CanvasRenderer:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 1614583900709117353}
m_CullTransparentMesh: 1
--- !u!114 &3216183545868724545
MonoBehaviour:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 1614583900709117353}
m_Enabled: 1
m_EditorHideFlags: 0
m_Script: {fileID: 11500000, guid: fe87c0e1cc204ed48ad3b37840f39efc, type: 3}
m_Name:
m_EditorClassIdentifier:
m_Material: {fileID: 0}
m_Color: {r: 1, g: 1, b: 1, a: 1}
m_RaycastTarget: 1
m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0}
m_Maskable: 1
m_OnCullStateChanged:
m_PersistentCalls:
m_Calls: []
m_Sprite: {fileID: 10917, guid: 0000000000000000f000000000000000, type: 0}
m_Type: 1
m_PreserveAspect: 0
m_FillCenter: 1
m_FillMethod: 4
m_FillAmount: 1
m_FillClockwise: 1
m_FillOrigin: 0
m_UseSpriteMesh: 0
m_PixelsPerUnitMultiplier: 1
--- !u!114 &6919514772247145536
MonoBehaviour:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 1614583900709117353}
m_Enabled: 1
m_EditorHideFlags: 0
m_Script: {fileID: 11500000, guid: 31a19414c41e5ae4aae2af33fee712f6, type: 3}
m_Name:
m_EditorClassIdentifier:
m_ShowMaskGraphic: 0
--- !u!1 &4319722768531036698
GameObject:
m_ObjectHideFlags: 0
@@ -872,7 +1105,7 @@ RectTransform:
- {fileID: 4417434749515336320}
- {fileID: 6721994976154660856}
- {fileID: 4320535810812211952}
- {fileID: 1091462352906544451}
- {fileID: 1373151796210670601}
- {fileID: 7678860290128617065}
m_Father: {fileID: 2620840836205932051}
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
@@ -1397,6 +1630,7 @@ MonoBehaviour:
m_pLst_Main: {fileID: 4816029163115819860}
m_btnBack: {fileID: 6071484966713915762}
m_btnClose: {fileID: 1639099275032120166}
m_rectContent: {fileID: 8223258459727571439}
--- !u!1 &8376521380240807646
GameObject:
m_ObjectHideFlags: 0
+2 -2
View File
@@ -2588,8 +2588,8 @@ public partial class CECHostPlayer : CECPlayer
// Check way point service on NPC
var dwID = (pNPC as CECNPCServer).GetWayPointID();
if (dwID != null && !HasWayPoint(dwID))
UnityGameSession.c2s_CmdNPCSevWaypoint();
//if (dwID != null && !HasWayPoint(dwID))
// UnityGameSession.c2s_CmdNPCSevWaypoint();
//g_pGame.GetGameSession().c2s_CmdNPCSevWaypoint();
var pGameUI = EC_Game.GetGameRun().GetUIManager().GetInGameUIMan();
+1 -1
View File
@@ -773,7 +773,7 @@ PlayerSettings:
webGLCloseOnQuit: 0
webWasm2023: 0
scriptingDefineSymbols:
Android: DOTWEEN;TESTFAST;_TASK_CLIENT
Android: DOTWEEN;TESTFAST;_TASK_CLIENT;LOAD_TASK_TEMPL
EmbeddedLinux: DOTWEEN
GameCoreScarlett: DOTWEEN
GameCoreXboxOne: DOTWEEN