Arma Reforger Explorer 1.7.0.54
Arma Reforger Code Explorer by Zeroy - Thanks to MisterOutofTime
Loading...
Searching...
No Matches
SCR_SaveSessionToolbarAction.c
Go to the documentation of this file.
3{
4 [Attribute(desc: "When enabled, the operation will always bring up a save dialog.")]
5 protected bool m_bSaveAs;
6
7 //------------------------------------------------------------------------------------------------
8 override bool IsServer()
9 {
10 //--- The action opens local UI
11 return false;
12 }
13
14 //------------------------------------------------------------------------------------------------
15 override bool CanBeShown(SCR_EditableEntityComponent hoveredEntity, notnull set<SCR_EditableEntityComponent> selectedEntities, vector cursorWorldPosition, int flags)
16 {
17 //--- Disallow in MP
18 if (!Replication.IsServer())
19 return false;
20
21 //--- Disallow if mission is not configured for saving or currently suppressed
22 return GetGame().GetSaveGameManager().IsSavingAllowed();
23 }
24
25 //------------------------------------------------------------------------------------------------
26 override bool CanBePerformed(SCR_EditableEntityComponent hoveredEntity, notnull set<SCR_EditableEntityComponent> selectedEntities, vector cursorWorldPosition, int flags)
27 {
28 return CanBeShown(hoveredEntity, selectedEntities, cursorWorldPosition, flags);
29 }
30
31 //------------------------------------------------------------------------------------------------
32 override void Perform(SCR_EditableEntityComponent hoveredEntity, notnull set<SCR_EditableEntityComponent> selectedEntities, vector cursorWorldPosition, int flags, int param = -1)
33 {
34 if (m_bSaveAs)
35 {
37 return;
38 }
39
40 const SaveGameManager manager = GetGame().GetSaveGameManager();
41 manager.GetSaves(manager.GetCurrentMissionResource(), new SaveGameObtainCallback(OnSavesLoaded));
42 }
43
44 //------------------------------------------------------------------------------------------------
45 protected void OnSavesLoaded(bool success, array<SaveGame> saves)
46 {
47 const SaveGameManager manager = GetGame().GetSaveGameManager();
48 SaveGame currentSave = manager.GetActiveSave();
49 if (currentSave)
50 {
51 // Find the latest non rewind save point for current playthrough to override
52 auto rewind = SCR_RewindComponent.GetInstance();
53 if (rewind && rewind.IsRewindPoint(currentSave))
54 {
55 currentSave = null;
56 const int currentPlaythrough = manager.GetCurrentPlaythroughNumber();
57
58 foreach (SaveGame save : saves)
59 {
60 if (rewind.IsRewindPoint(save))
61 continue;
62
63 if (save.GetPlaythroughNumber() == currentPlaythrough)
64 currentSave = save;
65 }
66 }
67 }
68
69 ESaveGameRequestFlags saveFlags;
70 if (RplSession.Mode() == RplMode.None)
71 saveFlags = ESaveGameRequestFlags.BLOCKING;
72
73 if (currentSave)
74 {
75 manager.RequestSavePointOverwrite(currentSave, saveFlags);
76 return;
77 }
78
79 manager.RequestSavePoint(ESaveGameType.MANUAL, flags: saveFlags);
80 }
81}
SCR_EAIThreatSectorFlags flags
ArmaReforgerScripted GetGame()
Definition game.c:1398
RplMode
Mode of replication.
Definition RplMode.c:9
SCR_AIAnimation_Loitering BaseContainerProps
Commanding menu commanding element class.
class SCR_ArsenalGameModeUIDataHolder SCR_BaseContainerCustomTitleUIInfo("m_UIInfo")
UI Textures DeployMenu Briefing conflict_HintBanner_1_UI desc
Main replication API.
Definition Replication.c:14
void OnSavesLoaded(bool success, array< SaveGame > saves)
override bool CanBePerformed(SCR_EditableEntityComponent hoveredEntity, notnull set< SCR_EditableEntityComponent > selectedEntities, vector cursorWorldPosition, int flags)
override bool CanBeShown(SCR_EditableEntityComponent hoveredEntity, notnull set< SCR_EditableEntityComponent > selectedEntities, vector cursorWorldPosition, int flags)
override void Perform(SCR_EditableEntityComponent hoveredEntity, notnull set< SCR_EditableEntityComponent > selectedEntities, vector cursorWorldPosition, int flags, int param=-1)
SCR_FieldOfViewSettings Attribute
ESaveGameRequestFlags
ESaveGameType