Advertisement
Guest User

Untitled

a guest
Feb 6th, 2017
175
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Lua 10.02 KB | None | 0 0
  1. local const      = require "lua modules/constants"
  2. local madgui     = require "lua modules/madgui"
  3. local gui_helper = require "lua modules/gui_helpers"
  4.  
  5. local function save_settings(self)
  6.     local focused_difficulty = self.focus_boxed[self.difficulty_selection]
  7.     local focused_control = self.focus_boxed[self.controls_selection]
  8.     local settings_table = {
  9.         selected_difficulty = self.difficulty_as_text[focused_difficulty],
  10.         selected_controls = self.controls_as_text[focused_control],
  11.         mouse_sensitivity = self.sensitivity_progress_bar.progress
  12.     }
  13.  
  14.     local my_file_path = sys.get_save_file("snake_tut", "settings")
  15.     print(my_file_path)
  16.     if not sys.save(my_file_path, settings_table) then
  17.         print("can't save!")
  18.     end
  19. end
  20.  
  21. function load_settings(self)
  22.     local my_file_path = sys.get_save_file("snake_tut", "settings")
  23.     local settings_table = sys.load(my_file_path)
  24.     if not next(settings_table) then
  25.         print("table is empty")
  26.         return
  27.     end
  28.  
  29.     if settings_table.selected_difficulty == "easy_input" then
  30.         gui_helper.refocus_on_immediate(self,
  31.             self.difficulty_selection,
  32.             self.easy_input,
  33.             self.color_lookup)
  34.     elseif settings_table.selected_difficulty == "normal_input" then
  35.         gui_helper.refocus_on_immediate(self,
  36.             self.difficulty_selection,
  37.             self.normal_input,
  38.             self.color_lookup)
  39.     else
  40.         gui_helper.refocus_on_immediate(self,
  41.             self.difficulty_selection,
  42.             self.hard_input,
  43.             self.color_lookup)
  44.     end
  45.  
  46.     if settings_table.selected_controls == "std_input" then
  47.         gui_helper.refocus_on_immediate(self,
  48.             self.controls_selection,
  49.             self.std_input,
  50.             nil)
  51.     else
  52.         gui_helper.refocus_on_immediate(self,
  53.             self.controls_selection,
  54.             self.two_btn_input,
  55.             nil)
  56.     end
  57.  
  58.     if settings_table.mouse_sensitivity ~= nil then
  59.         madgui.set_mouse_sensitivity(self.gui_manager,
  60.                                      settings_table.mouse_sensitivity)
  61.         madgui.set_progress_immediate(self.sensitivity_progress_bar,
  62.                             settings_table.mouse_sensitivity)
  63.     end
  64. end
  65.  
  66. local function start_level(self, lvl)
  67.     save_settings(self)
  68.     msg.post("main:/loader#loader",
  69.              "start_game",
  70.              {level = lvl})
  71. end
  72.  
  73. function init(self)
  74.     msg.post(".", "acquire_input_focus")
  75.  
  76.     self.settings_node   = gui.get_node(hash("settings"))
  77.     self.main_menu_node  = gui.get_node(hash("main_menu"))
  78.     self.level_menu_node = gui.get_node(hash("level_menu"))
  79.  
  80.     self.level_menu_lvl1  = gui.get_node(hash("level_menu_lvl1"))
  81.     self.level_menu_lvl2  = gui.get_node(hash("level_menu_lvl2"))
  82.     self.level_menu_lvl3  = gui.get_node(hash("level_menu_lvl3"))
  83.     self.level_menu_back  = gui.get_node(hash("level_menu_back"))
  84.     self.level_menu_focus = gui.get_node(hash("level_menu_focus"))
  85.  
  86.     self.main_menu_play     = gui.get_node(hash("main_menu_play"))
  87.     self.main_menu_settings = gui.get_node(hash("main_menu_settings"))
  88.     self.main_menu_quit     = gui.get_node(hash("main_menu_quit"))
  89.  
  90.     self.std_input        = gui.get_node(hash("std_input"))
  91.     self.two_btn_input    = gui.get_node(hash("two_btn_input"))
  92.     self.easy_input       = gui.get_node(hash("easy_input"))
  93.     self.normal_input     = gui.get_node(hash("normal_input"))
  94.     self.hard_input       = gui.get_node(hash("hard_input"))
  95.     self.sensitivity_down = gui.get_node(hash("sensitivity_down"))
  96.     self.sensitivity_up   = gui.get_node(hash("sensitivity_up"))
  97.     self.back_input       = gui.get_node(hash("back_input"))
  98.  
  99.     self.difficulty_selection = gui.get_node(hash("difficulty_selection"))
  100.     self.controls_selection   = gui.get_node(hash("controls_selection"))
  101.     self.focus                = gui.get_node(hash("focus"))
  102.     self.main_menu_focus      = gui.get_node(hash("main_menu_focus"))
  103.  
  104.     self.cursor_node          = gui.get_node(hash("cursor"))
  105.  
  106.     self.sensitivity_slider_visual = gui.get_node(hash("sensitivity_slider_visual"))
  107.  
  108.     self.controls_as_text = {
  109.         [self.std_input]     = "std_input",
  110.         [self.two_btn_input] = "two_btn_input"
  111.     }
  112.  
  113.     self.difficulty_as_text = {
  114.         [self.easy_input]   = "easy_input",
  115.         [self.normal_input] = "normal_input",
  116.         [self.hard_input]   = "hard_input"
  117.     }
  118.  
  119.     self.color_lookup = {
  120.         [self.easy_input]   = {
  121.             normal = const.color_green,
  122.             intense = const.color_green_intense},
  123.         [self.normal_input] = {
  124.             normal = const.color_yellow,
  125.             intense = const.color_yellow_intense},
  126.         [self.hard_input]   = {
  127.             normal = const.color_red,
  128.             intense = const.color_red_intense}
  129.     }
  130.  
  131.     self.gui_manager = madgui.create_gui_manager()
  132.     madgui.set_cursor(self.gui_manager, self.cursor_node)
  133.     madgui.set_mouse_sensitivity(self.gui_manager, 0.4)
  134.     self.sensitivity_progress_bar =
  135.         madgui.progress_bar(self.sensitivity_slider_visual,
  136.                             0.1, 0.4, 0.1)
  137.  
  138.     self.settings_page = madgui.add_page(self.gui_manager,
  139.                                          self.settings_node,
  140.                                          self.focus)
  141.     madgui.add_on_escape_callback(self.settings_page,
  142.                                   function()
  143.                                       madgui.activate(self.main_menu_page)
  144.                                   end)
  145.  
  146.     local chg_difficulty_selection =
  147.         function(new_node)
  148.             gui_helper.refocus_on_immediate(self.focus_boxed,
  149.                                             self.difficulty_selection,
  150.                                             new_node, self.color_lookup)
  151.         end
  152.  
  153.     local chg_controls_selection =
  154.         function(new_node)
  155.             gui_helper.refocus_on_immediate(self.focus_boxed,
  156.                                             self.controls_selection,
  157.                                             new_node, nil)
  158.         end
  159.  
  160.     madgui.add_button_row(self.settings_page, 1, nil,
  161.         { button_node = self.easy_input,
  162.           callback = function() chg_difficulty_selection(self.easy_input) end},
  163.         { button_node = self.normal_input,
  164.           callback = function() chg_difficulty_selection(self.normal_input) end},
  165.         { button_node = self.hard_input,
  166.           callback = function() chg_difficulty_selection(self.hard_input) end})
  167.  
  168.     madgui.add_button_row(self.settings_page, 4, nil,
  169.         { button_node = self.std_input,
  170.           callback = function() chg_controls_selection(self.std_input) end},
  171.         { button_node = self.two_btn_input,
  172.           callback = function() chg_controls_selection(self.two_btn_input) end})
  173.  
  174.     madgui.add_button_row(self.settings_page, 6, nil,
  175.         { button_node = self.sensitivity_down,
  176.           callback = function()
  177.               madgui.decrease_progress(self.sensitivity_progress_bar)
  178.               madgui.set_mouse_sensitivity(self.gui_manager,
  179.                   self.sensitivity_progress_bar.progress)
  180.           end},
  181.         { button_node = self.sensitivity_up,
  182.           callback = function()
  183.               madgui.increase_progress(self.sensitivity_progress_bar)
  184.               madgui.set_mouse_sensitivity(self.gui_manager,
  185.                   self.sensitivity_progress_bar.progress)
  186.           end})
  187.  
  188.     madgui.add_button_range(self.settings_page, true, 8,
  189.         { button_node = self.back_input,
  190.           callback = function()
  191.               madgui.activate(self.main_menu_page)
  192.           end})
  193.  
  194.     self.main_menu_page = madgui.add_page(self.gui_manager,
  195.                                           self.main_menu_node,
  196.                                           self.main_menu_focus)
  197.  
  198.     madgui.add_button_range(self.main_menu_page, false, 1,
  199.         { button_node = self.main_menu_play,
  200.           callback = function() madgui.activate(self.level_menu_page) end},
  201.         { button_node = self.main_menu_settings,
  202.           callback = function() madgui.activate(self.settings_page) end},
  203.         { button_node = self.main_menu_quit,
  204.           callback = function()
  205.               save_settings(self)
  206.               msg.post("@system:", "exit", {code = 0})
  207.           end})
  208.  
  209.     self.level_menu_page = madgui.add_page(self.gui_manager,
  210.                                            self.level_menu_node,
  211.                                            self.level_menu_focus)
  212.  
  213.     madgui.add_on_escape_callback(self.level_menu_page,
  214.                                   function()
  215.                                       madgui.activate(self.main_menu_page)
  216.                                   end)
  217.     madgui.add_button_range(self.level_menu_page, false, 1,
  218.         { button_node = self.level_menu_lvl1,
  219.           callback = function() start_level(self, 1) end},
  220.         { button_node = self.level_menu_lvl2,
  221.           callback = function() start_level(self, 2) end},
  222.         { button_node = self.level_menu_lvl3,
  223.           callback = function() start_level(self, 3) end},
  224.         { button_node = self.level_menu_back,
  225.           callback = function() madgui.activate(self.main_menu_page) end})
  226.  
  227.     self.focus_boxed = {
  228.         [self.controls_selection]    = self.std_input,
  229.         [self.difficulty_selection ] = self.easy_input
  230.     }
  231.  
  232.     gui.set_color(self.difficulty_selection, const.color_green)
  233.  
  234.     load_settings(self)
  235.  
  236.     madgui.activate(self.main_menu_page)
  237. end
  238.  
  239. function on_input(self, action_id, action)
  240.     madgui.handle_manager_input(self.gui_manager, action_id, action)
  241. end
  242.  
  243. function on_message(self, message_id, message, sender)
  244.     if message_id == hash("hide_menu") then
  245.         madgui.hide_all_pages(self.gui_manager)
  246.     end
  247.     if message_id == hash("show_menu") then
  248.         self.gui_manager.cursor_pos.x = message.cursor_x
  249.         self.gui_manager.cursor_pos.y = message.cursor_y
  250.         gui.set_position(self.cursor_node, self.gui_manager.cursor_pos)
  251.         madgui.activate(self.main_menu_page)
  252.     end
  253. end
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement