scriptconsoleweathertab.c 26 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706
  1. class ScriptConsoleWeatherTab : ScriptConsoleTabBase
  2. {
  3. protected ref Timer m_RPCTimer = new Timer();
  4. protected const int INTERPOLATION_MAX = 920;
  5. protected const int DURATION_MAX = 920;
  6. // FOG
  7. protected SliderWidget m_FogValueSetSlider;
  8. protected SliderWidget m_FogValueGetSlider;
  9. protected TextWidget m_FogValueSetText;
  10. protected SliderWidget m_FogInterpolationTimeSlider;
  11. protected SliderWidget m_FogDurationTimeSlider;
  12. protected TextWidget m_FogInterpolationMaxText;
  13. protected TextWidget m_FogDurationMaxText;
  14. protected EditBoxWidget m_FogValueEditbox;
  15. protected EditBoxWidget m_FogInterpolationEditbox;
  16. protected EditBoxWidget m_FogDurationEditbox;
  17. protected static float m_FogValue = -1;
  18. protected static float m_FogInterpolationTimeValue;
  19. protected static float m_FogDurationTimeValue = -1;
  20. // OVERCAST
  21. protected SliderWidget m_OvercastValueSetSlider;
  22. protected SliderWidget m_OvercastValueGetSlider;
  23. protected TextWidget m_OvercastValueSetText;
  24. protected SliderWidget m_OvercastInterpolationTimeSlider;
  25. protected SliderWidget m_OvercastDurationTimeSlider;
  26. protected TextWidget m_OvercastInterpolationMaxText;
  27. protected TextWidget m_OvercastDurationMaxText;
  28. protected EditBoxWidget m_OvercastValueEditbox;
  29. protected EditBoxWidget m_OvercastInterpolationEditbox;
  30. protected EditBoxWidget m_OvercastDurationEditbox;
  31. protected static float m_OvercastValue = -1;
  32. protected static float m_OvercastInterpolationTimeValue;
  33. protected static float m_OvercastDurationTimeValue = -1;
  34. // Rain
  35. protected SliderWidget m_RainValueSetSlider;
  36. protected SliderWidget m_RainValueGetSlider;
  37. protected TextWidget m_RainValueSetText;
  38. protected SliderWidget m_RainInterpolationTimeSlider;
  39. protected SliderWidget m_RainDurationTimeSlider;
  40. protected TextWidget m_RainInterpolationMaxText;
  41. protected TextWidget m_RainDurationMaxText;
  42. protected EditBoxWidget m_RainValueEditbox;
  43. protected EditBoxWidget m_RainInterpolationEditbox;
  44. protected EditBoxWidget m_RainDurationEditbox;
  45. protected static float m_RainValue = -1;
  46. protected static float m_RainInterpolationTimeValue;
  47. protected static float m_RainDurationTimeValue = -1;
  48. // Snowfall
  49. protected SliderWidget m_SnowfallValueSetSlider;
  50. protected SliderWidget m_SnowfallValueGetSlider;
  51. protected TextWidget m_SnowfallValueSetText;
  52. protected SliderWidget m_SnowfallInterpolationTimeSlider;
  53. protected SliderWidget m_SnowfallDurationTimeSlider;
  54. protected TextWidget m_SnowfallInterpolationMaxText;
  55. protected TextWidget m_SnowfallDurationMaxText;
  56. protected EditBoxWidget m_SnowfallValueEditbox;
  57. protected EditBoxWidget m_SnowfallInterpolationEditbox;
  58. protected EditBoxWidget m_SnowfallDurationEditbox;
  59. protected static float m_SnowfallValue = -1;
  60. protected static float m_SnowfallInterpolationTimeValue;
  61. protected static float m_SnowfallDurationTimeValue = -1;
  62. // Other
  63. protected ButtonWidget m_ResetButton;
  64. protected ButtonWidget m_UpdateButton;
  65. protected ButtonWidget m_ApplyButton;
  66. protected ButtonWidget m_CopyButton;
  67. protected ButtonWidget m_PasteButton;
  68. void ~ScriptConsoleWeatherTab()
  69. {
  70. // FOG
  71. m_FogValue = m_FogValueSetSlider.GetCurrent() / 100;
  72. m_FogInterpolationTimeValue = m_FogInterpolationTimeSlider.GetCurrent() / 100 * INTERPOLATION_MAX;
  73. m_FogDurationTimeValue = m_FogDurationTimeSlider.GetCurrent() / 100 * DURATION_MAX;
  74. // OVERCAST
  75. m_OvercastValue = m_OvercastValueSetSlider.GetCurrent() / 100;
  76. m_OvercastInterpolationTimeValue = m_OvercastInterpolationTimeSlider.GetCurrent() / 100 * INTERPOLATION_MAX;
  77. m_OvercastDurationTimeValue = m_OvercastDurationTimeSlider.GetCurrent() / 100 * DURATION_MAX;
  78. // Rain
  79. m_RainValue = m_RainValueSetSlider.GetCurrent() / 100;
  80. m_RainInterpolationTimeValue = m_RainInterpolationTimeSlider.GetCurrent() / 100 * INTERPOLATION_MAX;
  81. m_RainDurationTimeValue = m_RainDurationTimeSlider.GetCurrent() / 100 * DURATION_MAX;
  82. // Snowfall
  83. m_SnowfallValue = m_SnowfallValueSetSlider.GetCurrent() / 100;
  84. m_SnowfallInterpolationTimeValue = m_SnowfallInterpolationTimeSlider.GetCurrent() / 100 * INTERPOLATION_MAX;
  85. m_SnowfallDurationTimeValue = m_SnowfallDurationTimeSlider.GetCurrent() / 100 * DURATION_MAX;
  86. }
  87. void ScriptConsoleWeatherTab(Widget root, ScriptConsole console, Widget button, ScriptConsoleTabBase parent = null)
  88. {
  89. // FOG
  90. m_FogValueSetSlider = SliderWidget.Cast(root.FindAnyWidget("SliderFogValue"));
  91. m_FogValueGetSlider = SliderWidget.Cast(root.FindAnyWidget("SliderFogActualValue"));
  92. m_FogValueSetText = TextWidget.Cast(root.FindAnyWidget("TextFogValueActual"));
  93. m_FogInterpolationTimeSlider = SliderWidget.Cast(root.FindAnyWidget("SliderFogTarget"));
  94. m_FogDurationTimeSlider = SliderWidget.Cast(root.FindAnyWidget("SliderFogDuration"));
  95. m_FogInterpolationMaxText = TextWidget.Cast(root.FindAnyWidget("TextMaxFogTarget"));
  96. m_FogDurationMaxText = TextWidget.Cast(root.FindAnyWidget("TextMaxFogDuration"));
  97. m_FogValueEditbox = EditBoxWidget.Cast(root.FindAnyWidget("EditBoxFogValue"));
  98. m_FogInterpolationEditbox = EditBoxWidget.Cast(root.FindAnyWidget("EditBoxFogTarget"));
  99. m_FogDurationEditbox = EditBoxWidget.Cast(root.FindAnyWidget("EditBoxFogDuration"));
  100. // OVERCAST
  101. m_OvercastValueSetSlider = SliderWidget.Cast(root.FindAnyWidget("SliderOvercastValue"));
  102. m_OvercastValueGetSlider = SliderWidget.Cast(root.FindAnyWidget("SliderOvercastActualValue"));
  103. m_OvercastValueSetText = TextWidget.Cast(root.FindAnyWidget("TextOvercastValueActual"));
  104. m_OvercastInterpolationTimeSlider = SliderWidget.Cast(root.FindAnyWidget("SliderOvercastTarget"));
  105. m_OvercastDurationTimeSlider = SliderWidget.Cast(root.FindAnyWidget("SliderOvercastDuration"));
  106. m_OvercastInterpolationMaxText = TextWidget.Cast(root.FindAnyWidget("TextMaxOvercastTarget"));
  107. m_OvercastDurationMaxText = TextWidget.Cast(root.FindAnyWidget("TextMaxOvercastDuration"));
  108. m_OvercastValueEditbox = EditBoxWidget.Cast(root.FindAnyWidget("EditBoxOvercastValue"));
  109. m_OvercastInterpolationEditbox = EditBoxWidget.Cast(root.FindAnyWidget("EditBoxOvercastTarget"));
  110. m_OvercastDurationEditbox = EditBoxWidget.Cast(root.FindAnyWidget("EditBoxOvercastDuration"));
  111. // Rain
  112. m_RainValueSetSlider = SliderWidget.Cast(root.FindAnyWidget("SliderRainValue"));
  113. m_RainValueGetSlider = SliderWidget.Cast(root.FindAnyWidget("SliderRainActualValue"));
  114. m_RainValueSetText = TextWidget.Cast(root.FindAnyWidget("TextRainValueActual"));
  115. m_RainInterpolationTimeSlider = SliderWidget.Cast(root.FindAnyWidget("SliderRainTarget"));
  116. m_RainDurationTimeSlider = SliderWidget.Cast(root.FindAnyWidget("SliderRainDuration"));
  117. m_RainInterpolationMaxText = TextWidget.Cast(root.FindAnyWidget("TextMaxRainTarget"));
  118. m_RainDurationMaxText = TextWidget.Cast(root.FindAnyWidget("TextMaxRainDuration"));
  119. m_RainValueEditbox = EditBoxWidget.Cast(root.FindAnyWidget("EditBoxRainValue"));
  120. m_RainInterpolationEditbox = EditBoxWidget.Cast(root.FindAnyWidget("EditBoxRainTarget"));
  121. m_RainDurationEditbox = EditBoxWidget.Cast(root.FindAnyWidget("EditBoxRainDuration"));
  122. // Snowfall
  123. m_SnowfallValueSetSlider = SliderWidget.Cast(root.FindAnyWidget("SliderSnowfallValue"));
  124. m_SnowfallValueGetSlider = SliderWidget.Cast(root.FindAnyWidget("SliderSnowfallActualValue"));
  125. m_SnowfallValueSetText = TextWidget.Cast(root.FindAnyWidget("TextSnowfallValueActual"));
  126. m_SnowfallInterpolationTimeSlider = SliderWidget.Cast(root.FindAnyWidget("SliderSnowfallTarget"));
  127. m_SnowfallDurationTimeSlider = SliderWidget.Cast(root.FindAnyWidget("SliderSnowfallDuration"));
  128. m_SnowfallInterpolationMaxText = TextWidget.Cast(root.FindAnyWidget("TextMaxSnowfallTarget"));
  129. m_SnowfallDurationMaxText = TextWidget.Cast(root.FindAnyWidget("TextMaxSnowfallDuration"));
  130. m_SnowfallValueEditbox = EditBoxWidget.Cast(root.FindAnyWidget("EditBoxSnowfallValue"));
  131. m_SnowfallInterpolationEditbox = EditBoxWidget.Cast(root.FindAnyWidget("EditBoxSnowfallTarget"));
  132. m_SnowfallDurationEditbox = EditBoxWidget.Cast(root.FindAnyWidget("EditBoxSnowfallDuration"));
  133. //Other
  134. m_ResetButton = ButtonWidget.Cast(root.FindAnyWidget("ButtonReset"));
  135. m_UpdateButton = ButtonWidget.Cast(root.FindAnyWidget("ButtonUpdate"));
  136. m_ApplyButton = ButtonWidget.Cast(root.FindAnyWidget("ButtonApply"));
  137. m_CopyButton = ButtonWidget.Cast(root.FindAnyWidget("ButtonCopy"));
  138. m_PasteButton = ButtonWidget.Cast(root.FindAnyWidget("ButtonPaste"));
  139. InitValues();
  140. }
  141. protected void ResetValues()
  142. {
  143. // FOG
  144. m_FogValueEditbox.SetText("0");
  145. m_FogDurationEditbox.SetText(DURATION_MAX.ToString());
  146. m_FogInterpolationEditbox.SetText("0");
  147. // OVERCAST
  148. m_OvercastValueEditbox.SetText("0");
  149. m_OvercastDurationEditbox.SetText(DURATION_MAX.ToString());
  150. m_OvercastInterpolationEditbox.SetText("0");
  151. // Rain
  152. m_RainValueEditbox.SetText("0");
  153. m_RainDurationEditbox.SetText(DURATION_MAX.ToString());
  154. m_RainInterpolationEditbox.SetText("0");
  155. // Snowfall
  156. m_SnowfallValueEditbox.SetText("0");
  157. m_SnowfallDurationEditbox.SetText(DURATION_MAX.ToString());
  158. m_SnowfallInterpolationEditbox.SetText("0");
  159. UpdateSliderValues();
  160. //FOG
  161. m_FogValue = 0;
  162. m_FogInterpolationTimeValue = 0;
  163. m_FogDurationTimeValue = DURATION_MAX;
  164. // OVERCAST
  165. m_OvercastValue = 0;
  166. m_OvercastInterpolationTimeValue = 0;
  167. m_OvercastDurationTimeValue = DURATION_MAX;
  168. //RAIN
  169. m_RainValue = 0;
  170. m_RainInterpolationTimeValue = 0;
  171. m_RainDurationTimeValue = DURATION_MAX;
  172. //SNOWFALL
  173. m_SnowfallValue = 0;
  174. m_SnowfallInterpolationTimeValue = 0;
  175. m_SnowfallDurationTimeValue = DURATION_MAX;
  176. }
  177. protected void InitValues(bool forceCurrent = false)
  178. {
  179. // FOG
  180. float fogVal = m_FogValue;
  181. if (forceCurrent || m_FogValue == -1)
  182. {
  183. fogVal = GetGame().GetWeather().GetFog().GetActual();
  184. }
  185. m_FogValueEditbox.SetText(fogVal.ToString());
  186. m_FogInterpolationEditbox.SetText(m_FogInterpolationTimeValue.ToString());
  187. if (m_FogDurationTimeValue == -1)
  188. m_FogDurationTimeValue = DURATION_MAX;
  189. m_FogDurationEditbox.SetText(m_FogDurationTimeValue.ToString());
  190. m_FogInterpolationMaxText.SetText(INTERPOLATION_MAX.ToString());
  191. m_FogDurationMaxText.SetText(DURATION_MAX.ToString());
  192. // OVERCAST
  193. float overcastVal = m_OvercastValue;
  194. if (forceCurrent || m_OvercastValue == -1)
  195. {
  196. overcastVal = GetGame().GetWeather().GetOvercast().GetActual();
  197. }
  198. m_OvercastValueEditbox.SetText(overcastVal.ToString());
  199. m_OvercastInterpolationEditbox.SetText(m_OvercastInterpolationTimeValue.ToString());
  200. if (m_OvercastDurationTimeValue == -1)
  201. m_OvercastDurationTimeValue = DURATION_MAX;
  202. m_OvercastDurationEditbox.SetText(m_OvercastDurationTimeValue.ToString());
  203. m_OvercastInterpolationMaxText.SetText(INTERPOLATION_MAX.ToString());
  204. m_OvercastDurationMaxText.SetText(DURATION_MAX.ToString());
  205. // RAIN
  206. float rainVal = m_RainValue;
  207. if (forceCurrent || m_RainValue == -1)
  208. {
  209. rainVal = GetGame().GetWeather().GetRain().GetActual();
  210. }
  211. m_RainValueEditbox.SetText(rainVal.ToString());
  212. m_RainInterpolationEditbox.SetText(m_RainInterpolationTimeValue.ToString());
  213. if (m_RainDurationTimeValue == -1)
  214. m_RainDurationTimeValue = DURATION_MAX;
  215. m_RainDurationEditbox.SetText(m_RainDurationTimeValue.ToString());
  216. m_RainInterpolationMaxText.SetText(INTERPOLATION_MAX.ToString());
  217. m_RainDurationMaxText.SetText(DURATION_MAX.ToString());
  218. // SNOWFALL
  219. float snowfallVal = m_SnowfallValue;
  220. if (forceCurrent || m_SnowfallValue == -1)
  221. {
  222. snowfallVal = GetGame().GetWeather().GetSnowfall().GetActual();
  223. }
  224. m_SnowfallValueEditbox.SetText(snowfallVal.ToString());
  225. m_SnowfallInterpolationEditbox.SetText(m_SnowfallInterpolationTimeValue.ToString());
  226. if (m_SnowfallDurationTimeValue == -1)
  227. m_SnowfallDurationTimeValue = DURATION_MAX;
  228. m_SnowfallDurationEditbox.SetText(m_SnowfallDurationTimeValue.ToString());
  229. m_SnowfallInterpolationMaxText.SetText(INTERPOLATION_MAX.ToString());
  230. m_SnowfallDurationMaxText.SetText(DURATION_MAX.ToString());
  231. UpdateSliderValues();
  232. }
  233. protected void PasteValues(string clipboard)
  234. {
  235. TStringArray values = new TStringArray();
  236. clipboard.Split(" ", values);
  237. if (values.Count() >= 9)
  238. {
  239. // FOG
  240. m_FogValueEditbox.SetText(values.Get(0));
  241. m_FogInterpolationEditbox.SetText(values.Get(1));
  242. m_FogDurationEditbox.SetText(values.Get(2));
  243. // OVERCAST
  244. m_OvercastValueEditbox.SetText(values.Get(3));
  245. m_OvercastInterpolationEditbox.SetText(values.Get(4));
  246. m_OvercastDurationEditbox.SetText(values.Get(5));
  247. // RAIN
  248. m_RainValueEditbox.SetText(values.Get(6));
  249. m_RainInterpolationEditbox.SetText(values.Get(7));
  250. m_RainDurationEditbox.SetText(values.Get(8));
  251. if (values.Count() >= 12)
  252. {
  253. // SNOWFALL
  254. m_SnowfallValueEditbox.SetText(values.Get(9));
  255. m_SnowfallInterpolationEditbox.SetText(values.Get(10));
  256. m_SnowfallDurationEditbox.SetText(values.Get(11));
  257. }
  258. }
  259. }
  260. protected string CopyValues()
  261. {
  262. string output;
  263. // FOG
  264. output += m_FogValueEditbox.GetText();
  265. output += " ";
  266. output += m_FogInterpolationEditbox.GetText();
  267. output += " ";
  268. output += m_FogDurationEditbox.GetText();
  269. output += " ";
  270. // OVERCAST
  271. output += m_OvercastValueEditbox.GetText();
  272. output += " ";
  273. output += m_OvercastInterpolationEditbox.GetText();
  274. output += " ";
  275. output += m_OvercastDurationEditbox.GetText();
  276. output += " ";
  277. // RAIN
  278. output += m_RainValueEditbox.GetText();
  279. output += " ";
  280. output += m_RainInterpolationEditbox.GetText();
  281. output += " ";
  282. output += m_RainDurationEditbox.GetText();
  283. // SNOWFALL
  284. output += m_SnowfallValueEditbox.GetText();
  285. output += " ";
  286. output += m_SnowfallInterpolationEditbox.GetText();
  287. output += " ";
  288. output += m_SnowfallDurationEditbox.GetText();
  289. return output;
  290. }
  291. override bool OnChange(Widget w, int x, int y, bool finished)
  292. {
  293. bool rmbDrag = (GetMouseState(MouseState.RIGHT) & MB_PRESSED_MASK);
  294. bool immDrag = (GetMouseState(MouseState.LEFT) & MB_PRESSED_MASK) && KeyState(KeyCode.KC_LSHIFT);
  295. if (rmbDrag)
  296. {
  297. // first row
  298. if (w == m_FogValueSetSlider)
  299. {
  300. m_OvercastValueSetSlider.SetCurrent(m_FogValueSetSlider.GetCurrent());
  301. m_RainValueSetSlider.SetCurrent(m_FogValueSetSlider.GetCurrent());
  302. m_SnowfallValueSetSlider.SetCurrent(m_FogValueSetSlider.GetCurrent());
  303. }
  304. else if (w == m_OvercastValueSetSlider)
  305. {
  306. m_FogValueSetSlider.SetCurrent(m_OvercastValueSetSlider.GetCurrent());
  307. m_RainValueSetSlider.SetCurrent(m_OvercastValueSetSlider.GetCurrent());
  308. m_SnowfallValueSetSlider.SetCurrent(m_OvercastValueSetSlider.GetCurrent());
  309. }
  310. else if (w == m_RainValueSetSlider)
  311. {
  312. m_FogValueSetSlider.SetCurrent(m_RainValueSetSlider.GetCurrent());
  313. m_OvercastValueSetSlider.SetCurrent(m_RainValueSetSlider.GetCurrent());
  314. m_SnowfallValueSetSlider.SetCurrent(m_RainValueSetSlider.GetCurrent());
  315. }
  316. else if (w == m_SnowfallValueSetSlider)
  317. {
  318. m_FogValueSetSlider.SetCurrent(m_SnowfallValueSetSlider.GetCurrent());
  319. m_OvercastValueSetSlider.SetCurrent(m_SnowfallValueSetSlider.GetCurrent());
  320. m_RainValueSetSlider.SetCurrent(m_SnowfallValueSetSlider.GetCurrent());
  321. }
  322. // second row
  323. else if (w == m_FogInterpolationTimeSlider)
  324. {
  325. m_OvercastInterpolationTimeSlider.SetCurrent(m_FogInterpolationTimeSlider.GetCurrent());
  326. m_RainInterpolationTimeSlider.SetCurrent(m_FogInterpolationTimeSlider.GetCurrent());
  327. m_SnowfallInterpolationTimeSlider.SetCurrent(m_FogInterpolationTimeSlider.GetCurrent());
  328. }
  329. else if (w == m_OvercastInterpolationTimeSlider)
  330. {
  331. m_FogInterpolationTimeSlider.SetCurrent(m_OvercastInterpolationTimeSlider.GetCurrent());
  332. m_RainInterpolationTimeSlider.SetCurrent(m_OvercastInterpolationTimeSlider.GetCurrent());
  333. m_SnowfallInterpolationTimeSlider.SetCurrent(m_OvercastInterpolationTimeSlider.GetCurrent());
  334. }
  335. else if (w == m_RainInterpolationTimeSlider)
  336. {
  337. m_OvercastInterpolationTimeSlider.SetCurrent(m_RainInterpolationTimeSlider.GetCurrent());
  338. m_FogInterpolationTimeSlider.SetCurrent(m_RainInterpolationTimeSlider.GetCurrent());
  339. m_SnowfallInterpolationTimeSlider.SetCurrent(m_RainInterpolationTimeSlider.GetCurrent());
  340. }
  341. else if (w == m_SnowfallInterpolationTimeSlider)
  342. {
  343. m_FogInterpolationTimeSlider.SetCurrent(m_SnowfallInterpolationTimeSlider.GetCurrent());
  344. m_OvercastInterpolationTimeSlider.SetCurrent(m_SnowfallInterpolationTimeSlider.GetCurrent());
  345. m_RainInterpolationTimeSlider.SetCurrent(m_SnowfallInterpolationTimeSlider.GetCurrent());
  346. }
  347. // third row
  348. else if (w == m_FogDurationTimeSlider)
  349. {
  350. m_RainDurationTimeSlider.SetCurrent(m_FogDurationTimeSlider.GetCurrent());
  351. m_OvercastDurationTimeSlider.SetCurrent(m_FogDurationTimeSlider.GetCurrent());
  352. m_SnowfallDurationTimeSlider.SetCurrent(m_FogDurationTimeSlider.GetCurrent());
  353. }
  354. else if (w == m_RainDurationTimeSlider)
  355. {
  356. m_FogDurationTimeSlider.SetCurrent(m_RainDurationTimeSlider.GetCurrent());
  357. m_OvercastDurationTimeSlider.SetCurrent(m_RainDurationTimeSlider.GetCurrent());
  358. m_SnowfallDurationTimeSlider.SetCurrent(m_RainDurationTimeSlider.GetCurrent());
  359. }
  360. else if (w == m_OvercastDurationTimeSlider)
  361. {
  362. m_RainDurationTimeSlider.SetCurrent(m_OvercastDurationTimeSlider.GetCurrent());
  363. m_FogDurationTimeSlider.SetCurrent(m_OvercastDurationTimeSlider.GetCurrent());
  364. m_SnowfallDurationTimeSlider.SetCurrent(m_OvercastDurationTimeSlider.GetCurrent());
  365. }
  366. else if (w == m_SnowfallDurationTimeSlider)
  367. {
  368. m_FogDurationTimeSlider.SetCurrent(m_SnowfallDurationTimeSlider.GetCurrent());
  369. m_OvercastDurationTimeSlider.SetCurrent(m_SnowfallDurationTimeSlider.GetCurrent());
  370. m_RainDurationTimeSlider.SetCurrent(m_SnowfallDurationTimeSlider.GetCurrent());
  371. }
  372. }
  373. SliderWidget slider = SliderWidget.Cast(w);
  374. if (slider)
  375. {
  376. if ( (rmbDrag||immDrag) && !m_RPCTimer.IsRunning())
  377. {
  378. if (w == m_OvercastValueSetSlider || w == m_RainValueSetSlider || w == m_FogValueSetSlider || w == m_SnowfallValueSetSlider)
  379. m_RPCTimer.Run(0.25, this, "InvokeSendRPC");
  380. }
  381. UpdateEditboxValues();
  382. return true;
  383. }
  384. EditBoxWidget box = EditBoxWidget.Cast(w);
  385. if (box)
  386. {
  387. UpdateSliderValues();
  388. return true;
  389. }
  390. return false;
  391. }
  392. void UpdateSliderValues()
  393. {
  394. //fog
  395. float editboxFogValue = m_FogValueEditbox.GetText().ToFloat();
  396. m_FogValueSetSlider.SetCurrent(editboxFogValue * 100);
  397. float editboxFogInterpolation = m_FogInterpolationEditbox.GetText().ToFloat();
  398. m_FogInterpolationTimeSlider.SetCurrent(Math.InverseLerp(0,INTERPOLATION_MAX,editboxFogInterpolation) * 100);
  399. float editboxFogDuration = m_FogDurationEditbox.GetText().ToFloat();
  400. m_FogDurationTimeSlider.SetCurrent(Math.InverseLerp(0,INTERPOLATION_MAX,editboxFogDuration) * 100);
  401. //overcast
  402. float editboxOvercastValue = m_OvercastValueEditbox.GetText().ToFloat();
  403. m_OvercastValueSetSlider.SetCurrent(editboxOvercastValue * 100);
  404. float editboxOvercastInterpolation = m_OvercastInterpolationEditbox.GetText().ToFloat();
  405. m_OvercastInterpolationTimeSlider.SetCurrent(Math.InverseLerp(0,INTERPOLATION_MAX,editboxOvercastInterpolation) * 100);
  406. float editboxOvercastDuration = m_OvercastDurationEditbox.GetText().ToFloat();
  407. m_OvercastDurationTimeSlider.SetCurrent(Math.InverseLerp(0,INTERPOLATION_MAX,editboxOvercastDuration) * 100);
  408. //rain
  409. float editboxRainValue = m_RainValueEditbox.GetText().ToFloat();
  410. m_RainValueSetSlider.SetCurrent(editboxRainValue * 100);
  411. float editboxRainInterpolation = m_RainInterpolationEditbox.GetText().ToFloat();
  412. m_RainInterpolationTimeSlider.SetCurrent(Math.InverseLerp(0,INTERPOLATION_MAX,editboxRainInterpolation) * 100);
  413. float editboxRainDuration = m_RainDurationEditbox.GetText().ToFloat();
  414. m_RainDurationTimeSlider.SetCurrent(Math.InverseLerp(0,INTERPOLATION_MAX,editboxRainDuration) * 100);
  415. //snowfall
  416. float editboxSnowfallValue = m_SnowfallValueEditbox.GetText().ToFloat();
  417. m_SnowfallValueSetSlider.SetCurrent(editboxSnowfallValue * 100);
  418. float editboxSnowfallInterpolation = m_SnowfallInterpolationEditbox.GetText().ToFloat();
  419. m_SnowfallInterpolationTimeSlider.SetCurrent(Math.InverseLerp(0,INTERPOLATION_MAX,editboxSnowfallInterpolation) * 100);
  420. float editboxSnowfallDuration = m_SnowfallDurationEditbox.GetText().ToFloat();
  421. m_SnowfallDurationTimeSlider.SetCurrent(Math.InverseLerp(0,INTERPOLATION_MAX,editboxSnowfallDuration) * 100);
  422. }
  423. void UpdateEditboxValues()
  424. {
  425. //fog
  426. m_FogInterpolationTimeValue = m_FogInterpolationTimeSlider.GetCurrent() / 100 * INTERPOLATION_MAX;
  427. m_FogInterpolationEditbox.SetText(m_FogInterpolationTimeValue.ToString());
  428. m_FogDurationTimeValue = m_FogDurationTimeSlider.GetCurrent() / 100 * DURATION_MAX;
  429. m_FogDurationEditbox.SetText(m_FogDurationTimeValue.ToString());
  430. m_FogValue = m_FogValueSetSlider.GetCurrent() / 100;
  431. m_FogValueEditbox.SetText(m_FogValue.ToString());
  432. //overcast
  433. m_OvercastInterpolationTimeValue = m_OvercastInterpolationTimeSlider.GetCurrent() / 100 * INTERPOLATION_MAX;
  434. m_OvercastInterpolationEditbox.SetText(m_OvercastInterpolationTimeValue.ToString());
  435. m_OvercastDurationTimeValue = m_OvercastDurationTimeSlider.GetCurrent() / 100 * DURATION_MAX;
  436. m_OvercastDurationEditbox.SetText(m_OvercastDurationTimeValue.ToString());
  437. m_OvercastValue = m_OvercastValueSetSlider.GetCurrent() / 100;
  438. m_OvercastValueEditbox.SetText(m_OvercastValue.ToString());
  439. //rain
  440. m_RainInterpolationTimeValue = m_RainInterpolationTimeSlider.GetCurrent() / 100 * INTERPOLATION_MAX;
  441. m_RainInterpolationEditbox.SetText(m_RainInterpolationTimeValue.ToString());
  442. m_RainDurationTimeValue = m_RainDurationTimeSlider.GetCurrent() / 100 * DURATION_MAX;
  443. m_RainDurationEditbox.SetText(m_RainDurationTimeValue.ToString());
  444. m_RainValue = m_RainValueSetSlider.GetCurrent() / 100;
  445. m_RainValueEditbox.SetText(m_RainValue.ToString());
  446. //snowfall
  447. m_SnowfallInterpolationTimeValue = m_SnowfallInterpolationTimeSlider.GetCurrent() / 100 * INTERPOLATION_MAX;
  448. m_SnowfallInterpolationEditbox.SetText(m_SnowfallInterpolationTimeValue.ToString());
  449. m_SnowfallDurationTimeValue = m_SnowfallDurationTimeSlider.GetCurrent() / 100 * DURATION_MAX;
  450. m_SnowfallDurationEditbox.SetText(m_SnowfallDurationTimeValue.ToString());
  451. m_SnowfallValue = m_SnowfallValueSetSlider.GetCurrent() / 100;
  452. m_SnowfallValueEditbox.SetText(m_SnowfallValue.ToString());
  453. }
  454. override bool OnClick(Widget w, int x, int y, int button)
  455. {
  456. if (w == m_ApplyButton)
  457. {
  458. SendRPC(GetRPCDataNormal());
  459. return true;
  460. }
  461. else if (w == m_UpdateButton)
  462. {
  463. InitValues(true);
  464. return true;
  465. }
  466. else if (w == m_ResetButton)
  467. {
  468. ResetValues();
  469. InitValues(true);
  470. return true;
  471. }
  472. else if (w == m_CopyButton)
  473. {
  474. string output = CopyValues();
  475. GetGame().CopyToClipboard(output);
  476. return true;
  477. }
  478. else if (w == m_PasteButton)
  479. {
  480. string input;
  481. GetGame().CopyFromClipboard(input);
  482. PasteValues(input);
  483. UpdateSliderValues();
  484. return true;
  485. }
  486. return false;
  487. }
  488. //RPC data where each value is strickly as shown in the UI on the sliders
  489. protected DebugWeatherRPCData GetRPCDataNormal()
  490. {
  491. DebugWeatherRPCData data = new DebugWeatherRPCData();
  492. // FOG
  493. data.m_FogValue = m_FogValueSetSlider.GetCurrent() / 100;
  494. data.m_FogInterpolation = m_FogInterpolationTimeValue;
  495. data.m_FogDuration = m_FogDurationTimeSlider.GetCurrent() / 100 * 960;
  496. // Rain
  497. data.m_RainValue = m_RainValueSetSlider.GetCurrent() / 100;
  498. data.m_RainInterpolation = m_RainInterpolationTimeValue;
  499. data.m_RainDuration = m_RainDurationTimeSlider.GetCurrent() / 100 * 960;
  500. // OVERCAST
  501. data.m_OvercastValue = m_OvercastValueSetSlider.GetCurrent() / 100;
  502. data.m_OvercastInterpolation = m_OvercastInterpolationTimeValue;
  503. data.m_OvercastDuration = m_OvercastDurationTimeSlider.GetCurrent() / 100 * 960;
  504. // SNOWFALL
  505. data.m_SnowfallValue = m_SnowfallValueSetSlider.GetCurrent() / 100;
  506. data.m_SnowfallInterpolation = m_SnowfallInterpolationTimeValue;
  507. data.m_SnowfallDuration = m_SnowfallDurationTimeSlider.GetCurrent() / 100 * 960;
  508. return data;
  509. }
  510. //RPC data where the duration and interpolation times are forced(their slider values are ignored) to allow for immediate change and lasting effect
  511. protected DebugWeatherRPCData GetRPCDataImmediate()
  512. {
  513. DebugWeatherRPCData data = new DebugWeatherRPCData();
  514. // FOG
  515. data.m_FogValue = m_FogValueSetSlider.GetCurrent() / 100;
  516. data.m_FogInterpolation = 0;
  517. data.m_FogDuration = 960;
  518. // Rain
  519. data.m_RainValue = m_RainValueSetSlider.GetCurrent() / 100;
  520. data.m_RainInterpolation = 0;
  521. data.m_RainDuration = 960;
  522. // OVERCAST
  523. data.m_OvercastValue = m_OvercastValueSetSlider.GetCurrent() / 100;
  524. data.m_OvercastInterpolation = 0;
  525. data.m_OvercastDuration = 960;
  526. // SNOWFALL
  527. data.m_SnowfallValue = m_SnowfallValueSetSlider.GetCurrent() / 100;
  528. data.m_SnowfallInterpolation =0;
  529. data.m_SnowfallDuration = 960;
  530. return data;
  531. }
  532. protected void SendRPC(DebugWeatherRPCData data)
  533. {
  534. PlayerIdentity identity = null;
  535. if (GetGame().GetPlayer())
  536. {
  537. identity = GetGame().GetPlayer().GetIdentity();
  538. }
  539. GetGame().RPCSingleParam(null, ERPCs.DEV_SET_WEATHER, new Param1<DebugWeatherRPCData>(data), true, identity);
  540. }
  541. protected void InvokeSendRPC()
  542. {
  543. SendRPC(GetRPCDataImmediate());
  544. }
  545. override void Update(float timeslice)
  546. {
  547. super.Update(timeslice);
  548. float overcast = GetGame().GetWeather().GetOvercast().GetActual();
  549. m_OvercastValueGetSlider.SetCurrent(overcast * 100);
  550. m_OvercastValueSetText.SetText(overcast.ToString());
  551. float fog = GetGame().GetWeather().GetFog().GetActual();
  552. m_FogValueGetSlider.SetCurrent(fog * 100);
  553. m_FogValueSetText.SetText(fog.ToString());
  554. float rain = GetGame().GetWeather().GetRain().GetActual();
  555. m_RainValueGetSlider.SetCurrent(rain * 100);
  556. m_RainValueSetText.SetText(rain.ToString());
  557. float snowfall = GetGame().GetWeather().GetSnowfall().GetActual();
  558. m_SnowfallValueGetSlider.SetCurrent(snowfall * 100);
  559. m_SnowfallValueSetText.SetText(snowfall.ToString());
  560. }
  561. }