D:/Zythum/DinoKod/Mod_Aeternis_Client/A_WinLoading.cpp

00001 //---------------------------------------------------------------------------------------------
00002 //      This file is a part of "DinoKod".
00003 //      Copyright © 2003 Dino Productions. All Rights Reserved.
00004 //      
00005 //      File                    : A_WinLoading.cpp
00006 //      Author                  : Sebastien LEIX        sebastien.leix@wanadoo.fr
00007 //      Date                    : 16/05/2003
00008 //      Modification    :
00009 //
00010 //---------------------------------------------------------------------------------------------
00011 #include "Common/Time.h"
00012 #include "Common/Game.h"
00013 #include "Common/Command.h"
00014 #include "Render/Render.h"
00015 #include "Render/Font.h"
00016 #include "Mod/Mod.h"
00017 #include "Client/GameClient.h"
00018 #include "Common/LocalizedString.h"
00019 
00020 #include "Mod_Aeternis_Client/A_Interface.h"
00021 #include "Mod_Aeternis_Client/A_ClientGameManager.h"
00022 
00023 #include "Mod_Aeternis_Client/A_WinLoading.h"
00024 #include "Mod_Aeternis_Client/A_WinScore.h"
00025 
00026 //------------------------------------------------------------------------------------------
00027 //------------------------------------------------------------------------------------------
00028 //------------------------------------------------------------------------------------------
00029 KAWinLoading::KAWinLoading( KWin* pFather, KFPt& Pos, KFPt& Size, KInterface* pInterface )
00030 : KWin( pFather, Pos, Size, pInterface )
00031 {
00032         m_hBackGround   = KSHADER_NO;
00033         m_eLoadingState = E_LOADING_STATE_WAITING ;
00034         m_fProgressBar  = 0.0f;
00035         m_sBackGround   = "GUI/Loading";
00036 
00037         m_fTimeOut = g_pGame->GetpIniFile()->ReadFloat( "NETWORK", "TimeOut", 10000 ) ;
00038 
00039         m_pText1 = new KText(this, KFPt( 0.5f, 0.80f ), KFPt( 0.0f, 0.04f ), m_pInterface,"",KRGB( 255, 255, 200 ),KWTA_CENTER) ;
00040         m_pText2 = new KText(this, KFPt( 0.5f, 0.85f ), KFPt( 0.0f, 0.04f ), m_pInterface,"",KRGB( 255, 255, 200 ),KWTA_CENTER) ;
00041 }
00042 
00043 //------------------------------------------------------------------------------------------
00044 KAWinLoading::~KAWinLoading()
00045 {
00046 }
00047 
00048 //------------------------------------------------------------------------------------------
00049 void KAWinLoading::Display()
00050 {
00051         u8              FadeAlpha = (u8)(255.0f * GetFade());
00052 
00053         m_pInterface->HideMouse();
00054 
00055         // Affiche le Fond
00056         DrawQuad( 0.0f, 0.0f, 1.0f, 1.0f, m_hBackGround, KRGBA( 255, 255, 255, FadeAlpha ) );
00057 
00058         // Affiche la barre de progression
00059         if((m_eLoadingState == E_LOADING_STATE_LOADINGMAP ) || 
00060                 (m_eLoadingState == E_LOADING_STATE_CONNECTION) ||
00061                 (m_eLoadingState == E_LOADING_STATE_CONNECTION_TIMEOUT))
00062         {
00063                 DrawQuad( 0.19f, 0.88f, 0.62f, 0.06f, KSHADER_NO, KRGBA( 56, 91, 149, FadeAlpha / 4 ), KRGB_BLACK, KRM_MODULATE );
00064                 DrawQuad( 0.2f, 0.89f, 0.6f * m_fProgressBar, 0.04f, KSHADER_NO, KRGBA( 5, 134, 254, FadeAlpha / 4 ), KRGB_BLACK, KRM_MODULATE );
00065         }
00066 }
00067 
00068 //------------------------------------------------------------------------------------------
00069 void KAWinLoading::Manage()
00070 {
00071         KGameInfos* pGameInfo = g_pClientGameManager->GetpGameInfos() ;
00072 
00073         if((m_eLoadingState != E_LOADING_STATE_LOADINGMAP) && (m_eLoadingState != E_LOADING_STATE_WAITING))
00074         {
00075                 if((g_Time.GetTime() - m_currentTime) >= (m_fTimeOut - 1000))
00076                 {
00077                         SetState(E_LOADING_STATE_CONNECTION_TIMEOUT) ;
00078                 }
00079         }
00080 
00081         switch( m_eLoadingState )
00082         {
00083         case E_LOADING_STATE_WAITING:
00084                 return;
00085 
00086         case E_LOADING_STATE_CONNECTION:
00087                 {
00088                         m_fProgressBar = (g_Time.GetTime() - m_currentTime) / (m_fTimeOut - 1000) ;
00089 
00090                         return;
00091                 }
00092 
00093         case E_LOADING_STATE_LOADINGMAP:
00094                 {
00095                         char cTemp[1024] = "" ;
00096                         
00097                         m_fProgressBar = g_pClientGameManager->GetLoadProgression() ;
00098                         
00099                         sprintf(cTemp,"%s %s : %.0f%%",GETLOCALSTRING( LS_LOADINGMAP ),pGameInfo->GetsMapName().GetpString(),m_fProgressBar*100.0f) ;
00100                         m_pText2->SetpText(cTemp) ;
00101                         return;
00102                 }
00103         case E_LOADING_STATE_CONNECTION_TIMEOUT:
00104                 {
00105                         if((g_Time.GetTime() - m_currentTime) >= m_fTimeOut)
00106                         {
00107                                 g_pGame->GetpCommand()->ExecCommand( KStr("disconnect"), KStr("") );
00108                                 ((KAInterface*)m_pInterface)->SetWin( KAIW_MULTIPLAYER );
00109                         }
00110                         return ;
00111                 }
00112         }
00113 }
00114 
00115 //------------------------------------------------------------------------------------------
00116 void KAWinLoading::Load()
00117 {
00118         KWin::Load();
00119 
00120         m_fProgressBar = 0.0f ;
00121 
00122         if(((KAInterface*)m_pInterface)->GetpWinScore()->IsShowed())
00123                 ((KAInterface*)m_pInterface)->GetpWinScore()->Hide() ;
00124 
00125         m_hBackGround = m_pRender->GetpShaderBank()->LoadShader( m_sBackGround );
00126 }
00127 
00128 //------------------------------------------------------------------------------------------
00129 void KAWinLoading::Unload()
00130 {
00131         KWin::Unload();
00132 
00133         m_pRender->GetpShaderBank()->UnloadShader( m_hBackGround );
00134 }
00135 
00136 //------------------------------------------------------------------------------------------
00137 void KAWinLoading::SetState(E_LOADING_STATE eState)
00138 {
00139         switch(eState)
00140         {
00141                 case E_LOADING_STATE_CONNECTION :
00142                 {
00143                         KStr    sText = GETLOCALSTRING( LS_CONNECTING_TO );
00144                         sText += " ";
00145                         sText += ((KGameClient*)g_pGame)->GetNet().GetInetAddr().GetpAddress();
00146                         sText += ":";
00147                         sText += (s32)((KGameClient*)g_pGame)->GetNet().GetInetAddr().GetPort();
00148                         sText += "...";
00149                         m_pText1->SetpText( sText );
00150                         m_pText2->SetpText( "" );
00151 
00152                         m_sBackGround = "GUI/Loading";
00153                         m_pRender->GetpShaderBank()->UnloadShader( m_hBackGround );
00154                         m_hBackGround = m_pRender->GetpShaderBank()->LoadShader( m_sBackGround );
00155 
00156                         m_eLoadingState = E_LOADING_STATE_CONNECTION ;
00157 
00158                         m_fProgressBar = 0.0f ;
00159                         m_currentTime = g_Time.GetTime() ;
00160                 }
00161                 break ;
00162                 case E_LOADING_STATE_CONNECTION_ACCEPTED :
00163                 {
00164                         KStr    sText = GETLOCALSTRING( LS_CONNECTING_TO );
00165                         sText += " ";
00166                         sText += ((KGameClient*)g_pGame)->GetNet().GetInetAddr().GetpAddress();
00167                         sText += ":";
00168                         sText += (s32)((KGameClient*)g_pGame)->GetNet().GetInetAddr().GetPort();
00169                         sText += " ";
00170                         sText += GETLOCALSTRING( LS_CONNECTION_ACCEPTED );
00171                         m_pText1->SetpText( sText );
00172                         m_pText2->SetpText( "" );
00173 
00174                         m_sBackGround = "GUI/Loading";
00175                         m_pRender->GetpShaderBank()->UnloadShader( m_hBackGround );
00176                         m_hBackGround = m_pRender->GetpShaderBank()->LoadShader( m_sBackGround );
00177 
00178                         m_eLoadingState = E_LOADING_STATE_CONNECTION_ACCEPTED ;
00179                 }
00180                 break ;
00181                 case E_LOADING_STATE_CONNECTION_TIMEOUT :
00182                 {
00183                         char cTemp[256] = "" ;
00184                         u16 uPort = ((KGameClient*)g_pGame)->GetNet().GetInetAddr().GetPort() ;
00185                         char *pAddresse = ((KGameClient*)g_pGame)->GetNet().GetInetAddr().GetpAddress() ;
00186 
00187                         sprintf(cTemp,"%s %s:%d ..... %s",GETLOCALSTRING(LS_CONNECTING_TO),pAddresse,uPort,GETLOCALSTRING(LS_CONNECTION_TIMEOUT)) ;
00188                         m_pText1->SetpText(cTemp) ;
00189                         m_pText2->SetpText( "" );
00190 
00191                         m_eLoadingState = E_LOADING_STATE_CONNECTION_TIMEOUT ;
00192                 }
00193                 break ;
00194                 case E_LOADING_STATE_LOADINGMAP :
00195                 {
00196                         KGameInfos* pGameInfo = g_pClientGameManager->GetpGameInfos() ;
00197 
00198                         m_sBackGround = "Maps/Loading_";
00199                         m_sBackGround += pGameInfo->GetsMapName();
00200 
00201                         m_pRender->GetpShaderBank()->UnloadShader( m_hBackGround );
00202                         m_hBackGround = m_pRender->GetpShaderBank()->LoadShader( m_sBackGround );
00203 
00204                         m_eLoadingState = E_LOADING_STATE_LOADINGMAP ;
00205                 }
00206                 break;
00207                 case E_LOADING_STATE_WAITING :
00208                 {
00209                         m_sBackGround = "GUI/Loading";
00210 
00211                         m_pRender->GetpShaderBank()->UnloadShader( m_hBackGround );
00212                         m_hBackGround = m_pRender->GetpShaderBank()->LoadShader( m_sBackGround );
00213                         m_eLoadingState = E_LOADING_STATE_WAITING;
00214                 }
00215                 break ;
00216 
00217         }
00218 }

Generated on Sun Mar 25 20:02:14 2007 for Zythum Project by  doxygen 1.5.1-p1