uipopupscriptscenemanager.c 13 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436
  1. class UIPopupScriptSceneManager extends UIPopupScript
  2. {
  3. private ButtonWidget m_BtnCancel;
  4. private ButtonWidget m_BtnSceneNew;
  5. private ButtonWidget m_BtnSceneLoad;
  6. private ButtonWidget m_BtnSceneRename;
  7. private ButtonWidget m_BtnSceneDuplicate;
  8. private ButtonWidget m_BtnSceneDelete;
  9. private TextListboxWidget m_LstListScenes;
  10. private static const int m_DaysInMonth[12] = { 31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31 };
  11. private ButtonWidget m_BtnSave;
  12. private TextWidget m_TxtWeatherTime;
  13. private SliderWidget m_SldStartTime;
  14. private TextWidget m_TxtStartTimeValue;
  15. private SliderWidget m_SldStartDay;
  16. private TextWidget m_TxtStartDayValue;
  17. private SliderWidget m_SldOvercast;
  18. private TextWidget m_TxtOvercastValue;
  19. private SliderWidget m_SldRain;
  20. private TextWidget m_TxtRainValue;
  21. private SliderWidget m_SldFog;
  22. private TextWidget m_TxtFogValue;
  23. private SliderWidget m_SldWindForce;
  24. private TextWidget m_TxtWindForceValue;
  25. private int m_OrigYear;
  26. private int m_OrigMonth;
  27. private int m_OrigDay;
  28. private int m_OrigHour;
  29. private int m_OrigMinute;
  30. private float m_OrigOvercast;
  31. private float m_OrigRain;
  32. private float m_OrigFog;
  33. private float m_OrigWindForce;
  34. private int m_CurrYear;
  35. private int m_CurrMonth;
  36. private int m_CurrDay;
  37. private int m_CurrHour;
  38. private int m_CurrMinute;
  39. private float m_CurrOvercast;
  40. private float m_CurrRain;
  41. private float m_CurrFog;
  42. private float m_CurrWindForce;
  43. //================================================
  44. // UIPopupScriptSceneManager
  45. //================================================
  46. void UIPopupScriptSceneManager(Widget wgt)
  47. {
  48. m_BtnCancel = ButtonWidget.Cast( wgt.FindAnyWidget("btn_ppp_sm_cancel") );
  49. m_BtnSceneNew = ButtonWidget.Cast( wgt.FindAnyWidget("btn_ppp_sm_mission_new") );
  50. m_BtnSceneLoad = ButtonWidget.Cast( wgt.FindAnyWidget("btn_ppp_sm_mission_load") );
  51. m_BtnSceneRename = ButtonWidget.Cast( wgt.FindAnyWidget("btn_ppp_sm_mission_rename") );
  52. m_BtnSceneDelete = ButtonWidget.Cast( wgt.FindAnyWidget("btn_ppp_sm_mission_delete") );
  53. m_BtnSceneDuplicate = ButtonWidget.Cast( wgt.FindAnyWidget("btn_ppp_sm_mission_duplicate") );
  54. m_LstListScenes = TextListboxWidget.Cast( wgt.FindAnyWidget("tls_ppp_sm_scene_list") );
  55. m_BtnSave = ButtonWidget.Cast( wgt.FindAnyWidget("btn_ppp_st_save") );
  56. m_TxtWeatherTime = TextWidget.Cast( wgt.FindAnyWidget("txt_ppp_st_w_time_value") );
  57. m_SldStartTime = SliderWidget.Cast( wgt.FindAnyWidget("sld_ppp_st_start_time") );
  58. m_TxtStartTimeValue = TextWidget.Cast( wgt.FindAnyWidget("txt_ppp_st_start_time_value") );
  59. m_SldStartDay = SliderWidget.Cast( wgt.FindAnyWidget("sld_ppp_st_start_day") );
  60. m_TxtStartDayValue = TextWidget.Cast( wgt.FindAnyWidget("txt_ppp_st_start_day_value") );
  61. m_SldOvercast = SliderWidget.Cast( wgt.FindAnyWidget("sld_ppp_st_overcast") );
  62. m_TxtOvercastValue = TextWidget.Cast( wgt.FindAnyWidget("txt_ppp_st_overcast_value") );
  63. m_SldRain = SliderWidget.Cast( wgt.FindAnyWidget("sld_ppp_st_rain") );
  64. m_TxtRainValue = TextWidget.Cast( wgt.FindAnyWidget("txt_ppp_st_rain_value") );
  65. m_SldFog = SliderWidget.Cast( wgt.FindAnyWidget("sld_ppp_st_fog") );
  66. m_TxtFogValue = TextWidget.Cast( wgt.FindAnyWidget("txt_ppp_st_fog_value") );
  67. m_SldWindForce = SliderWidget.Cast( wgt.FindAnyWidget("sld_ppp_st_wind_force") );
  68. m_TxtWindForceValue = TextWidget.Cast( wgt.FindAnyWidget("txt_ppp_st_wind_force_value") );
  69. }
  70. void ~UIPopupScriptSceneManager()
  71. {
  72. GetGame().GetUpdateQueue(CALL_CATEGORY_SYSTEM).Remove(this.OnUpdate);
  73. }
  74. //================================================
  75. // OnClick
  76. //================================================
  77. override bool OnClick(Widget w, int x, int y, int button)
  78. {
  79. super.OnClick(w, x, y, button);
  80. string scene_name;
  81. PluginSceneManager editor;
  82. if ( w == m_BtnCancel )
  83. {
  84. GetGame().GetWorld().SetDate( m_OrigYear, m_OrigMonth, m_OrigDay, m_OrigHour, m_OrigMinute );
  85. Weather weather = GetGame().GetWeather();
  86. weather.GetOvercast().Set( m_OrigOvercast, 0, 1000 );
  87. weather.GetRain().Set( m_OrigRain, 0, 1000 );
  88. weather.GetFog().Set( m_OrigFog, 0, 1000 );
  89. weather.SetWindSpeed( m_OrigWindForce );
  90. PopupBack();
  91. return true;
  92. }
  93. else if ( w == m_BtnSceneNew )
  94. {
  95. PopupOpen(SceneEditorMenu.POPUP_ID_SCENE_NEW, NULL);
  96. return true;
  97. }
  98. else if ( w == m_BtnSceneLoad )
  99. {
  100. if ( m_LstListScenes.GetSelectedRow() != -1 )
  101. {
  102. m_LstListScenes.GetItemText( m_LstListScenes.GetSelectedRow(), 0, scene_name );
  103. editor = PluginSceneManager.Cast( GetPlugin(PluginSceneManager) );
  104. editor.SceneLoad(scene_name);
  105. PopupBack();
  106. return true;
  107. }
  108. }
  109. else if ( w == m_BtnSceneRename )
  110. {
  111. m_LstListScenes.GetItemText( m_LstListScenes.GetSelectedRow(), 0, scene_name );
  112. UIPopupScriptSceneRename popup_rename = UIPopupScriptSceneRename.Cast( PopupOpen(SceneEditorMenu.POPUP_ID_SCENE_RENAME, NULL) );
  113. popup_rename.SetRenameName(scene_name);
  114. return true;
  115. }
  116. else if ( w == m_BtnSceneDuplicate )
  117. {
  118. if ( m_LstListScenes.GetSelectedRow() != -1 )
  119. {
  120. m_LstListScenes.GetItemText( m_LstListScenes.GetSelectedRow(), 0, scene_name );
  121. editor = PluginSceneManager.Cast( GetPlugin(PluginSceneManager) );
  122. editor.SceneDuplicate(scene_name);
  123. UpdateSceneList();
  124. return true;
  125. }
  126. }
  127. else if ( w == m_BtnSceneDelete )
  128. {
  129. if ( m_LstListScenes.GetSelectedRow() != -1 )
  130. {
  131. m_LstListScenes.GetItemText( m_LstListScenes.GetSelectedRow(), 0, scene_name );
  132. editor = PluginSceneManager.Cast( GetPlugin(PluginSceneManager) );
  133. editor.SceneDelete(scene_name);
  134. if ( editor.SceneCanDelete(scene_name) )
  135. {
  136. UIPopupScriptSceneDelete popup_delete = UIPopupScriptSceneDelete.Cast( PopupOpen(SceneEditorMenu.POPUP_ID_SCENE_DELETE, NULL) );
  137. popup_delete.SetDeleteName(scene_name);
  138. }
  139. else
  140. {
  141. UIPopupScriptNotify popup_notify = UIPopupScriptNotify.Cast( PopupOpen(SceneEditorMenu.POPUP_ID_NOTIFY, NULL) );
  142. popup_notify.SetLabelText("You cant delete current loaded scene!");
  143. }
  144. UpdateSceneList();
  145. return true;
  146. }
  147. }
  148. else if ( w == m_BtnSave )
  149. {
  150. m_OrigYear = m_CurrYear;
  151. m_OrigMonth = m_CurrMonth;
  152. m_OrigDay = m_CurrDay;
  153. m_OrigHour = m_CurrHour;
  154. m_OrigMinute = m_CurrMinute;
  155. m_OrigOvercast = m_CurrOvercast;
  156. m_OrigRain = m_CurrRain;
  157. m_OrigFog = m_CurrFog;
  158. m_OrigWindForce = m_CurrWindForce;
  159. editor = PluginSceneManager.Cast( GetPlugin(PluginSceneManager) );
  160. editor.SetWeather(m_CurrOvercast, m_CurrRain, m_CurrFog, m_CurrWindForce);
  161. editor.SetDate(m_CurrYear, m_CurrMonth, m_CurrDay, m_CurrHour, m_CurrMinute);
  162. editor.SceneSave();
  163. PopupBack();
  164. return true;
  165. }
  166. return false;
  167. }
  168. override bool OnChange(Widget w, int x, int y, bool finished)
  169. {
  170. if ( w == m_SldStartTime )
  171. {
  172. float slider_value_start_time = m_SldStartTime.GetCurrent() * 0.01;
  173. float start_time_f = slider_value_start_time * 1439;
  174. int start_time = start_time_f;
  175. m_CurrHour = start_time / 60;
  176. m_CurrMinute = start_time % 60;
  177. UpdateSliderStartTime( m_CurrHour, m_CurrMinute );
  178. GetGame().GetWorld().SetDate( m_CurrYear, m_CurrMonth, m_CurrDay, m_CurrHour, m_CurrMinute );
  179. return true;
  180. }
  181. else if ( w == m_SldStartDay )
  182. {
  183. float slider_value_start_day = m_SldStartDay.GetCurrent();
  184. float start_day_f = slider_value_start_day * 3.64 + 1;
  185. int start_day = start_day_f;
  186. for ( int i = 0; i < 12; i++ )
  187. {
  188. int days = m_DaysInMonth[i];
  189. if ( start_day <= days )
  190. {
  191. m_CurrMonth = i+1;
  192. m_CurrDay = start_day;
  193. break;
  194. }
  195. else
  196. {
  197. start_day -= days;
  198. }
  199. }
  200. UpdateSliderStartDay( m_CurrMonth, m_CurrDay );
  201. GetGame().GetWorld().SetDate( m_CurrYear, m_CurrMonth, m_CurrDay, m_CurrHour, m_CurrMinute );
  202. return true;
  203. }
  204. else if ( w == m_SldOvercast )
  205. {
  206. m_CurrOvercast = m_SldOvercast.GetCurrent() * 0.01;
  207. GetGame().GetWeather().GetOvercast().Set( m_CurrOvercast, 0, 1000 );
  208. UpdateSliderOvercast();
  209. return true;
  210. }
  211. else if ( w == m_SldRain )
  212. {
  213. m_CurrRain = m_SldRain.GetCurrent() * 0.01;
  214. GetGame().GetWeather().GetRain().Set( m_CurrRain, 0, 1000 );
  215. UpdateSliderRain();
  216. return true;
  217. }
  218. else if ( w == m_SldFog )
  219. {
  220. m_CurrFog = m_SldFog.GetCurrent() * 0.01;
  221. GetGame().GetWeather().GetFog().Set( m_CurrFog, 0, 1000 );
  222. UpdateSliderFog();
  223. return true;
  224. }
  225. else if ( w == m_SldWindForce )
  226. {
  227. float wind_slider = m_SldWindForce.GetCurrent() * 0.01;
  228. m_CurrWindForce = GetGame().GetWeather().GetWindMaximumSpeed() * wind_slider;
  229. GetGame().GetWeather().SetWindSpeed( m_CurrWindForce );
  230. UpdateSliderWindForce();
  231. return true;
  232. }
  233. return false;
  234. }
  235. //================================================
  236. // UpdateSceneList
  237. //================================================
  238. void UpdateSceneList()
  239. {
  240. m_LstListScenes.ClearItems();
  241. PluginSceneManager editor = PluginSceneManager.Cast( GetPlugin(PluginSceneManager) );
  242. TStringArray scene_list = editor.GetSceneList();
  243. string loaded_scene_name = editor.SceneGetName();
  244. for ( int i = 0; i < scene_list.Count(); ++i )
  245. {
  246. string scene_name = scene_list.Get(i);
  247. m_LstListScenes.AddItem(scene_name, NULL, 0);
  248. if ( scene_name == loaded_scene_name )
  249. {
  250. m_LstListScenes.SelectRow(i);
  251. }
  252. }
  253. }
  254. //================================================
  255. // UpdateSceneList
  256. //================================================
  257. override void OnOpen(Param param)
  258. {
  259. //Log("Poup Scene Manager OnOpen");
  260. UpdateSceneList();
  261. GetGame().GetWorld().GetDate( m_OrigYear, m_OrigMonth, m_OrigDay, m_OrigHour, m_OrigMinute );
  262. Weather weather = GetGame().GetWeather();
  263. m_OrigOvercast = weather.GetOvercast().GetActual();
  264. m_OrigRain = weather.GetRain().GetActual();
  265. m_OrigFog = weather.GetFog().GetActual();
  266. m_OrigWindForce = weather.GetWindSpeed();
  267. m_CurrYear = m_OrigYear;
  268. m_CurrMonth = m_OrigMonth;
  269. m_CurrDay = m_OrigDay;
  270. m_CurrHour = m_OrigHour;
  271. m_CurrMinute = m_OrigMinute;
  272. m_CurrOvercast = m_OrigOvercast;
  273. m_CurrRain = m_OrigRain;
  274. m_CurrFog = m_OrigFog;
  275. m_CurrWindForce = m_OrigWindForce;
  276. Print( "Year" );
  277. Print( m_CurrYear );
  278. GetGame().GetUpdateQueue(CALL_CATEGORY_SYSTEM).Insert(this.OnUpdate);
  279. ResetSliders();
  280. }
  281. //================================================
  282. // OnClose
  283. //================================================
  284. override void OnClose()
  285. {
  286. GetGame().GetUpdateQueue(CALL_CATEGORY_SYSTEM).Remove(this.OnUpdate);
  287. }
  288. //================================================
  289. // OnUpdate
  290. //================================================
  291. void OnUpdate()
  292. {
  293. m_TxtWeatherTime.SetText(GetGame().GetWeather().GetTime().ToString());
  294. }
  295. //================================================
  296. // ResetSliders
  297. //================================================
  298. void ResetSliders()
  299. {
  300. int year, month, day, hour, minute;
  301. GetGame().GetWorld().GetDate( year, month, day, hour, minute );
  302. m_SldStartTime.SetCurrent( ((hour * 60) + minute) / 14.39 );
  303. UpdateSliderStartTime( hour, minute );
  304. float start_day = day;
  305. int month_tmp = month;
  306. while ( month_tmp > 1 )
  307. {
  308. month_tmp--;
  309. start_day += m_DaysInMonth[month];
  310. }
  311. m_SldStartDay.SetCurrent( start_day / 3.64 );
  312. UpdateSliderStartDay( month, day );
  313. Weather weather = GetGame().GetWeather();
  314. m_SldOvercast.SetCurrent(weather.GetOvercast().GetActual() * 100);
  315. UpdateSliderOvercast();
  316. m_SldRain.SetCurrent(weather.GetRain().GetActual() * 100);
  317. UpdateSliderRain();
  318. m_SldFog.SetCurrent(weather.GetFog().GetActual() * 100);
  319. UpdateSliderFog();
  320. float wind_slider = m_SldWindForce.GetCurrent() * 0.01;
  321. m_CurrWindForce = weather.GetWindMaximumSpeed() * wind_slider;
  322. weather.SetWindSpeed( m_CurrWindForce );
  323. UpdateSliderWindForce();
  324. }
  325. void UpdateSliderStartTime( int hour, int minute )
  326. {
  327. string label_text = hour.ToStringLen(2) + ":" + minute.ToStringLen(2);
  328. m_TxtStartTimeValue.SetText( label_text );
  329. }
  330. void UpdateSliderStartDay( int month, int day )
  331. {
  332. string label_text = day.ToString() + "." + month.ToString() + ". " + m_CurrYear.ToString();
  333. m_TxtStartDayValue.SetText( label_text );
  334. }
  335. void UpdateSliderOvercast()
  336. {
  337. string label_text = m_SldOvercast.GetCurrent().ToString()+"%";
  338. m_TxtOvercastValue.SetText( label_text );
  339. }
  340. void UpdateSliderRain()
  341. {
  342. string label_text = m_SldRain.GetCurrent().ToString()+"%";
  343. m_TxtRainValue.SetText( label_text );
  344. }
  345. void UpdateSliderFog()
  346. {
  347. string label_text = m_SldFog.GetCurrent().ToString()+"%";
  348. m_TxtFogValue.SetText( label_text );
  349. }
  350. void UpdateSliderWindForce()
  351. {
  352. string label_text = m_CurrWindForce.ToString()+"ms";
  353. m_TxtWindForceValue.SetText( label_text );
  354. }
  355. }