Arma Reforger Explorer 1.7.0.54
Arma Reforger Code Explorer by Zeroy - Thanks to MisterOutofTime
Loading...
Searching...
No Matches
SCR_DaytimeEditorAttribute.c
Go to the documentation of this file.
1
6{
7 override SCR_BaseEditorAttributeVar ReadVariable(Managed item, SCR_AttributesManagerEditorComponent manager)
8 {
9 //If opened in global attributes
10 if (!IsGameMode(item))
11 return null;
12
13 GenericEntity ent = GenericEntity.Cast(item);
14 ChimeraWorld world = ent.GetWorld();
15 TimeAndWeatherManagerEntity timeManager = world.GetTimeAndWeatherManager();
16 if (!timeManager) return null;
17
18 return SCR_BaseEditorAttributeVar.CreateFloat(timeManager.GetTimeOfTheDay() * 3600);
19 }
20
21 override void UpdateInterlinkedVariables(SCR_BaseEditorAttributeVar var, SCR_AttributesManagerEditorComponent manager, bool isInit = false)
22 {
23 if (!var || isInit)
24 return;
25
26 //If slider moved set all deselected
27 manager.SetAttributeSelected(SCR_TimePresetsEditorAttribute, false, -1);
28 }
29
30 //---- REFACTOR NOTE START: Hardcoded numbers
31
32 override void WriteVariable(Managed item, SCR_BaseEditorAttributeVar var, SCR_AttributesManagerEditorComponent manager, int playerID)
33 {
34 if (!var)
35 return;
36
37 BaseGameMode gameMode = GetGame().GetGameMode();
38 if (!gameMode)
39 return;
40
41 ChimeraWorld world = ChimeraWorld.CastFrom(gameMode.GetWorld());
42 if (!world)
43 return;
44
45 TimeAndWeatherManagerEntity timeManager = world.GetTimeAndWeatherManager();
46 if (!timeManager)
47 return;
48
49 BaseWeatherStateTransitionManager weatherTransitionManager = timeManager.GetTransitionManager();
50 if (!weatherTransitionManager)
51 return;
52
53 float daytime = var.GetFloat() / 3600;
54
55 //Preview
56 if (!item)
57 {
58 if (!manager)
59 return;
60
61 SCR_DateEditorAttribute dateAttribute = SCR_DateEditorAttribute.Cast(manager.GetAttributeRef(SCR_DateEditorAttribute));
62 if (!dateAttribute)
63 return;
64
65 SCR_BaseEditorAttributeVar dateVar = dateAttribute.GetVariable();
66 if (!dateVar)
67 return;
68
69 vector date = dateVar.GetVector();
70 timeManager.SetDateTimePreview(true, dateAttribute.GetYearByIndex(date[2]), date[1] +1, date[0] +1, daytime / 24);
71
72 return;
73 }
74
75 if (weatherTransitionManager.IsPreviewingDateTime())
76 timeManager.SetDateTimePreview(false);
77
78 timeManager.SetTimeOfTheDay(daytime);
79
80 string time = SCR_FormatHelper.GetTimeFormatting(var.GetFloat(), (ETimeFormatParam.DAYS | ETimeFormatParam.SECONDS));
81
82 //Notification
83 if (item)
84 SCR_NotificationsComponent.SendToUnlimitedEditorPlayers(ENotification.EDITOR_ATTRIBUTES_TIME_CHANGED, playerID, time[0].ToInt(), time[1].ToInt(), time[3].ToInt(), time[4].ToInt());
85 }
86
87 //---- REFACTOR NOTE END ----
88
89 override void PreviewVariable(bool setPreview, SCR_AttributesManagerEditorComponent manager)
90 {
91 if (setPreview)
92 {
93 WriteVariable(null, GetVariable(), manager, -1);
94 }
95 else
96 {
97 ChimeraWorld world = GetGame().GetWorld();
98 TimeAndWeatherManagerEntity weatherManager = world.GetTimeAndWeatherManager();
99 if (!weatherManager)
100 return;
101
102 BaseWeatherStateTransitionManager weatherTransitionManager = weatherManager.GetTransitionManager();
103 if (!weatherTransitionManager)
104 return;
105
106 //Remove preview
107 if (weatherTransitionManager.IsPreviewingDateTime())
108 weatherManager.SetDateTimePreview(false);
109
110 float timeofDay = weatherManager.GetTimeOfTheDay();
111 weatherManager.SetTimeOfTheDay(timeofDay, true);
112 }
113 }
114
115 override int GetEntries(notnull array<ref SCR_BaseEditorAttributeEntry> outEntries)
116 {
117 outEntries.Insert(new SCR_BaseEditorAttributeEntryTimeSlider(1, true));
118 return super.GetEntries(outEntries);
119 }
120};
ENotification
ETimeFormatParam
ArmaReforgerScripted GetGame()
Definition game.c:1398
SCR_AIAnimation_Loitering BaseContainerProps
Commanding menu commanding element class.
proto external BaseWorld GetWorld()
sealed SCR_BaseEditorAttributeVar GetVariable(bool createWhenNull=false)
static SCR_BaseEditorAttributeVar CreateFloat(float value)
bool SetDateTimePreview(bool preview, int year=-1, int month=-1, int day=-1, float timeOfTheDay=-1)