Arma Reforger Explorer 1.7.0.54
Arma Reforger Code Explorer by Zeroy - Thanks to MisterOutofTime
Loading...
Searching...
No Matches
SCR_WeatherInstantEditorAttribute.c
Go to the documentation of this file.
1
6{
7 [Attribute("MISSING NAME", desc: "Text shown if weather State has no weather name assigned")]
9
10 [Attribute("{4B4B51FACB828BF9}UI/Textures/Tasks/TaskIcons/96/Icon_Task_Unknown.edds", desc: "Icon used when weather is unknown")]
12
13 override SCR_BaseEditorAttributeVar ReadVariable(Managed item, SCR_AttributesManagerEditorComponent manager)
14 {
15 //If opened in global attributes
16 if (!IsGameMode(item))
17 return null;
18
19 GenericEntity ent = GenericEntity.Cast(item);
20 ChimeraWorld world = ent.GetWorld();
21 TimeAndWeatherManagerEntity weatherManager = world.GetTimeAndWeatherManager();
22 if (!weatherManager)
23 return null;
24
25 BaseWeatherStateTransitionManager weatherTransitionManager = weatherManager.GetTransitionManager();
26 if (!weatherTransitionManager)
27 return null;
28
29 array<ref WeatherState> weatherStates = new array<ref WeatherState>;
30
31 //Get weather states
32 weatherManager.GetWeatherStatesList(weatherStates);
33 if (weatherStates.IsEmpty())
34 return null;
35
36 WeatherState currentState = weatherManager.GetCurrentWeatherState();
37 return SCR_BaseEditorAttributeVar.CreateInt(currentState.GetStateID());
38 }
39
40 override void WriteVariable(Managed item, SCR_BaseEditorAttributeVar var, SCR_AttributesManagerEditorComponent manager, int playerID)
41 {
42 if (!var)
43 return;
44
45 BaseGameMode gameMode = GetGame().GetGameMode();
46 if (!gameMode)
47 return;
48
49 ChimeraWorld world = ChimeraWorld.CastFrom(gameMode.GetWorld());
50 if (!world)
51 return;
52
53 TimeAndWeatherManagerEntity weatherManager = world.GetTimeAndWeatherManager();
54 if (!weatherManager)
55 return;
56
57 int stateIndex = var.GetInt();
58
59 array<ref WeatherState> weatherStates = new array<ref WeatherState>;
60 weatherManager.GetWeatherStatesList(weatherStates);
61
62 //Valid state
63 if (weatherStates.IsEmpty() || stateIndex >= weatherStates.Count())
64 return;
65
66 WeatherState weatherToSet = weatherStates[stateIndex];
67
68 //Preview Weather
69 if (!item)
70 {
71 weatherManager.SetWeatherStatePreview(true, weatherToSet.GetStateName());
72 return;
73 }
74
75 float transitionTime = 0;
76
77 SCR_BaseEditorAttributeVar transitionVar;
78 if (manager && manager.GetAttributeVariable(SCR_WeatherInstantTransitionTimeEditorAttribute, transitionVar))
79 transitionTime = transitionVar.GetInt();
80
81 weatherManager.ForceWeatherTo(true, weatherToSet.GetStateName(), transitionTime / 3600, 0.001, playerID);
82 }
83
84 override void PreviewVariable(bool setPreview, SCR_AttributesManagerEditorComponent manager)
85 {
86 //Preview weather. Note that if advanced is turned on preview should disapear
87 if (setPreview)
88 {
89 WriteVariable(null, GetVariable(), manager, -1);
90 }
91 else
92 {
93 ChimeraWorld world = GetGame().GetWorld();
94 TimeAndWeatherManagerEntity weatherManager = world.GetTimeAndWeatherManager();
95 if (!weatherManager)
96 return;
97
98 BaseWeatherStateTransitionManager weatherTransitionManager = weatherManager.GetTransitionManager();
99 if (!weatherTransitionManager)
100 return;
101
102 //Remove preview
103 if (weatherTransitionManager.IsPreviewingState())
104 weatherManager.SetWeatherStatePreview(false);
105 }
106 }
107
108 protected override void CreatePresets()
109 {
110 m_aValues.Clear();
111
113
114 array<ref WeatherState> weatherStates = new array<ref WeatherState>;
115 ChimeraWorld world = GetGame().GetWorld();
116 TimeAndWeatherManagerEntity weatherManager = world.GetTimeAndWeatherManager();
117 if (!weatherManager)
118 return;
119
120 weatherManager.GetWeatherStatesList(weatherStates);
121
122 int count = weatherStates.Count();
123 string weatherName;
124 ResourceName weatherIconPath;
125
126 //Create preset list
127 for (int i = 0; i < count; i++)
128 {
130
131 weatherName = weatherStates[i].GetLocalizedName();
132 weatherIconPath = weatherStates[i].GetIconPath();
133
134 if (SCR_StringHelper.IsEmptyOrWhiteSpace(weatherName))
135 {
136 weatherName = m_sUnknownWeatherName;
137 Print("WeatherState: '" + weatherStates[i].GetStateID() + "' does not have weather localization name assigned!", LogLevel.ERROR);
138 }
139
140
141 if (SCR_StringHelper.IsEmptyOrWhiteSpace(weatherIconPath))
142 {
143 weatherIconPath = m_sUnknownWeatherIcon;
144 Print("WeatherState: '" + weatherStates[i].GetStateID() + "' does not have weather icon assigned!", LogLevel.ERROR);
145 }
146
147 value.SetName(weatherName);
148 value.SetIcon(weatherIconPath);
149 value.SetFloatValue(weatherStates[i].GetStateID());
150
151 m_aValues.Insert(value);
152 }
153 }
154};
ArmaReforgerScripted GetGame()
Definition game.c:1398
SCR_AIAnimation_Loitering BaseContainerProps
Commanding menu commanding element class.
UI Textures DeployMenu Briefing conflict_HintBanner_1_UI desc
proto external BaseWorld GetWorld()
sealed SCR_BaseEditorAttributeVar GetVariable(bool createWhenNull=false)
static SCR_BaseEditorAttributeVar CreateInt(int value)
ref array< ref SCR_EditorAttributeFloatStringValueHolder > m_aValues
void SetIcon(ResourceName newIcon, bool isImageset=false)
static bool IsEmptyOrWhiteSpace(string input)
override void PreviewVariable(bool setPreview, SCR_AttributesManagerEditorComponent manager)
override void WriteVariable(Managed item, SCR_BaseEditorAttributeVar var, SCR_AttributesManagerEditorComponent manager, int playerID)
override SCR_BaseEditorAttributeVar ReadVariable(Managed item, SCR_AttributesManagerEditorComponent manager)
void ForceWeatherTo(bool setLooping, string weatherID=string.Empty, float transitionDuration=0, float stateDuration=0.001, int playerThatChangedWeather=0)
bool SetWeatherStatePreview(bool preview, string stateName="")
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
SCR_FieldOfViewSettings Attribute