Advertisement
Guest User

SimpleMenu implementation of Spawn Stuff by gir489 v2

a guest
Feb 11th, 2015
455
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Lua 10.55 KB | None | 0 0
  1. --[[ * SimpleMenu implementation of Spawn Stuff by gir489 v2
  2.      *
  3.      * Credits;
  4.      *          Harfatus for SimpleMenu.
  5.      *          SquareOne for the precache fix for U31.
  6.      *
  7.      * Changelog:
  8.      *      v1: Initial release
  9.      *      v2: Split melee weapons in to two groups.
  10.      *
  11.      *  Not for use in Pirate Perfagtion Trainer]]
  12. if not SimpleMenu then
  13.     SimpleMenu = class()
  14.  
  15.     function SimpleMenu:init(title, message, options)
  16.         self.dialog_data = { title = title, text = message, button_list = {},
  17.                              id = tostring(math.random(0,0xFFFFFFFF)) }
  18.         self.visible = false
  19.         for _,opt in ipairs(options) do
  20.             local elem = {}
  21.             elem.text = opt.text
  22.             opt.data = opt.data or nil
  23.             opt.callback = opt.callback or nil
  24.             elem.callback_func = callback(self, self, "_do_callback",
  25.                                           { data = opt.data,
  26.                                             callback = opt.callback})
  27.             elem.cancel_button = opt.is_cancel_button or false
  28.             if opt.is_focused_button then
  29.                 self.dialog_data.focus_button = #self.dialog_data.button_list+1
  30.             end
  31.             table.insert(self.dialog_data.button_list, elem)
  32.         end
  33.         return self
  34.     end
  35.  
  36.     function SimpleMenu:_do_callback(info)
  37.         if info.callback then
  38.             if info.data then
  39.                 info.callback(info.data)
  40.             else
  41.                 info.callback()
  42.             end
  43.         end
  44.         self.visible = false
  45.     end
  46.  
  47.     function SimpleMenu:show()
  48.         if self.visible then
  49.             return
  50.         end
  51.         self.visible = true
  52.         managers.system_menu:show(self.dialog_data)
  53.     end
  54.  
  55.     function SimpleMenu:hide()
  56.         if self.visible then
  57.             managers.system_menu:close(self.dialog_data.id)
  58.             self.visible = false
  59.             return
  60.         end
  61.     end
  62. end
  63.  
  64. patched_update_input = patched_update_input or function (self, t, dt )
  65.     if self._data.no_buttons then
  66.         return
  67.     end
  68.    
  69.     local dir, move_time
  70.     local move = self._controller:get_input_axis( "menu_move" )
  71.  
  72.     if( self._controller:get_input_bool( "menu_down" )) then
  73.         dir = 1
  74.     elseif( self._controller:get_input_bool( "menu_up" )) then
  75.         dir = -1
  76.     end
  77.    
  78.     if dir == nil then
  79.         if move.y > self.MOVE_AXIS_LIMIT then
  80.             dir = 1
  81.         elseif move.y < -self.MOVE_AXIS_LIMIT then
  82.             dir = -1
  83.         end
  84.     end
  85.  
  86.     if dir ~= nil then
  87.         if( ( self._move_button_dir == dir ) and self._move_button_time and ( t < self._move_button_time + self.MOVE_AXIS_DELAY ) ) then
  88.             move_time = self._move_button_time or t
  89.         else
  90.             self._panel_script:change_focus_button( dir )
  91.             move_time = t
  92.         end
  93.     end
  94.  
  95.     self._move_button_dir = dir
  96.     self._move_button_time = move_time
  97.    
  98.     local scroll = self._controller:get_input_axis( "menu_scroll" )
  99.     -- local sdir
  100.     if( scroll.y > self.MOVE_AXIS_LIMIT ) then
  101.         self._panel_script:scroll_up()
  102.         -- sdir = 1
  103.     elseif( scroll.y < -self.MOVE_AXIS_LIMIT ) then
  104.         self._panel_script:scroll_down()
  105.         -- sdir = -1
  106.     end
  107. end
  108. managers.system_menu.DIALOG_CLASS.update_input = patched_update_input
  109. managers.system_menu.GENERIC_DIALOG_CLASS.update_input = patched_update_input
  110.  
  111. spawnprimarycallback = spawnprimarycallback or function(info)
  112.     if ( managers.player:player_unit() ) then
  113.         local weapon = Global.blackmarket_manager.crafted_items.primaries[info]
  114.         if weapon then
  115.             managers.blackmarket:equip_weapon("primaries", info)
  116.             managers.network:session():send_to_peers_synched("set_unit", managers.player:player_unit(), managers.network:session():local_peer():character(), managers.blackmarket:outfit_string(), managers.network:session():local_peer():outfit_version(), managers.network:session():local_peer():id())
  117.             managers.dyn_resource:load(Idstring("unit"), Idstring(tweak_data.weapon.factory[weapon.factory_id].unit), "packages/dyn_resources", false)
  118.             managers.player:player_unit():inventory():add_unit_by_factory_name( weapon.factory_id, false, false, weapon.blueprint, weapon.texture_switches )
  119.         end
  120.     end
  121. end
  122.  
  123. spawnsecondarycallback = spawnsecondarycallback or function(info)
  124.     if ( managers.player:player_unit() ) then
  125.         local weapon = Global.blackmarket_manager.crafted_items.secondaries[info]
  126.         if weapon then
  127.             managers.blackmarket:equip_weapon("secondaries", info)
  128.             managers.network:session():send_to_peers_synched("set_unit", managers.player:player_unit(), managers.network:session():local_peer():character(), managers.blackmarket:outfit_string(), managers.network:session():local_peer():outfit_version(), managers.network:session():local_peer():id())
  129.             managers.player:player_unit():inventory():add_unit_by_factory_name( weapon.factory_id, false, false, weapon.blueprint, weapon.texture_switches )
  130.         end
  131.     end
  132. end
  133.  
  134. equiparmorcallback = equiparmorcallback or function(info)
  135.     if ( managers.player:player_unit() ) then
  136.         if info then
  137.             managers.blackmarket:equip_armor(info)
  138.             managers.network:session():send_to_peers_synched("set_unit", managers.player:player_unit(), managers.network:session():local_peer():character(), managers.blackmarket:outfit_string(), managers.network:session():local_peer():outfit_version(), managers.network:session():local_peer():id())
  139.             managers.player:player_unit():_reload_outfit()
  140.         end
  141.     end
  142. end
  143.  
  144. --changemaskcallback = changemaskcallback or function(info)
  145. function changemaskcallback(info)
  146.     if ( managers.player:player_unit() ) then
  147.         if info then
  148.             managers.player:set_player_state("mask_off")
  149.             managers.blackmarket:equip_mask(info)
  150.             managers.network:session():send_after_load("set_unit", managers.player:player_unit(), managers.network:session():local_peer():character(), managers.blackmarket:outfit_string(), managers.network:session():local_peer():outfit_version(), managers.network:session():local_peer():id())
  151.             managers.player:player_unit():_reload_outfit()
  152.             managers.player:set_player_state("standard")
  153.         end
  154.     end
  155. end
  156.  
  157. spawnmeleecallback = spawnmeleecallback or function(info)
  158.     if ( managers.player:player_unit() ) then
  159.         if info then
  160.             managers.blackmarket:equip_melee_weapon(info)
  161.             managers.network:session():send_to_peers_synched("set_unit", managers.player:player_unit(), managers.network:session():local_peer():character(), managers.blackmarket:outfit_string(), managers.network:session():local_peer():outfit_version(), managers.network:session():local_peer():id())
  162.             managers.player:player_unit():_reload_outfit()
  163.         end
  164.     end
  165. end
  166.  
  167. function doPrimary(info)
  168.     opts = {}
  169.     for i,weapon in pairs(Global.blackmarket_manager.crafted_items.primaries) do
  170.         if ( weapon ) then
  171.             table.insert( opts, { text = managers.blackmarket:get_weapon_name_by_category_slot("primaries",i):gsub("\"", ""), callback = spawnprimarycallback, data = i } )
  172.         end
  173.     end
  174.     table.insert( opts, { text = "Close", is_cancel_button = true } )
  175.     mymenu = SimpleMenu:new("Change Primary", "Select the primary weapon you want.", opts)
  176.     mymenu:show()
  177. end
  178.  
  179. function doArmor(info)
  180.     opts = {}
  181.     for i,armor in pairs(Global.blackmarket_manager.armors) do
  182.         if ( armor ) then
  183.             table.insert( opts, { text = managers.localization:text(tweak_data.blackmarket.armors[i].name_id), callback = equiparmorcallback, data = i } )
  184.         end
  185.     end
  186.     table.insert( opts, { text = "Close", is_cancel_button = true } )
  187.     mymenu = SimpleMenu:new("Change Armor", "Select the armor you want.", opts)
  188.     mymenu:show()
  189. end
  190.  
  191. function doSecondary(info)
  192.     opts = {}
  193.     for i,weapon in pairs(Global.blackmarket_manager.crafted_items.secondaries) do
  194.         if ( weapon ) then
  195.             table.insert( opts, { text = managers.blackmarket:get_weapon_name_by_category_slot("secondaries",i):gsub("\"", ""), callback = spawnsecondarycallback, data = i } )
  196.         end
  197.     end
  198.     table.insert( opts, { text = "Close", is_cancel_button = true } )
  199.     mymenu = SimpleMenu:new("Change Secondary", "Select the secondary weapon you want.", opts)
  200.     mymenu:show()
  201. end
  202.  
  203. function doMeleeSharp(info)
  204.     opts = {}
  205.     for i,melee in pairs(Global.blackmarket_manager.melee_weapons) do
  206.         if ( melee ) then
  207.             if ( tweak_data.blackmarket.melee_weapons[i].stats.weapon_type == "sharp" ) then
  208.                 table.insert( opts, { text = managers.localization:text(tweak_data.blackmarket.melee_weapons[i].name_id), callback = spawnmeleecallback, data = i } )
  209.             end
  210.         end
  211.     end
  212.     table.insert( opts, { text = "Close", is_cancel_button = true } )
  213.     mymenu = SimpleMenu:new("Change Melee(Sharp)", "Select the melee weapon you want.", opts)
  214.     mymenu:show()
  215. end
  216.  
  217. function doMeleeBlunt(info)
  218.     opts = {}
  219.     for i,melee in pairs(Global.blackmarket_manager.melee_weapons) do
  220.         if ( melee ) then
  221.             if ( tweak_data.blackmarket.melee_weapons[i].stats.weapon_type == "blunt" ) then
  222.                 table.insert( opts, { text = managers.localization:text(tweak_data.blackmarket.melee_weapons[i].name_id), callback = spawnmeleecallback, data = i } )
  223.             end
  224.         end
  225.     end
  226.     table.insert( opts, { text = "Close", is_cancel_button = true } )
  227.     mymenu = SimpleMenu:new("Change Melee(Blunt)", "Select the melee weapon you want.", opts)
  228.     mymenu:show()
  229. end
  230.  
  231. function doMask(info)
  232.     opts = {}
  233.     for i,mask in pairs(Global.blackmarket_manager.crafted_items.masks) do
  234.         if ( mask ) then
  235.             table.insert( opts, { text = managers.blackmarket:get_mask_name_by_category_slot("masks",i):gsub("\"", ""), callback = changemaskcallback, data = i } )
  236.         end
  237.     end
  238.     table.insert( opts, { text = "Close", is_cancel_button = true } )
  239.     mymenu = SimpleMenu:new("Change Mask", "Select the mask you want.", opts)
  240.     mymenu:show()
  241. end
  242.  
  243. function NewRaycastWeaponBase:set_timer(timer, ...)
  244.     NewRaycastWeaponBase.super.set_timer(self, timer)
  245.     for _, data in pairs(self._parts) do
  246.         if ( data.unit ) then
  247.             data.unit:set_timer(timer)
  248.             data.unit:set_animation_timer(timer)
  249.         end
  250.     end
  251. end
  252.  
  253. opts = {}
  254. table.insert( opts, { text = "Change Primary", callback = doPrimary, data = nil } )
  255. table.insert( opts, { text = "Change Secondary", callback = doSecondary, data = nil } )
  256. table.insert( opts, { text = "Change Armor", callback = doArmor, data = nil } )
  257. table.insert( opts, { text = "Change Melee(Sharp)", callback = doMeleeSharp, data = nil } )
  258. table.insert( opts, { text = "Change Melee(Blunt)", callback = doMeleeBlunt, data = nil } )
  259. table.insert( opts, { text = "Change Mask", callback = doMask, data = nil } )
  260. table.insert( opts, { text = "AND GOOOOOOD RIDDANCE!", is_cancel_button = true } )
  261. mymenu = SimpleMenu:new("YEP?", "WHATCHU WANT?!", opts)
  262. mymenu:show()
  263. mymenu:show()
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement