Advertisement
Guest User

Untitled

a guest
Oct 24th, 2010
54
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Lua 5.13 KB | None | 0 0
  1. local PANEL = {}
  2.  
  3. local PEMusic_Bass = {0.275, 1.225, 2.15, 4.025, 4.75, 4.975, 5.65, 5.9, 6.6};
  4. local PERPMusic_Bass = {10.825, 11.10, 11.425, 11.575, 11.725, 12.25, 12.35, 13.25, 13.52, 14.15, 14.45, 14.575, 15.625, 16.525, 16.825, 17.125, 18.025, 18.65, 18.925, 19.225, 19.375,19.525, 19.65, 19.425, 20.425, 21.325, 21.625, 21.925, 22.825, 23.425, 23.725, 24.325, 25.225, 26.15, 26.425, 26.725, 27.625, 28.225};
  5. local PEIntro = Sound("perp2/intro/pe.mp3");
  6. local PERPIntro = Sound("perp2/intro/perp2.mp3");
  7.  
  8. local PELogo = surface.GetTextureID("perp2/intro/pe");
  9. local PERPLogo = surface.GetTextureID("perp2/intro/perp");
  10.  
  11. local BASSTime = .1;
  12. local BASSSize = .025;
  13.  
  14. function PANEL:Init ( )
  15.     self.startPEMusic = CurTime();
  16.     self.startPERPMusic = self.startPEMusic + 1 + SoundDuration("perp2/intro/pe.mp3");
  17.    
  18.     self.PEMusicFadeOut = self.startPEMusic + 5.9;
  19.    
  20.     self.PERPMusicStartIn = self.startPERPMusic + 2;
  21.     self.PERPMusicFullIn = self.startPERPMusic + 7;
  22.    
  23.     self.PERPPop2 = self.startPERPMusic + 9.92;
  24.    
  25.     self.PERP2FadeOut = self.startPERPMusic + 19;
  26.     self.PERP2FinishFade = self.PERP2FadeOut + 5;
  27.    
  28.     self.endPEMusic = self.startPEMusic + SoundDuration(PEIntro);
  29.     self.endPERPMusic = self.startPERPMusic + SoundDuration(PERPIntro);
  30. end
  31.  
  32. function PANEL:PerformLayout ( )
  33.     self:SetPos(0, 0);
  34.     self:SetSize(ScrW(), ScrH());
  35.    
  36.     self.regSize = ScrW() * .5;
  37.     self.midW = ScrW() * .5;
  38.     self.midH = ScrH() * .5;
  39. end
  40.  
  41. function PANEL:EnableCreation ( )
  42.     self.registerForm = true;
  43. end
  44.  
  45. function PANEL:EnableRules ( )
  46.     self.rulesForm = true;
  47. end
  48.  
  49. function PANEL:Paint ( )
  50.     surface.SetDrawColor(0, 0, 0, 255);
  51.     surface.DrawRect(0, 0, self:GetWide(), self:GetTall());
  52.    
  53.     if (CurTime() >= self.PERP2FadeOut) then
  54.         if (!self.showedNextPanel) then
  55.             self.showedNextPanel = true;
  56.            
  57.             if (self.registerForm) then
  58.                 ShowRegisterForm();
  59.             elseif (self.rulesForm) then
  60.                 ShowRulesConfirmation();
  61.             end
  62.            
  63.             self:MoveToFront();
  64.         end
  65.    
  66.         local percOut = 1 - math.Clamp((CurTime() - self.PERP2FadeOut) / (self.PERP2FinishFade - self.PERP2FadeOut), 0, 1);
  67.         self:SetAlpha(percOut * 255);
  68.        
  69.         if (percOut == 0) then
  70.             self:Remove();
  71.             return;
  72.         end
  73.     end
  74.    
  75.     if (!self.playingPEMusic && self.startPEMusic && self.startPEMusic <= CurTime()) then
  76.         self.playingPEMusic = true;
  77.         surface.PlaySound(PEIntro);
  78.     elseif (!self.playingPERPMusic && self.startPERPMusic && self.startPERPMusic <= CurTime()) then
  79.         self.playingPERPMusic = true;
  80.         surface.PlaySound(PERPIntro);
  81.     end
  82.    
  83.     if (CurTime() >= self.startPEMusic && CurTime() <= self.endPEMusic) then
  84.         local drawSize = self.regSize
  85.         for k, v in pairs(PEMusic_Bass) do
  86.             local sTime = self.startPEMusic + v;
  87.             local eTime = sTime + BASSTime;
  88.        
  89.             if (CurTime() >= sTime && CurTime() <= eTime) then
  90.                 local percThrough = math.Clamp((CurTime() - sTime) / BASSTime, 0, 1);
  91.                
  92.                 drawSize = self.regSize * (1 + (percThrough * BASSSize));
  93.             end
  94.         end
  95.        
  96.         local drawAlpha = 255;
  97.         if (CurTime() >= self.PEMusicFadeOut) then
  98.             local percDone = 1 - math.Clamp((CurTime() - self.PEMusicFadeOut) / (self.endPEMusic - self.PEMusicFadeOut), 0, 1);
  99.            
  100.             drawAlpha = percDone * 255;
  101.         end
  102.        
  103.         surface.SetDrawColor(255, 255, 255, drawAlpha);
  104.         surface.SetTexture(PELogo);
  105.         surface.DrawTexturedRect(self.midW - drawSize * .5, self.midH - drawSize * .5, drawSize, drawSize);
  106.     elseif (CurTime() >= self.startPERPMusic && CurTime() <= self.endPERPMusic) then
  107.         if (CurTime() >= self.PERPPop2) then
  108.             local dAlpha = 255;
  109.             if (CurTime() >= self.PERP2FadeOut) then
  110.                 local percOut = 1 - math.Clamp((CurTime() - self.PERP2FadeOut) / (self.PERP2FinishFade - self.PERP2FadeOut), 0, 1);
  111.                 dAlpha = percOut * 200;
  112.             end
  113.        
  114.             if (dAlpha > 100) then
  115.                 surface.SetDrawColor(255, 255, 255, dAlpha);
  116.                 surface.SetTexture(PERP2_G);
  117.                 surface.DrawTexturedRect(self.midW - self.regSize * .5, self.midH - self.regSize * .5, self.regSize, self.regSize);
  118.             end
  119.            
  120.             local drawSize = self.regSize
  121.             for k, v in pairs(PERPMusic_Bass) do
  122.                 local sTime = self.startPERPMusic + v;
  123.                 local eTime = sTime + BASSTime;
  124.            
  125.                 if (CurTime() >= sTime && CurTime() <= eTime) then
  126.                     local percThrough = math.Clamp((CurTime() - sTime) / BASSTime, 0, 1);
  127.                    
  128.                     drawSize = self.regSize * (1 + (percThrough * BASSSize));
  129.                 end
  130.             end
  131.            
  132.             if (drawSize != self.regSize || CurTime() >= self.PERP2FadeOut) then
  133.                 surface.SetDrawColor(255, 255, 255, 255);
  134.                 surface.SetTexture(PERP2_NG);
  135.                 surface.DrawTexturedRect(self.midW - drawSize * .5, self.midH - drawSize * .5, drawSize, drawSize);
  136.             end
  137.         end
  138.    
  139.         local perpAlpha = 255;
  140.         if (CurTime() <= self.PERPMusicStartIn) then
  141.             perpAlpha = 0;
  142.         elseif (CurTime() <= self.PERPMusicFullIn) then
  143.             local percIn = math.Clamp((CurTime() - self.PERPMusicStartIn) / (self.PERPMusicFullIn - self.PERPMusicStartIn), 0, 1);
  144.             perpAlpha = 255 * percIn;
  145.         end
  146.        
  147.         surface.SetDrawColor(perpAlpha, perpAlpha, perpAlpha, 255);
  148.         surface.SetTexture(PERPLogo);
  149.         surface.DrawTexturedRect(self.midW - self.regSize * .5, self.midH - self.regSize * .5, self.regSize, self.regSize);
  150.     end
  151. end
  152.  
  153. vgui.Register("perp2_intro", PANEL);
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement