new post | browse code | authors | help | about

LuaBin 2.0

Viewing file root / lua / menu / map_icon.lua

  1. //=============================================================================//
  2. //  ___  ___   _   _   _    __   _   ___ ___ __ __
  3. // |_ _|| __| / \ | \_/ |  / _| / \ | o \ o \\ V /
  4. //  | | | _| | o || \_/ | ( |_n| o ||   /   / \ /
  5. //  |_| |___||_n_||_| |_|  \__/|_n_||_|\\_|\\ |_|  2007
  6. //                                                                               
  7. //=============================================================================//
  8.  
  9.  
  10. local PANEL = {}
  11. g_SelectedMap = nil
  12.  
  13. AccessorFunc( PANEL, "m_pController",                   "Controller" )
  14. AccessorFunc( PANEL, "m_bFavourite",                    "Favourite" )
  15.  
  16. /*---------------------------------------------------------
  17.  
  18. ---------------------------------------------------------*/
  19. function PANEL:Init()
  20.  
  21.         self:SetMouseInputEnabled( true )
  22.         self:SetKeyboardInputEnabled( false )
  23.        
  24.         self.Label = vgui.Create( "DLabel", self )
  25.         self.Label:SetText( "Map Text" )
  26.         self.Label:SetTextColor( Color( 255, 255, 255, 250 ) )
  27.         self.Label:SetMouseInputEnabled( false )
  28.        
  29.        
  30.         self.Icon = vgui.Create( "DImage", self )
  31.         self.Icon:SetKeepAspect( true )
  32.         self.Icon:SetMouseInputEnabled( false )
  33.        
  34. end
  35.  
  36. /*---------------------------------------------------------
  37.  
  38. ---------------------------------------------------------*/
  39. function PANEL:SetMap( MapTable )
  40.  
  41.         self.Label:SetText( MapTable.Name )
  42.         self.Icon:SetOnViewMaterial( MapTable.Material )
  43.         self.Icon:SetFailsafeMatName( "maps/noicon.vmt" )
  44.        
  45.         self.MapName = MapTable.Name
  46.        
  47.         self:PerformLayout()
  48.  
  49. end
  50.  
  51. /*---------------------------------------------------------
  52.  
  53. ---------------------------------------------------------*/
  54. function PANEL:PerformLayout()
  55.  
  56.         self:SetSize( 128, 100 )
  57.        
  58.         self.Label:SetPos( 10, self:GetTall() - self.Label:GetTall() )
  59.         self.Label:SetWide( self:GetWide() - 20 )
  60.         self.Label:SetContentAlignment( 5 )
  61.         self.Label:SetZPos( 100 )
  62.        
  63.         local size = self:GetTall() - self.Label:GetTall()
  64.         self.Icon:SetSize( self:GetWide()-2, self:GetTall()-2 )
  65.         self.Icon:SetPos( 1, 1 )
  66.  
  67. end
  68.  
  69.  
  70. /*---------------------------------------------------------
  71.  
  72. ---------------------------------------------------------*/
  73. function PANEL:ApplySchemeSettings()
  74.  
  75. //      self.Label:SetFont( "DefaultSmallDropShadow" )
  76.  
  77. end
  78.  
  79. /*---------------------------------------------------------
  80.  
  81. ---------------------------------------------------------*/
  82. function PANEL:Paint()
  83.  
  84.         if ( g_SelectedMap == self ) then
  85.                 surface.SetDrawColor( 255, 155, 20, 255 )
  86.         else
  87.                 surface.SetDrawColor( 255, 255, 255, 50 )
  88.         end
  89.        
  90.         surface.DrawOutlinedRect( 0, 0, self:GetWide(), self:GetTall() )
  91.         local y = self.Label.y
  92.        
  93. end
  94.  
  95. /*---------------------------------------------------------
  96.  
  97. ---------------------------------------------------------*/
  98. function PANEL:PaintOver()
  99.  
  100.         if ( g_SelectedMap == self ) then
  101.                 surface.SetDrawColor( 255, 155, 20, 255 )
  102.         else
  103.                 surface.SetDrawColor( 155, 155, 155, 200 )
  104.         end
  105.        
  106.         local x, y = self.Label:GetPos()
  107.        
  108.         surface.DrawRect( 1, y, self:GetWide() - 2, self:GetTall() - y )
  109.        
  110.         self.Label:PaintManual()
  111.  
  112. end
  113.  
  114. /*---------------------------------------------------------
  115.  
  116. ---------------------------------------------------------*/
  117. function PANEL:OnMousePressed( mcode )
  118.  
  119.         // Loop back if no VBar
  120.         if ( mcode != MOUSE_LEFT ) then
  121.                 self:OpenMenu()
  122.                 return
  123.         end
  124.        
  125.         self:GetController():SetMap( self.MapName )
  126.        
  127.         if ( g_SelectedMap == self && self.LastPress && self.LastPress > SysTime() - 0.3 ) then
  128.        
  129.                 self:GetController():LaunchGame()
  130.        
  131.         end
  132.        
  133.         self:GetController():SetMap( self.MapName )
  134.        
  135.         g_SelectedMap = self
  136.         self.LastPress = SysTime()
  137.  
  138. end
  139.  
  140. /*---------------------------------------------------------
  141.  
  142. ---------------------------------------------------------*/
  143. function PANEL:OpenMenu()
  144.  
  145.         local menu = DermaMenu()
  146.        
  147.                 menu:AddOption( "Copy to Clipboard", function() SetClipboardText( self.MapName ) end )
  148.                
  149.                 if ( self.m_bFavourite ) then
  150.                         menu:AddOption( "Remove From Favourites", function() map_favourites.Remove( self.MapName ) end )
  151.                 else
  152.                         menu:AddOption( "Add To Favourites", function() map_favourites.Add( self.MapName ) end )
  153.                 end
  154.                
  155.         menu:Open()
  156.  
  157. end
  158.  
  159. vgui.Register( "MapIcon", PANEL )