Advertisement
Guest User

Untitled

a guest
Jun 16th, 2013
40
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 7.92 KB | None | 0 0
  1. FAdmin.PlayerIcon = {}
  2. FAdmin.PlayerIcon.RightClickOptions = {}
  3.  
  4. function FAdmin.PlayerIcon.AddRightClickOption(name, func)
  5. FAdmin.PlayerIcon.RightClickOptions[name] = func
  6. end
  7.  
  8. -- FAdminPanelList
  9. local PANEL = {}
  10.  
  11. function PANEL:Init()
  12. self.Padding = 5
  13. end
  14.  
  15. function PANEL:SizeToContents()
  16. local w, h = self:GetSize()
  17.  
  18. w = math.Clamp(w, ScrW()*0.9, ScrW()*0.9) -- Fix size of w to have the same size as the scoreboard
  19. h = math.Min(h, ScrH()*0.95)
  20. if #self:GetChildren() == 1 then -- It fucks up when there's only one icon in
  21. h = math.Max(y or 0, 120)
  22. end
  23.  
  24. self:SetSize(w, h)
  25. self:PerformLayout()
  26. end
  27.  
  28. function PANEL:Paint()
  29. end
  30.  
  31. derma.DefineControl("FAdminPanelList", "DPanellist adapted for FAdmin", PANEL, "DPanelList")
  32.  
  33. -- FAdminPlayerCatagoryHeader
  34. local PANEL2 = {}
  35.  
  36. function PANEL2:ApplySchemeSettings()
  37. self:SetFont("Trebuchet24")
  38. end
  39.  
  40.  
  41.  
  42. derma.DefineControl("FAdminPlayerCatagoryHeader", "DCatagoryCollapse header adapted for FAdmin", PANEL2, "DCategoryHeader")
  43.  
  44. -- FAdminPlayerCatagory
  45. local PANEL3 = {}
  46.  
  47. function PANEL3:Init()
  48. if self.Header then
  49. self.Header:Remove() -- the old header is still there don't ask me why
  50. end
  51. self.Header = vgui.Create("FAdminPlayerCatagoryHeader", self)
  52. self.Header:SetSize(20, 25)
  53. self:SetPadding(5)
  54. self.Header:Dock( TOP )
  55.  
  56. self:SetExpanded(true)
  57. self:SetMouseInputEnabled(true)
  58.  
  59. self:SetAnimTime(0.2)
  60. self.animSlide = Derma_Anim("Anim", self, self.AnimSlide)
  61.  
  62. self:SetDrawBackground(true)
  63.  
  64. end
  65.  
  66. function PANEL3:Paint()
  67. if self.CatagoryColor then
  68. //self.Header:SetBGColor(self.CatagoryColor)
  69. draw.RoundedBox(4, 0, 0, self:GetWide(), self.Header:GetTall(), self.CatagoryColor)
  70. end
  71. end
  72.  
  73. derma.DefineControl("FAdminPlayerCatagory", "DCatagoryCollapse adapted for FAdmin", PANEL3, "DCollapsibleCategory")
  74.  
  75. -- FAdmin player row (from the sandbox player row)
  76. PANEL = {}
  77.  
  78. CreateClientConVar("FAdmin_PlayerRowSize", 30, true, false)
  79. function PANEL:Init()
  80. self.Size = GetConVarNumber("FAdmin_PlayerRowSize")
  81.  
  82. self.lblName = vgui.Create("DLabel", self)
  83. self.lblFrags = vgui.Create("DLabel", self)
  84. self.lblTeam = vgui.Create("DLabel", self)
  85. self.lblDeaths = vgui.Create("DLabel", self)
  86. self.lblPing = vgui.Create("DLabel", self)
  87.  
  88. // If you don't do this it'll block your clicks
  89. self.lblName:SetMouseInputEnabled(false)
  90. self.lblTeam:SetMouseInputEnabled(false)
  91. self.lblFrags:SetMouseInputEnabled(false)
  92. self.lblDeaths:SetMouseInputEnabled(false)
  93. self.lblPing:SetMouseInputEnabled(false)
  94.  
  95. self.lblName:SetColor(Color(255,255,255,200))
  96. self.lblTeam:SetColor(Color(255,255,255,200))
  97. self.lblFrags:SetColor(Color(255,255,255,200))
  98. self.lblDeaths:SetColor(Color(255,255,255,200))
  99. self.lblPing:SetColor(Color(255,255,255,200))
  100.  
  101. self.imgAvatar = vgui.Create("AvatarImage", self)
  102.  
  103. self:SetCursor("hand")
  104. end
  105.  
  106. function PANEL:Paint()
  107. if not IsValid(self.Player) then return end
  108.  
  109. self.Size = GetConVarNumber("FAdmin_PlayerRowSize")
  110. self.imgAvatar:SetSize(self.Size - 4, self.Size - 4)
  111.  
  112. local color = Color(100, 150, 245, 255)
  113.  
  114.  
  115. if GAMEMODE.Name == "Sandbox" then
  116. color = Color(100, 150, 245, 255)
  117. if self.Player:Team() == TEAM_CONNECTING then
  118. color = Color(200, 120, 50, 255)
  119. elseif self.Player:IsAdmin() then
  120. color = Color(30, 200, 50, 255)
  121. end
  122.  
  123. if self.Player:GetFriendStatus() == "friend" then
  124. color = Color(236, 181, 113, 255)
  125. end
  126. else
  127. color = team.GetColor(self.Player:Team())
  128. end
  129.  
  130. local hooks = hook.GetTable().FAdmin_PlayerRowColour
  131. if hooks then
  132. for k,v in pairs(hooks) do
  133. color = (v and v(self.Player, color)) or color
  134. break
  135. end
  136. end
  137.  
  138. draw.RoundedBox(4, 0, 0, self:GetWide(), self.Size, color)
  139.  
  140. surface.SetTexture(0)
  141. if self.Player == LocalPlayer() or self.Player:GetFriendStatus() == "friend" then
  142. surface.SetDrawColor(255, 255, 255, 50 + math.sin(RealTime() * 2) * 50)
  143. end
  144. surface.DrawTexturedRect(0, 0, self:GetWide(), self.Size)
  145. return true
  146. end
  147.  
  148. function PANEL:SetPlayer(ply)
  149. self.Player = ply
  150.  
  151. self.imgAvatar:SetPlayer(ply)
  152.  
  153. self:UpdatePlayerData()
  154. end
  155.  
  156. function PANEL:UpdatePlayerData()
  157. if not self.Player then return end
  158. if not self.Player:IsValid() then return end
  159.  
  160. self.lblName:SetText(self.Player:Nick())
  161. self.lblTeam:SetText((self.Player.DarkRPVars and self.Player:getDarkRPVar("job")) or team.GetName(self.Player:Team()))
  162. self.lblTeam:SizeToContents()
  163. self.lblFrags:SetText(self.Player:Frags())
  164. self.lblDeaths:SetText(self.Player:Deaths())
  165. self.lblPing:SetText(self.Player:Ping())
  166. end
  167.  
  168. function PANEL:ApplySchemeSettings()
  169. self.lblName:SetFont("ScoreboardPlayerNameBig")
  170. self.lblTeam:SetFont("ScoreboardPlayerNameBig")
  171. self.lblFrags:SetFont("ScoreboardPlayerName")
  172. self.lblDeaths:SetFont("ScoreboardPlayerName")
  173. self.lblPing:SetFont("ScoreboardPlayerName")
  174.  
  175. self.lblName:SetFGColor(color_white)
  176. self.lblTeam:SetFGColor(color_white)
  177. self.lblFrags:SetFGColor(color_white)
  178. self.lblDeaths:SetFGColor(color_white)
  179. self.lblPing:SetFGColor(color_white)
  180. end
  181.  
  182. function PANEL:DoClick(x, y)
  183. if not IsValid(self.Player) then self:Remove() return end
  184. FAdmin.ScoreBoard.ChangeView("Player", self.Player)
  185. end
  186.  
  187. function PANEL:DoRightClick()
  188. if table.Count(FAdmin.PlayerIcon.RightClickOptions) < 1 then return end
  189. local menu = DermaMenu()
  190.  
  191. menu:SetPos(gui.MouseX(), gui.MouseY())
  192.  
  193. for Name, func in pairs(FAdmin.PlayerIcon.RightClickOptions) do
  194. menu:AddOption(Name, function() func(self.Player, self) end)
  195. end
  196.  
  197. menu:Open()
  198. end
  199.  
  200. function PANEL:Think()
  201. if not self.PlayerUpdate or self.PlayerUpdate < CurTime() then
  202. self.PlayerUpdate = CurTime() + 0.5
  203. self:UpdatePlayerData()
  204. end
  205. end
  206.  
  207. function PANEL:PerformLayout()
  208. self.imgAvatar:SetPos(2, 2)
  209. self.imgAvatar:SetSize(32, 32)
  210.  
  211. self:SetSize(self:GetWide(), self.Size)
  212.  
  213. self.lblName:SizeToContents()
  214. self.lblName:SetPos(24, 2)
  215. self.lblName:MoveRightOf(self.imgAvatar, 8)
  216.  
  217. local COLUMN_SIZE = 75
  218.  
  219. self.lblPing:SetPos(self:GetWide() - COLUMN_SIZE * 0.4, 0)
  220. self.lblDeaths:SetPos(self:GetWide() - COLUMN_SIZE * 1.4, 0)
  221. self.lblFrags:SetPos(self:GetWide() - COLUMN_SIZE * 2.4, 0)
  222.  
  223. self.lblTeam:SetPos(self:GetWide() / 2 - (0.5*self.lblTeam:GetWide()))
  224. end
  225. vgui.Register("FadminPlayerRow", PANEL, "Button")
  226.  
  227. -- FAdminActionButton
  228. local PANEL6 = {}
  229.  
  230. function PANEL6:Init()
  231. self:SetDrawBackground(false)
  232. self:SetDrawBorder(false)
  233. self:SetStretchToFit(false)
  234. self:SetSize(120, 40)
  235.  
  236. self.TextLabel = vgui.Create("DLabel", self)
  237. self.TextLabel:SetColor(Color(200,200,200,200))
  238. self.TextLabel:SetFont("ChatFont")
  239.  
  240. self.m_Image2 = vgui.Create("DImage", self)
  241.  
  242. self.BorderColor = Color(190,40,0,255)
  243. end
  244.  
  245. function PANEL6:SetText(text)
  246. self.TextLabel:SetText(text)
  247. self.TextLabel:SizeToContents()
  248.  
  249. self:SetWide(self.TextLabel:GetWide() + 44)
  250. end
  251.  
  252. function PANEL6:PerformLayout()
  253. self.m_Image:SetSize(32,32)
  254. self.m_Image:SetPos(4,4)
  255.  
  256. self.m_Image2:SetSize(32, 32)
  257. self.m_Image2:SetPos(4,4)
  258.  
  259. self.TextLabel:SetPos(38, 8)
  260. end
  261.  
  262. function PANEL6:SetImage2(Mat, bckp)
  263. self.m_Image2:SetImage(Mat, bckp)
  264. end
  265.  
  266. function PANEL6:SetBorderColor(Col)
  267. self.BorderColor = Col or Color(190,40,0,255)
  268. end
  269.  
  270. function PANEL6:Paint()
  271. local BorderColor = self.BorderColor
  272. if self.Hovered then
  273. BorderColor = Color(math.Min(BorderColor.r + 40, 255), math.Min(BorderColor.g + 40, 255), math.Min(BorderColor.b + 40, 255), BorderColor.a)
  274. end
  275. if self.Depressed then
  276. BorderColor = Color(0,0,0,0)
  277. end
  278. draw.RoundedBox(4, 0, 0, self:GetWide(), self:GetTall(), BorderColor)
  279. draw.RoundedBox(4, 2, 2, self:GetWide()-4, self:GetTall()-4, Color(40,40,40,255))
  280. end
  281.  
  282. function PANEL6:OnMousePressed(mouse)
  283. self.m_Image:SetSize(24,24)
  284. self.m_Image:SetPos(8,8)
  285. self.Depressed = true
  286. end
  287.  
  288. function PANEL6:OnMouseReleased(mouse)
  289. self.m_Image:SetSize(32,32)
  290. self.m_Image:SetPos(4,4)
  291. self.Depressed = false
  292. self:DoClick()
  293. end
  294.  
  295. derma.DefineControl("FAdminActionButton", "Button for doing actions", PANEL6, "DImageButton")
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement