Advertisement
Guest User

Untitled

a guest
May 14th, 2024
37
0
163 days
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 12.16 KB | Gaming | 0 0
  1. class "main_menu"(CUIScriptWnd)
  2.  
  3. function main_menu:__init() super()
  4. self.mbox_mode = 0
  5. _G.g_menu = self
  6. self:InitControls()
  7. wprintf("[~T].~CF0 #DBG: main_menu created, namespace =~CF2 %s~C07", script_namespace or 'nil')
  8. self:InitCallBacks()
  9. self:InitGameSetupMenu()
  10. local yn = {}
  11. yn[false] = "~C0C No~C07"
  12. yn[true] = "~C0A Yes~C07"
  13. if db.actor then
  14. local inv_show = yn [db.actor:has_info("ui_inventory")] or 'nil'
  15. local inv_hide = yn [db.actor:has_info("ui_inventory_hide")] or 'nil'
  16. local gadget = yn [used_items.can_use_gadget()] or 'nil'
  17. local wpn_hide = yn [bind_stalker.self_weapon_hide] or 'nil'
  18.  
  19. wprintf("[~T]. #DBG: last binder update =~C0F %s~C07, inventory { show = %s, hide = %s }, can use gadget = %s, weapon hide = %s ",
  20. last_upd_time or 'nil', inv_show, inv_hide, gadget, wpn_hide)
  21. end
  22.  
  23. end
  24.  
  25. function main_menu:__finalize()
  26.  
  27. end
  28.  
  29. function main_menu:InitControls()
  30. self:Init(0,0,1024,768)
  31. local xml = CScriptXmlInit()
  32. xml:ParseFile("ui_mm_main.xml")
  33.  
  34. xml:InitStatic("back_movie", self)
  35. xml:InitStatic("background", self)
  36. xml:InitAnimStatic ("anim_00", self)
  37. xml:InitAnimStatic ("anim_01", self)
  38. self.shniaga = xml:InitMMShniaga("shniaga_wnd",self);
  39.  
  40. self.message_box = CUIMessageBoxEx()
  41. self:Register(self.message_box, "msg_box")
  42. local sak_title = game.translate_string("st_mp_voting_failed")
  43. local sak_version = ""
  44. if xr_build_id then sak_version = tostring(xr_build_id) end
  45. local mod_ver = xml:InitStatic("mod_version",self)
  46. mod_ver:SetText (sak_title .. " (build " .. sak_version .. ")")
  47. end
  48.  
  49. function main_menu:Show(f)
  50. self.shniaga:SetVisibleMagnifier(f)
  51. end
  52.  
  53.  
  54. function main_menu:InitCallBacks()
  55.  
  56. self:AddCallback( "btn_options", ui_events.BUTTON_CLICKED, self.OnButton_options_clicked, self )
  57. self:AddCallback( "msg_box", ui_events.MESSAGE_BOX_OK_CLICKED, self.OnMsgOk, self )
  58. self:AddCallback( "msg_box", ui_events.MESSAGE_BOX_CANCEL_CLICKED, self.OnMsgCancel, self )
  59. self:AddCallback( "msg_box", ui_events.MESSAGE_BOX_YES_CLICKED, self.OnMsgYes, self )
  60. self:AddCallback( "msg_box", ui_events.MESSAGE_BOX_NO_CLICKED, self.OnMsgNo, self )
  61. self:AddCallback( "msg_box", ui_events.MESSAGE_BOX_QUIT_GAME_CLICKED, self.OnMessageQuitGame, self )
  62. self:AddCallback( "msg_box", ui_events.MESSAGE_BOX_QUIT_WIN_CLICKED, self.OnMessageQuitWin, self )
  63. self:AddCallback( "msg_box_btn", ui_events.BUTTON_CLICKED, self.OnMessageCheckSave, self )
  64. self:AddCallback( "btn_quit", ui_events.BUTTON_CLICKED, self.OnButton_quit_clicked, self )
  65. self:AddCallback( "btn_quit_to_mm", ui_events.BUTTON_CLICKED, self.OnButton_disconnect_clicked, self )
  66. if not self.err_mod then
  67. self:AddCallback( "btn_novice", ui_events.BUTTON_CLICKED, self.OnButton_new_novice_game, self )
  68. self:AddCallback( "btn_stalker", ui_events.BUTTON_CLICKED, self.OnButton_new_stalker_game, self )
  69. self:AddCallback( "btn_veteran", ui_events.BUTTON_CLICKED, self.OnButton_new_veteran_game, self )
  70. self:AddCallback( "btn_master", ui_events.BUTTON_CLICKED, self.OnButton_new_master_game, self )
  71. self:AddCallback( "btn_load", ui_events.BUTTON_CLICKED, self.OnButton_load_clicked, self )
  72. self:AddCallback( "btn_multiplayer", ui_events.BUTTON_CLICKED, self.OnButton_multiplayer_clicked, self )
  73. self:AddCallback( "btn_ret", ui_events.BUTTON_CLICKED, self.OnButton_return_game, self )
  74. -- self:AddCallback( "btn_spawn", ui_events.BUTTON_CLICKED, self.OnButton_load_spawn, self )
  75. end
  76. end
  77. function main_menu:OnMsgOk()
  78. self.mbox_mode = 0
  79. end
  80.  
  81. function main_menu:OnMsgCancel()
  82. self.mbox_mode = 0
  83. end
  84.  
  85. function main_menu:OnMsgYes()
  86.  
  87. if self.mbox_mode==1 then
  88. self:LoadLastSave()
  89. end
  90.  
  91. self.mbox_mode = 0
  92. end
  93.  
  94. function main_menu:OnMsgNo()
  95. self.mbox_mode = 0
  96. end
  97.  
  98. function main_menu:LoadLastSave()
  99. local console = get_console()
  100. console:execute ("main_menu off")
  101. console:execute ("load_last_save")
  102. end
  103.  
  104. function main_menu:OnButton_last_save()
  105. if (alife()==nil) then
  106. self:LoadLastSave ()
  107. return
  108. end
  109. self.mbox_mode = 1
  110. self.message_box:Init ("message_box_confirm_load_save")
  111. self:GetHolder():start_stop_menu(self.message_box, true)
  112. end
  113.  
  114. function main_menu:OnButton_credits_clicked()
  115. game.start_tutorial("credits_seq")
  116. end
  117.  
  118. function main_menu:OnButton_quit_clicked()
  119. self.message_box:Init("message_box_quit_windows")
  120. self:GetHolder():start_stop_menu(self.message_box, true)
  121. end
  122.  
  123. function main_menu:OnMessageCheckSave()
  124. self.save_quit = self.message_box_btn:GetCheck()
  125. end
  126.  
  127. function main_menu:OnButton_disconnect_clicked()
  128. self.message_box:Init("message_box_quit_game")
  129.  
  130. if (level.game_id()~=1) then
  131. self.message_box:SetText("ui_mm_disconnect_message") -- MultiPlayer
  132. else
  133. self.message_box:SetText("ui_mm_quit_game_message") -- SinglePlayer
  134. end
  135. self:GetHolder():start_stop_menu(self.message_box, true)
  136. end
  137.  
  138. function main_menu:OnMessageQuitGame()
  139. local console = get_console()
  140. console:execute("disconnect")
  141. end
  142.  
  143. function main_menu:OnMessageQuitWin()
  144. xr_statistic.save_gametime()
  145. ExitProcess()
  146. end
  147.  
  148. function main_menu:OnButton_return_game()
  149. local console = get_console()
  150. console:execute("main_menu off")
  151. end
  152.  
  153. function main_menu:StartGame()
  154. local console = get_console()
  155.  
  156. if (alife()~=nil) then
  157. console:execute ("disconnect")
  158. end
  159.  
  160. SetGlobalVar("new_game", "now") -- in session var
  161. console:execute("start server(all/single/alife/new) client(localhost)")
  162. console:execute("main_menu off")
  163. end
  164.  
  165. function main_menu:NewGameStart(hard_level)
  166. local console = get_console()
  167. console:execute("g_game_difficulty "..hard_level)
  168. self:StartGame()
  169. end
  170.  
  171. function main_menu:OnButton_new_novice_game()
  172. self:NewGameStart("gd_novice")
  173. end
  174.  
  175. function main_menu:OnButton_new_stalker_game()
  176. self:NewGameStart("gd_stalker")
  177. end
  178.  
  179. function main_menu:OnButton_new_veteran_game()
  180. self:NewGameStart("gd_veteran")
  181. end
  182.  
  183. function main_menu:OnButton_new_master_game()
  184. self:NewGameStart("gd_master")
  185. end
  186.  
  187. function main_menu:OnButton_load_spawn()
  188. if self.spawn_dlg == nil then
  189. self.spawn_dlg = spawner.spawn_items_dialog()
  190. self.spawn_dlg.owner = self
  191. end
  192.  
  193. self:GetHolder():start_stop_menu(self.spawn_dlg, true)
  194. self:GetHolder():start_stop_menu(self, true)
  195. self:Show(false)
  196. end
  197.  
  198. function main_menu:OnButton_save_clicked()
  199. if self.save_dlg==nil then
  200. self.save_dlg = ui_save_dialog.save_dialog()
  201. self.save_dlg.owner = self
  202. end
  203.  
  204. self:GetHolder():start_stop_menu(self.save_dlg, true)
  205. self:GetHolder():start_stop_menu(self, true)
  206. self:Show(false)
  207. end
  208.  
  209. function main_menu:OnButton_options_clicked()
  210. if self.opt_dlg==nil then
  211. self.opt_dlg = ui_mm_opt_main.options_dialog()
  212. self.opt_dlg.owner = self
  213. end
  214.  
  215. self.opt_dlg:UpdateControls()
  216. self:GetHolder():start_stop_menu(self.opt_dlg, true)
  217. self:GetHolder():start_stop_menu(self, true)
  218. self:Show(false)
  219. end
  220.  
  221. function main_menu:OnButton_load_clicked()
  222. if self.load_dlg ==nil then
  223. self.load_dlg = ui_load_dialog.load_dialog()
  224. self.load_dlg.owner = self
  225. end
  226.  
  227. self:GetHolder():start_stop_menu(self.load_dlg, true)
  228. self:GetHolder():start_stop_menu(self, true)
  229. self:Show(false)
  230. end
  231.  
  232. function main_menu:OnButton_multiplayer_clicked()
  233. if self.mp_dlg ==nil then
  234. self.mp_dlg = ui_mp_main.mp_main()
  235. self.mp_dlg.owner = self
  236. end
  237. self.mp_dlg:UpdateControls()
  238. self:GetHolder():start_stop_menu(self.mp_dlg, true)
  239. self:GetHolder():start_stop_menu(self, true)
  240. self:Show(false)
  241.  
  242. local console = get_console()
  243. console:execute ("check_for_updates 0")
  244.  
  245. self.mp_dlg:OnRadio_NetChanged()
  246. end
  247.  
  248. function main_menu:Dispatch(cmd, param)
  249. if cmd==2 then
  250. self:OnButton_multiplayer_clicked()
  251. end
  252. return true
  253. end
  254.  
  255. function zero(z)
  256. if z < 10 then z="0"..z end
  257. return z
  258. end
  259.  
  260. function main_menu:OnKeyboard(dik, keyboard_action)
  261. CUIScriptWnd.OnKeyboard(self,dik,keyboard_action)
  262. local bind = dik_to_bind(dik)
  263. local console = get_console()
  264. if keyboard_action==ui_events.WINDOW_KEY_PRESSED then
  265.  
  266. if dik == DIK_keys.DIK_ESCAPE then
  267. if
  268. level.present()
  269. and( db.actor ~= nil )
  270. and db.actor:alive()
  271. then
  272. console:execute( "main_menu off" )
  273. end
  274. end
  275.  
  276. if dik == DIK_keys.DIK_F4 then
  277. self:show_position_informer_window()
  278. elseif dik == DIK_keys.DIK_F3 then
  279. if level.present() and db.actor ~= nil and db.actor:alive() then
  280. if not dsh_coordinator.GlobalEnable then
  281. dsh_coordinator.subscribe()
  282. else
  283. dsh_coordinator.unsubscribe()
  284. end
  285. -- console:execute( "main_menu off" )
  286. end
  287. elseif dik == DIK_keys.DIK_V then
  288. get_console():execute( "vid_restart" )
  289. --elseif dik == DIK_keys.DIK_F1 and db.actor:has_info( "cheat" ) then
  290. elseif dik == DIK_keys.DIK_F1 and game_options.Spawner then
  291. self:OnButton_load_spawn()
  292. end
  293. end
  294. return true
  295. end
  296.  
  297. --[[ self:collect_info()
  298. function main_menu:collect_info()
  299. if self.spawn_dlg == nil then
  300. self.spawn_dlg = ui_info_menu.CUIInfoMenu()
  301. self.spawn_dlg.owner = self
  302. end
  303. self:GetHolder():start_stop_menu(self.spawn_dlg, true)
  304. self:GetHolder():start_stop_menu(self, true) --new
  305. self:Show(false)
  306. end
  307. ]]--
  308.  
  309. function main_menu:show_position_informer_window()
  310. if self.cheat_dlg == nil then
  311. self.cheat_dlg = positioninformer.pi()
  312. self.cheat_dlg.owner = self
  313. end
  314. self:GetHolder():start_stop_menu( self.cheat_dlg, true )
  315. self:GetHolder():start_stop_menu( self, true )
  316. self:Show( true )
  317. end
  318.  
  319. function main_menu:ppe_menu_show()
  320. if self.ppe_dlg == nil then
  321. self.ppe_dlg = play_ppe.ppe()
  322. self.ppe_dlg.owner = self
  323. end
  324. self:GetHolder():start_stop_menu( self.ppe_dlg, true )
  325. self:GetHolder():start_stop_menu( self, true )
  326. self:Show(true)
  327. end
  328.  
  329. function main_menu:Get_Adaptation_SSVersion()
  330. if self.iGSVer >= 6 and self.iGSVer==self.iSSVer then return true end
  331. local f = getFS()
  332. local sConfigDir = "$game_config$"
  333. local sFileMask = "system_script"
  334. local sFileSys = sFileMask..".ltx"
  335. local sFileOld = sFileMask..".bak"
  336. local sFileVer = "template_script_"..tostring( self.iGSVer ) .. ".src"
  337. if f:exist( sConfigDir, sFileVer ) then
  338. local sFullNameFileVer = f:update_path( sConfigDir, sFileVer )
  339. local sFullNameFileSys = f:update_path( sConfigDir, sFileSys )
  340. local sFullNameFileOld = f:update_path( sConfigDir, sFileOld )
  341. if f:exist( sConfigDir, sFileSys ) then
  342. if f:exist( sConfigDir, sFileOld ) then
  343. f:file_delete( sFullNameFileOld )
  344. end
  345. f:file_rename( sFullNameFileSys, sFullNameFileOld, true )
  346. end
  347. f:file_copy( sFullNameFileVer, sFullNameFileSys )
  348. local iVerLtx = utils.cfg_get_number( ini_file( sFileSys ), "script", "current_server_entity_version", false, -1 )
  349. return iVerLtx == self.iGSVer
  350. else
  351. end
  352. return false
  353. end
  354.  
  355. function main_menu:InitGameSetupMenu()
  356. local fs = getFS()
  357. if fs:exist("$app_data_root$", "game.options") == nil then
  358. local f1 = fs:update_path("$fs_root$", "fsgame.ltx")
  359. local f2 = fs:update_path("$app_data_root$", "game.options")
  360. fs:file_copy(f1, f2)
  361. save_game_options()
  362. else
  363. local file = io.open(fs:update_path("$app_data_root$", "game.options"), "r")
  364. local opt, val, n = "", "", 0
  365. local m = _G[script_name()]
  366. for line in file:lines() do
  367. opt, val = string.match(line, "([%w_]+)%s*=%s*(.+)")
  368. -- log("load options: "..tostring(opt).." = "..tostring(val))
  369. if opt and m[opt]~=nil then
  370. n = tonumber(val)
  371. if n then m[opt] = n
  372. elseif val=='true' then m[opt] = true
  373. elseif val=='false' then m[opt] = false
  374. elseif val~="" then m[opt] = val end
  375. end
  376. end
  377. file:close(file)
  378. end
  379. end
  380.  
  381. xray_dma.init()
  382. if _g.lua_random then ui_load_tex.RandomUILoadTex() end
  383. mp_ranks.do_get_rank_patch()
  384.  
  385. if list_tools.record_list and windows.CUIScriptDialog then wprintf("~CA0[~T]. #OK: class extensions found ~C07") end
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement