Advertisement
coolbunny1234

4.02 Menu Base Redo

Apr 2nd, 2013
172
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C# 6.27 KB | None | 0 0
  1. #include common_scripts\utility;
  2. #include maps\_utility;
  3. #include maps\_hud_util;
  4.  
  5. init()
  6. {
  7.     self thread onPlayerConnect();
  8. }
  9.  
  10. onPlayerConnect()
  11. {
  12.     for(;;)
  13.     {
  14.         level waittill("connected", player);
  15.         player thread onPlayerSpawned();
  16.     }
  17. }
  18.  
  19. onPlayerSpawned()
  20. {
  21.     player = get_players();
  22.     for(;;)
  23.     {
  24.         self waittill("spawned_player");
  25.         self thread Playermenu();
  26.     }
  27. }
  28.  
  29. Playermenu()
  30. {
  31.     self thread iniMenuVars(0,0,false,300,20,3);
  32.     for(;;)
  33.     {
  34.         if( self FragButtonPressed())
  35.         {
  36.             if(self.menuIsOpen == false)
  37.             {
  38.                 self.menuIsOpen = true;    
  39.                 self thread topLevelMenu();
  40.                 self thread subMenu();
  41.                 self thread MonitorButtons();
  42.                 self thread listenAll();
  43.             }
  44.         }
  45.     wait 0.1;
  46.     }
  47. }
  48.  
  49. iniMenuVars(cycle,scroll,z,x,y,menu)
  50. {
  51.    
  52.     self.cycle = cycle;
  53.     self.scroll = scroll;
  54.     self.menuIsOpen = z;
  55.     level.menuX = x;
  56.     level.menuY = y;
  57.     level.topLevelMenuOptions = menu;
  58.     level.subMenuNumOptions = [];
  59.  
  60.     //sub menu 1
  61.     self addBlank(0,"Test",6);
  62.     self addMenu(0,0,"Close",::Close,"");
  63.     self addMenu(0,1,"Test",::test,2);
  64.     self addMenu(0,2,"Test",::test,3);
  65.     self addMenu(0,3,"Test",::test,1);
  66.     self addMenu(0,4,"Test",::test,2);
  67.     self addMenu(0,5,"Test",::test,3);
  68.     //sub menu 2
  69.     self addBlank(1,"Test 2",3);
  70.     self addMenu(1,0,"Test",::test,1);
  71.     self addMenu(1,1,"Test",::test,2);
  72.     self addMenu(1,2,"Test",::test,3);
  73.     //sub menu 3
  74.     self addBlank(2,"Test 3",3);
  75.     self addMenu(2,0,"Test",::test,1);
  76.     self addMenu(2,1,"Test",::test,2);
  77.     self addMenu(2,2,"Test",::test,3);
  78. }
  79. listenAll(){
  80. self endon("exitMenu");
  81.     for(;;)
  82.     {
  83.          button = self waittill_any_return("button_ltrig", "button_rtrig", "A", "RS", "B");
  84.          if(button == "button_ltrig")
  85.          {
  86.             self notify ( "scrollUp" );
  87.             self.scroll--;
  88.             self thread checkScroll();
  89.             self thread subMenu();
  90.             wait .1;
  91.          }
  92.          else if(button == "button_rtrig")
  93.          {
  94.             self notify ( "scrollDown" );
  95.             self.scroll++;
  96.             if(self.scroll<0)
  97.                 self.scroll=level.subMenuNames[self.cycle][self.scroll].size-1;
  98.             if(self.scroll > level.subMenuNames[self.cycle].size-1)
  99.                 self.scroll = 0;
  100.             self thread checkScroll();
  101.             self thread subMenu();
  102.             wait .1;
  103.          }
  104.          else if(button == "A")
  105.          {
  106.             self thread [[level.subMenuFunctions[self.cycle][self.scroll]]](level.subMenuInputs[self.cycle][self.scroll]);
  107.             wait .1;
  108.          }
  109.          else if(button == "RS")
  110.          {
  111.             self notify ( "cycleRight" );
  112.             self.cycle++;
  113.             self thread checkCycle();
  114.             self thread topLevelMenu();
  115.             self thread subMenu();
  116.             wait .1;
  117.          }
  118.          else if(button == "B")
  119.          {
  120.             self Close();
  121.          }
  122.     }
  123. }
  124. addBlank(menu,title,options){
  125.     level.topLevelMenuNames[menu] = title;
  126.     level.subMenuNumOptions[menu] = options;
  127.     level.subMenuNames[menu] = [];
  128.     level.subMenuFunctions[menu] = [];
  129.     level.subMenuInputs[menu] = [];
  130. }
  131. addMenu(menu,sub,text,func,input){
  132.     level.subMenuNames[menu][sub] = text;
  133.     level.subMenuFunctions[menu][sub] = func;
  134.     level.subMenuInputs[menu][sub] = input;
  135. }
  136. MonitorButtons()
  137. {
  138. for(;;)
  139. {
  140.     if(self UseButtonPressed()) self notify("A");
  141.     if(self AttackButtonPressed()) self notify("button_rtrig");
  142.     if(self AdsButtonPressed()) self notify("button_ltrig");
  143.     if(self FragButtonPressed()) self notify("RS");
  144.     if(self MeleeButtonPressed()) self notify("B");
  145.     wait .05;
  146.     }
  147. }
  148. Close(){
  149.     self freezeControls(false);
  150.     self notify ( "exitMenu" );
  151. }
  152. topLevelMenu()
  153. {
  154.     self endon ( "cycleRight" );
  155.     self endon ( "cycleLeft" );
  156.     self endon ( "exitMenu" );
  157.    
  158.     topLevelMenu = [];
  159.        
  160.     for(i = -1; i < 2; i++){
  161.         topLevelMenu[i+1] = self maps\_hud_util::createFontString( "objective", 3.0, self );
  162.         topLevelMenu[i+1] maps\_hud_util::setPoint( "CENTER", "top", (i)*level.menuX, (-1)*level.menuY-180 );
  163.         if((i + self.cycle) < 0){
  164.             topLevelMenu[i+1] setText("" + level.topLevelMenuNames[i + self.cycle + level.topLevelMenuOptions]);
  165.             topLevelMenu[i+1].color=(randomInt(255)/255, randomInt(255)/255, randomInt(255)/255);
  166.             }
  167.         else if((i + self.cycle) > level.topLevelMenuOptions - 1){
  168.             topLevelMenu[i+1] setText("" + level.topLevelMenuNames[i + self.cycle - level.topLevelMenuOptions]);
  169.             topLevelMenu[i+1].color=(randomInt(255)/255, randomInt(255)/255, randomInt(255)/255);
  170.             }
  171.         else{
  172.             topLevelMenu[i+1] setText("" + level.topLevelMenuNames[i + self.cycle]);
  173.             topLevelMenu[i+1].color=(randomInt(255)/255, randomInt(255)/255, randomInt(255)/255);
  174.             }
  175.        
  176.         self thread destroyOnDeath(topLevelMenu[i+1]);
  177.         self thread exitMenu(topLevelMenu[i+1]);
  178.         self thread cycleRight(topLevelMenu[i+1]);
  179.         }
  180. }
  181.  
  182. subMenu()
  183. {
  184.     self endon ( "cycleRight" );
  185.     self endon ( "cycleLeft" );
  186.     self endon ( "exitMenu" );
  187.     subMenu = [];
  188.  
  189.     for(i = 0; i < level.subMenuNumOptions[self.cycle]; i++){
  190.         subMenu[i] = self maps\_hud_util::createFontString( "objective", 1.2, self );
  191.         subMenu[i] maps\_hud_util::setPoint( "CENTER", "CENTER", 0, i*level.menuY-150 );
  192.         if(i != self.scroll){
  193.             subMenu[i] setText( level.subMenuNames[self.cycle][i]);
  194.             }
  195.         else{
  196.             subMenu[i].fontscale = 2.0;
  197.             subMenu[i] setText( "" + "[" + level.subMenuNames[self.cycle][i] + "]");
  198.             subMenu[i].color=(randomInt(255)/255, randomInt(255)/255, randomInt(255)/255);
  199.             }
  200.  
  201.         self thread destroyOnDeath(subMenu[i]);
  202.         self thread exitMenu(subMenu[i]);
  203.         self thread cycleRight(subMenu[i]);
  204.         self thread scrollUp(subMenu[i]);
  205.         self thread scrollDown(subMenu[i]);
  206.         }
  207. }
  208.  
  209. destroyOnDeath( hudElem )
  210. {
  211.     self waittill ( "death" );
  212.     hudElem destroy();
  213. }
  214.  
  215. destroyOnExitMenu( hudElem )
  216. {
  217.     self waittill ( "exitMenu" );
  218.     hudElem destroy();
  219. }
  220.  
  221. exitMenu( menu )
  222. {
  223.     self waittill ( "exitMenu" );
  224.     menu destroy();
  225.     self.menuIsOpen = false;
  226. }
  227.  
  228. cycleRight( menu )
  229. {
  230.     self waittill ( "cycleRight" );
  231.     menu destroy();
  232. }
  233.  
  234. scrollUp( menu )
  235. {
  236.     self waittill ( "scrollUp" );
  237.     menu destroy();
  238. }
  239.  
  240. scrollDown( menu )
  241. {
  242.     self waittill ( "scrollDown" );
  243.     menu destroy();
  244. }
  245.  
  246. checkCycle()
  247. {
  248.     if(self.cycle > level.topLevelMenuOptions - 1){
  249.         self.cycle = self.cycle - level.topLevelMenuOptions;
  250.         }
  251.     else if(self.cycle < 0){
  252.         self.cycle = self.cycle + level.topLevelMenuOptions;
  253.         }
  254. }
  255.  
  256. checkScroll()
  257. {
  258.     if(self.scroll < 0){
  259.         self.scroll = 0;
  260.         }
  261.     else if(self.scroll > level.subMenuNumOptions[self.cycle] - 1){
  262.         self.scroll = level.subMenuNumOptions[self.cycle] - 1;
  263.         }
  264. }
  265.  
  266. test(i){
  267.     self iprintln(i);
  268. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement