Dayz Explorer  1.24.157551 (v105080)
Dayz Code Explorer by Zeroy
inventoryinputuserdata.c
Go to the documentation of this file.
1 
3 {
5  static void SerializeMove(ParamsWriteContext ctx, int type, notnull InventoryLocation src, notnull InventoryLocation dst)
6  {
7  ctx.Write(INPUT_UDT_INVENTORY);
8  ctx.Write(type);
9  src.WriteToContext(ctx);
10  dst.WriteToContext(ctx);
11  }
12 
13  static void SendInputUserDataMove(int type, notnull InventoryLocation src, notnull InventoryLocation dst)
14  {
15  if (GetGame().IsClient())
16  {
17  if (LogManager.IsSyncLogEnable()) syncDebugPrint("[syncinv] t=" + GetGame().GetTime() + "ms sending cmd=" + typename.EnumToString(InventoryCommandType, type) + " src=" + InventoryLocation.DumpToStringNullSafe(src) + " dst=" + InventoryLocation.DumpToStringNullSafe(dst));
19  SerializeMove(ctx, type, src, dst);
20  ctx.Send();
21  }
22  }
23 
24  static void SendServerMove(Man player, int type, notnull InventoryLocation src, notnull InventoryLocation dst)
25  {
26  if (GetGame().IsServer())
27  {
28  if (LogManager.IsSyncLogEnable()) syncDebugPrint("[syncinv] server sending cmd=" + typename.EnumToString(InventoryCommandType, type) + " src=" + InventoryLocation.DumpToStringNullSafe(src) + " dst=" + InventoryLocation.DumpToStringNullSafe(dst));
30  SerializeMove(ctx, type, src, dst);
31  GameInventory.ServerLocationSyncMoveEntity(player, src.GetItem(), ctx);
32  }
33  }
35 
37  static void SerializeSwap(ParamsWriteContext ctx, notnull InventoryLocation src1, notnull InventoryLocation src2, notnull InventoryLocation dst1, notnull InventoryLocation dst2, bool skippedSwap)
38  {
39  ctx.Write(INPUT_UDT_INVENTORY);
40  ctx.Write(InventoryCommandType.SWAP);
41  src1.WriteToContext(ctx);
42  src2.WriteToContext(ctx);
43  dst1.WriteToContext(ctx);
44  dst2.WriteToContext(ctx);
45  ctx.Write(skippedSwap);
46  }
47 
48  static void SendInputUserDataSwap(notnull InventoryLocation src1, notnull InventoryLocation src2, notnull InventoryLocation dst1, notnull InventoryLocation dst2, bool skippedSwap = false)
49  {
50  if (GetGame().IsClient())
51  {
52  if (LogManager.IsSyncLogEnable()) syncDebugPrint("[syncinv] t=" + GetGame().GetTime() + "ms sending cmd=SWAP src1=" + InventoryLocation.DumpToStringNullSafe(src1) + " src2=" + InventoryLocation.DumpToStringNullSafe(src2) + " dst1=" + InventoryLocation.DumpToStringNullSafe(dst1) + " dst2=" + InventoryLocation.DumpToStringNullSafe(dst2));
54  SerializeSwap(ctx, src1, src2, dst1, dst2, skippedSwap);
55  ctx.Send();
56  }
57  }
58 
59  static void SendServerSwap(notnull InventoryLocation src1, notnull InventoryLocation src2, notnull InventoryLocation dst1, notnull InventoryLocation dst2, bool skippedSwap = false)
60  {
61  if (GetGame().IsServer())
62  {
63  if (LogManager.IsSyncLogEnable()) syncDebugPrint("[syncinv] server sending cmd=SWAP src1=" + InventoryLocation.DumpToStringNullSafe(src1) + " src2=" + InventoryLocation.DumpToStringNullSafe(src2) + " dst1=" + InventoryLocation.DumpToStringNullSafe(dst1) + " dst2=" + InventoryLocation.DumpToStringNullSafe(dst2));
65  SerializeSwap(ctx, src1, src2, dst1, dst2, skippedSwap);
66  GameInventory.ServerLocationSwap(src1, src2, dst1, dst2, ctx);
67  }
68  }
70 
72  static void SerializeHandEvent(ParamsWriteContext ctx, HandEventBase e)
73  {
74  ctx.Write(INPUT_UDT_INVENTORY);
75  ctx.Write(InventoryCommandType.HAND_EVENT);
76  e.WriteToContext(ctx);
77  }
78 
79  static void SendInputUserDataHandEvent(HandEventBase e)
80  {
81  if (GetGame().IsClient())
82  {
83  if (LogManager.IsSyncLogEnable()) syncDebugPrint("[syncinv] t=" + GetGame().GetTime() + "ms SendInputUserDataHandEvent e=" + e.DumpToString());
85  SerializeHandEvent(ctx, e);
86  ctx.Send();
87  }
88  }
89 
90  static void SendServerHandEventViaInventoryCommand(notnull Man player, HandEventBase e)
91  {
92  // Warning: this uses NetworkMessageInventoryCommand
93  if (GetGame().IsServer())
94  {
95  if (e.IsServerSideOnly())
96  Error("[syncinv] SendServerHandEvent - called on server side event only, e=" + e.DumpToString());
97  if (player.IsAlive())
98  Error("[syncinv] SendServerHandEvent - called on living thing.. server hand command is only for dead people, e=" + e.DumpToString());
99  if (LogManager.IsSyncLogEnable()) syncDebugPrint("[syncinv] SendServerHandEventViaInventoryCommand SendInputUserDataHandEvent e=" + e.DumpToString());
101  SerializeHandEvent(ctx, e);
102  GameInventory.ServerHandEvent(player, e.GetSrcEntity(), ctx);
103  }
104  }
106 
107  static void SerializeDestroy(ParamsWriteContext ctx, notnull InventoryLocation src)
108  {
109  ctx.Write(INPUT_UDT_INVENTORY);
110  ctx.Write(InventoryCommandType.DESTROY);
111  src.WriteToContext(ctx);
112  }
113 
114  static void SendInputUserDataDestroy(notnull InventoryLocation src)
115  {
116  if (GetGame().IsClient())
117  {
118  if (LogManager.IsSyncLogEnable()) syncDebugPrint("[syncinv] SendInputUserDataDestroy src=" + InventoryLocation.DumpToStringNullSafe(src));
120  SerializeDestroy(ctx, src);
121  ctx.Send();
122  }
123  }
124 };
125 
GetGame
proto native CGame GetGame()
Error
void Error(string err)
Messagebox with error message.
Definition: endebug.c:90
LogManager
Definition: debug.c:734
ScriptInputUserData
Definition: gameplay.c:120
InventoryLocation
InventoryLocation.
Definition: inventorylocation.c:27
InventoryCommandType
InventoryCommandType
Definition: inventory.c:2
HandEventBase
Abstracted event, not to be used, only inherited.
Definition: hand_events.c:194
Serializer
Serialization general interface. Serializer API works with:
Definition: serializer.c:55
INPUT_UDT_INVENTORY
const int INPUT_UDT_INVENTORY
Definition: _constants.c:9
InventoryInputUserData
Definition: inventoryinputuserdata.c:2
GetTime
float GetTime()
Definition: notificationsystem.c:35
syncDebugPrint
void syncDebugPrint(string s)
Definition: debug.c:1
GameInventory
script counterpart to engine's class Inventory
Definition: inventory.c:78