Advertisement
Guest User

Untitled

a guest
Sep 29th, 2010
540
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 16.45 KB | None | 0 0
  1. #include maps\mp\_utility;
  2.  
  3. setParent( element )
  4. {
  5. if ( isDefined( self.parent ) && self.parent == element )
  6. return;
  7.  
  8. if ( isDefined( self.parent ) )
  9. self.parent removeChild( self );
  10.  
  11. self.parent = element;
  12. self.parent addChild( self );
  13.  
  14. if ( isDefined( self.point ) )
  15. self setPoint( self.point, self.relativePoint, self.xOffset, self.yOffset );
  16. else
  17. self setPoint( "TOPLEFT" );
  18. }
  19.  
  20. getParent()
  21. {
  22. return self.parent;
  23. }
  24.  
  25. addChild( element )
  26. {
  27. element.index = self.children.size;
  28. self.children[self.children.size] = element;
  29. }
  30.  
  31. removeChild( element )
  32. {
  33. element.parent = undefined;
  34.  
  35. if ( self.children[self.children.size-1] != element )
  36. {
  37. self.children[element.index] = self.children[self.children.size-1];
  38. self.children[element.index].index = element.index;
  39. }
  40. self.children[self.children.size-1] = undefined;
  41.  
  42. element.index = undefined;
  43. }
  44.  
  45.  
  46. setPoint( point, relativePoint, xOffset, yOffset, moveTime )
  47. {
  48. if ( !isDefined( moveTime ) )
  49. moveTime = 0;
  50.  
  51. element = self getParent();
  52.  
  53. if ( moveTime )
  54. self moveOverTime( moveTime );
  55.  
  56. if ( !isDefined( xOffset ) )
  57. xOffset = 0;
  58. self.xOffset = xOffset;
  59.  
  60. if ( !isDefined( yOffset ) )
  61. yOffset = 0;
  62. self.yOffset = yOffset;
  63.  
  64. self.point = point;
  65.  
  66. self.alignX = "center";
  67. self.alignY = "middle";
  68.  
  69. if ( isSubStr( point, "TOP" ) )
  70. self.alignY = "top";
  71. if ( isSubStr( point, "BOTTOM" ) )
  72. self.alignY = "bottom";
  73. if ( isSubStr( point, "LEFT" ) )
  74. self.alignX = "left";
  75. if ( isSubStr( point, "RIGHT" ) )
  76. self.alignX = "right";
  77.  
  78. if ( !isDefined( relativePoint ) )
  79. relativePoint = point;
  80.  
  81. self.relativePoint = relativePoint;
  82.  
  83. relativeX = "center_adjustable";
  84. relativeY = "middle";
  85.  
  86. if ( isSubStr( relativePoint, "TOP" ) )
  87. relativeY = "top_adjustable";
  88. if ( isSubStr( relativePoint, "BOTTOM" ) )
  89. relativeY = "bottom_adjustable";
  90. if ( isSubStr( relativePoint, "LEFT" ) )
  91. relativeX = "left_adjustable";
  92. if ( isSubStr( relativePoint, "RIGHT" ) )
  93. relativeX = "right_adjustable";
  94.  
  95. if ( element == level.uiParent )
  96. {
  97. self.horzAlign = relativeX;
  98. self.vertAlign = relativeY;
  99. }
  100. else
  101. {
  102. self.horzAlign = element.horzAlign;
  103. self.vertAlign = element.vertAlign;
  104. }
  105.  
  106.  
  107. if ( strip_suffix( relativeX, "_adjustable" ) == element.alignX )
  108. {
  109. offsetX = 0;
  110. xFactor = 0;
  111. }
  112. else if ( relativeX == "center" || element.alignX == "center" )
  113. {
  114. offsetX = int(element.width / 2);
  115. if ( relativeX == "left_adjustable" || element.alignX == "right" )
  116. xFactor = -1;
  117. else
  118. xFactor = 1;
  119. }
  120. else
  121. {
  122. offsetX = element.width;
  123. if ( relativeX == "left_adjustable" )
  124. xFactor = -1;
  125. else
  126. xFactor = 1;
  127. }
  128. self.x = element.x + (offsetX * xFactor);
  129.  
  130. if ( strip_suffix( relativeY, "_adjustable" ) == element.alignY )
  131. {
  132. offsetY = 0;
  133. yFactor = 0;
  134. }
  135. else if ( relativeY == "middle" || element.alignY == "middle" )
  136. {
  137. offsetY = int(element.height / 2);
  138. if ( relativeY == "top_adjustable" || element.alignY == "bottom" )
  139. yFactor = -1;
  140. else
  141. yFactor = 1;
  142. }
  143. else
  144. {
  145. offsetY = element.height;
  146. if ( relativeY == "top_adjustable" )
  147. yFactor = -1;
  148. else
  149. yFactor = 1;
  150. }
  151. self.y = element.y + (offsetY * yFactor);
  152.  
  153. self.x += self.xOffset;
  154. self.y += self.yOffset;
  155.  
  156. switch ( self.elemType )
  157. {
  158. case "bar":
  159. setPointBar( point, relativePoint, xOffset, yOffset );
  160. break;
  161. }
  162.  
  163. self updateChildren();
  164. }
  165.  
  166.  
  167. setPointBar( point, relativePoint, xOffset, yOffset )
  168. {
  169. self.bar.horzAlign = self.horzAlign;
  170. self.bar.vertAlign = self.vertAlign;
  171.  
  172. self.bar.alignX = "left";
  173. self.bar.alignY = self.alignY;
  174. self.bar.y = self.y;
  175.  
  176. if ( self.alignX == "left" )
  177. self.bar.x = self.x;
  178. else if ( self.alignX == "right" )
  179. self.bar.x = self.x - self.width;
  180. else
  181. self.bar.x = self.x - int(self.width / 2);
  182.  
  183. if ( self.alignY == "top" )
  184. self.bar.y = self.y;
  185. else if ( self.alignY == "bottom" )
  186. self.bar.y = self.y;
  187.  
  188. self updateBar( self.bar.frac );
  189. }
  190.  
  191.  
  192. updateBar( barFrac, rateOfChange )
  193. {
  194. if ( self.elemType == "bar" )
  195. updateBarScale( barFrac, rateOfChange );
  196. }
  197.  
  198.  
  199. updateBarScale( barFrac, rateOfChange ) // rateOfChange is optional and is in "(entire bar lengths) per second"
  200. {
  201. barWidth = int(self.width * barFrac + 0.5); // (+ 0.5 rounds)
  202.  
  203. if ( !barWidth )
  204. barWidth = 1;
  205.  
  206. self.bar.frac = barFrac;
  207. self.bar setShader( self.bar.shader, barWidth, self.height );
  208.  
  209. assertEx( barWidth <= self.width, "barWidth <= self.width: " + barWidth + " <= " + self.width + " - barFrac was " + barFrac );
  210.  
  211. //if barWidth is bigger than self.width then we are drawing more than 100%
  212. if ( isDefined( rateOfChange ) && barWidth < self.width )
  213. {
  214. if ( rateOfChange > 0 )
  215. {
  216. //printLn( "scaling from: " + barWidth + " to " + self.width + " at " + ((1 - barFrac) / rateOfChange) );
  217. assertex( ((1 - barFrac) / rateOfChange) > 0, "barFrac: " + barFrac + "rateOfChange: " + rateOfChange );
  218. self.bar scaleOverTime( (1 - barFrac) / rateOfChange, self.width, self.height );
  219. }
  220. else if ( rateOfChange < 0 )
  221. {
  222. //printLn( "scaling from: " + barWidth + " to " + 0 + " at " + (barFrac / (-1 * rateOfChange)) );
  223. assertex( (barFrac / (-1 * rateOfChange)) > 0, "barFrac: " + barFrac + "rateOfChange: " + rateOfChange );
  224. self.bar scaleOverTime( barFrac / (-1 * rateOfChange), 1, self.height );
  225. }
  226. }
  227. self.bar.rateOfChange = rateOfChange;
  228. self.bar.lastUpdateTime = getTime();
  229. }
  230.  
  231.  
  232. createFontString( font, fontScale )
  233. {
  234. fontElem = newClientHudElem( self );
  235. fontElem.elemType = "font";
  236. fontElem.font = font;
  237. fontElem.fontscale = fontScale;
  238. fontElem.baseFontScale = fontScale;
  239. fontElem.x = 0;
  240. fontElem.y = 0;
  241. fontElem.width = 0;
  242. fontElem.height = int(level.fontHeight * fontScale);
  243. fontElem.xOffset = 0;
  244. fontElem.yOffset = 0;
  245. fontElem.children = [];
  246. fontElem setParent( level.uiParent );
  247. fontElem.hidden = false;
  248. return fontElem;
  249. }
  250.  
  251.  
  252. createServerFontString( font, fontScale, team )
  253. {
  254. if ( isDefined( team ) )
  255. fontElem = newTeamHudElem( team );
  256. else
  257. fontElem = newHudElem();
  258.  
  259. fontElem.elemType = "font";
  260. fontElem.font = font;
  261. fontElem.fontscale = fontScale;
  262. fontElem.baseFontScale = fontScale;
  263. fontElem.x = 0;
  264. fontElem.y = 0;
  265. fontElem.width = 0;
  266. fontElem.height = int(level.fontHeight * fontScale);
  267. fontElem.xOffset = 0;
  268. fontElem.yOffset = 0;
  269. fontElem.children = [];
  270. fontElem setParent( level.uiParent );
  271. fontElem.hidden = false;
  272.  
  273. return fontElem;
  274. }
  275.  
  276. createServerTimer( font, fontScale, team )
  277. {
  278. if ( isDefined( team ) )
  279. timerElem = newTeamHudElem( team );
  280. else
  281. timerElem = newHudElem();
  282. timerElem.elemType = "timer";
  283. timerElem.font = font;
  284. timerElem.fontScale = fontScale;
  285. timerElem.baseFontScale = fontScale;
  286. timerElem.x = 0;
  287. timerElem.y = 0;
  288. timerElem.width = 0;
  289. timerElem.height = int(level.fontHeight * fontScale);
  290. timerElem.xOffset = 0;
  291. timerElem.yOffset = 0;
  292. timerElem.children = [];
  293. timerElem setParent( level.uiParent );
  294. timerElem.hidden = false;
  295.  
  296. return timerElem;
  297. }
  298.  
  299.  
  300. createTimer( font, fontScale )
  301. {
  302. timerElem = newClientHudElem( self );
  303. timerElem.elemType = "timer";
  304. timerElem.font = font;
  305. timerElem.fontScale = fontScale;
  306. timerElem.baseFontScale = fontScale;
  307. timerElem.x = 0;
  308. timerElem.y = 0;
  309. timerElem.width = 0;
  310. timerElem.height = int(level.fontHeight * fontScale);
  311. timerElem.xOffset = 0;
  312. timerElem.yOffset = 0;
  313. timerElem.children = [];
  314. timerElem setParent( level.uiParent );
  315. timerElem.hidden = false;
  316.  
  317. return timerElem;
  318. }
  319.  
  320.  
  321. createIcon( shader, width, height )
  322. {
  323. iconElem = newClientHudElem( self );
  324. iconElem.elemType = "icon";
  325. iconElem.x = 0;
  326. iconElem.y = 0;
  327. iconElem.width = width;
  328. iconElem.height = height;
  329. iconElem.baseWidth = iconElem.width;
  330. iconElem.baseHeight = iconElem.height;
  331. iconElem.xOffset = 0;
  332. iconElem.yOffset = 0;
  333. iconElem.children = [];
  334. iconElem setParent( level.uiParent );
  335. iconElem.hidden = false;
  336.  
  337. if ( isDefined( shader ) )
  338. {
  339. iconElem setShader( shader, width, height );
  340. iconElem.shader = shader;
  341. }
  342.  
  343. return iconElem;
  344. }
  345.  
  346.  
  347. createServerIcon( shader, width, height, team )
  348. {
  349. if ( isDefined( team ) )
  350. iconElem = newTeamHudElem( team );
  351. else
  352. iconElem = newHudElem();
  353. iconElem.elemType = "icon";
  354. iconElem.x = 0;
  355. iconElem.y = 0;
  356. iconElem.width = width;
  357. iconElem.height = height;
  358. iconElem.baseWidth = iconElem.width;
  359. iconElem.baseHeight = iconElem.height;
  360. iconElem.xOffset = 0;
  361. iconElem.yOffset = 0;
  362. iconElem.children = [];
  363. iconElem setParent( level.uiParent );
  364. iconElem.hidden = false;
  365.  
  366. if ( isDefined( shader ) )
  367. {
  368. iconElem setShader( shader, width, height );
  369. iconElem.shader = shader;
  370. }
  371.  
  372. return iconElem;
  373. }
  374.  
  375.  
  376. createServerBar( color, width, height, flashFrac, team, selected )
  377. {
  378. if ( isDefined( team ) )
  379. barElem = newTeamHudElem( team );
  380. else
  381. barElem = newHudElem();
  382. barElem.x = 0;
  383. barElem.y = 0;
  384. barElem.frac = 0;
  385. barElem.color = color;
  386. barElem.sort = -2;
  387. barElem.shader = "progress_bar_fill";
  388. barElem setShader( "progress_bar_fill", width, height );
  389. barElem.hidden = false;
  390. if ( isDefined( flashFrac ) )
  391. {
  392. barElem.flashFrac = flashFrac;
  393. // barElem thread flashThread();
  394. }
  395.  
  396. if ( isDefined( team ) )
  397. barElemBG = newTeamHudElem( team );
  398. else
  399. barElemBG = newHudElem();
  400. barElemBG.elemType = "bar";
  401. barElemBG.x = 0;
  402. barElemBG.y = 0;
  403. barElemBG.width = width;
  404. barElemBG.height = height;
  405. barElemBG.xOffset = 0;
  406. barElemBG.yOffset = 0;
  407. barElemBG.bar = barElem;
  408. barElemBG.children = [];
  409. barElemBG.sort = -3;
  410. barElemBG.color = (0,0,0);
  411. barElemBG.alpha = 0.5;
  412. barElemBG setParent( level.uiParent );
  413. barElemBG setShader( "progress_bar_bg", width, height );
  414. barElemBG.hidden = false;
  415.  
  416. return barElemBG;
  417. }
  418.  
  419. createBar( color, width, height, flashFrac )
  420. {
  421. barElem = newClientHudElem( self );
  422. barElem.x = 0 ;
  423. barElem.y = 0;
  424. barElem.frac = 0;
  425. barElem.color = color;
  426. barElem.sort = -2;
  427. barElem.shader = "progress_bar_fill";
  428. barElem setShader( "progress_bar_fill", width, height );
  429. barElem.hidden = false;
  430. if ( isDefined( flashFrac ) )
  431. {
  432. barElem.flashFrac = flashFrac;
  433. // barElem thread flashThread();
  434. }
  435.  
  436. barElemBG = newClientHudElem( self );
  437. barElemBG.elemType = "bar";
  438. barElemBG.width = width;
  439. barElemBG.height = height;
  440. barElemBG.xOffset = 0;
  441. barElemBG.yOffset = 0;
  442. barElemBG.bar = barElem;
  443. barElemBG.children = [];
  444. barElemBG.sort = -3;
  445. barElemBG.color = (0,0,0);
  446. barElemBG.alpha = 0.5;
  447. barElemBG setParent( level.uiParent );
  448. barElemBG setShader( "progress_bar_bg", width + 4, height + 4 );
  449. barElemBG.hidden = false;
  450.  
  451. return barElemBG;
  452. }
  453.  
  454. getCurrentFraction()
  455. {
  456. frac = self.bar.frac;
  457. if (isdefined(self.bar.rateOfChange))
  458. {
  459. frac += (getTime() - self.bar.lastUpdateTime) * self.bar.rateOfChange;
  460. if (frac > 1) frac = 1;
  461. if (frac < 0) frac = 0;
  462. }
  463. return frac;
  464. }
  465.  
  466. createPrimaryProgressBar( yOffset )
  467. {
  468. if ( !isDefined( yOffset ) )
  469. yOffset = 0;
  470.  
  471. bar = createBar( (1, 1, 1), level.primaryProgressBarWidth, level.primaryProgressBarHeight );
  472. bar setPoint("CENTER", undefined, level.primaryProgressBarX, level.primaryProgressBarY - yOffset );
  473.  
  474. return bar;
  475. }
  476. createPrimaryProgressBarText( yOffset )
  477. {
  478. if ( !isDefined( yOffset ) )
  479. yOffset = 0;
  480.  
  481. text = createFontString( "hudbig", level.primaryProgressBarFontSize );
  482. text setPoint("CENTER", undefined, level.primaryProgressBarTextX, level.primaryProgressBarTextY - yOffset );
  483. text.sort = -1;
  484. return text;
  485. }
  486.  
  487.  
  488. createTeamProgressBar( team )
  489. {
  490. bar = createServerBar( (1,0,0), level.teamProgressBarWidth, level.teamProgressBarHeight, undefined, team );
  491. bar setPoint("TOP", undefined, 0, level.teamProgressBarY);
  492. return bar;
  493. }
  494. createTeamProgressBarText( team )
  495. {
  496. text = createServerFontString( "default", level.teamProgressBarFontSize, team );
  497. text setPoint("TOP", undefined, 0, level.teamProgressBarTextY);
  498. return text;
  499. }
  500.  
  501.  
  502. setFlashFrac( flashFrac )
  503. {
  504. self.bar.flashFrac = flashFrac;
  505. }
  506.  
  507. hideElem()
  508. {
  509. if ( self.hidden )
  510. return;
  511.  
  512. self.hidden = true;
  513.  
  514. if ( self.alpha != 0 )
  515. self.alpha = 0;
  516.  
  517. if ( self.elemType == "bar" || self.elemType == "bar_shader" )
  518. {
  519. self.bar.hidden = true;
  520. if ( self.bar.alpha != 0 )
  521. self.bar.alpha = 0;
  522. }
  523. }
  524.  
  525. showElem()
  526. {
  527. if ( !self.hidden )
  528. return;
  529.  
  530. self.hidden = false;
  531.  
  532. if ( self.elemType == "bar" || self.elemType == "bar_shader" )
  533. {
  534. if ( self.alpha != .5 )
  535. self.alpha = .5;
  536.  
  537. self.bar.hidden = false;
  538. if ( self.bar.alpha != 1 )
  539. self.bar.alpha = 1;
  540.  
  541. }
  542. else
  543. {
  544. if ( self.alpha != 1 )
  545. self.alpha = 1;
  546. }
  547. }
  548.  
  549.  
  550. flashThread()
  551. {
  552. self endon ( "death" );
  553.  
  554. if ( !self.hidden )
  555. self.alpha = 1;
  556.  
  557. while(1)
  558. {
  559. if ( self.frac >= self.flashFrac )
  560. {
  561. if ( !self.hidden )
  562. {
  563. self fadeOverTime(0.3);
  564. self.alpha = .2;
  565. wait(0.35);
  566. self fadeOverTime(0.3);
  567. self.alpha = 1;
  568. }
  569. wait(0.7);
  570. }
  571. else
  572. {
  573. if ( !self.hidden && self.alpha != 1 )
  574. self.alpha = 1;
  575.  
  576. wait ( 0.05 );
  577. }
  578. }
  579. }
  580.  
  581.  
  582. destroyElem()
  583. {
  584. tempChildren = [];
  585.  
  586. for ( index = 0; index < self.children.size; index++ )
  587. {
  588. if ( isDefined( self.children[index] ) )
  589. tempChildren[tempChildren.size] = self.children[index];
  590. }
  591.  
  592. for ( index = 0; index < tempChildren.size; index++ )
  593. tempChildren[index] setParent( self getParent() );
  594.  
  595. if ( self.elemType == "bar" || self.elemType == "bar_shader" )
  596. {
  597. self.bar destroy();
  598. }
  599.  
  600. self destroy();
  601. }
  602.  
  603. setIconShader( shader )
  604. {
  605. self setShader( shader );
  606. self.shader = shader;
  607. }
  608.  
  609.  
  610. getIconShader( shader )
  611. {
  612. return self.shader;
  613. }
  614.  
  615.  
  616. setIconSize( width, height )
  617. {
  618. assert( isDefined( self.shader ) );
  619.  
  620. self setShader( self.shader, width, height );
  621. }
  622.  
  623.  
  624. setWidth( width )
  625. {
  626. self.width = width;
  627. }
  628.  
  629.  
  630. setHeight( height )
  631. {
  632. self.height = height;
  633. }
  634.  
  635. setSize( width, height )
  636. {
  637. self.width = width;
  638. self.height = height;
  639. }
  640.  
  641. updateChildren()
  642. {
  643. for ( index = 0; index < self.children.size; index++ )
  644. {
  645. child = self.children[index];
  646. child setPoint( child.point, child.relativePoint, child.xOffset, child.yOffset );
  647. }
  648. }
  649.  
  650.  
  651.  
  652. transitionReset()
  653. {
  654. self.x = self.xOffset;
  655. self.y = self.yOffset;
  656. if ( self.elemType == "font" )
  657. {
  658. self.fontScale = self.baseFontScale;
  659. self.label = &"";
  660. }
  661. else if ( self.elemType == "icon" )
  662. {
  663. //self scaleOverTime( 0.001, self.width, self.height );
  664. self setShader( self.shader, self.width, self.height );
  665. }
  666. self.alpha = 0;
  667. }
  668.  
  669.  
  670. transitionZoomIn( duration )
  671. {
  672. switch ( self.elemType )
  673. {
  674. case "font":
  675. case "timer":
  676. self.fontScale = 6.3;
  677. self changeFontScaleOverTime( duration );
  678. self.fontScale = self.baseFontScale;
  679. break;
  680. case "icon":
  681. self setShader( self.shader, self.width * 6, self.height * 6 );
  682. self scaleOverTime( duration, self.width, self.height );
  683. break;
  684. }
  685. }
  686.  
  687.  
  688. transitionPulseFXIn( inTime, duration )
  689. {
  690. transTime = int(inTime)*1000;
  691. showTime = int(duration)*1000;
  692.  
  693. switch ( self.elemType )
  694. {
  695. case "font":
  696. case "timer":
  697. self setPulseFX( transTime+250, showTime+transTime, transTime+250 );
  698. break;
  699. default:
  700. break;
  701. }
  702. }
  703.  
  704.  
  705. transitionSlideIn( duration, direction )
  706. {
  707. if ( !isDefined( direction ) )
  708. direction = "left";
  709.  
  710. switch ( direction )
  711. {
  712. case "left":
  713. self.x += 1000;
  714. break;
  715. case "right":
  716. self.x -= 1000;
  717. break;
  718. case "up":
  719. self.y -= 1000;
  720. break;
  721. case "down":
  722. self.y += 1000;
  723. break;
  724. }
  725. self moveOverTime( duration );
  726. self.x = self.xOffset;
  727. self.y = self.yOffset;
  728. }
  729.  
  730.  
  731. transitionSlideOut( duration, direction )
  732. {
  733. if ( !isDefined( direction ) )
  734. direction = "left";
  735.  
  736. gotoX = self.xOffset;
  737. gotoY = self.yOffset;
  738.  
  739. switch ( direction )
  740. {
  741. case "left":
  742. gotoX += 1000;
  743. break;
  744. case "right":
  745. gotoX -= 1000;
  746. break;
  747. case "up":
  748. gotoY -= 1000;
  749. break;
  750. case "down":
  751. gotoY += 1000;
  752. break;
  753. }
  754.  
  755. self.alpha = 1;
  756.  
  757. self moveOverTime( duration );
  758. self.x = gotoX;
  759. self.y = gotoY;
  760. }
  761.  
  762.  
  763. transitionZoomOut( duration )
  764. {
  765. switch ( self.elemType )
  766. {
  767. case "font":
  768. case "timer":
  769. self changeFontScaleOverTime( duration );
  770. self.fontScale = 6.3;
  771. case "icon":
  772. self scaleOverTime( duration, self.width * 6, self.height * 6 );
  773. break;
  774. }
  775. }
  776.  
  777.  
  778. transitionFadeIn( duration )
  779. {
  780. self fadeOverTime( duration );
  781. if ( isDefined( self.maxAlpha ) )
  782. self.alpha = self.maxAlpha;
  783. else
  784. self.alpha = 1;
  785. }
  786.  
  787.  
  788. transitionFadeOut( duration )
  789. {
  790. self fadeOverTime( 0.15 );
  791. self.alpha = 0;
  792. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement