Arma Reforger Explorer
1.7.0.54
Arma Reforger Code Explorer by Zeroy - Thanks to MisterOutofTime
Toggle main menu visibility
Loading...
Searching...
No Matches
SCR_FuelManagerComponentSerializer.c
Go to the documentation of this file.
1
class
SCR_SerializedFuelNode
2
{
3
int
tankId;
4
float
fuel;
5
}
6
7
class
SCR_FuelManagerComponentSerializer :
ScriptedComponentSerializer
8
{
9
//------------------------------------------------------------------------------------------------
10
override
static
typename
GetTargetType
()
11
{
12
return
SCR_FuelManagerComponent
;
13
}
14
15
//------------------------------------------------------------------------------------------------
16
override
protected
ESerializeResult
Serialize
(notnull
IEntity
owner, notnull
GenericComponent
component, notnull
SaveContext
context)
17
{
18
const
SCR_FuelManagerComponent
fuelManager =
SCR_FuelManagerComponent
.Cast(component);
19
20
array<ref SCR_SerializedFuelNode> saveNodes();
21
array<SCR_FuelNode> outScriptedNodes();
22
fuelManager.GetScriptedFuelNodesList(outScriptedNodes);
23
foreach
(SCR_FuelNode fuelNode : outScriptedNodes)
24
{
25
if
(
float
.AlmostEqual(fuelNode.GetFuel(), fuelNode.GetInitialFuelTankState()))
26
continue
;
27
28
SCR_SerializedFuelNode
saveNode();
29
saveNode.tankId = fuelNode.GetFuelTankID();
30
saveNode.fuel = fuelNode.GetFuel();
31
saveNodes.Insert(saveNode);
32
}
33
34
if
(saveNodes.IsEmpty())
35
return
ESerializeResult
.DEFAULT;
36
37
context.WriteValue(
"version"
, 1);
38
const
bool
prev = context.EnableTypeDiscriminator(
false
);
39
context.WriteValue(
"fuelNodes"
, saveNodes);
40
context.EnableTypeDiscriminator(prev);
41
return
ESerializeResult
.OK;
42
}
43
44
//------------------------------------------------------------------------------------------------
45
override
protected
bool
Deserialize
(notnull
IEntity
owner, notnull
GenericComponent
component, notnull
LoadContext
context)
46
{
47
auto
fuelManager =
SCR_FuelManagerComponent
.Cast(component);
48
49
array<SCR_FuelNode> outScriptedNodes();
50
fuelManager.GetScriptedFuelNodesList(outScriptedNodes);
51
52
int
version = -1;
53
context.ReadValue(
"version"
, version);
54
55
array<ref SCR_SerializedFuelNode> saveNodes();
56
const
bool
prev = context.EnableTypeDiscriminator(
false
);
57
context.ReadValue(
"fuelNodes"
, saveNodes);
58
context.EnableTypeDiscriminator(prev);
59
60
foreach
(
int
idx
,
SCR_SerializedFuelNode
savedNode : saveNodes)
61
{
62
// Try direct idx access
63
if
(outScriptedNodes.IsIndexValid(
idx
))
64
{
65
SCR_FuelNode fuelNode = outScriptedNodes[
idx
];
66
if
(fuelNode.GetFuelTankID() == savedNode.tankId)
67
{
68
fuelNode.SetFuel(savedNode.fuel);
69
break
;
70
}
71
}
72
73
// Try others and match tank id
74
foreach
(
int
innerIdx, SCR_FuelNode fuelNode : outScriptedNodes)
75
{
76
if
(innerIdx ==
idx
)
77
continue
;
// Already tried via direct access
78
79
if
(fuelNode.GetFuelTankID() == savedNode.tankId)
80
{
81
fuelNode.SetFuel(savedNode.fuel);
82
break
;
83
}
84
}
85
86
PrintFormat
(
"Failed to apply fuel save-data. Could not locate tankId:%1 on %2"
, savedNode.tankId, owner, level:
LogLevel
.DEBUG);
87
}
88
89
return
true
;
90
}
91
}
GetTargetType
class SCR_PersistentThreatSector GetTargetType()
Definition
AIControlComponentSerializer.c:12
idx
int idx
Definition
AIControlComponentSerializer.c:13
SCR_FuelManagerComponent
void SCR_FuelManagerComponent(IEntityComponentSource src, IEntity ent, IEntity parent)
Definition
SCR_FuelManagerComponent.c:475
GenericComponent
Definition
GenericComponent.c:13
IEntity
Definition
IEntity.c:13
LoadContext
Definition
LoadContext.c:17
SCR_SerializedFuelNode
Definition
SCR_FuelManagerComponentSerializer.c:2
SaveContext
Definition
SaveContext.c:17
ScriptedComponentSerializer
Definition
ScriptedComponentSerializer.c:13
ScriptedComponentSerializer::Serialize
ESerializeResult Serialize(notnull IEntity owner, notnull GenericComponent component, notnull SaveContext context)
Definition
ScriptedComponentSerializer.c:34
ScriptedComponentSerializer::Deserialize
bool Deserialize(notnull IEntity owner, notnull GenericComponent component, notnull LoadContext context)
Definition
ScriptedComponentSerializer.c:39
LogLevel
LogLevel
Enum with severity of the logging message.
Definition
LogLevel.c:14
PrintFormat
proto void PrintFormat(string fmt, void param1=NULL, void param2=NULL, void param3=NULL, void param4=NULL, void param5=NULL, void param6=NULL, void param7=NULL, void param8=NULL, void param9=NULL, LogLevel level=LogLevel.NORMAL)
ESerializeResult
ESerializeResult
Definition
ESerializeResult.c:13
scripts
Game
Plugins
Persistence
System
Serializers
Components
Vehicle
SCR_FuelManagerComponentSerializer.c
Generated by
1.17.0