Advertisement
Guest User

ModMain/ContainerWidget

a guest
Jun 15th, 2013
46
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Lua 3.91 KB | None | 0 0
  1. ModMain:
  2. local function iceboxPrefabPostInit(inst)
  3.  
  4.     if inst.components.container then
  5.  
  6.         local slotpos = {}
  7.         for y = 3, 0, -1 do --changed from y = 2, 0, -1; IMPORTANT: DO NO CHANGE LAST NUMBER WILL CAUSE CRASH
  8.             for x = 0, 2 do
  9.                 table.insert(slotpos, Vector3(80*x-80*2+90, 80*y-80*2+40,0))
  10.             end
  11.         end
  12.  
  13.         --For future use:
  14.         inst.components.container.widgetanimbank = nil
  15.         --inst.components.container.widgetanimbuild = "ui_chest_3x3"
  16.         --inst.components.container.widgetpos = Vector3(0,200,0)
  17.         inst.components.container.widgetbgimage = "mods/BiggerContainers/images/ui_chest_3x4.tex"
  18.         inst.components.container.widgetpos = Vector3(186,224,0)
  19.         --inst.components.container.bgimage:SetTint(0.2, 0.2, 1, 1)
  20.         inst.components.container.widgetbgimagetint = {r=.61,g=.95,b=.99,a=1}
  21.         --Set new container size
  22.         inst.components.container.numslots = #slotpos
  23.         inst.components.container.widgetslotpos = slotpos
  24.  
  25.     end
  26.  
  27. end
  28.  
  29. containerwidget
  30. function ContainerWidget:Open(container, doer)
  31.     self:Close()
  32.  
  33.     if container.components.container.widgetbgimage then
  34.         self.bgimage:SetTexture( container.components.container.widgetbgimage )
  35.     end
  36.    
  37.     if container.components.container.widgetanimbank then
  38.         self.bganim:GetAnimState():SetBank(container.components.container.widgetanimbank)
  39.     end
  40.    
  41.     if container.components.container.widgetanimbuild then
  42.         self.bganim:GetAnimState():SetBuild(container.components.container.widgetanimbuild)
  43.     end
  44.    
  45.    
  46.     if container.components.container.widgetpos then
  47.         self:SetPosition(container.components.container.widgetpos)
  48.     end
  49.    
  50.     if container.components.container.widgetbuttoninfo then
  51.         self.button = self:AddChild(AnimButton("button_small"))
  52.         self.button:SetPosition(container.components.container.widgetbuttoninfo.position)
  53.         self.button:SetText(container.components.container.widgetbuttoninfo.text)
  54.         self.button:SetOnClick( function() container.components.container.widgetbuttoninfo.fn(container, doer) end )
  55.         self.button:SetFont(BUTTONFONT)
  56.         self.button:SetTextSize(35)
  57.         self.button.text:SetVAlign(ANCHOR_MIDDLE)
  58.         self.button.text:SetColour(0,0,0,1)
  59.        
  60.         if container.components.container.widgetbuttoninfo.validfn then
  61.             if container.components.container.widgetbuttoninfo.validfn(container, doer) then
  62.                 self.button:Enable()
  63.             else
  64.                 self.button:Disable()
  65.             end
  66.         end
  67.     end
  68.    
  69.    
  70.     self.isopen = true
  71.     self:Show()
  72.  
  73.     if self.bgimage.texture then
  74.         self.bgimage:Show()
  75.     else
  76.         self.bganim:GetAnimState():PlayAnimation("open")
  77.     end
  78.    
  79.     self.onitemlosefn = function(inst, data) self:OnItemLose(data) end
  80.     self.inst:ListenForEvent("itemlose", self.onitemlosefn, container)
  81.  
  82.     self.onitemgetfn = function(inst, data) self:OnItemGet(data) end
  83.     self.inst:ListenForEvent("itemget", self.onitemgetfn, container)
  84.    
  85.     local num_slots = math.min( container.components.container:GetNumSlots(), #container.components.container.widgetslotpos)
  86.    
  87.     local n = 1
  88.     for k,v in ipairs(container.components.container.widgetslotpos) do
  89.    
  90.         local slot = InvSlot(n,"data/images/inv_slot.tex", self.owner, container.components.container)
  91.         self.inv[n] = self:AddChild(slot)
  92.  
  93.         slot:SetPosition(v)
  94.  
  95. -- MOD --
  96.         --Add support for slot tinting
  97.         if container.components.container.widgetbgimagetint then
  98.             slot.bgimage:SetTint(
  99.                 container.components.container.widgetbgimagetint.r,
  100.                 container.components.container.widgetbgimagetint.g,
  101.                 container.components.container.widgetbgimagetint.b,
  102.                 container.components.container.widgetbgimagetint.a
  103.             )
  104.         end
  105. -- /MOD --
  106.        
  107.         slot:SetLeftMouseDown(function() self:ClickInvSlot(slot) end)
  108.         slot:SetRightMouseDown(function() self:RightClickInvSlot(slot) end)
  109.        
  110.         local obj = container.components.container:GetItemInSlot(n)
  111.         if obj then
  112.             local tile = ItemTile(obj, self)
  113.             slot:SetTile(tile)
  114.         end
  115.        
  116.         n = n + 1
  117.     end
  118.  
  119.     self.container = container
  120.    
  121. end
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement