Advertisement
Mouamle

new render method

May 19th, 2016
421
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Lua 3.44 KB | None | 0 0
  1. function removeFromTable( t, item )
  2.     for k,v in pairs(t) do
  3.         if ( v.getID() == item.getID() ) then
  4.             table.remove(t, k);
  5.         end
  6.     end
  7.     return t;
  8. end
  9.  
  10. function Frame( Title, x, y, w, h, color )
  11.  
  12.     local visable = true;
  13.     local comps = {};
  14.  
  15.     if  ( not color ) then
  16.         color = tocolor( 0, 0, 0, 120 )
  17.     end
  18.  
  19.     local Frame = {
  20.         draw = function (  )
  21.             if ( visable ) then
  22.                 dxDrawRectangle( x, y, w, h, color ) -- the frame
  23.  
  24.                 dxDrawRectangle( x, y, w - 20, 20, color + 20 ) -- titleBar
  25.                 dxDrawText( Title, x+ 5, y +2 ) -- titleBar text
  26.  
  27.                 dxDrawRectangle( x + w - 20, y, 20, 20, color) -- x
  28.                 dxDrawText("X", x + w - 12, y + 2)
  29.             end
  30.         end,
  31.  
  32.         clicked = function ( button, state, nx, ny )
  33.             if ( nx > x + w -20 and nx <= x + w and ny > y and ny < y + 20 ) then
  34.                 if ( button == "left" and state == "down" ) then
  35.                     visable = false;
  36.                     showCursor( false )
  37.                     for k,v in pairs(comps) do
  38.                         v.setVisable(false)
  39.                     end
  40.                 end
  41.             end
  42.         end,
  43.  
  44.         setVisable = function ( v )
  45.             if ( v == true ) then
  46.                 visable = true;
  47.                 showCursor( true )
  48.                 for k,v in pairs(comps) do
  49.                     v.setVisable(true)
  50.                 end
  51.             else
  52.                 visable = false;
  53.                 showCursor( false )
  54.                 for k,v in pairs(comps) do
  55.                     v.setVisable(false)
  56.                 end
  57.             end
  58.         end,
  59.  
  60.         getVisable = function (  )
  61.             return visable;
  62.         end,
  63.  
  64.         add = function ( comp )
  65.             table.insert(comps, comp)
  66.             comp.setOfset(x, y)
  67.             addEventHandler( "onClientRender", getRootElement(), comp.draw )
  68.         end,
  69.  
  70.         rem = function ( comp )
  71.             removeFromTable(comps, comp)
  72.             removeEventHandler( "onClientRender", getRootElement(  ), comp.draw )
  73.         end,
  74.  
  75.         center = function ( )
  76.             local screenW, screenH = guiGetScreenSize();
  77.             local windowW, windowH = w, h;
  78.             local newX, newY = (screenW - windowW) /2,(screenH - windowH) /2;
  79.             x = newX; y = newY
  80.         end
  81.     }
  82.    
  83.     function create(  )
  84.         addEventHandler( "onClientRender", getRootElement(), Frame.draw )
  85.         addEventHandler( "onClientClick", getRootElement(), Frame.clicked )
  86.         return Frame;  
  87.     end
  88.  
  89.     return create();
  90. end
  91.  
  92. function drawToolTip( x, y, w, text )
  93.     local h = 0;
  94.     for i = 1, #text do
  95.         h = h + 15
  96.     end
  97.     dxDrawRectangle( x, y, w, h, tocolor( 0, 0, 0, 255 ) )
  98.     local nh = 0;
  99.     for i = 1, #text do
  100.         dxDrawText(text[i], x + 10, nh + y, 0, 0, tocolor( 255, 255, 255, 255 ), 1)
  101.         nh = nh + 15
  102.     end
  103. end
  104.  
  105. function channel( name, id, x, y, w, h, color )
  106.  
  107.     local visable = true;
  108.     local data = {};
  109.     local players = {};
  110.  
  111.     local ofSet = Vector2(0, 0)
  112.  
  113.     if  ( not color ) then
  114.         color = tocolor( 0, 0, 0, 120 )
  115.     end
  116.  
  117.     local channel = {
  118.  
  119.         draw = function (  )
  120.             if ( visable ) then
  121.                 dxDrawRectangle( x + ofSet:getX(), y + ofSet:getY(), w, h, color )
  122.                 dxDrawText( name, ( (x + ofSet:getX()) + (w/2) ) - (string.len(name)*3), ((y + ofSet:getY()) - 7) + (h/2), 0, 0, tocolor( 255, 255, 255, 255 ), 1 )
  123.                 local sx, sy =  guiGetScreenSize()
  124.                 local cx, cy = getCursorPosition()
  125.                 local nx, ny = (sx * cx), (sy * cy)
  126.                 if ( nx > x + ofSet:getX() and nx <= x + ofSet:getX() + w and ny > y + ofSet:getY() and  ny <= y + ofSet:getY() + h ) then
  127.                     --dxDrawRectangle( nx, ny, 100, 20 )
  128.                     drawToolTip(nx+3, ny, 190, {"Mouamle", "Ali", "Mouamle2"})
  129.                 end
  130.             end
  131.         end,
  132.  
  133.         setOfset = function ( x, y )
  134.             ofSet:setX(x)
  135.             ofSet:setY(y)
  136.         end,
  137.  
  138.         setVisable = function ( v )
  139.             visable = v;
  140.         end
  141.     }
  142.  
  143.     function create(  )
  144.         return channel
  145.     end
  146.  
  147.     return create();
  148. end
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement