Arma Reforger Explorer 1.7.0.54
Arma Reforger Code Explorer by Zeroy - Thanks to MisterOutofTime
Loading...
Searching...
No Matches
SCR_EditableEntityCoreSerializer.c
Go to the documentation of this file.
2{
3 UUID m_sIdentity;
4 string m_sPlatformId;
5 PlatformKind m_ePlatform;
6}
7
8class SCR_EditableEntityCoreData : PersistentState
9{
10}
11
12class SCR_EditableEntityCoreSerializer : ScriptedStateSerializer
13{
14 //------------------------------------------------------------------------------------------------
15 override static typename GetTargetType()
16 {
17 return SCR_EditableEntityCoreData;
18 }
19
20 //------------------------------------------------------------------------------------------------
21 override ESerializeResult Serialize(notnull Managed instance, notnull SaveContext context)
22 {
24 if (!core)
25 return ESerializeResult.DEFAULT;
26
27 array<ref SCR_PersistentEditableEntityAuthor> persistentAuthors();
28 set<SCR_EditableEntityAuthor> authors = core.GetAllAuthorsServer();
29 foreach (SCR_EditableEntityAuthor author : authors)
30 {
31 SCR_PersistentEditableEntityAuthor persistentAuthor();
32 persistentAuthor.m_sIdentity = author.m_sAuthorUID;
33 persistentAuthor.m_sPlatformId = author.m_sAuthorPlatformID;
34 persistentAuthor.m_ePlatform = author.m_ePlatform;
35 persistentAuthors.Insert(persistentAuthor);
36 }
37
38 if (persistentAuthors.IsEmpty())
39 return ESerializeResult.DEFAULT;
40
41 context.WriteValue("version", 1);
42 const bool prev = context.EnableTypeDiscriminator(false);
43 context.WriteValue("authors", persistentAuthors);
44 context.EnableTypeDiscriminator(prev);
45 return ESerializeResult.OK;
46 }
47
48 //------------------------------------------------------------------------------------------------
49 override bool Deserialize(notnull Managed instance, notnull LoadContext context)
50 {
52 if (!core)
53 return false;
54
55 int version;
56 context.Read(version);
57
58 array<ref SCR_PersistentEditableEntityAuthor> authors;
59 const bool prev = context.EnableTypeDiscriminator(false);
60 context.Read(authors);
61 context.EnableTypeDiscriminator(prev);
62 if (authors)
63 {
64 const PlayerManager playerManager = GetGame().GetPlayerManager();
65 array<int> players();
66 playerManager.GetAllPlayers(players);
67
68 foreach (SCR_PersistentEditableEntityAuthor authorData : authors)
69 {
70 SCR_EditableEntityAuthor author();
71 author.m_sAuthorUID = authorData.m_sIdentity;
72 author.m_sAuthorPlatformID = authorData.m_sPlatformId;
73 author.m_ePlatform = authorData.m_ePlatform;
74 author.m_iAuthorID = -1;
75 foreach (int playerId : players)
76 {
77 if (SCR_PlayerIdentityUtils.GetPlayerIdentityId(playerId) == authorData.m_sPlatformId)
78 {
79 author.m_iAuthorID = playerId;
80 break;
81 }
82 }
83
84 author.m_iEntityCount = -1; // Registration will bump it to 0
85 core.RegisterAuthorServer(author);
86 }
87 }
88
89 return true;
90 }
91}
class SCR_PersistentThreatSector GetTargetType()
ArmaReforgerScripted GetGame()
Definition game.c:1398
PlatformKind
Definition PlatformKind.c:8
void RegisterAuthorServer(SCR_EditableEntityAuthor newAuthor)
set< SCR_EditableEntityAuthor > GetAllAuthorsServer()
bool Deserialize(notnull Managed instance, notnull LoadContext context)
ESerializeResult Serialize(notnull Managed instance, notnull SaveContext context)
Definition UUID.c:28
ESerializeResult