4 ResourceName WeaponPrefab;
7 class SCR_ClothingLoadoutData
15 ref array<ref SCR_ClothingLoadoutData> Clothings = {};
16 ref array<ref SCR_WeaponLoadoutData> Weapons = {};
29 int clothingCount = instance.Clothings.Count();
30 snapshot.SerializeInt(clothingCount);
32 for (
int i = 0; i < clothingCount; ++i)
34 snapshot.SerializeInt(instance.Clothings[i].SlotIdx);
36 string resourceName = instance.Clothings[i].ClothingPrefab;
37 snapshot.SerializeString(resourceName);
40 int weaponCount = instance.Weapons.Count();
41 snapshot.SerializeInt(weaponCount);
43 for (
int i = 0; i < weaponCount; ++i)
45 snapshot.SerializeInt(instance.Weapons[i].SlotIdx);
47 string resourceName = instance.Weapons[i].WeaponPrefab;
48 snapshot.SerializeString(resourceName);
51 snapshot.SerializeFloat(instance.LoadoutCost);
66 snapshot.SerializeInt(clothingCount);
67 instance.Clothings.Clear();
69 for (
int i = 0; i < clothingCount; ++i)
71 SCR_ClothingLoadoutData clothingData();
73 snapshot.SerializeInt(clothingData.SlotIdx);
76 snapshot.SerializeString(resourceName);
77 clothingData.ClothingPrefab = resourceName;
79 instance.Clothings.Insert(clothingData);
83 snapshot.SerializeInt(weaponCount);
84 instance.Weapons.Clear();
86 for (
int i = 0; i < weaponCount; ++i)
90 snapshot.SerializeInt(weaponData.SlotIdx);
93 snapshot.SerializeString(resourceName);
94 weaponData.WeaponPrefab = resourceName;
96 instance.Weapons.Insert(weaponData);
99 snapshot.SerializeFloat(instance.LoadoutCost);
110 static void Encode(SSnapSerializerBase snapshot, ScriptCtx ctx, ScriptBitSerializer packet)
113 snapshot.SerializeBytes(clothingCount, 4);
114 packet.Serialize(clothingCount, 32);
116 for (
int i = 0; i < clothingCount; ++i)
118 snapshot.EncodeInt(packet);
119 snapshot.EncodeString(packet);
123 snapshot.SerializeBytes(weaponCount, 4);
124 packet.Serialize(weaponCount, 32);
126 for (
int i = 0; i < weaponCount; ++i)
128 snapshot.EncodeInt(packet);
129 snapshot.EncodeString(packet);
132 snapshot.EncodeFloat(packet);
141 static bool Decode(ScriptBitSerializer packet, ScriptCtx ctx, SSnapSerializerBase snapshot)
144 packet.Serialize(clothingCount, 32);
145 snapshot.SerializeBytes(clothingCount, 4);
147 for (
int i = 0; i < clothingCount; ++i)
149 snapshot.DecodeInt(packet);
150 snapshot.DecodeString(packet);
154 packet.Serialize(weaponCount, 32);
155 snapshot.SerializeBytes(weaponCount, 4);
157 for (
int i = 0; i < weaponCount; ++i)
159 snapshot.DecodeInt(packet);
160 snapshot.DecodeString(packet);
163 snapshot.DecodeFloat(packet);
174 static bool SnapCompare(SSnapSerializerBase lhs, SSnapSerializerBase rhs, ScriptCtx ctx)
176 Print(
"Cannot use SCR_PlayerLoadoutData as a property", LogLevel.ERROR);
188 Print(
"Cannot use SCR_PlayerLoadoutData as a property", LogLevel.ERROR);