home *** CD-ROM | disk | FTP | other *** search
/ Enter 2005 March / ENTER.ISO / files / fwp-0.0.6-win32-installer.exe / LoadingMenu.cpp < prev    next >
Encoding:
C/C++ Source or Header  |  2004-12-22  |  4.2 KB  |  209 lines

  1. #include "LoadingMenu.h"
  2.  
  3. #include "Gui.h"
  4. #include "TextureHandler.h"
  5. #include "Display.h"
  6. #include "Renderer.h"
  7. #include "ConsoleFrontEnd.h"
  8.  
  9. LoadingMenu::LoadingMenu():Menu("LoadingMenu"){
  10.     backgroundTexture=TextureHandler::getTexture("gui/menu/loading_menu_background.jpg");
  11.     centerTexture=NULL;
  12.     statusBarString=NULL;
  13.     heading=NULL;
  14.     subHeading=NULL;
  15.     drawScoreboard = false;
  16.  
  17.     allowConsole = true;
  18. }
  19.  
  20. LoadingMenu::~LoadingMenu(){
  21.     if(backgroundTexture!=NULL)
  22.         TextureHandler::releaseTexture(backgroundTexture);
  23.  
  24.     if( heading != NULL )
  25.         delete heading;
  26.  
  27.     if( subHeading != NULL )
  28.         delete subHeading;
  29.  
  30.     if( statusBarString != NULL )
  31.         delete statusBarString;
  32.     
  33. }
  34.  
  35. bool LoadingMenu::open(){
  36.     if( heading != NULL )
  37.         delete heading;
  38.  
  39.     if( subHeading != NULL )
  40.         delete subHeading;
  41.  
  42.     if( statusBarString != NULL )
  43.         delete statusBarString;
  44.  
  45.     centerTexture=NULL;
  46.     statusBarString=NULL;//"loading...";
  47.     heading=NULL;
  48.     subHeading=NULL;
  49.     drawScoreboard = false;
  50.     return Menu::open();
  51. }
  52.  
  53. bool LoadingMenu::close(){
  54.     if( heading != NULL )
  55.         delete heading;
  56.  
  57.     if( subHeading != NULL )
  58.         delete subHeading;
  59.  
  60.     if( statusBarString != NULL )
  61.         delete statusBarString;
  62.  
  63.     centerTexture=NULL;
  64.     statusBarString=NULL;//"loading...";
  65.     heading=NULL;
  66.     subHeading=NULL;
  67.     drawScoreboard = false;
  68.     return Menu::close();
  69. }
  70.  
  71. void LoadingMenu::updateStatusBar(const char* string){
  72.     if( statusBarString != NULL )
  73.         delete statusBarString;
  74.     
  75.     statusBarString = newString(string);
  76.  
  77.     if(opened)
  78.         draw();
  79.  
  80. }
  81.  
  82. void LoadingMenu::update(){
  83.     if(opened)
  84.         draw();
  85. }
  86.  
  87. void LoadingMenu::updateCenterTexture(Texture* tex){
  88.     centerTexture=tex;
  89. }
  90.  
  91. void LoadingMenu::updateHeading(const char* string){
  92.     if( heading != NULL )
  93.         delete heading;
  94.  
  95.     heading = newString( string );
  96.  
  97.     if(opened)
  98.         draw();
  99. }
  100.  
  101. void LoadingMenu::updateSubHeading(const char* string){
  102.     if( subHeading != NULL )
  103.         delete subHeading;
  104.  
  105.     subHeading = newString( string );
  106.  
  107.     if(opened)
  108.         draw();
  109. }
  110. /*
  111. void LoadingMenu::updateSubHeading(const char* formatString, ...){
  112.     va_list ap;
  113.     char toStringBuffer[128];
  114.  
  115.     va_start (ap, formatString);
  116.     _vsnprintf(toStringBuffer, 128, formatString, ap);
  117.     va_end(ap);
  118.     toStringBuffer[127]='\0';
  119.  
  120.     this->subHeading=string;
  121.     if(opened)
  122.         draw();
  123. }
  124. */
  125. void LoadingMenu::draw(){
  126.     glClear(GL_COLOR_BUFFER_BIT);
  127.  
  128.     Renderer::beginDrawing();
  129.  
  130.     drawBackground();
  131.     if(centerTexture!=NULL)
  132.         drawCenterTexture();
  133.  
  134.     if(statusBarString!=NULL)
  135.         drawStatusBar();
  136.  
  137.     if(heading!=NULL)
  138.         drawHeading();
  139.  
  140.     if(subHeading!=NULL)
  141.         drawSubHeading();
  142.  
  143.  
  144. // console lines
  145.  
  146.     texFont_t* font=Gui::info.var.menu_tinyFont;
  147. //    int height=70;
  148.     int i;
  149.     int n=7;
  150. #ifdef _DEBUG
  151.     n=55;
  152. #endif
  153.     int y=5;
  154.  
  155.     for(i=0; i<n; i++){
  156.         if(console->lines[i]==NULL){
  157.             y += (int)( font->height );
  158.             continue;
  159.         }
  160.         glColor4fv(Gui::info.var.menu_normalColor);
  161.         drawString(10, y, font, console->lines[i]);
  162.         y += (int)( font->height );
  163.     }
  164.  
  165.  
  166. // console lines end
  167.  
  168.     if( drawScoreboard )
  169.         Gui::hud->scoreboard->draw();
  170.  
  171.     Renderer::endDrawing();
  172.  
  173.     if(allowConsole && consoleFrontEnd->isActive){
  174.         consoleFrontEnd->draw();
  175.     }
  176.  
  177.     SDL_GL_SwapBuffers();
  178. }
  179.  
  180. void LoadingMenu::drawBackground(){
  181.     glColor4f(1.0f, 1.0f, 1.0f, 1.0f);
  182.     Renderer::drawTexturedQuad(0, 0, DISPLAY_VSCREEN_WIDTH, DISPLAY_VSCREEN_HEIGHT, backgroundTexture);
  183. }
  184.  
  185. void LoadingMenu::drawCenterTexture(){
  186.     int x1=(int)( (229) );
  187.     int x2=(int)( (571) );
  188.     int y1=(int)( (212) );
  189.     int y2=(int)( (532) );
  190.  
  191.     glColor4f(1.0f, 1.0f, 1.0f, 1.0f);
  192.     Renderer::drawTexturedQuad(x1, y1, x2, y2, centerTexture);
  193. }
  194.  
  195. void LoadingMenu::drawStatusBar(){
  196.     glColor4fv(Gui::info.var.menu_activeColor);
  197.     drawScaledAndAlignedString(400, 110, 0.9f, 0.9f, Gui::info.var.menu_bigFont, TEXT_ALIGN_CENTER, statusBarString);
  198. }
  199.  
  200. void LoadingMenu::drawHeading(){
  201.     glColor4fv(Gui::info.var.menu_activeColor);
  202.     drawShadowedFormatString(398, 553, 0.9f, 3, Gui::info.var.menu_bigFont, TEXT_ALIGN_CENTER, ">> %s <<", heading);
  203. }
  204.  
  205. void LoadingMenu::drawSubHeading(){
  206.     glColor4fv(Gui::info.var.menu_activeColor);
  207.     drawShadowedFormatString(400, 538, 0.8f, 2, Gui::info.var.menu_smallFont, TEXT_ALIGN_CENTER, "(%s)", subHeading);
  208. }
  209.