Arma Reforger Explorer 1.7.0.54
Arma Reforger Code Explorer by Zeroy - Thanks to MisterOutofTime
Loading...
Searching...
No Matches
SCR_EditSaveDialog.c
Go to the documentation of this file.
2{
4 protected string m_sSaveName;
5
6 // List entries
17
18 //protected ref ScriptInvokerBase<ScreenshotCallback> m_OnMakeScreenshot;
19
20 protected bool m_bEnableDependencies = false;
21
22 //---------------------------------------------------------------------------------------------
23 override void Init(Widget root, SCR_ConfigurableDialogUiPreset preset, MenuBase proxyMenu)
24 {
25 //WorldSaveItem saveItem;
26 //SCR_SaveWorkshopManager saveWorkshopManager = SCR_SaveWorkshopManager.GetInstance();
27 //saveWorkshopManager.GetCurrentSave(saveItem);
28
29 super.Init(root, preset, proxyMenu);
30
31 Widget content = GetContentWidget(root).GetChildren();
33
34 // Find list entries
35 m_EntryName = m_ConfigList.FindEntry("name");
36 m_EntrySummary = m_ConfigList.FindEntry("summary");
37 m_EntryDescription = m_ConfigList.FindEntry("description");
38 m_EntryVersion = SCR_WidgetListEntryMessage.Cast(m_ConfigList.FindEntry("version"));
39 m_EntryScenario = SCR_WidgetListEntryMessage.Cast(m_ConfigList.FindEntry("originalScenario"));
40
41 // Gallery
43
45 m_ThumbnailPickerEntry.GetResourcePicker().GetOnPickerButtonClick().Insert(OnThumbnailPickerClick);
46 m_ThumbnailPickerEntry.GetResourcePicker().GetOnResourcePicked().Insert(OnThumbnailPicked);
47
49 m_GalleryPickersList.GetOnAddingButtonElement().Insert(OnGalleryAddElemented);
50
51 // Dependencies
52 m_EntryDependenciesLabel = m_ConfigList.FindEntry("dependenciesLabel");
54
55 // Fill dependency list
56 array<string> addonGUIDs = {};
57 GameProject.GetLoadedAddons(addonGUIDs);
58
59 WorkshopApi workshop = GetGame().GetBackendApi().GetWorkshop();
60 MissionWorkshopItem mission = null;// SCR_SaveWorkshopManager.GetCurrentScenario();
61
62 if (m_EntryDependenciesList.GetVisible())
63 {
64 WorkshopItem item;
65 SCR_LocalizedProperty property;
67
68 foreach (string guid :addonGUIDs)
69 {
70 item = workshop.FindItem(guid);
71 if (!item)
72 {
73 Print("Couldn't find item of id: " + guid, LogLevel.WARNING);
74 continue;
75 }
76
77 property = new SCR_LocalizedProperty(item.Name(), guid);
78 checkbox = m_EntryDependenciesList.AddElement(property, m_bEnableDependencies);
79
80 // Prevent disabling of required dependency - scenario source
81 if (mission && mission.GetOwnerId() == guid)
82 checkbox.SetEnabled(false);
83 }
84 }
85
86 bool showDependencies = m_EntryDependenciesList.CheckboxesCount() != 0 && m_EntryDependenciesLabel.GetVisible();
87 m_EntryDependenciesLabel.GetEntryRoot().SetVisible(showDependencies);
88
89 // Fill scenario
90 //m_EntryScenario.SetValue(SCR_SaveWorkshopManager.GetCurrentScenarioNameTranslated());
91
92 // Arma vision callback
94 SCR_EditorManagerEntity editorManager = core.GetEditorManager();
95
96 SCR_EditorModeEntity photoModeEntity = editorManager.FindModeEntity(EEditorMode.PHOTO_SAVE);
97 if (!photoModeEntity)
98 photoModeEntity = editorManager.CreateEditorMode(EEditorMode.PHOTO_SAVE, false);
99
100 photoModeEntity.GetOnActivate().Insert(OnArmaVisionActivated);
101
102 // Fill with editing manifest
103 /*
104 SCR_EditedSaveManifest editedManifest = saveWorkshopManager.GetEditedSaveManifest();
105 if (editedManifest)
106 {
107 FillListFromWorldSaveManifest(editedManifest.GetManifest());
108 }*/
109 }
110
111 //---------------------------------------------------------------------------------------------
112 override void OnCancel()
113 {
114 super.OnCancel();
115
117 SCR_EditorManagerEntity editorManager = core.GetEditorManager();
118 SCR_EditorModeEntity photoModeEntity = editorManager.FindModeEntity(EEditorMode.PHOTO_SAVE);
119
120 if (photoModeEntity)
121 editorManager.RemoveMode(photoModeEntity, false);
122 }
123
124 //---------------------------------------------------------------------------------------------
125 // Create world save manifest base on data set in list
127 {
128 if (!m_ConfigList)
129 {
130 Debug.Error("SCR_EditorSaveDialog.ManifestFromConfigList() - Can't read files because list was not found");
131 return null;
132 }
133
134 //SCR_SaveWorkshopManager saveWorkshopManager = SCR_SaveWorkshopManager.GetInstance();
135
136 WorldSaveManifest manifest = new WorldSaveManifest();
137
138 // Description
139 manifest.m_sName = m_EntryName.ValueAsString();
140 manifest.m_sSummary = m_EntrySummary.ValueAsString();
141 manifest.m_sDescription = m_EntryDescription.ValueAsString();
142
143 // Filled from scenario
144 manifest.m_sScenarioId = ""; //saveWorkshopManager.GetCurrentScenarioId();
145
146 //string image = "";
147 //image = saveWorkshopManager.CurrentScenarioImage();
148 /*
149 SCR_SaveImageGalleryComponent imagePicker = m_EntryImagesPicker.GetSaveImagesPicker();
150 array<string> imageGallery = {};
151
152 if (imagePicker)
153 {
154 //manifest.m_sPreview = imagePicker.GetThumbnailSourceImage();
155 //imageGallery = imagePicker.GetGalleryResources();
156
157 manifest.m_aScreenshots = {};
158 manifest.m_aScreenshots.InsertAll(imageGallery);
159 }
160 */
161
162 manifest.m_sPreview = m_ThumbnailPickerEntry.ValueAsString();
163 manifest.m_aScreenshots = m_GalleryPickersList.GetElementValues();
164
165 // Dependencies
166 manifest.m_aDependencyIds = m_EntryDependenciesList.EnabledCheckListPropertyNames();
167
168 // Files
169 /*
170 WorldSaveItem saveItem;
171 string fileName = saveWorkshopManager.GetCurrentSave(saveItem);
172
173 manifest.m_aFileNames = {};
174
175 if (saveItem)
176 {
177 Revision revision = saveItem.GetActiveRevision();
178 if (!revision)
179 revision = saveItem.GetLocalRevision();
180
181 array<string> fileNames = {};
182 revision.GetFiles(fileNames);
183
184 // Recreate missing save file if needed
185 if (!fileNames.IsEmpty() && fileName != fileNames[0])
186 {
187 SessionStorage storage = GetGame().GetBackendApi().GetStorage();
188 GetGame().GetSaveManager().Save(ESaveType.USER, manifest.m_sName, manifest, saveItem);
189 }
190
191 manifest.m_aFileNames = {fileNames[0]};
192 }
193 */
194
195 return manifest;
196 }
197
198 //---------------------------------------------------------------------------------------------
199 protected void FillListFromSaveItem(notnull WorldSaveItem saveItem)
200 {
201 m_EntryName.SetValue(saveItem.Name());
202 m_EntrySummary.SetValue(saveItem.Summary());
203 m_EntryDescription.SetValue(saveItem.Description());
204
205 Revision latestRev = saveItem.GetLatestRevision();
206 if (latestRev)
207 {
208 m_EntryVersion.SetValue(latestRev.GetVersion());
209 }
210 else
211 {
212 latestRev = saveItem.GetLocalRevision();
213 m_EntryVersion.SetValue(latestRev.GetVersion());
214
215 if (latestRev.GetVersion().IsEmpty())
216 m_EntryVersion.SetVisible(false);
217 }
218
219 // Add image filling
220
221 // Add dependencies setup - note: Need to relly on addons from world sve item dependencies list
222 /*
223 array<string> addonGUIDs = {};
224 GameProject.GetLoadedAddons(addonGUIDs);
225
226 WorkshopApi workshop = GetGame().GetBackendApi().GetWorkshop();
227
228 foreach (string guid :addonGUIDs)
229 {
230 WorkshopItem item = workshop.FindItem(guid);
231 if (!item)
232 {
233 Print("Couldn't find item of id: " + guid, LogLevel.WARNING);
234 continue;
235 }
236
237 SCR_ListBoxElementComponent checkbox = m_EntryDependenciesList.FindCheckboxByPropertyName(guid);
238 if (checkbox)
239 m_EntryDependenciesList.ToggleCheckbox(checkbox);
240 }
241 */
242
243 // Add dependencies setup
244 array<WorkshopItem> dependencies = {};
245 Revision currentRev = saveItem.GetActiveRevision();
246 if (!currentRev)
247 currentRev = saveItem.GetLocalRevision();
248
249 currentRev.GetDependencies(dependencies);
250
252
253 foreach (WorkshopItem dependency : dependencies)
254 {
255 // Enable required dependency
256 checkbox = m_EntryDependenciesList.FindCheckboxByPropertyName(dependency.Id());
257 if (checkbox)
258 m_EntryDependenciesList.ToggleCheckbox(checkbox, true);
259 }
260 }
261
262 //---------------------------------------------------------------------------------------------
264 {
265 m_EntryName.SetValue(manifest.m_sName);
266 m_EntrySummary.SetValue(manifest.m_sSummary);
267 m_EntryDescription.SetValue(manifest.m_sDescription);
268
269 //m_EntryImagesPicker.SetValue(manifest.m_sPreview);
270 m_ThumbnailPickerEntry.SetValue(manifest.m_sPreview);
271
273
274 if (manifest.m_aScreenshots)
275 return;
276
277 foreach (string screenshot : manifest.m_aScreenshots)
278 {
279 if (screenshot.IsEmpty())
280 continue;
281
283 m_GalleryPickersList.AddElement(picker);
284
285 picker.SetValue(screenshot);
288 }
289 }
290
291 //---------------------------------------------------------------------------------------------
292 protected void OnPickerResourcePicked(string resource)
293 {
294 // Remove if empty
295 if (resource.IsEmpty())
296 {
297
298 }
299 }
300
301 //---------------------------------------------------------------------------------------------
302 protected override void OnConfirm()
303 {
304 Close();
305 m_OnConfirm.Invoke(this);
306 }
307
308 //---------------------------------------------------------------------------------------------
309 protected void OnThumbnailPicked(string resource)
310 {
311 //m_EntryImagesPicker.GetSaveImagesGallery().SetThumbnailImage(resource);
312 }
313
314 //---------------------------------------------------------------------------------------------
316 {
317 //WorldSaveManifest manifest = ManifestFromConfigList();
318 //SCR_SaveWorkshopManager.GetInstance().SetEditedSaveManifest(manifest, "thumbnail", string.Empty);
319
320 if (picker.GetResourcePath().IsEmpty())
321 m_GalleryPickersList.RemoveElementByWidget(picker.GetRootWidget())
322
323 //SCR_EditorManagerEntity.GetInstance().SetCurrentMode(EEditorMode.PHOTO_SAVE);
324 }
325
326 //---------------------------------------------------------------------------------------------
327 protected void OnGalleryAddElemented()
328 {
329 //SCR_SaveWorkshopManager manager = SCR_SaveWorkshopManager.GetInstance();
330 //WorldSaveManifest manifest = ManifestFromConfigList();
331 //manager.SetEditedSaveManifest(manifest, "gallery", string.Empty);
332
333 SCR_EditorManagerEntity.GetInstance().SetCurrentMode(EEditorMode.PHOTO_SAVE);
334 }
335
336 //---------------------------------------------------------------------------------------------
337 protected void OnArmaVisionActivated()
338 {
340 managerUI.SetCachedEditSaveDialog(this);
342
343 Close();
344 }
345}
class RestAPIHelper< JsonApiStruct T > content
ArmaReforgerScripted GetGame()
Definition game.c:1398
void SCR_EditorManagerEntity(IEntitySource src, IEntity parent)
Widget GetContentWidget()
Definition Debug.c:13
Core component to manage SCR_EditorManagerEntity.
SCR_EditorManagerEntity GetEditorManager()
WorldSaveManifest ManifestFromConfigList()
SCR_WidgetListEntrySelectionList m_GalleryPickersList
SCR_ConfigListComponent m_ConfigList
SCR_WidgetListEntry m_EntryDependenciesLabel
void OnThumbnailPicked(string resource)
SCR_WidgetListEntryResourcePicker m_ThumbnailPickerEntry
SCR_WidgetListEntry m_EntryDescription
void OnPickerResourcePicked(string resource)
SCR_WidgetListEntryPublishImages m_EntryImagesPicker
void OnThumbnailPickerClick(SCR_ImagePickerComponent picker)
override void Init(Widget root, SCR_ConfigurableDialogUiPreset preset, MenuBase proxyMenu)
SCR_WidgetListEntry m_EntryName
void FillListFromSaveItem(notnull WorldSaveItem saveItem)
SCR_WidgetListEntryMessage m_EntryVersion
SCR_WidgetListEntry m_EntrySummary
SCR_WidgetListEntryMessage m_EntryScenario
SCR_WidgetListEntryCheckList m_EntryDependenciesList
void FillListFromWorldSaveManifest(WorldSaveManifest manifest)
ScriptInvokerBase< ScriptInvokerStringMethod > GetOnResourcePicked()
ScriptInvokerImagePickerComponent GetOnPickerButtonClick()
Variable that is using localized label.
static SCR_SaveWorkshopManagerUI GetInstance()
void SetupSaveImageCaptureCallback()
Setup callbacks reacting on photo save capture mode events.
void SetCachedEditSaveDialog(SCR_EditorSaveDialog dialog)
Configurable class for widget.
SCR_ImagePickerComponent GetResourcePicker()
override void SetValue(string str)
Workshop Api instance.
Definition WorkshopApi.c:14
Workshop Item instance.
proto void Print(void var, LogLevel level=LogLevel.NORMAL)
Prints content of variable to console/log.
LogLevel
Enum with severity of the logging message.
Definition LogLevel.c:14
EEditorMode
Editor mode that defines overall functionality.
Definition EEditorMode.c:6