complete mockup for DlgAward, after npc deliver award -> update runtime in Inventory
This commit is contained in:
@@ -17,3 +17,5 @@ MonoBehaviour:
|
||||
prefab: {fileID: 8237288432181259026, guid: 7653e7e64393ec24c903f0606499b8c4, type: 3}
|
||||
- id: DialogNPCShop
|
||||
prefab: {fileID: 8237288432181259026, guid: eaeb778b6aab3d74299373b3a96b72c4, type: 3}
|
||||
- id: Win_Award
|
||||
prefab: {fileID: 903595479696773158, guid: cf26d96ae7d984ba8a5b6cef44adffeb, type: 3}
|
||||
|
||||
@@ -1,3 +1,3 @@
|
||||
version https://git-lfs.github.com/spec/v1
|
||||
oid sha256:79aee339596409d8a47e0a553b1257768bd84fa0e0d6261052b33c1077658ab0
|
||||
size 41493
|
||||
oid sha256:013ea9a5ad664a8ed7ae162ffb1f16e0da6571fb6660ad5b4f1736197f8e3fd4
|
||||
size 41531
|
||||
|
||||
@@ -24,7 +24,7 @@ namespace CSNetwork.C2SCommand
|
||||
}
|
||||
|
||||
// Generic command serializationw
|
||||
public static Octets SerializeCommand<T>(CommandID cmdId, T command)
|
||||
public static Octets SerializeCommand<T>(CommandID cmdId, T command, bool writeLength = true)
|
||||
where T : struct
|
||||
{
|
||||
var octets = new Octets();
|
||||
@@ -33,7 +33,7 @@ namespace CSNetwork.C2SCommand
|
||||
WriteBasicValue(octets, (ushort)cmdId);
|
||||
|
||||
// Write command body
|
||||
WriteStruct(octets, command);
|
||||
WriteStruct(octets, command, writeLength);
|
||||
|
||||
return octets;
|
||||
}
|
||||
@@ -76,7 +76,7 @@ namespace CSNetwork.C2SCommand
|
||||
return octets;
|
||||
}
|
||||
|
||||
private static void WriteStruct<T>(Octets octets, T value)
|
||||
private static void WriteStruct<T>(Octets octets, T value, bool writeLength=true)
|
||||
where T : struct
|
||||
{
|
||||
// Get fields of the struct
|
||||
@@ -103,7 +103,7 @@ namespace CSNetwork.C2SCommand
|
||||
}
|
||||
else if (fieldType.IsArray)
|
||||
{
|
||||
WriteArray(octets, (Array)fieldValue);
|
||||
WriteArray(octets, (Array)fieldValue, writeLength);
|
||||
}
|
||||
}
|
||||
else if (fieldType.IsEnum)
|
||||
@@ -191,7 +191,7 @@ namespace CSNetwork.C2SCommand
|
||||
octets.Insert(octets.Size, strBytes.AsSpan(0, length).ToArray());
|
||||
}
|
||||
|
||||
private static void WriteArray(Octets octets, Array array)
|
||||
private static void WriteArray(Octets octets, Array array, bool writeLength)
|
||||
{
|
||||
if (octets == null)
|
||||
return;
|
||||
@@ -201,7 +201,7 @@ namespace CSNetwork.C2SCommand
|
||||
return;
|
||||
}
|
||||
|
||||
if (array.Length != 1 )
|
||||
if (array.Length != 1 && writeLength)
|
||||
{
|
||||
WriteBasicValue(octets, array.Length);
|
||||
}
|
||||
@@ -666,7 +666,7 @@ namespace CSNetwork.C2SCommand
|
||||
size = dwDataSize,
|
||||
placeholder = pData
|
||||
};
|
||||
return SerializeCommand(CommandID.TASK_NOTIFY, cmd);
|
||||
return SerializeCommand( CommandID.TASK_NOTIFY, cmd, false);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1818,5 +1818,16 @@ namespace CSNetwork.GPDataType
|
||||
public int vigour;
|
||||
public ROLEEXTPROP prop;
|
||||
};
|
||||
|
||||
[ StructLayout(LayoutKind.Sequential, Pack = 1)]
|
||||
struct cmd_task_deliver_item
|
||||
{
|
||||
public int type;
|
||||
public int expire_date;
|
||||
public uint amount;
|
||||
public uint slot_amount;
|
||||
public byte where; //���ĸ���������0 ����2 ����1 װ��
|
||||
public byte index; //��ַ����ĸ�λ��
|
||||
};
|
||||
}
|
||||
|
||||
|
||||
@@ -503,6 +503,8 @@ namespace CSNetwork
|
||||
break;
|
||||
case CommandID.PICKUP_ITEM:
|
||||
case CommandID.HOST_OBTAIN_ITEM:
|
||||
// case CommandID.PRODUCE_ONCE:
|
||||
case CommandID.TASK_DELIVER_ITEM:
|
||||
EC_ManMessage.PostMessage(EC_MsgDef.MSG_HST_PICKUPITEM, (int)MANAGER_INDEX.MAN_PLAYER, 0, pDataBuf,
|
||||
pCmdHeader);
|
||||
break;
|
||||
@@ -1283,7 +1285,7 @@ namespace CSNetwork
|
||||
gamedatasend gamedatasend = new gamedatasend();
|
||||
gamedatasend.Data = C2SCommandFactory.CreateTaskNotifyCmd( pData, dwDataSize);
|
||||
//todo send data curent get error message 3
|
||||
// SendProtocol(gamedatasend);
|
||||
SendProtocol(gamedatasend);
|
||||
}
|
||||
|
||||
public void c2s_SendCmdStandUp()
|
||||
|
||||
@@ -674,7 +674,20 @@ namespace BrewMonster.Scripts.Task
|
||||
// void ForceRemoveFinishTask(TaskInterface* pTask, unsigned long ulTask);
|
||||
public bool IsDynTasksVerified() { return m_bDynTasksVerified; }
|
||||
void SetDynTasksVerified(bool b) { m_bDynTasksVerified = b; }
|
||||
// void OnDynTasksTimeMark(TaskInterface* pTask, unsigned long ulTimeMark, unsigned short version);
|
||||
public void OnDynTasksTimeMark(TaskInterface pTask, uint ulTimeMark, ushort version)
|
||||
{
|
||||
if (version != DYN_TASK_CUR_VERSION)
|
||||
return;
|
||||
|
||||
if (m_ulDynTasksTimeMark == ulTimeMark && LoadDynTasksFromPack(m_szDynPackPath))
|
||||
{
|
||||
SetDynTasksVerified(true);
|
||||
pTask.InitActiveTaskList();
|
||||
UpdateDynDataNPCService();
|
||||
}
|
||||
else
|
||||
_notify_svr(pTask, ClientNotificationConstants.TASK_CLT_NOTIFY_DYN_DATA, 0);
|
||||
}
|
||||
public void OnDynTasksData(TaskInterface pTask, byte[] data, int sz, bool ended)
|
||||
{
|
||||
if (m_bDynTasksVerified)
|
||||
@@ -968,6 +981,57 @@ namespace BrewMonster.Scripts.Task
|
||||
child = child.m_pNextSibling;
|
||||
}
|
||||
}
|
||||
|
||||
bool LoadDynTasksFromPack(string szPath)
|
||||
{
|
||||
// TaskInterface::WriteLog(0, 0, 2, "LoadDynPack begin");
|
||||
|
||||
// FILE* fp = fopen(szPath, "rb");
|
||||
FileStream fp = new FileStream(szPath, FileMode.Open, FileAccess.Read);
|
||||
if (fp == null)
|
||||
{
|
||||
// TaskInterface::WriteLog(0, 0, 0, "LoadDynTasksFromPack, no such file");
|
||||
BMLogger.LogError("[ATaskTemplMan] LoadDynTasksFromPack, no such file");
|
||||
return false;
|
||||
}
|
||||
|
||||
// fseek(fp, 0, SEEK_END);
|
||||
// size_t sz = ftell(fp);
|
||||
// fseek(fp, 0, SEEK_SET);
|
||||
|
||||
long sz = fp.Length;
|
||||
|
||||
|
||||
if (sz == 0)
|
||||
{
|
||||
fp.Close();
|
||||
return false;
|
||||
}
|
||||
|
||||
// char* buf = new char[sz];
|
||||
byte[] buf = new byte[sz];
|
||||
g_ulNewCount++;
|
||||
// fread(buf, 1, sz, fp);
|
||||
long offset = 0;
|
||||
buf = AAssit.ReadArrayFromBinary<byte>( fp, (int)sz, ref offset);
|
||||
fp.Close();
|
||||
|
||||
if (!UnmarshalDynTasks(buf, (int)sz, false))
|
||||
{
|
||||
// LOG_DELETE_ARR(buf);
|
||||
return false;
|
||||
}
|
||||
|
||||
#if _TASK_CLIENT
|
||||
// LOG_DELETE_ARR(buf);
|
||||
#else
|
||||
m_pDynTasksData = buf;
|
||||
m_ulDynTasksDataSize = sz;
|
||||
UpdateDynDataNPCService();
|
||||
#endif
|
||||
|
||||
return true;
|
||||
}
|
||||
}
|
||||
|
||||
[ StructLayout(LayoutKind.Sequential, Pack = 1) ]
|
||||
|
||||
@@ -4,6 +4,7 @@ using PerfectWorld.Scripts.Task;
|
||||
using System.Collections.Generic;
|
||||
using System.IO;
|
||||
using System.Runtime.InteropServices;
|
||||
using BrewMonster.UI;
|
||||
using CSNetwork;
|
||||
using UnityEngine;
|
||||
|
||||
@@ -1613,11 +1614,11 @@ namespace BrewMonster.Scripts.Task
|
||||
public void UpdateTaskUI(uint idTask, int reason)
|
||||
{
|
||||
// TODO: update task UI
|
||||
// CECGameUIMan* pGameUI = g_pGame->GetGameRun()->GetUIManager()->GetInGameUIMan();
|
||||
// if (pGameUI)
|
||||
// {
|
||||
// pGameUI->UpdateTask(idTask, reason);
|
||||
// }
|
||||
CECGameUIMan pGameUI = CECUIManager.Instance.GetInGameUIMan();
|
||||
if (pGameUI != null )
|
||||
{
|
||||
pGameUI.UpdateTask(idTask, reason);
|
||||
}
|
||||
}
|
||||
|
||||
public bool IsTitleDataReady()
|
||||
|
||||
@@ -356,14 +356,14 @@ namespace BrewMonster.Scripts.Task
|
||||
else if (pNotify.reason == TaskTemplConstants.TASK_SVR_NOTIFY_DYN_TIME_MARK)
|
||||
{
|
||||
// TODO: svr_task_dyn_time_mark struct not defined; need to define or use alternative
|
||||
// if (sz != Marshal.SizeOf<svr_task_dyn_time_mark>()) return;
|
||||
if (sz != Marshal.SizeOf<svr_task_dyn_time_mark>()) return;
|
||||
// TODO: OnDynTasksTimeMark method not found in ATaskTemplMan; implement if needed
|
||||
// ATaskTemplMan pMan = GetTaskTemplMan(pTask);
|
||||
// if (pMan != null)
|
||||
// {
|
||||
// svr_task_dyn_time_mark dynMark = Marshal.PtrToStructure<svr_task_dyn_time_mark>(handle.AddrOfPinnedObject());
|
||||
// pMan.OnDynTasksTimeMark(pTask, dynMark.time_mark, dynMark.version);
|
||||
// }
|
||||
ATaskTemplMan pMan = GetTaskTemplMan();
|
||||
if (pMan != null)
|
||||
{
|
||||
svr_task_dyn_time_mark dynMark = GPDataTypeHelper.FromBytes<svr_task_dyn_time_mark>(pBuf);
|
||||
pMan.OnDynTasksTimeMark(pTask, dynMark.time_mark, dynMark.version);
|
||||
}
|
||||
return;
|
||||
}
|
||||
// Handle dynamic task data notification
|
||||
|
||||
@@ -597,5 +597,17 @@ namespace BrewMonster.Scripts.Task
|
||||
m_Buf = new byte[TaskInterfaceConstants.TASK_FINISHED_LIST_BUF_SIZE];
|
||||
Array.Copy(data, m_Buf, TaskInterfaceConstants.TASK_FINISHED_LIST_BUF_SIZE_OLD);
|
||||
}
|
||||
|
||||
|
||||
|
||||
};
|
||||
|
||||
[ StructLayout(LayoutKind.Sequential, Pack = 1)]
|
||||
public struct svr_task_dyn_time_mark
|
||||
{
|
||||
public task_notify_base baseObj;
|
||||
public uint time_mark;
|
||||
public ushort version;
|
||||
|
||||
}
|
||||
}
|
||||
@@ -1419,19 +1419,20 @@ namespace BrewMonster.Scripts.Task
|
||||
|
||||
/* ÈÎÎñ½áÊøºóµÄ½±Àø */
|
||||
|
||||
uint m_ulAwardType_S;
|
||||
uint m_ulAwardType_F;
|
||||
uint m_ulAwardType_S => m_FixedData.m_ulAwardType_S;
|
||||
uint m_ulAwardType_F => m_FixedData.m_ulAwardType_F;
|
||||
// ʱ¼äÏÞÖÆ
|
||||
uint m_ulTimeLimit;
|
||||
uint m_ulTimeLimit => m_FixedData.m_ulTimeLimit;
|
||||
|
||||
/* ÆÕͨºÍ°´Ã¿¸ö·½Ê½ */
|
||||
AWARD_DATA m_Award_S = new AWARD_DATA(); /* ³É¹¦ */
|
||||
AWARD_DATA m_Award_F = new AWARD_DATA(); /* ʧ°Ü */
|
||||
AWARD_DATA m_Award_S => m_FixedData.m_Award_S; /* ³É¹¦ */
|
||||
AWARD_DATA m_Award_F => m_FixedData.m_Award_F; /* ʧ°Ü */
|
||||
/* ʱ¼ä±ÈÀý·½Ê½ */
|
||||
AWARD_RATIO_SCALE m_AwByRatio_S;
|
||||
AWARD_RATIO_SCALE m_AwByRatio_F;
|
||||
AWARD_RATIO_SCALE m_AwByRatio_S => m_FixedData.m_AwByRatio_S;
|
||||
AWARD_RATIO_SCALE m_AwByRatio_F => m_FixedData.m_AwByRatio_F;
|
||||
/* °´»ñµÃÎï±ÈÀý·½Ê½ */
|
||||
AWARD_ITEMS_SCALE m_AwByItems_S;
|
||||
AWARD_ITEMS_SCALE m_AwByItems_F;
|
||||
AWARD_ITEMS_SCALE m_AwByItems_S => m_FixedData.m_AwByItems_S;
|
||||
AWARD_ITEMS_SCALE m_AwByItems_F => m_FixedData.m_AwByItems_F;
|
||||
|
||||
uint g_ulNewCount = 0;
|
||||
|
||||
@@ -4776,7 +4777,7 @@ namespace BrewMonster.Scripts.Task
|
||||
// 0: time limit
|
||||
if (((1 << token_count++) & token_mask1) != 0)
|
||||
{
|
||||
m_ulTimeLimit = GPDataTypeHelper.FromBytes<uint>(pData, ref p);
|
||||
m_FixedData.m_ulTimeLimit = GPDataTypeHelper.FromBytes<uint>(pData, ref p);
|
||||
}
|
||||
|
||||
// 1: reputation
|
||||
|
||||
@@ -4,6 +4,8 @@ using System.IO;
|
||||
using System.Reflection;
|
||||
using System.Runtime.InteropServices;
|
||||
using BrewMonster.Scripts.Task.UI;
|
||||
using BrewMonster.Scripts.UI;
|
||||
using BrewMonster.UI;
|
||||
using CSNetwork.Common;
|
||||
using ModelRenderer.Scripts.Common;
|
||||
using PerfectWorld.Scripts.Task;
|
||||
@@ -17,6 +19,10 @@ namespace BrewMonster.Scripts.Task
|
||||
public GameObject m_pTaskDlg;
|
||||
public static ATaskTemplMan m_pTaskMan; // use static to store loaded data across instances
|
||||
public bool WasLoadTaskData = false;
|
||||
|
||||
[Header("Test Dlg Award Options")]
|
||||
[SerializeField] private uint _awardItemID = 1001;
|
||||
[SerializeField] private KeyCode _awardkey = KeyCode.A;
|
||||
|
||||
private void OnValidate()
|
||||
{
|
||||
@@ -30,6 +36,21 @@ namespace BrewMonster.Scripts.Task
|
||||
{
|
||||
m_pTaskDlg.SetActive(!m_pTaskDlg.activeInHierarchy);
|
||||
}
|
||||
|
||||
if (Input.GetKeyDown(_awardkey))
|
||||
{
|
||||
var pShow1 = CECUIManager.Instance.GetInGameUIMan().GetDialog("Win_Award");
|
||||
CDlgAward pAward = (pShow1) as CDlgAward;
|
||||
if (pAward && !pAward.gameObject.activeInHierarchy)
|
||||
{
|
||||
pAward.UpdateAwardItem((ushort)_awardItemID, true);
|
||||
pAward.Show(true);
|
||||
}
|
||||
else
|
||||
{
|
||||
pAward.Show(false);
|
||||
}
|
||||
}
|
||||
#endif
|
||||
}
|
||||
|
||||
|
||||
@@ -99,5 +99,6 @@ namespace BrewMonster.UI
|
||||
{
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
@@ -3374,6 +3374,7 @@ namespace BrewMonster.UI
|
||||
CECTaskInterface pTask = GetHostPlayer().GetTaskInterface();
|
||||
|
||||
pTask.GetAwardCandidates(opt.param, ref ad);
|
||||
|
||||
if (ad.m_ulCandItems > 1)
|
||||
{
|
||||
pShow1 = m_pAUIManager.GetDialog("Win_Award");
|
||||
|
||||
@@ -48,5 +48,6 @@ namespace BrewMonster.Scripts.UI
|
||||
{
|
||||
gameObject.SetActive(show);
|
||||
}
|
||||
|
||||
}
|
||||
}
|
||||
@@ -1,3 +1,5 @@
|
||||
using System;
|
||||
using BrewMonster.Network;
|
||||
using BrewMonster.Scripts.Managers;
|
||||
using BrewMonster.Scripts.Task;
|
||||
using BrewMonster.UI;
|
||||
@@ -17,6 +19,7 @@ namespace BrewMonster.Scripts.UI
|
||||
[SerializeField] private Button m_pBtn_Confirm;
|
||||
[SerializeField] private Vector2Int _itemSize = new Vector2Int(50, 50);
|
||||
[SerializeField] private AwardItem _awardItemPrefab;
|
||||
[SerializeField] private Transform _itemsParent;
|
||||
[SerializeField] private Toggle[] _radioButtons;
|
||||
|
||||
[Header("DEBUG")]
|
||||
@@ -35,20 +38,34 @@ namespace BrewMonster.Scripts.UI
|
||||
void Awake()
|
||||
{
|
||||
SpawnItems();
|
||||
InitRadioBtns();
|
||||
|
||||
m_pBtn_Confirm.onClick.AddListener(OnCommand_confirm);
|
||||
}
|
||||
|
||||
private void InitRadioBtns()
|
||||
{
|
||||
for (int i = 0; i < _radioButtons.Length; i++)
|
||||
{
|
||||
_radioButtons[i].isOn = false;
|
||||
_radioButtons[i].onValueChanged.AddListener( OnCommand_select );
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
private void SpawnItems()
|
||||
{
|
||||
for (int i = 1; i <= _rowCount; i++)
|
||||
{
|
||||
for (int j = 1; j <= _columnCount; j++)
|
||||
{
|
||||
AwardItem item = Instantiate(_awardItemPrefab, this.transform);
|
||||
AwardItem item = Instantiate(_awardItemPrefab ,_itemsParent);
|
||||
item.SetPositionIndex(i, j);
|
||||
// Positioning logic can be added here
|
||||
}
|
||||
}
|
||||
|
||||
_awardItems = new AwardItem[_rowCount];
|
||||
_awardItems = GetComponentsInChildren<AwardItem>();
|
||||
_awardItemPrefab.gameObject.SetActive(false);
|
||||
}
|
||||
|
||||
@@ -82,10 +99,10 @@ namespace BrewMonster.Scripts.UI
|
||||
AwardItem pImage; // Using AwardItem instead of Image
|
||||
|
||||
SetData(idTask, "");
|
||||
// CheckRadioButton(1, 0); // TODO:
|
||||
// GetDlgItem("Btn_Confirm")->Enable(false);
|
||||
// CheckRadioButton(1, 0); // TODO: maybe dont need this
|
||||
m_pBtn_Confirm.gameObject.SetActive(false);
|
||||
|
||||
for (int i=1; i < _rowCount; i++)
|
||||
for (int i=1; i <= _rowCount; i++)
|
||||
{
|
||||
// sprintf(out szName, "Item_%02d01", i);
|
||||
// pImage = (PAUIIMAGEPICTURE)GetDlgItem(szName);
|
||||
@@ -94,8 +111,9 @@ namespace BrewMonster.Scripts.UI
|
||||
// TODO: Show/Hide radio button
|
||||
// sprintf(out szName, "Rdo_Award%d", i);
|
||||
// GetDlgItem(szName)->Show(false);
|
||||
_radioButtons[i].gameObject.SetActive(false);
|
||||
|
||||
// _radioButtons[i-1].gameObject.SetActive(false);
|
||||
GetToggleBtnAt(i).gameObject.SetActive(false);
|
||||
|
||||
// for (j = 1;; j++)
|
||||
for (int j=1; j < _columnCount; j++)
|
||||
{
|
||||
@@ -128,19 +146,21 @@ namespace BrewMonster.Scripts.UI
|
||||
// TODO: Set the image cover here
|
||||
// pImage.SetCover(GetGameUIMan().m_pA2DSpriteIcons[CECGameUIMan::ICONS_INVENTORY],
|
||||
// GetGameUIMan().m_IconMap[CECGameUIMan::ICONS_INVENTORY][strFile]);
|
||||
|
||||
EC_IvtrEquip pEquip = new EC_IvtrEquip(pItem.m_tid, pItem.m_expire_date);
|
||||
pImage.SetColor(
|
||||
(pItem.IsEquipment() && pEquip.IsDestroying())
|
||||
? new Color32(128, 128, 128, 255)
|
||||
: new Color32(255, 255, 255, 255));
|
||||
var sprite = EC_IvtrItemUtils.Instance.ResolveItemIconSprite(pItem.m_tid);
|
||||
pImage.SetImage(sprite);
|
||||
|
||||
EC_IvtrEquip pEquip = new EC_IvtrEquip(pItem.m_tid, pItem.m_expire_date);
|
||||
pImage.SetColor(
|
||||
(pItem.IsEquipment() && pEquip.IsDestroying())
|
||||
? new Color32(128, 128, 128, 255)
|
||||
: new Color32(255, 255, 255, 255));
|
||||
|
||||
// delete pItem;
|
||||
pItem = null;
|
||||
|
||||
// sprintf(out szName, "Rdo_Award%d", i);
|
||||
// GetDlgItem(szName)->Show(true);
|
||||
_radioButtons[i].gameObject.SetActive(true);
|
||||
GetToggleBtnAt(i).gameObject.SetActive(true);
|
||||
}
|
||||
else
|
||||
{
|
||||
@@ -166,7 +186,7 @@ namespace BrewMonster.Scripts.UI
|
||||
|
||||
// sprintf(out szName, "Rdo_Award%d", i);
|
||||
// GetDlgItem(szName)->Show(false);
|
||||
_radioButtons[i].gameObject.SetActive(false);
|
||||
GetToggleBtnAt(i).gameObject.SetActive(false);
|
||||
|
||||
for (int j = 1; j < _columnCount; j++)
|
||||
{
|
||||
@@ -209,7 +229,7 @@ namespace BrewMonster.Scripts.UI
|
||||
{
|
||||
// sprintf(out szName, "Rdo_Award%d", i);
|
||||
// GetDlgItem(szName)->Show(true);
|
||||
_radioButtons[i].gameObject.SetActive(true);
|
||||
GetToggleBtnAt(i).gameObject.SetActive(true);
|
||||
}
|
||||
|
||||
for (int j = 1; j < _columnCount; j++)
|
||||
@@ -299,6 +319,57 @@ namespace BrewMonster.Scripts.UI
|
||||
}
|
||||
return null;
|
||||
}
|
||||
|
||||
Toggle GetToggleBtnAt(int row)
|
||||
{
|
||||
int index = row - 1;
|
||||
if( index < 0 || index >= _radioButtons.Length)
|
||||
return null;
|
||||
return _radioButtons[index];
|
||||
}
|
||||
|
||||
void OnCommand_select(bool toggleValue)
|
||||
{
|
||||
if(toggleValue) m_pBtn_Confirm.gameObject.SetActive(true);
|
||||
}
|
||||
|
||||
void OnCommand_confirm()
|
||||
{
|
||||
// int i;
|
||||
string szName;
|
||||
Toggle pRadio;
|
||||
uint idTask = GetData();
|
||||
|
||||
for( int i = 1; i < _rowCount ; i++ )
|
||||
{
|
||||
// sprintf(szName, "Rdo_Award%d", i);
|
||||
// pRadio = (PAUIRADIOBUTTON)GetDlgItem(szName);
|
||||
// if( !pRadio || !pRadio->IsShow() ) break;
|
||||
pRadio = GetToggleBtnAt(i);
|
||||
if(!pRadio || !pRadio.gameObject.activeInHierarchy) return;
|
||||
|
||||
// if( pRadio.IsChecked() )
|
||||
if( pRadio.isOn )
|
||||
{
|
||||
if (m_bThroughNPC) {
|
||||
// GetGameSession().c2s_CmdNPCSevReturnTask(idTask, i - 1);
|
||||
UnityGameSession.c2s_CmdNPCSevReturnTask((int)idTask, i - 1);
|
||||
GetGameUIMan().EndNPCService();
|
||||
} else if (m_bSpendContribution) {
|
||||
// TODO: Implement spend contribution logic
|
||||
// CECTaskInterface pTask = GetHostPlayer().GetTaskInterface();
|
||||
// pTask.FinishTaskSpendingWorldContribution(idTask, i - 1);
|
||||
} else {
|
||||
// TODO: Implement choose award logic
|
||||
// CECTaskInterface pTask = GetHostPlayer().GetTaskInterface();
|
||||
// pTask.ChooseAward(idTask, i - 1);
|
||||
}
|
||||
Show(false);
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
}
|
||||
@@ -80,7 +80,7 @@ MonoBehaviour:
|
||||
m_TargetGraphic: {fileID: 4376062802034248599}
|
||||
toggleTransition: 1
|
||||
graphic: {fileID: 2531169264107607804}
|
||||
m_Group: {fileID: 0}
|
||||
m_Group: {fileID: 8788665475006443126}
|
||||
onValueChanged:
|
||||
m_PersistentCalls:
|
||||
m_Calls: []
|
||||
@@ -421,8 +421,9 @@ MonoBehaviour:
|
||||
m_Name:
|
||||
m_EditorClassIdentifier:
|
||||
m_pBtn_Confirm: {fileID: 2022223185403607436}
|
||||
_itemSize: {x: 6, y: 10}
|
||||
_itemSize: {x: 6, y: 6}
|
||||
_awardItemPrefab: {fileID: 421596072721705907}
|
||||
_itemsParent: {fileID: 1558872982091896349}
|
||||
_radioButtons:
|
||||
- {fileID: 2958213901730883256}
|
||||
- {fileID: 733246749774266009}
|
||||
@@ -511,7 +512,7 @@ MonoBehaviour:
|
||||
m_TargetGraphic: {fileID: 3354338157638316856}
|
||||
toggleTransition: 1
|
||||
graphic: {fileID: 6225229690304520632}
|
||||
m_Group: {fileID: 0}
|
||||
m_Group: {fileID: 8788665475006443126}
|
||||
onValueChanged:
|
||||
m_PersistentCalls:
|
||||
m_Calls: []
|
||||
@@ -1017,7 +1018,7 @@ MonoBehaviour:
|
||||
m_CellSize: {x: 100, y: 100}
|
||||
m_Spacing: {x: 10, y: 10}
|
||||
m_Constraint: 1
|
||||
m_ConstraintCount: 10
|
||||
m_ConstraintCount: 6
|
||||
--- !u!1 &3565430854526106865
|
||||
GameObject:
|
||||
m_ObjectHideFlags: 0
|
||||
@@ -1098,7 +1099,7 @@ MonoBehaviour:
|
||||
m_TargetGraphic: {fileID: 5045479894881455806}
|
||||
toggleTransition: 1
|
||||
graphic: {fileID: 7207637042536033371}
|
||||
m_Group: {fileID: 0}
|
||||
m_Group: {fileID: 8788665475006443126}
|
||||
onValueChanged:
|
||||
m_PersistentCalls:
|
||||
m_Calls: []
|
||||
@@ -1183,7 +1184,7 @@ MonoBehaviour:
|
||||
m_TargetGraphic: {fileID: 6245175927925089128}
|
||||
toggleTransition: 1
|
||||
graphic: {fileID: 126544343920740120}
|
||||
m_Group: {fileID: 0}
|
||||
m_Group: {fileID: 8788665475006443126}
|
||||
onValueChanged:
|
||||
m_PersistentCalls:
|
||||
m_Calls: []
|
||||
@@ -1240,7 +1241,7 @@ MonoBehaviour:
|
||||
m_Script: {fileID: 11500000, guid: 9d87c7b8ac564f919171a5173812980e, type: 3}
|
||||
m_Name:
|
||||
m_EditorClassIdentifier:
|
||||
img: {fileID: 0}
|
||||
img: {fileID: 5798109676702798723}
|
||||
btn: {fileID: 5829300517807457460}
|
||||
--- !u!222 &1897581106405175503
|
||||
CanvasRenderer:
|
||||
@@ -1410,6 +1411,7 @@ GameObject:
|
||||
m_Component:
|
||||
- component: {fileID: 2450815123296561302}
|
||||
- component: {fileID: 1430101278767489564}
|
||||
- component: {fileID: 8788665475006443126}
|
||||
m_Layer: 5
|
||||
m_Name: RadioBtnGroup
|
||||
m_TagString: Untagged
|
||||
@@ -1468,6 +1470,19 @@ MonoBehaviour:
|
||||
m_ChildScaleWidth: 0
|
||||
m_ChildScaleHeight: 0
|
||||
m_ReverseArrangement: 0
|
||||
--- !u!114 &8788665475006443126
|
||||
MonoBehaviour:
|
||||
m_ObjectHideFlags: 0
|
||||
m_CorrespondingSourceObject: {fileID: 0}
|
||||
m_PrefabInstance: {fileID: 0}
|
||||
m_PrefabAsset: {fileID: 0}
|
||||
m_GameObject: {fileID: 4660714409237943125}
|
||||
m_Enabled: 1
|
||||
m_EditorHideFlags: 0
|
||||
m_Script: {fileID: 11500000, guid: 2fafe2cfe61f6974895a912c3755e8f1, type: 3}
|
||||
m_Name:
|
||||
m_EditorClassIdentifier:
|
||||
m_AllowSwitchOff: 0
|
||||
--- !u!1 &5325640235670539457
|
||||
GameObject:
|
||||
m_ObjectHideFlags: 0
|
||||
@@ -2001,7 +2016,7 @@ MonoBehaviour:
|
||||
m_TargetGraphic: {fileID: 4503678912350313887}
|
||||
toggleTransition: 1
|
||||
graphic: {fileID: 7848180479837842084}
|
||||
m_Group: {fileID: 0}
|
||||
m_Group: {fileID: 8788665475006443126}
|
||||
onValueChanged:
|
||||
m_PersistentCalls:
|
||||
m_Calls: []
|
||||
@@ -2162,7 +2177,7 @@ MonoBehaviour:
|
||||
m_TargetGraphic: {fileID: 5687745320305579942}
|
||||
toggleTransition: 1
|
||||
graphic: {fileID: 6219347094978315234}
|
||||
m_Group: {fileID: 0}
|
||||
m_Group: {fileID: 8788665475006443126}
|
||||
onValueChanged:
|
||||
m_PersistentCalls:
|
||||
m_Calls: []
|
||||
|
||||
@@ -714,6 +714,10 @@ namespace BrewMonster
|
||||
{
|
||||
var data = Msg.dwParam1 as byte[];
|
||||
int cmd = Convert.ToInt32(Msg.dwParam2);
|
||||
|
||||
bool bDoOther = false;
|
||||
int idItem, iExpireDate=0, iAmount, iCmdLastSlot, iCmdSlotAmount, iPack, iMsg=-1;
|
||||
|
||||
switch (cmd)
|
||||
{
|
||||
case CommandID.HOST_OBTAIN_ITEM:
|
||||
@@ -755,61 +759,105 @@ namespace BrewMonster
|
||||
}
|
||||
break;
|
||||
case CommandID.PICKUP_ITEM:
|
||||
{
|
||||
int tid = BitConverter.ToInt32(data, 0);
|
||||
int expire_date = BitConverter.ToInt32(data, 4);
|
||||
uint iAmount = BitConverter.ToUInt32(data, 8);
|
||||
uint iSlotAmount = BitConverter.ToUInt32(data, 12);
|
||||
byte byPackage = data[16];
|
||||
byte bySlot = data[17];
|
||||
{
|
||||
int tid = BitConverter.ToInt32(data, 0);
|
||||
int expire_date = BitConverter.ToInt32(data, 4);
|
||||
iAmount = (int)BitConverter.ToUInt32(data, 8);
|
||||
uint iSlotAmount = BitConverter.ToUInt32(data, 12);
|
||||
byte byPackage = data[16];
|
||||
byte bySlot = data[17];
|
||||
|
||||
//Debug.Log($"[Inventory] PICKUP_ITEM: tid={tid}, expire_date={expire_date}, iAmount={iAmount}, iSlotAmount={iSlotAmount}, byPackage={byPackage}, bySlot={bySlot}");
|
||||
|
||||
// Notify pickupItem script about successful pickup
|
||||
pickupItem pickupScript = pickupItem.Instance;
|
||||
if (pickupScript != null)
|
||||
{
|
||||
//Debug.Log($"[Inventory] PICKUP_ITEM: tid={tid}, expire_date={expire_date}, iAmount={iAmount}, iSlotAmount={iSlotAmount}, byPackage={byPackage}, bySlot={bySlot}");
|
||||
|
||||
// Notify pickupItem script about successful pickup
|
||||
pickupItem pickupScript = pickupItem.Instance;
|
||||
pickupScript = UnityEngine.Object.FindFirstObjectByType<pickupItem>();
|
||||
if (pickupScript != null)
|
||||
{
|
||||
//Debug.Log($"[Inventory] PICKUP_ITEM: tid={tid}, expire_date={expire_date}, iAmount={iAmount}, iSlotAmount={iSlotAmount}, byPackage={byPackage}, bySlot={bySlot}");
|
||||
|
||||
// Notify pickupItem script about successful pickup
|
||||
pickupScript = UnityEngine.Object.FindFirstObjectByType<pickupItem>();
|
||||
if (pickupScript != null)
|
||||
{
|
||||
pickupScript.OnPickupSuccess(tid);
|
||||
}
|
||||
|
||||
// Create new inventory item data
|
||||
var newItem = new EC_IvtrItem
|
||||
{
|
||||
Package = byPackage,
|
||||
Slot = bySlot,
|
||||
m_tid = tid,
|
||||
m_expire_date = expire_date,
|
||||
State = 0,
|
||||
m_iCount = (int)iAmount,
|
||||
Crc = 0,
|
||||
Content = null
|
||||
};
|
||||
|
||||
// Add item to inventory
|
||||
var ivt = GetInventory(byPackage);
|
||||
ivt.SetItem(bySlot, newItem);
|
||||
|
||||
//Debug.Log($"[Inventory] Successfully added item {tid} to package {byPackage}, slot {bySlot} with count {iAmount}");
|
||||
|
||||
// Trigger UI refresh if an EC_InventoryUI is present in scene
|
||||
var ui = GameObject.FindFirstObjectByType<EC_InventoryUI>();
|
||||
if (ui != null)
|
||||
{
|
||||
ui.RefreshAll();
|
||||
}
|
||||
pickupScript.OnPickupSuccess(tid);
|
||||
}
|
||||
else
|
||||
|
||||
// Create new inventory item data
|
||||
var newItem = new EC_IvtrItem
|
||||
{
|
||||
Debug.LogWarning("[Inventory] PICKUP_ITEM: Invalid data length");
|
||||
Package = byPackage,
|
||||
Slot = bySlot,
|
||||
m_tid = tid,
|
||||
m_expire_date = expire_date,
|
||||
State = 0,
|
||||
m_iCount = (int)iAmount,
|
||||
Crc = 0,
|
||||
Content = null
|
||||
};
|
||||
|
||||
// Add item to inventory
|
||||
var ivt = GetInventory(byPackage);
|
||||
ivt.SetItem(bySlot, newItem);
|
||||
|
||||
//Debug.Log($"[Inventory] Successfully added item {tid} to package {byPackage}, slot {bySlot} with count {iAmount}");
|
||||
|
||||
// Trigger UI refresh if an EC_InventoryUI is present in scene
|
||||
var ui = GameObject.FindFirstObjectByType<EC_InventoryUI>();
|
||||
if (ui != null)
|
||||
{
|
||||
ui.RefreshAll();
|
||||
}
|
||||
break;
|
||||
}
|
||||
else
|
||||
{
|
||||
Debug.LogWarning("[Inventory] PICKUP_ITEM: Invalid data length");
|
||||
}
|
||||
break;
|
||||
}
|
||||
case CommandID.TASK_DELIVER_ITEM:
|
||||
cmd_task_deliver_item pCmd = GPDataTypeHelper.FromBytes<cmd_task_deliver_item>(data);
|
||||
// ASSERT(pCmd);
|
||||
|
||||
idItem = pCmd.type;
|
||||
iExpireDate = pCmd.expire_date;
|
||||
iAmount = (int)pCmd.amount;
|
||||
iCmdLastSlot = pCmd.index;
|
||||
iCmdSlotAmount = (int)pCmd.slot_amount;
|
||||
iPack = pCmd.where;
|
||||
iMsg = (int)FixedMsg.FIXMSG_GAINITEM;
|
||||
bDoOther = true;
|
||||
|
||||
|
||||
// Create new inventory item data
|
||||
var taskNewItem = new EC_IvtrItem
|
||||
{
|
||||
Package = (byte)iPack,
|
||||
Slot = iCmdLastSlot,
|
||||
m_tid = idItem,
|
||||
m_expire_date = iExpireDate,
|
||||
State = 0,
|
||||
m_iCount = (int)iAmount,
|
||||
Crc = 0,
|
||||
Content = null
|
||||
};
|
||||
|
||||
// Add item to inventory
|
||||
var task_ivt = GetInventory((byte)iPack);
|
||||
task_ivt.SetItem(iCmdLastSlot, taskNewItem);
|
||||
|
||||
//Debug.Log($"[Inventory] Successfully added item {tid} to package {byPackage}, slot {bySlot} with count {iAmount}");
|
||||
|
||||
// Trigger UI refresh if an EC_InventoryUI is present in scene
|
||||
var task_ui = GameObject.FindFirstObjectByType<EC_InventoryUI>();
|
||||
if (task_ui != null)
|
||||
{
|
||||
task_ui.RefreshAll();
|
||||
}
|
||||
break;
|
||||
|
||||
|
||||
// TODO: Handle other pickup item commands if necessary
|
||||
|
||||
}
|
||||
}
|
||||
public void OnMsgHstItemOperation(ECMSG Msg)
|
||||
|
||||
Reference in New Issue
Block a user