Advertisement
Guest User

Untitled

a guest
Jan 20th, 2017
92
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Lua 8.04 KB | None | 0 0
  1. local function pmNameMenu(pet, frame, data)
  2.     local pmNameFrame = vgui.Create("DFrame")
  3.     pmNameFrame:SetSize(250, 200)
  4.     pmNameFrame:SetPos(ScrW() / 2 - 125, ScrH() / 2 - 100)
  5.     pmNameFrame:SetTitle("")
  6.     pmNameFrame:SetVisible(true)
  7.     pmNameFrame:ShowCloseButton(false)
  8.     pmNameFrame:SetBackgroundBlur(true)
  9.     pmNameFrame:MakePopup()
  10.  
  11.     function pmNameFrame:Paint(w, h)
  12.         draw.RoundedBox(6, 0, 0, w, h, Color(44, 47, 52, 255))
  13.         draw.RoundedBox(6, 0, 0, w, h - 5, Color(54, 57, 62, 255))
  14.  
  15.         draw.DrawText("Type the name you want\nyour pet to have here!", "pmBody", w / 2, 15, Color(255, 255, 255, 255), TEXT_ALIGN_CENTER)
  16.     end
  17.  
  18.     local pmNameEntry = vgui.Create("DTextEntry", pmNameFrame)
  19.     pmNameEntry:SetSize(230, 50)
  20.     pmNameEntry:SetPos(10, 80)
  21.     pmNameEntry:SetText("Name")
  22.     pmNameEntry:SetFont("pmBody")
  23.  
  24.     function pmNameEntry:OnTextChanged()
  25.         if string.len(self:GetValue()) > 12 then
  26.             self:SetText(string.sub(self:GetValue(), 1, 12))
  27.             self:SetValue(string.sub(self:GetValue(), 1, 12))
  28.             self:SetCaretPos(12)
  29.  
  30.             surface.PlaySound("UI/buttonrollover.wav")
  31.         end
  32.     end
  33.  
  34.     local pmNameConfirm = vgui.Create("DButton", pmNameFrame)
  35.     pmNameConfirm:SetText("")
  36.     pmNameConfirm:SetSize(110, 40)
  37.     pmNameConfirm:SetPos(130, 148)
  38.     pmNameConfirm.hovering = false
  39.     pmNameConfirm.alpha = 0
  40.  
  41.     function pmNameConfirm:OnCursorEntered()
  42.         surface.PlaySound("UI/buttonrollover.wav")
  43.  
  44.         self.hovering = true
  45.     end
  46.  
  47.     function pmNameConfirm:OnCursorExited()
  48.         self.hovering = false
  49.     end
  50.  
  51.     function pmNameConfirm:Paint(w, h)
  52.         self.alpha = pmAnimateHover(self.alpha, 0, 255, 10, 10, self.hovering, false)
  53.  
  54.         local col = Color(100, 100, 100, 255)
  55.  
  56.         draw.RoundedBox(6, 0, 0, w, h, Color(46, 49, 54, 255))
  57.         draw.RoundedBox(6, 0, 0, w, h, Color(36, 39, 44, self.alpha))
  58.  
  59.         if self.hovering then
  60.             col = PetConfig.accentColor
  61.         end
  62.  
  63.         draw.SimpleText("Buy", "pmBody", w / 2, h / 2, col, TEXT_ALIGN_CENTER, TEXT_ALIGN_CENTER)
  64.     end
  65.  
  66.     function pmNameConfirm:DoClick()
  67.         surface.PlaySound("UI/buttonclickrelease.wav")
  68.  
  69.         local newName = pmNameEntry:GetValue()
  70.         local name = pet["name"]
  71.  
  72.         if !pmCheckName(LocalPlayer(), newName) then return end
  73.  
  74.         if pmCanBuy(LocalPlayer(), pet) then
  75.             local netTbl = {pet = name, name = newName}
  76.  
  77.             net.Start("SNPC_PETBASE_BUY")
  78.             net.WriteTable(netTbl)
  79.             net.SendToServer()
  80.         elseif data then
  81.             local netTbl = {pet = name, name = newNamedata, data = data}
  82.  
  83.             net.Start("SNPC_PETBASE_UPDATE_NAME")
  84.             net.WriteTable(netTbl)
  85.             net.SendToServer()
  86.         end
  87.  
  88.         if frame then
  89.             frame:Close()
  90.         end
  91.  
  92.         pmNameFrame:Close()
  93.     end
  94.  
  95.     local pmNameClose = vgui.Create("DButton", pmNameFrame)
  96.     pmNameClose:SetText("")
  97.     pmNameClose:SetSize(110, 40)
  98.     pmNameClose:SetPos(10, 148)
  99.     pmNameClose.hovering = false
  100.     pmNameClose.alpha = 0
  101.  
  102.     function pmNameClose:OnCursorEntered()
  103.         surface.PlaySound("UI/buttonrollover.wav")
  104.  
  105.         self.hovering = true
  106.     end
  107.  
  108.     function pmNameClose:OnCursorExited()
  109.         self.hovering = false
  110.     end
  111.  
  112.     function pmNameClose:Paint(w, h)
  113.         self.alpha = pmAnimateHover(self.alpha, 0, 255, 10, 10, self.hovering, false)
  114.  
  115.         local col = Color(100, 100, 100, 255)
  116.  
  117.         draw.RoundedBox(6, 0, 0, w, h, Color(46, 49, 54, 255))
  118.         draw.RoundedBox(6, 0, 0, w, h, Color(36, 39, 44, self.alpha))
  119.  
  120.         if self.hovering then
  121.             col = PetConfig.accentColor
  122.         end
  123.  
  124.         draw.SimpleText("Cancel", "pmBody", w / 2, h / 2, col, TEXT_ALIGN_CENTER, TEXT_ALIGN_CENTER)
  125.     end
  126.  
  127.     function pmNameClose:DoClick()
  128.         surface.PlaySound("UI/buttonclickrelease.wav")
  129.  
  130.         if frame then
  131.             frame:SetVisible(true)
  132.         end
  133.  
  134.         pmNameFrame:Close()
  135.     end
  136. end
  137.  
  138. local function pmShowShop(data)
  139.     local pmShopFrame = vgui.Create("DFrame")
  140.     pmShopFrame:SetSize(550, 450)
  141.     pmShopFrame:SetPos(ScrW() / 2 - 275, ScrH() / 2 - 225)
  142.     pmShopFrame:SetTitle("")
  143.     pmShopFrame:ShowCloseButton(false)
  144.     pmShopFrame:SetVisible(true)
  145.     pmShopFrame:MakePopup()
  146.  
  147.     function pmShopFrame:Paint(w, h)
  148.         draw.RoundedBox(6, 0, 0, w, h, Color(44, 47, 52, 255))
  149.         draw.RoundedBox(6, 0, 0, w, h - 5, Color(54, 57, 62, 255))
  150.     end
  151.  
  152.     local pmShopClose = vgui.Create("DButton", pmShopFrame)
  153.     pmShopClose:SetSize(40, 15)
  154.     pmShopClose:SetPos(500, 5)
  155.     pmShopClose:SetText("")
  156.     pmShopClose:SetTooltip("Close")
  157.  
  158.     function pmShopClose:Paint(w, h)
  159.         draw.RoundedBox(3, 0, 0, w, h, PetConfig.accentColor)
  160.     end
  161.  
  162.     function pmShopClose:DoClick()
  163.         pmShopFrame:Close()
  164.     end
  165.  
  166.     pmShopPanel = vgui.Create("DPanel", pmShopFrame)
  167.     pmShopPanel:SetSize(530, 415)
  168.     pmShopPanel:SetPos(10, 25)
  169.  
  170.     function pmShopPanel:Paint(w, h)
  171.         draw.RoundedBox(0, 0, 0, w, h, Color(36, 39, 44, 150))
  172.     end
  173.  
  174.     local pmShopScroll = vgui.Create("DScrollPanel", pmShopPanel)
  175.     pmShopScroll:SetSize(520, 405)
  176.     pmShopScroll:SetPos(5, 5)
  177.  
  178.     function pmShopScroll:Paint(w, h) end
  179.  
  180.     local scrollbar = pmShopScroll:GetVBar()
  181.  
  182.     function scrollbar:Paint(w, h)
  183.         draw.RoundedBox(3, 5, 0, 10, h, Color(46, 49, 54, 255))
  184.     end
  185.  
  186.     function scrollbar.btnUp:Paint(w, h)
  187.         draw.RoundedBox(3, 5, 0, 10, h, Color(36, 39, 44, 255))
  188.     end
  189.  
  190.     function scrollbar.btnDown:Paint(w, h)
  191.         draw.RoundedBox(3, 5, 0, 10, h, Color(36, 39, 44, 255))
  192.     end
  193.  
  194.     function scrollbar.btnGrip:Paint(w, h)
  195.         draw.RoundedBox(3, 5, 0, 10, h, Color(36, 39, 44, 255))
  196.     end
  197.  
  198.     local pmShopScrollTitle = vgui.Create("DPanel", pmShopScroll)
  199.     pmShopScrollTitle:SetSize(0, 30)
  200.     pmShopScrollTitle:DockMargin(0, 0, 0, 5)
  201.     pmShopScrollTitle:Dock(TOP)
  202.     pmShopScrollTitle:SetText("")
  203.  
  204.     function pmShopScrollTitle:Paint(w, h)
  205.         draw.RoundedBox(0, 0, 0, w, h, Color(36, 39, 44, 150))
  206.  
  207.         draw.DrawText("Name", "pmBody", (w / 9) * 2 + 40, h / 2 - 12, Color(255, 255, 255), TEXT_ALIGN_CENTER)
  208.         draw.DrawText("Price", "pmBody", 450, h / 2 - 12, Color(255, 255, 255), TEXT_ALIGN_CENTER)
  209.     end
  210.  
  211.     for k, v in pairs(data) do
  212.         local pmShopPet = vgui.Create("DPanel", pmShopScroll)
  213.         pmShopPet:SetSize(0, 65)
  214.         pmShopPet:DockMargin(0, 0, 0, 5)
  215.         pmShopPet:Dock(TOP)
  216.         pmShopPet:SetText("")
  217.         pmShopPet.hovering = false
  218.         pmShopPet.alpha = 0
  219.         pmShopPet.space  = 0
  220.  
  221.         local pmShopPetModel = vgui.Create("SpawnIcon", pmShopPet)
  222.         pmShopPetModel:SetPos(20, 5)
  223.         pmShopPetModel:SetSize(55, 55)
  224.         pmShopPetModel:SetModel(v["model"])
  225.  
  226.         local pmShopPetBuy = vgui.Create("DButton", pmShopPet)
  227.         pmShopPetBuy:SetSize(90, 45)
  228.         pmShopPetBuy:SetPos(410, 10)
  229.         pmShopPetBuy:SetText("")
  230.         pmShopPetBuy.hovering = false
  231.         pmShopPetBuy.alpha = 0
  232.         pmShopPetBuy.space  = 0
  233.  
  234.         function pmShopPetBuy:OnCursorEntered()
  235.             surface.PlaySound("UI/buttonrollover.wav")
  236.  
  237.             self.hovering = true
  238.             pmShopPet.hovering = true
  239.         end
  240.  
  241.         function pmShopPetBuy:OnCursorExited()
  242.             self.hovering = false
  243.             pmShopPet.hovering = false
  244.         end
  245.  
  246.         function pmShopPet:Paint(w, h)
  247.             self.alpha = pmAnimateHover(self.alpha, 0, 255, 10, 10, self.hovering, false)
  248.             self.space = pmAnimateHover(self.space, 0, 5, 1, 1, self.hovering, false)
  249.  
  250.         local col = Color(100, 100, 100, 255)
  251.  
  252.         draw.RoundedBox(6, 0, 0, w, h, Color(46, 49, 54, 255))
  253.         draw.RoundedBox(6, 0, 0, w, h, Color(36, 39, 44, self.alpha))
  254.  
  255.         if self.hovering then
  256.           col = PetConfig.accentColor
  257.         end
  258.  
  259.             draw.DrawText(v["name"], "Trebuchet24", (w / 9) * 2 + self.space, h / 2 - 14, col, TEXT_ALIGN_LEFT)
  260.         end
  261.  
  262.         function pmShopPetBuy:Paint(w, h)
  263.             self.alpha = pmAnimateHover(self.alpha, 0, 255, 10, 10, self.hovering, false)
  264.             self.space = pmAnimateHover(self.space, 0, 5, 1, 1, self.hovering, false)
  265.  
  266.         local col = Color(100, 100, 100, 255)
  267.  
  268.         draw.RoundedBox(6, 0, 0, w, h, Color(36, 39, 44, 255))
  269.         draw.RoundedBox(6, 0, 0, w, h, Color(26, 29, 34, self.alpha))
  270.  
  271.         if self.hovering then
  272.           col = PetConfig.accentColor
  273.         end
  274.  
  275.             draw.DrawText("$"..v["price"], "pmBody", w / 2 + self.space, h / 2 - 13, col, TEXT_ALIGN_CENTER)
  276.         end
  277.  
  278.         function pmShopPetBuy:DoClick()
  279.             surface.PlaySound("UI/buttonclickrelease.wav")
  280.  
  281.             if pmCanBuy(LocalPlayer(), v) then
  282.                 pmNameMenu(v, pmShopFrame)
  283.  
  284.                 pmShopFrame:SetVisible(false)
  285.             end
  286.         end
  287.     end
  288. end
  289.  
  290. //Networking
  291.  
  292. net.Receive("SNPC_PETBASE_SHOP",function()
  293.   local data = net.ReadTable()
  294.  
  295.   pmShowShop(data)
  296. end)
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement