uipopupscriptscenesettings.c 9.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323
  1. class UIPopupScriptSceneSettings extends UIPopupScript
  2. {
  3. private static const int m_DaysInMonth[12] = { 31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31 };
  4. private ButtonWidget m_BtnSave;
  5. private ButtonWidget m_BtnCancel;
  6. private TextWidget m_TxtWeatherTime;
  7. private SliderWidget m_SldStartTime;
  8. private TextWidget m_TxtStartTimeValue;
  9. private SliderWidget m_SldStartDay;
  10. private TextWidget m_TxtStartDayValue;
  11. private SliderWidget m_SldOvercast;
  12. private TextWidget m_TxtOvercastValue;
  13. private SliderWidget m_SldRain;
  14. private TextWidget m_TxtRainValue;
  15. private SliderWidget m_SldFog;
  16. private TextWidget m_TxtFogValue;
  17. private SliderWidget m_SldWindForce;
  18. private TextWidget m_TxtWindForceValue;
  19. private int m_OrigYear;
  20. private int m_OrigMonth;
  21. private int m_OrigDay;
  22. private int m_OrigHour;
  23. private int m_OrigMinute;
  24. private float m_OrigOvercast;
  25. private float m_OrigRain;
  26. private float m_OrigFog;
  27. private float m_OrigWindForce;
  28. private int m_CurrYear;
  29. private int m_CurrMonth;
  30. private int m_CurrDay;
  31. private int m_CurrHour;
  32. private int m_CurrMinute;
  33. private float m_CurrOvercast;
  34. private float m_CurrRain;
  35. private float m_CurrFog;
  36. private float m_CurrWindForce;
  37. //================================================
  38. // UIPopupScriptSceneSettings
  39. //================================================
  40. void UIPopupScriptSceneSettings(Widget wgt)
  41. {
  42. m_BtnSave = ButtonWidget.Cast( wgt.FindAnyWidget("btn_ppp_st_save") );
  43. m_BtnCancel = ButtonWidget.Cast( wgt.FindAnyWidget("btn_ppp_st_cancel") );
  44. m_TxtWeatherTime = TextWidget.Cast( wgt.FindAnyWidget("txt_ppp_st_w_time_value") );
  45. m_SldStartTime = SliderWidget.Cast( wgt.FindAnyWidget("sld_ppp_st_start_time") );
  46. m_TxtStartTimeValue = TextWidget.Cast( wgt.FindAnyWidget("txt_ppp_st_start_time_value") );
  47. m_SldStartDay = SliderWidget.Cast( wgt.FindAnyWidget("sld_ppp_st_start_day") );
  48. m_TxtStartDayValue = TextWidget.Cast( wgt.FindAnyWidget("txt_ppp_st_start_day_value") );
  49. m_SldOvercast = SliderWidget.Cast( wgt.FindAnyWidget("sld_ppp_st_overcast") );
  50. m_TxtOvercastValue = TextWidget.Cast( wgt.FindAnyWidget("txt_ppp_st_overcast_value") );
  51. m_SldRain = SliderWidget.Cast( wgt.FindAnyWidget("sld_ppp_st_rain") );
  52. m_TxtRainValue = TextWidget.Cast( wgt.FindAnyWidget("txt_ppp_st_rain_value") );
  53. m_SldFog = SliderWidget.Cast( wgt.FindAnyWidget("sld_ppp_st_fog") );
  54. m_TxtFogValue = TextWidget.Cast( wgt.FindAnyWidget("txt_ppp_st_fog_value") );
  55. m_SldWindForce = SliderWidget.Cast( wgt.FindAnyWidget("sld_ppp_st_wind_force") );
  56. m_TxtWindForceValue = TextWidget.Cast( wgt.FindAnyWidget("txt_ppp_st_wind_force_value") );
  57. }
  58. void ~UIPopupScriptSceneSettings()
  59. {
  60. GetGame().GetUpdateQueue(CALL_CATEGORY_SYSTEM).Remove(this.OnUpdate);
  61. }
  62. //================================================
  63. // OnClick
  64. //================================================
  65. override bool OnClick(Widget w, int x, int y, int button)
  66. {
  67. super.OnClick(w, x, y, button);
  68. if ( w == m_BtnSave )
  69. {
  70. m_OrigYear = m_CurrYear;
  71. m_OrigMonth = m_CurrMonth;
  72. m_OrigDay = m_CurrDay;
  73. m_OrigHour = m_CurrHour;
  74. m_OrigMinute = m_CurrMinute;
  75. m_OrigOvercast = m_CurrOvercast;
  76. m_OrigRain = m_CurrRain;
  77. m_OrigFog = m_CurrFog;
  78. m_OrigWindForce = m_CurrWindForce;
  79. PluginSceneManager editor = PluginSceneManager.Cast( GetPlugin(PluginSceneManager) );
  80. editor.SetWeather(m_CurrOvercast, m_CurrRain, m_CurrFog, m_CurrWindForce);
  81. editor.SetDate(m_CurrYear, m_CurrMonth, m_CurrDay, m_CurrHour, m_CurrMinute);
  82. PopupBack();
  83. return true;
  84. }
  85. else if ( w == m_BtnCancel )
  86. {
  87. PopupBack();
  88. return true;
  89. }
  90. return false;
  91. }
  92. override bool OnChange(Widget w, int x, int y, bool finished)
  93. {
  94. if ( w == m_SldStartTime )
  95. {
  96. float slider_value_start_time = m_SldStartTime.GetCurrent() * 0.01;
  97. float start_time_f = slider_value_start_time * 1439;
  98. int start_time = start_time_f;
  99. m_CurrHour = start_time / 60;
  100. m_CurrMinute = start_time % 60;
  101. UpdateSliderStartTime( m_CurrHour, m_CurrMinute );
  102. GetGame().GetWorld().SetDate( m_CurrYear, m_CurrMonth, m_CurrDay, m_CurrHour, m_CurrMinute );
  103. return true;
  104. }
  105. else if ( w == m_SldStartDay )
  106. {
  107. float slider_value_start_day = m_SldStartDay.GetCurrent();
  108. float start_day_f = slider_value_start_day * 3.64 + 1;
  109. int start_day = start_day_f;
  110. for ( int i = 0; i < 12; i++ )
  111. {
  112. int days = m_DaysInMonth[i];
  113. if ( start_day <= days )
  114. {
  115. m_CurrMonth = i+1;
  116. m_CurrDay = start_day;
  117. break;
  118. }
  119. else
  120. {
  121. start_day -= days;
  122. }
  123. }
  124. UpdateSliderStartDay( m_CurrMonth, m_CurrDay );
  125. GetGame().GetWorld().SetDate( m_CurrYear, m_CurrMonth, m_CurrDay, m_CurrHour, m_CurrMinute );
  126. return true;
  127. }
  128. else if ( w == m_SldOvercast )
  129. {
  130. UpdateSliderOvercast();
  131. m_CurrOvercast = m_SldOvercast.GetCurrent() * 0.01;
  132. GetGame().GetWeather().GetOvercast().Set( m_CurrOvercast, 0, 1000 );
  133. return true;
  134. }
  135. else if ( w == m_SldRain )
  136. {
  137. UpdateSliderRain();
  138. m_CurrRain = m_SldRain.GetCurrent() * 0.01;
  139. GetGame().GetWeather().GetRain().Set( m_CurrRain, 0, 1000 );
  140. return true;
  141. }
  142. else if ( w == m_SldFog )
  143. {
  144. UpdateSliderFog();
  145. m_CurrFog = m_SldFog.GetCurrent() * 0.01;
  146. GetGame().GetWeather().GetFog().Set( m_CurrFog, 0, 1000 );
  147. return true;
  148. }
  149. else if ( w == m_SldWindForce )
  150. {
  151. UpdateSliderWindForce();
  152. m_CurrWindForce = m_SldWindForce.GetCurrent() * 0.01;
  153. //GetGame().GetWeather().SetWindSpeed( m_CurrWindForce );
  154. return true;
  155. }
  156. return false;
  157. }
  158. //================================================
  159. // OnOpen
  160. //================================================
  161. override void OnOpen(Param param)
  162. {
  163. GetGame().GetWorld().GetDate( m_OrigYear, m_OrigMonth, m_OrigDay, m_OrigHour, m_OrigMinute );
  164. Weather weather = GetGame().GetWeather();
  165. m_OrigOvercast = weather.GetOvercast().GetActual();
  166. m_OrigRain = weather.GetRain().GetActual();
  167. m_OrigFog = weather.GetFog().GetActual();
  168. m_OrigWindForce = weather.GetWindSpeed();
  169. m_CurrYear = m_OrigYear;
  170. m_CurrMonth = m_OrigMonth;
  171. m_CurrDay = m_OrigDay;
  172. m_CurrHour = m_OrigHour;
  173. m_CurrMinute = m_OrigMinute;
  174. m_CurrOvercast = m_OrigOvercast;
  175. m_CurrRain = m_OrigRain;
  176. m_CurrFog = m_OrigFog;
  177. m_CurrWindForce = m_OrigWindForce;
  178. Print( "Year" );
  179. Print( m_CurrYear );
  180. GetGame().GetUpdateQueue(CALL_CATEGORY_SYSTEM).Insert(this.OnUpdate);
  181. ResetSliders();
  182. }
  183. //================================================
  184. // OnClose
  185. //================================================
  186. override void OnClose()
  187. {
  188. Weather weather = GetGame().GetWeather();
  189. GetGame().GetWorld().SetDate( m_OrigYear, m_OrigMonth, m_OrigDay, m_OrigHour, m_OrigMinute );
  190. weather.GetOvercast().Set( m_OrigOvercast, 0, 1000 );
  191. weather.GetRain().Set( m_OrigRain, 0, 1000 );
  192. weather.GetFog().Set( m_OrigFog, 0, 1000 );
  193. //weather.SetWindSpeed( m_OrigWindForce );
  194. }
  195. //================================================
  196. // OnUpdate
  197. //================================================
  198. void OnUpdate()
  199. {
  200. m_TxtWeatherTime.SetText(GetGame().GetWeather().GetTime().ToString());
  201. }
  202. //================================================
  203. // ResetSliders
  204. //================================================
  205. void ResetSliders()
  206. {
  207. int year, month, day, hour, minute;
  208. GetGame().GetWorld().GetDate( year, month, day, hour, minute );
  209. m_SldStartTime.SetCurrent( ((hour * 60) + minute) / 14.39 );
  210. UpdateSliderStartTime( hour, minute );
  211. float start_day = day;
  212. int month_tmp = month;
  213. while ( month_tmp > 1 )
  214. {
  215. month_tmp--;
  216. start_day += m_DaysInMonth[month];
  217. }
  218. m_SldStartDay.SetCurrent( start_day / 3.64 );
  219. UpdateSliderStartDay( month, day );
  220. Weather weather = GetGame().GetWeather();
  221. m_SldOvercast.SetCurrent(weather.GetOvercast().GetActual() * 100);
  222. UpdateSliderOvercast();
  223. m_SldRain.SetCurrent(weather.GetRain().GetActual() * 100);
  224. UpdateSliderRain();
  225. m_SldFog.SetCurrent(weather.GetFog().GetActual() * 100);
  226. UpdateSliderFog();
  227. float slider_wind_value = ( weather.GetWindSpeed() / weather.GetWindMaximumSpeed() ) * 100;
  228. m_SldWindForce.SetCurrent( slider_wind_value );
  229. UpdateSliderWindForce();
  230. }
  231. void UpdateSliderStartTime( int hour, int minute )
  232. {
  233. string label_text = hour.ToStringLen(2) + ":" + minute.ToStringLen(2);
  234. m_TxtStartTimeValue.SetText( label_text );
  235. }
  236. void UpdateSliderStartDay( int month, int day )
  237. {
  238. string label_text = day.ToString() + "." + month.ToString() + ". " + m_CurrYear.ToString();
  239. m_TxtStartDayValue.SetText( label_text );
  240. }
  241. void UpdateSliderOvercast()
  242. {
  243. string label_text = m_SldOvercast.GetCurrent().ToString()+"%";
  244. m_TxtOvercastValue.SetText( label_text );
  245. }
  246. void UpdateSliderRain()
  247. {
  248. string label_text = m_SldRain.GetCurrent().ToString()+"%";
  249. m_TxtRainValue.SetText( label_text );
  250. }
  251. void UpdateSliderFog()
  252. {
  253. string label_text = m_SldFog.GetCurrent().ToString()+"%";
  254. m_TxtFogValue.SetText( label_text );
  255. }
  256. void UpdateSliderWindForce()
  257. {
  258. string label_text = m_SldWindForce.GetCurrent().ToString()+"%";
  259. m_TxtWindForceValue.SetText( label_text );
  260. }
  261. }