GameWindowTransitions.h 19 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697
  1. /*
  2. ** Command & Conquer Generals Zero Hour(tm)
  3. ** Copyright 2025 Electronic Arts Inc.
  4. **
  5. ** This program is free software: you can redistribute it and/or modify
  6. ** it under the terms of the GNU General Public License as published by
  7. ** the Free Software Foundation, either version 3 of the License, or
  8. ** (at your option) any later version.
  9. **
  10. ** This program is distributed in the hope that it will be useful,
  11. ** but WITHOUT ANY WARRANTY; without even the implied warranty of
  12. ** MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
  13. ** GNU General Public License for more details.
  14. **
  15. ** You should have received a copy of the GNU General Public License
  16. ** along with this program. If not, see <http://www.gnu.org/licenses/>.
  17. */
  18. ////////////////////////////////////////////////////////////////////////////////
  19. // //
  20. // (c) 2001-2003 Electronic Arts Inc. //
  21. // //
  22. ////////////////////////////////////////////////////////////////////////////////
  23. // FILE: GameWindowTransitions.h /////////////////////////////////////////////////
  24. //-----------------------------------------------------------------------------
  25. //
  26. // Electronic Arts Pacific.
  27. //
  28. // Confidential Information
  29. // Copyright (C) 2002 - All Rights Reserved
  30. //
  31. //-----------------------------------------------------------------------------
  32. //
  33. // created: Dec 2002
  34. //
  35. // Filename: GameWindowTransitions.h
  36. //
  37. // author: Chris Huybregts
  38. //
  39. // purpose:
  40. //
  41. //-----------------------------------------------------------------------------
  42. ///////////////////////////////////////////////////////////////////////////////
  43. #pragma once
  44. #ifndef __GAME_WINDOW_TRANSITIONS_H_
  45. #define __GAME_WINDOW_TRANSITIONS_H_
  46. //-----------------------------------------------------------------------------
  47. // SYSTEM INCLUDES ////////////////////////////////////////////////////////////
  48. //-----------------------------------------------------------------------------
  49. //-----------------------------------------------------------------------------
  50. // USER INCLUDES //////////////////////////////////////////////////////////////
  51. //-----------------------------------------------------------------------------
  52. //-----------------------------------------------------------------------------
  53. // FORWARD REFERENCES /////////////////////////////////////////////////////////
  54. //-----------------------------------------------------------------------------
  55. class GameWindow;
  56. class Image;
  57. class DisplayString;
  58. //-----------------------------------------------------------------------------
  59. // TYPE DEFINES ///////////////////////////////////////////////////////////////
  60. //-----------------------------------------------------------------------------
  61. enum
  62. {
  63. TRANSITION_FLASH = 0,
  64. BUTTON_TRANSITION_FLASH,
  65. WIN_FADE_TRANSITION,
  66. WIN_SCALE_UP_TRANSITION,
  67. MAINMENU_SCALE_UP_TRANSITION,
  68. TEXT_TYPE_TRANSITION,
  69. SCREEN_FADE_TRANSITION,
  70. COUNT_UP_TRANSITION,
  71. FULL_FADE_TRANSITION,
  72. TEXT_ON_FRAME_TRANSITION,
  73. MAINMENU_MEDIUM_SCALE_UP_TRANSITION,
  74. MAINMENU_SMALL_SCALE_DOWN_TRANSITION,
  75. CONTROL_BAR_ARROW_TRANSITION,
  76. SCORE_SCALE_UP_TRANSITION,
  77. REVERSE_SOUND_TRANSITION,
  78. MAX_TRANSITION_WINDOW_STYLES ///< Keep this last
  79. };
  80. static const LookupListRec TransitionStyleNames[] =
  81. {
  82. { "FLASH", TRANSITION_FLASH },
  83. { "BUTTONFLASH", BUTTON_TRANSITION_FLASH },
  84. { "WINFADE", WIN_FADE_TRANSITION },
  85. { "WINSCALEUP", WIN_SCALE_UP_TRANSITION },
  86. { "MAINMENUSCALEUP", MAINMENU_SCALE_UP_TRANSITION },
  87. { "TYPETEXT", TEXT_TYPE_TRANSITION },
  88. { "SCREENFADE", SCREEN_FADE_TRANSITION },
  89. { "COUNTUP", COUNT_UP_TRANSITION },
  90. { "FULLFADE", FULL_FADE_TRANSITION },
  91. { "TEXTONFRAME", TEXT_ON_FRAME_TRANSITION },
  92. { "MAINMENUMEDIUMSCALEUP", MAINMENU_MEDIUM_SCALE_UP_TRANSITION },
  93. { "MAINMENUSMALLSCALEDOWN", MAINMENU_SMALL_SCALE_DOWN_TRANSITION },
  94. { "CONTROLBARARROW", CONTROL_BAR_ARROW_TRANSITION },
  95. { "SCORESCALEUP", SCORE_SCALE_UP_TRANSITION },
  96. { "REVERSESOUND", REVERSE_SOUND_TRANSITION },
  97. { NULL, 0 }// keep this last!
  98. };
  99. // base class for the transitions
  100. // inherit off of this adding in all the values
  101. class Transition
  102. {
  103. public:
  104. Transition ( void );
  105. virtual ~Transition( void );
  106. virtual void init( GameWindow *win ) = 0;
  107. virtual void update( Int frame ) = 0;
  108. virtual void reverse( void ) = 0;
  109. virtual void draw( void ) = 0;
  110. virtual void skip( void ) = 0;
  111. Bool isFinished( void ) { return m_isFinished; }
  112. Int getFrameLength( void ){ return m_frameLength; }
  113. protected:
  114. Int m_frameLength; // how many frames does this thing take.
  115. Bool m_isFinished; // when we finish we set this
  116. Bool m_isForward;
  117. Bool m_isReversed; // when we reverse we set this
  118. GameWindow *m_win;
  119. };
  120. //-----------------------------------------------------------------------------
  121. class TextOnFrameTransition : public Transition
  122. {
  123. public:
  124. TextOnFrameTransition ( void );
  125. virtual ~TextOnFrameTransition( void );
  126. virtual void init( GameWindow *win );
  127. virtual void update( Int frame );
  128. virtual void reverse( void );
  129. virtual void draw( void );
  130. virtual void skip( void );
  131. protected:
  132. enum{
  133. TEXTONFRAMETRANSITION_START = 0,
  134. TEXTONFRAMETRANSITION_END = 1 // Max text type we'll allow.
  135. };
  136. };
  137. //-----------------------------------------------------------------------------
  138. class ReverseSoundTransition : public Transition
  139. {
  140. public:
  141. ReverseSoundTransition ( void );
  142. virtual ~ReverseSoundTransition( void );
  143. virtual void init( GameWindow *win );
  144. virtual void update( Int frame );
  145. virtual void reverse( void );
  146. virtual void draw( void );
  147. virtual void skip( void );
  148. protected:
  149. enum{
  150. REVERSESOUNDTRANSITION_START = 0,
  151. REVERSESOUNDTRANSITION_FIRESOUND = 1,
  152. REVERSESOUNDTRANSITION_END = 2 // Max text type we'll allow.
  153. };
  154. };
  155. //-----------------------------------------------------------------------------
  156. class FullFadeTransition : public Transition
  157. {
  158. public:
  159. FullFadeTransition ( void );
  160. virtual ~FullFadeTransition( void );
  161. virtual void init( GameWindow *win );
  162. virtual void update( Int frame );
  163. virtual void reverse( void );
  164. virtual void draw( void );
  165. virtual void skip( void );
  166. protected:
  167. enum{
  168. FULLFADETRANSITION_START = 0,
  169. FULLFADETRANSITION_END = 10 // Max text type we'll allow.
  170. };
  171. ICoord2D m_pos;
  172. ICoord2D m_size;
  173. Real m_percent;
  174. Int m_drawState;
  175. };
  176. //-----------------------------------------------------------------------------
  177. class ControlBarArrowTransition : public Transition
  178. {
  179. public:
  180. ControlBarArrowTransition ( void );
  181. virtual ~ControlBarArrowTransition( void );
  182. virtual void init( GameWindow *win );
  183. virtual void update( Int frame );
  184. virtual void reverse( void );
  185. virtual void draw( void );
  186. virtual void skip( void );
  187. protected:
  188. enum{
  189. CONTROLBARARROWTRANSITION_START = 0,
  190. CONTROLBARARROWTRANSITION_BEGIN_FADE = 16,
  191. CONTROLBARARROWTRANSITION_END = 22 // Max text type we'll allow.
  192. };
  193. ICoord2D m_pos;
  194. ICoord2D m_incrementPos;
  195. ICoord2D m_size;
  196. Real m_percent;
  197. Real m_fadePercent;
  198. Int m_drawState;
  199. const Image* m_arrowImage;
  200. };
  201. //-----------------------------------------------------------------------------
  202. class ScreenFadeTransition : public Transition
  203. {
  204. public:
  205. ScreenFadeTransition ( void );
  206. virtual ~ScreenFadeTransition( void );
  207. virtual void init( GameWindow *win );
  208. virtual void update( Int frame );
  209. virtual void reverse( void );
  210. virtual void draw( void );
  211. virtual void skip( void );
  212. protected:
  213. enum{
  214. SCREENFADETRANSITION_START = 0,
  215. SCREENFADETRANSITION_END = 30 // Max text type we'll allow.
  216. };
  217. ICoord2D m_pos;
  218. ICoord2D m_size;
  219. Real m_percent;
  220. Int m_drawState;
  221. };
  222. //-----------------------------------------------------------------------------
  223. class CountUpTransition : public Transition
  224. {
  225. public:
  226. CountUpTransition ( void );
  227. virtual ~CountUpTransition( void );
  228. virtual void init( GameWindow *win );
  229. virtual void update( Int frame );
  230. virtual void reverse( void );
  231. virtual void draw( void );
  232. virtual void skip( void );
  233. protected:
  234. enum{
  235. COUNTUPTRANSITION_START = 0,
  236. COUNTUPTRANSITION_END = 30 // Max text type we'll allow.
  237. };
  238. ICoord2D m_pos;
  239. ICoord2D m_size;
  240. Int m_drawState;
  241. UnicodeString m_fullText;
  242. UnicodeString m_partialText;
  243. Int m_intValue;
  244. Int m_currentValue;
  245. enum{
  246. COUNT_ONES = 1,
  247. COUNT_100S = 100,
  248. COUNT_1000S = 1000
  249. };
  250. Int m_countState;
  251. };
  252. //-----------------------------------------------------------------------------
  253. class TextTypeTransition : public Transition
  254. {
  255. public:
  256. TextTypeTransition ( void );
  257. virtual ~TextTypeTransition( void );
  258. virtual void init( GameWindow *win );
  259. virtual void update( Int frame );
  260. virtual void reverse( void );
  261. virtual void draw( void );
  262. virtual void skip( void );
  263. protected:
  264. enum{
  265. TEXTTYPETRANSITION_START = 0,
  266. TEXTTYPETRANSITION_END = 30 // Max text type we'll allow.
  267. };
  268. ICoord2D m_pos;
  269. ICoord2D m_size;
  270. Int m_drawState;
  271. UnicodeString m_fullText;
  272. UnicodeString m_partialText;
  273. DisplayString *m_dStr;
  274. };
  275. //-----------------------------------------------------------------------------
  276. class MainMenuScaleUpTransition : public Transition
  277. {
  278. public:
  279. MainMenuScaleUpTransition ( void );
  280. virtual ~MainMenuScaleUpTransition( void );
  281. virtual void init( GameWindow *win );
  282. virtual void update( Int frame );
  283. virtual void reverse( void );
  284. virtual void draw( void );
  285. virtual void skip( void );
  286. protected:
  287. enum{
  288. MAINMENUSCALEUPTRANSITION_START = 0,
  289. MAINMENUSCALEUPTRANSITION_END = 5
  290. };
  291. ICoord2D m_pos;
  292. ICoord2D m_size;
  293. Int m_drawState;
  294. ICoord2D m_growPos;
  295. ICoord2D m_growSize;
  296. ICoord2D m_incrementPos;
  297. ICoord2D m_incrementSize;
  298. GameWindow *m_growWin;
  299. };
  300. //-----------------------------------------------------------------------------
  301. class MainMenuMediumScaleUpTransition : public Transition
  302. {
  303. public:
  304. MainMenuMediumScaleUpTransition ( void );
  305. virtual ~MainMenuMediumScaleUpTransition( void );
  306. virtual void init( GameWindow *win );
  307. virtual void update( Int frame );
  308. virtual void reverse( void );
  309. virtual void draw( void );
  310. virtual void skip( void );
  311. protected:
  312. enum{
  313. MAINMENUMEDIUMSCALEUPTRANSITION_START = 0,
  314. MAINMENUMEDIUMSCALEUPTRANSITION_END = 3
  315. };
  316. ICoord2D m_pos;
  317. ICoord2D m_size;
  318. Int m_drawState;
  319. ICoord2D m_growPos;
  320. ICoord2D m_growSize;
  321. ICoord2D m_incrementSize;
  322. GameWindow *m_growWin;
  323. };
  324. //-----------------------------------------------------------------------------
  325. class MainMenuSmallScaleDownTransition : public Transition
  326. {
  327. public:
  328. MainMenuSmallScaleDownTransition ( void );
  329. virtual ~MainMenuSmallScaleDownTransition( void );
  330. virtual void init( GameWindow *win );
  331. virtual void update( Int frame );
  332. virtual void reverse( void );
  333. virtual void draw( void );
  334. virtual void skip( void );
  335. protected:
  336. enum{
  337. MAINMENUSMALLSCALEDOWNTRANSITION_START = 0,
  338. MAINMENUSMALLSCALEDOWNTRANSITION_1 = 1,
  339. MAINMENUSMALLSCALEDOWNTRANSITION_2 = 2,
  340. MAINMENUSMALLSCALEDOWNTRANSITION_3 = 3,
  341. MAINMENUSMALLSCALEDOWNTRANSITION_4 = 4,
  342. MAINMENUSMALLSCALEDOWNTRANSITION_5 = 5,
  343. MAINMENUSMALLSCALEDOWNTRANSITION_END
  344. };
  345. ICoord2D m_pos;
  346. ICoord2D m_size;
  347. Int m_drawState;
  348. ICoord2D m_growPos;
  349. ICoord2D m_growSize;
  350. ICoord2D m_incrementSize;
  351. GameWindow *m_growWin;
  352. };
  353. //-----------------------------------------------------------------------------
  354. class ScaleUpTransition : public Transition
  355. {
  356. public:
  357. ScaleUpTransition ( void );
  358. virtual ~ScaleUpTransition( void );
  359. virtual void init( GameWindow *win );
  360. virtual void update( Int frame );
  361. virtual void reverse( void );
  362. virtual void draw( void );
  363. virtual void skip( void );
  364. protected:
  365. enum{
  366. SCALEUPTRANSITION_START = 0,
  367. SCALEUPTRANSITION_1 = 1,
  368. SCALEUPTRANSITION_2 = 2,
  369. SCALEUPTRANSITION_3 = 3,
  370. SCALEUPTRANSITION_4 = 4,
  371. SCALEUPTRANSITION_5 = 5,
  372. // SCALEUPTRANSITION_6 = 6,
  373. // SCALEUPTRANSITION_7 = 7,
  374. // SCALEUPTRANSITION_8 = 8,
  375. // SCALEUPTRANSITION_9 = 9,
  376. // SCALEUPTRANSITION_10 = 10,
  377. // SCALEUPTRANSITION_11 = 11,
  378. // SCALEUPTRANSITION_12 = 12,
  379. // SCALEUPTRANSITION_13 = 13,
  380. // SCALEUPTRANSITION_14 = 14,
  381. // SCALEUPTRANSITION_15 = 15,
  382. // SCALEUPTRANSITION_16 = 16,
  383. // SCALEUPTRANSITION_17 = 17,
  384. // SCALEUPTRANSITION_18 = 18,
  385. // SCALEUPTRANSITION_19 = 19,
  386. SCALEUPTRANSITION_END
  387. };
  388. ICoord2D m_pos;
  389. ICoord2D m_size;
  390. Int m_drawState;
  391. ICoord2D m_centerPos;
  392. ICoord2D m_incrementSize;
  393. };
  394. //-----------------------------------------------------------------------------
  395. class ScoreScaleUpTransition : public Transition
  396. {
  397. public:
  398. ScoreScaleUpTransition ( void );
  399. virtual ~ScoreScaleUpTransition( void );
  400. virtual void init( GameWindow *win );
  401. virtual void update( Int frame );
  402. virtual void reverse( void );
  403. virtual void draw( void );
  404. virtual void skip( void );
  405. protected:
  406. enum{
  407. SCORESCALEUPTRANSITION_START = 0,
  408. SCORESCALEUPTRANSITION_1 = 1,
  409. SCORESCALEUPTRANSITION_2 = 2,
  410. SCORESCALEUPTRANSITION_3 = 3,
  411. SCORESCALEUPTRANSITION_4 = 4,
  412. SCORESCALEUPTRANSITION_5 = 5,
  413. SCORESCALEUPTRANSITION_END
  414. };
  415. ICoord2D m_pos;
  416. ICoord2D m_size;
  417. Int m_drawState;
  418. ICoord2D m_centerPos;
  419. ICoord2D m_incrementSize;
  420. };
  421. //-----------------------------------------------------------------------------
  422. class FadeTransition : public Transition
  423. {
  424. public:
  425. FadeTransition ( void );
  426. virtual ~FadeTransition( void );
  427. virtual void init( GameWindow *win );
  428. virtual void update( Int frame );
  429. virtual void reverse( void );
  430. virtual void draw( void );
  431. virtual void skip( void );
  432. protected:
  433. enum{
  434. FADETRANSITION_START = 0,
  435. FADETRANSITION_FADE_IN_1 = 1,
  436. FADETRANSITION_FADE_IN_2 = 2,
  437. FADETRANSITION_FADE_IN_3 = 3,
  438. FADETRANSITION_FADE_IN_4 = 4,
  439. FADETRANSITION_FADE_IN_5 = 5,
  440. FADETRANSITION_FADE_IN_6 = 6,
  441. FADETRANSITION_FADE_IN_7 = 7,
  442. FADETRANSITION_FADE_IN_8 = 8,
  443. FADETRANSITION_FADE_IN_9 = 9,
  444. FADETRANSITION_END
  445. };
  446. ICoord2D m_pos;
  447. ICoord2D m_size;
  448. Int m_drawState;
  449. };
  450. //-----------------------------------------------------------------------------
  451. class FlashTransition : public Transition
  452. {
  453. public:
  454. FlashTransition ( void );
  455. virtual ~FlashTransition( void );
  456. virtual void init( GameWindow *win );
  457. virtual void update( Int frame );
  458. virtual void reverse( void );
  459. virtual void draw( void );
  460. virtual void skip( void );
  461. protected:
  462. enum{
  463. FLASHTRANSITION_START = 0,
  464. FLASHTRANSITION_FADE_IN_1 = 1,
  465. FLASHTRANSITION_FADE_IN_2 = 2,
  466. FLASHTRANSITION_FADE_IN_3 = 3,
  467. FLASHTRANSITION_FADE_TO_BACKGROUND_1 = 4,
  468. FLASHTRANSITION_FADE_TO_BACKGROUND_2 = 5,
  469. FLASHTRANSITION_FADE_TO_BACKGROUND_3 = 6,
  470. FLASHTRANSITION_FADE_TO_BACKGROUND_4 = 7,
  471. FLASHTRANSITION_END
  472. };
  473. ICoord2D m_pos;
  474. ICoord2D m_size;
  475. Int m_drawState;
  476. };
  477. //-----------------------------------------------------------------------------
  478. class ButtonFlashTransition : public Transition
  479. {
  480. public:
  481. ButtonFlashTransition ( void );
  482. virtual ~ButtonFlashTransition( void );
  483. virtual void init( GameWindow *win );
  484. virtual void update( Int frame );
  485. virtual void reverse( void );
  486. virtual void draw( void );
  487. virtual void skip( void );
  488. protected:
  489. enum{
  490. BUTTONFLASHTRANSITION_START = 0,
  491. BUTTONFLASHTRANSITION_FADE_IN_1 = 1,
  492. BUTTONFLASHTRANSITION_FADE_IN_2 = 2,
  493. BUTTONFLASHTRANSITION_FADE_IN_3 = 3,
  494. BUTTONFLASHTRANSITION_FADE_TO_BACKGROUND_1 =4,
  495. BUTTONFLASHTRANSITION_FADE_TO_BACKGROUND_2 = 5,
  496. BUTTONFLASHTRANSITION_FADE_TO_BACKGROUND_3 = 6,
  497. BUTTONFLASHTRANSITION_FADE_TO_BACKGROUND_4 = 7,
  498. BUTTONFLASHTRANSITION_FADE_TO_GRADE_IN_1 = 11,
  499. BUTTONFLASHTRANSITION_FADE_TO_GRADE_IN_2 = BUTTONFLASHTRANSITION_FADE_TO_GRADE_IN_1 +1,
  500. BUTTONFLASHTRANSITION_FADE_TO_GRADE_OUT_1 = BUTTONFLASHTRANSITION_FADE_TO_GRADE_IN_2 +1,
  501. BUTTONFLASHTRANSITION_FADE_TO_GRADE_OUT_2 = BUTTONFLASHTRANSITION_FADE_TO_GRADE_OUT_1 +1,
  502. BUTTONFLASHTRANSITION_FADE_TO_GRADE_OUT_3 = BUTTONFLASHTRANSITION_FADE_TO_GRADE_OUT_2 +1,
  503. BUTTONFLASHTRANSITION_FADE_TO_GRADE_OUT_4 = BUTTONFLASHTRANSITION_FADE_TO_GRADE_OUT_3 + 1,
  504. BUTTONFLASHTRANSITION_END, // this is the end of the sequence, we need some special defines... well put them below here
  505. BUTTONFLASHTRANSITION_SHOW_BACKGROUND
  506. };
  507. ICoord2D m_pos;
  508. ICoord2D m_size;
  509. Int m_drawState;
  510. Image *m_gradient;
  511. };
  512. //-----------------------------------------------------------------------------
  513. class TransitionWindow
  514. {
  515. public:
  516. TransitionWindow( void );
  517. ~TransitionWindow( void );
  518. Bool init( void );
  519. void update( Int frame );
  520. Bool isFinished( void );
  521. void reverse( Int totalFrames );
  522. Int getTotalFrames( void );
  523. void skip( void );
  524. void draw( void );
  525. // INI parsed vars
  526. AsciiString m_winName;
  527. Int m_frameDelay; // what frame number we start on
  528. Int m_style; // the style we'll be using
  529. // standard vars
  530. NameKeyType m_winID;
  531. GameWindow *m_win;
  532. Transition *m_transition; // each window is allowed one trasition
  533. Int m_currentFrameDelay; // this will change based on if we're going forward or backwards
  534. };
  535. //-----------------------------------------------------------------------------
  536. class TransitionGroup
  537. {
  538. public:
  539. TransitionGroup( void );
  540. ~TransitionGroup( void );
  541. void init( void );
  542. void update( void );
  543. Bool isFinished( void );
  544. void reverse( void );
  545. void draw( void );
  546. void skip ( void );
  547. AsciiString getName( void ) { return m_name; }
  548. void setName( AsciiString name){ m_name = name; }
  549. void addWindow( TransitionWindow *transWin );
  550. Bool isReversed( void );
  551. Bool isFireOnce( void ) { return m_fireOnce; }
  552. Bool m_fireOnce;
  553. private:
  554. typedef std::list<TransitionWindow *> TransitionWindowList;
  555. TransitionWindowList m_transitionWindowList;
  556. Int m_directionMultiplier;
  557. Int m_currentFrame; ///< maintain how long we've spent on this transition;
  558. AsciiString m_name;
  559. };
  560. //-----------------------------------------------------------------------------
  561. class GameWindowTransitionsHandler: public SubsystemInterface
  562. {
  563. public:
  564. GameWindowTransitionsHandler(void);
  565. ~GameWindowTransitionsHandler( void );
  566. void init(void );
  567. void load(void );
  568. void reset( void );
  569. void update( void );
  570. void draw( void );
  571. Bool isFinished( void );
  572. const FieldParse *getFieldParse() const { return m_gameWindowTransitionsFieldParseTable; } ///< returns the parsing fields
  573. static const FieldParse m_gameWindowTransitionsFieldParseTable[]; ///< the parse table
  574. static void parseWindow( INI* ini, void *instance, void *store, const void *userData );
  575. void setGroup(AsciiString groupName, Bool immidiate = FALSE); // THis will be the next group to fire off.
  576. void reverse( AsciiString groupName );// reverse the animations for the current group.
  577. void remove( AsciiString groupName, Bool skipPending = FALSE );// remove the animation from the current or pending groups.
  578. TransitionGroup *getNewGroup( AsciiString name );
  579. private:
  580. TransitionGroup *findGroup( AsciiString groupName );
  581. typedef std::list<TransitionGroup *> TransitionGroupList;
  582. TransitionGroupList m_transitionGroupList;
  583. TransitionGroup *m_currentGroup;
  584. TransitionGroup *m_pendingGroup;
  585. TransitionGroup *m_drawGroup;
  586. TransitionGroup *m_secondaryDrawGroup; // needed to draw the last frame of the previvous draw group once more.
  587. };
  588. void PushButtonImageDrawThree(GameWindow *window, Int alpha );
  589. //-----------------------------------------------------------------------------
  590. // INLINING ///////////////////////////////////////////////////////////////////
  591. //-----------------------------------------------------------------------------
  592. //-----------------------------------------------------------------------------
  593. // EXTERNALS //////////////////////////////////////////////////////////////////
  594. //-----------------------------------------------------------------------------
  595. extern GameWindowTransitionsHandler *TheTransitionHandler;
  596. #endif // __GAME_WINDOW_TRANSITIONS_H_