ClientWindowSetup.cpp

Go to the documentation of this file.
00001 ////////////////////////////////////////////////////////////////////////////////
00002 //    Scorched3D (c) 2000-2009
00003 //
00004 //    This file is part of Scorched3D.
00005 //
00006 //    Scorched3D is free software; you can redistribute it and/or modify
00007 //    it under the terms of the GNU General Public License as published by
00008 //    the Free Software Foundation; either version 2 of the License, or
00009 //    (at your option) any later version.
00010 //
00011 //    Scorched3D is distributed in the hope that it will be useful,
00012 //    but WITHOUT ANY WARRANTY; without even the implied warranty of
00013 //    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
00014 //    GNU General Public License for more details.
00015 //
00016 //    You should have received a copy of the GNU General Public License
00017 //    along with Scorched3D; if not, write to the Free Software
00018 //    Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
00019 ////////////////////////////////////////////////////////////////////////////////
00020 
00021 #include <GLW/GLWWindowManager.h>
00022 #include <GLW/GLWWindowSkinManager.h>
00023 #include <GLW/GLWSelector.h>
00024 #include <common/Keyboard.h>
00025 #include <common/OptionsScorched.h>
00026 #include <client/ClientParams.h>
00027 #include <client/ClientState.h>
00028 #include <client/ClientWindowSetup.h>
00029 #include <client/ScorchedClient.h>
00030 #include <dialogs/AnimatedBackdropDialog.h>
00031 #include <dialogs/AutoDefenseDialog.h>
00032 #include <dialogs/MainMenuDialog.h>
00033 #include <dialogs/CameraDialog.h>
00034 #include <dialogs/PlayerDialog.h>
00035 #include <dialogs/QuitDialog.h>
00036 #include <dialogs/SaveDialog.h>
00037 #include <dialogs/LogDialog.h>
00038 #include <dialogs/ConnectDialog.h>
00039 #include <dialogs/AuthDialog.h>
00040 #include <dialogs/BackdropDialog.h>
00041 #include <dialogs/ProgressDialog.h>
00042 #include <dialogs/GiftMoneyDialog.h>
00043 #include <dialogs/BuyAccessoryDialog.h>
00044 #include <dialogs/RulesDialog.h>
00045 #include <dialogs/ScoreDialog.h>
00046 #include <dialogs/KibitzingDialog.h>
00047 #include <dialogs/InventoryDialog.h>
00048 #include <dialogs/ResignDialog.h>
00049 #include <dialogs/SkipDialog.h>
00050 #include <dialogs/SkipAllDialog.h>
00051 #include <dialogs/HUDDialog.h>
00052 #include <dialogs/TipDialog.h>
00053 #include <dialogs/SoundDialog.h>
00054 #include <dialogs/HelpButtonDialog.h>
00055 #include <dialogs/TutorialDialog.h>
00056 #include <dialogs/MessageDialog.h>
00057 #include <dialogs/StartDialog.h>
00058 #include <dialogs/ModSelectDialog.h>
00059 #include <dialogs/ModSubSelectDialog.h>
00060 #include <dialogs/SaveSelectDialog.h>
00061 #include <dialogs/NetworkSelectDialog.h>
00062 #include <dialogs/MsgBoxDialog.h>
00063 #include <dialogs/SettingsSelectDialog.h>
00064 #include <dialogs/SettingsSubSelectDialog.h>
00065 #include <dialogs/AdminCheckDialog.h>
00066 #include <dialogs/AdminAuthDialog.h>
00067 #include <dialogs/AdminDialog.h>
00068 
00069 void ClientWindowSetup::addStateWindows(GLWWindowSkinManager *skinManager,
00070         unsigned int state, const char *windowState)
00071 {
00072         std::list<GLWWindowSkin *> allStateWindows = 
00073                 skinManager->getStateWindows(windowState);
00074         std::list<GLWWindowSkin *>::iterator itor;
00075         for (itor = allStateWindows.begin();
00076                 itor != allStateWindows.end();
00077                 itor++)
00078         {
00079                 GLWWindowSkin *window = *itor;
00080                 KeyboardKey *key = 0;
00081                 if (window->getKey()[0]) key = 
00082                         Keyboard::instance()->getKey(window->getKey());
00083                 GLWWindowManager::instance()->addWindow(state, 
00084                         window, key, window->getVisible());
00085         }
00086 }
00087 
00088 void ClientWindowSetup::addCommonComponents(GLWWindowSkinManager *skinManager, 
00089         unsigned state)
00090 {
00091         addStateWindows(skinManager, state, "all");
00092 
00093         KEYBOARDKEY("HUD_ITEMS", hudItemsKey);
00094         GLWWindowManager::instance()->addWindow(state, 
00095                 HUDDialog::instance(), hudItemsKey, false);
00096 
00097         KEYBOARDKEY("TIP_ITEMS", tipItemsKey);
00098         GLWWindowManager::instance()->addWindow(state, 
00099                 TipDialog::instance(), tipItemsKey, false);
00100 
00101         KEYBOARDKEY("SHOW_SOUND_DIALOG", showSoundKey);
00102         GLWWindowManager::instance()->addWindow(state, 
00103                 SoundDialog::instance(), showSoundKey, false);
00104 
00105         KEYBOARDKEY("SHOW_INVENTORY_DIALOG", showInvKey);
00106         GLWWindowManager::instance()->addWindow(state, 
00107                 InventoryDialog::instance(), showInvKey, false);
00108 
00109         KEYBOARDKEY("SHOW_QUIT_DIALOG", quitKey);
00110         GLWWindowManager::instance()->addWindow(state, 
00111                 QuitDialog::instance(), quitKey, false);
00112 
00113         KEYBOARDKEY("SHOW_KIBITZ_DIALOG", kibitzKey);
00114         GLWWindowManager::instance()->addWindow(state, 
00115                 new KibitzingDialog, kibitzKey, false);
00116 
00117         if (!ClientParams::instance()->getConnectedToServer())
00118         {
00119                 KEYBOARDKEY("SHOW_SAVE_DIALOG", saveKey);
00120                 GLWWindowManager::instance()->addWindow(state, 
00121                         SaveDialog::instance(), saveKey, false);
00122                 KEYBOARDKEY("SHOW_KILL_DIALOG", killKey);
00123                 GLWWindowManager::instance()->addWindow(state, 
00124                         QuitDialog::instance(), killKey, false);
00125         }
00126 
00127         KEYBOARDKEY("SHOW_CAMERA_DIALOG", cameraKey);
00128         GLWWindowManager::instance()->addWindow(state, 
00129                 CameraDialog::instance(), cameraKey, false);
00130 
00131         if (state != ClientState::StateScore)
00132         {
00133                 KEYBOARDKEY("SHOW_SCORE_DIALOG", scoreKey);
00134                 GLWWindowManager::instance()->addWindow(state, 
00135                         ScoreDialog::instance(), scoreKey, false);
00136         }
00137         GLWWindowManager::instance()->addWindow(state,
00138                 MessageDialog::instance(), 0, true);
00139 
00140         GLWWindowManager::instance()->addWindow(state, 
00141                 MainMenuDialog::instance(), 0, true);
00142         GLWWindowManager::instance()->addWindow(state,
00143                 GLWSelector::instance(), 0, true);
00144         GLWWindowManager::instance()->addWindow(state,
00145                 MsgBoxDialog::instance(), 0, false);
00146 
00147         if (ClientParams::instance()->getConnectedToServer())
00148         {
00149                 KEYBOARDKEY("SHOW_TEAM_DIALOG", teamKey);
00150                 GLWWindowManager::instance()->addWindow(state,
00151                         PlayerDialog::instance(), teamKey, false);
00152         }
00153 
00154         KEYBOARDKEY("SHOW_RULES_DIALOG", rulesKey);
00155         GLWWindowManager::instance()->addWindow(state, 
00156                 RulesDialog::instance(), rulesKey, true);
00157 
00158         GLWWindowManager::instance()->addWindow(state, 
00159                 AdminCheckDialog::instance(), 0, false);
00160         GLWWindowManager::instance()->addWindow(state, 
00161                 AdminDialog::instance(), 0, false);
00162         GLWWindowManager::instance()->addWindow(state, 
00163                 AdminAuthDialog::instance(), 0, false);
00164 
00165         if (ScorchedClient::instance()->getOptionsGame().getTutorial()[0])
00166         {
00167                 GLWWindowManager::instance()->addWindow(state, 
00168                         TutorialDialog::instance(), 0, true);
00169         }
00170 }
00171 
00172 // This is called before any mod has been loaded
00173 void ClientWindowSetup::setupStartWindows(GLWWindowSkinManager *skinManager)
00174 {
00175         KEYBOARDKEY("SHOW_QUIT_DIALOG", quitKey);
00176         KEYBOARDKEY("SHOW_PLAYER_DIALOG", playerKey);
00177         KEYBOARDKEY("SHOW_AIM_DIALOG", aimKey);
00178         KEYBOARDKEY("SHOW_WEAPON_DIALOG", weaponKey);
00179         KEYBOARDKEY("SHOW_RESIGN_DIALOG", resignKey);
00180         KEYBOARDKEY("SHOW_SKIP_DIALOG", skipKey);
00181         KEYBOARDKEY("SHOW_SOUND_DIALOG", showSoundKey);
00182 
00183         // StateOptions
00184         GLWWindowManager::instance()->addWindow(ClientState::StateOptions, 
00185                 AnimatedBackdropDialog::instance(), 0, true);
00186         GLWWindowManager::instance()->addWindow(ClientState::StateOptions, 
00187                 QuitDialog::instance(), quitKey, false);
00188         GLWWindowManager::instance()->addWindow(ClientState::StateOptions, 
00189                 SoundDialog::instance(), showSoundKey, false);
00190         GLWWindowManager::instance()->addWindow(ClientState::StateOptions, 
00191                 StartDialog::instance(), 0, true);
00192         GLWWindowManager::instance()->addWindow(ClientState::StateOptions,
00193                 ModSelectDialog::instance(), 0, false);
00194         GLWWindowManager::instance()->addWindow(ClientState::StateOptions,
00195                 ModSubSelectDialog::instance(), 0, false);
00196         GLWWindowManager::instance()->addWindow(ClientState::StateOptions,
00197                 SaveSelectDialog::instance(), 0, false);
00198         GLWWindowManager::instance()->addWindow(ClientState::StateOptions,
00199                 NetworkSelectDialog::instance(), 0, false);
00200         GLWWindowManager::instance()->addWindow(ClientState::StateOptions,
00201                 SettingsSelectDialog::instance(), 0, false);
00202         GLWWindowManager::instance()->addWindow(ClientState::StateOptions,
00203                 SettingsSubSelectDialog::instance(), 0, false);
00204         GLWWindowManager::instance()->addWindow(ClientState::StateOptions, 
00205                 MainMenuDialog::instance(), 0, true);
00206         GLWWindowManager::instance()->addWindow(ClientState::StateOptions, 
00207                 GLWSelector::instance(), 0, true);
00208         GLWWindowManager::instance()->addWindow(ClientState::StateOptions, 
00209                 MsgBoxDialog::instance(), 0, false);
00210 
00211         // StateConnect
00212         GLWWindowManager::instance()->addWindow(ClientState::StateConnect, 
00213                 BackdropDialog::instance(), 0, true);
00214         GLWWindowManager::instance()->addWindow(ClientState::StateConnect, 
00215                 QuitDialog::instance(), quitKey, false);
00216         GLWWindowManager::instance()->addWindow(ClientState::StateConnect, 
00217                 SoundDialog::instance(), showSoundKey, false);
00218         GLWWindowManager::instance()->addWindow(ClientState::StateConnect, 
00219                 ProgressDialog::instance(), 0, true);
00220         GLWWindowManager::instance()->addWindow(ClientState::StateConnect, 
00221                 ConnectDialog::instance(), 0, true);
00222         GLWWindowManager::instance()->addWindow(ClientState::StateConnect, 
00223                 AuthDialog::instance(), 0, false);
00224         GLWWindowManager::instance()->addWindow(ClientState::StateConnect, 
00225                 MainMenuDialog::instance(), 0, true);
00226         GLWWindowManager::instance()->addWindow(ClientState::StateConnect, 
00227                 GLWSelector::instance(), 0, true);
00228         GLWWindowManager::instance()->addWindow(ClientState::StateConnect, 
00229                 MsgBoxDialog::instance(), 0, false);
00230 
00231         // StateDisconnected
00232         GLWWindowManager::instance()->addWindow(ClientState::StateDisconnected, 
00233                 BackdropDialog::instance(), 0, true);
00234         GLWWindowManager::instance()->addWindow(ClientState::StateDisconnected, 
00235                 SoundDialog::instance(), showSoundKey, false);
00236         GLWWindowManager::instance()->addWindow(ClientState::StateDisconnected, 
00237                 QuitDialog::instance(), quitKey, false);
00238         GLWWindowManager::instance()->addWindow(ClientState::StateDisconnected, 
00239                 LogDialog::instance(), 0, true);
00240         GLWWindowManager::instance()->addWindow(ClientState::StateDisconnected, 
00241                 MainMenuDialog::instance(), 0, true);
00242         GLWWindowManager::instance()->addWindow(ClientState::StateDisconnected, 
00243                 GLWSelector::instance(), 0, true);
00244         GLWWindowManager::instance()->addWindow(ClientState::StateDisconnected, 
00245                 MsgBoxDialog::instance(), 0, false);
00246 
00247         // StateLoadPlayers
00248         GLWWindowManager::instance()->addWindow(ClientState::StateLoadPlayers,
00249                 BackdropDialog::instance(), 0, true);
00250 
00251         // StateLoadFiles
00252         GLWWindowManager::instance()->addWindow(ClientState::StateLoadFiles,
00253                 BackdropDialog::instance(), 0, true);
00254         addStateWindows(skinManager, ClientState::StateLoadFiles, "start");
00255         GLWWindowManager::instance()->addWindow(ClientState::StateLoadFiles,
00256                 ProgressDialog::instance(), 0, true);
00257 }
00258 
00259 // This is called after the correct mod has been loaded
00260 void ClientWindowSetup::setupGameWindows(GLWWindowSkinManager *skinManager)
00261 {
00262         KEYBOARDKEY("SHOW_QUIT_DIALOG", quitKey);
00263         KEYBOARDKEY("SHOW_PLAYER_DIALOG", playerKey);
00264         KEYBOARDKEY("SHOW_AIM_DIALOG", aimKey);
00265         KEYBOARDKEY("SHOW_WEAPON_DIALOG", weaponKey);
00266         KEYBOARDKEY("SHOW_RESIGN_DIALOG", resignKey);
00267         KEYBOARDKEY("SHOW_SKIP_DIALOG", skipKey);
00268         KEYBOARDKEY("SHOW_RULES_DIALOG", rulesKey);
00269         KEYBOARDKEY("SHOW_SOUND_DIALOG", showSoundKey);
00270         
00271         // StateLoadLevel
00272         GLWWindowManager::instance()->addWindow(ClientState::StateLoadLevel,
00273                 BackdropDialog::instance(), 0, true);
00274         addStateWindows(skinManager, ClientState::StateLoadLevel, "start");
00275         GLWWindowManager::instance()->addWindow(ClientState::StateLoadLevel,
00276                 ProgressDialog::instance(), 0, true);
00277 
00278         // StateGetPlayers
00279         GLWWindowManager::instance()->addWindow(ClientState::StateGetPlayers, 
00280                 BackdropDialog::instance(), 0, true);
00281         addStateWindows(skinManager, ClientState::StateGetPlayers, "start");
00282         GLWWindowManager::instance()->addWindow(ClientState::StateGetPlayers,
00283                 ScoreDialog::instance2(), 0, true);
00284         GLWWindowManager::instance()->addWindow(ClientState::StateGetPlayers, 
00285                 PlayerDialog::instance(), playerKey, true);
00286         GLWWindowManager::instance()->addWindow(ClientState::StateGetPlayers,
00287                 RulesDialog::instance(), rulesKey, true);
00288         GLWWindowManager::instance()->addWindow(ClientState::StateGetPlayers, 
00289                 SoundDialog::instance(), showSoundKey, false);
00290         GLWWindowManager::instance()->addWindow(ClientState::StateGetPlayers, 
00291                 AdminCheckDialog::instance(), 0, false);
00292         GLWWindowManager::instance()->addWindow(ClientState::StateGetPlayers, 
00293                 AdminDialog::instance(), 0, false);
00294         GLWWindowManager::instance()->addWindow(ClientState::StateGetPlayers, 
00295                 AdminAuthDialog::instance(), 0, false);
00296         GLWWindowManager::instance()->addWindow(ClientState::StateGetPlayers, 
00297                 QuitDialog::instance(), quitKey, false);
00298         GLWWindowManager::instance()->addWindow(ClientState::StateGetPlayers, 
00299                 MainMenuDialog::instance(), 0, true);
00300         GLWWindowManager::instance()->addWindow(ClientState::StateGetPlayers, 
00301                 GLWSelector::instance(), 0, true);
00302         GLWWindowManager::instance()->addWindow(ClientState::StateGetPlayers, 
00303                 MsgBoxDialog::instance(), 0, false);
00304         if (ScorchedClient::instance()->getOptionsGame().getTutorial()[0])
00305         {
00306                 GLWWindowManager::instance()->addWindow(ClientState::StateGetPlayers, 
00307                         TutorialDialog::instance(), 0, true);
00308         }
00309 
00310         // StateWait
00311         addCommonComponents(skinManager, ClientState::StateWait);
00312 
00313         // StateBuyWeapons
00314         addCommonComponents(skinManager, ClientState::StateBuyWeapons);
00315         GLWWindowManager::instance()->addWindow(ClientState::StateBuyWeapons, 
00316                 BuyAccessoryDialog::instance(), 0, true);
00317         GLWWindowManager::instance()->addWindow(ClientState::StateBuyWeapons, 
00318                 GiftMoneyDialog::instance(), 0, false);
00319 
00320         // StateAutoDefense
00321         addCommonComponents(skinManager, ClientState::StateAutoDefense);
00322         GLWWindowManager::instance()->addWindow(ClientState::StateAutoDefense, 
00323                 new AutoDefenseDialog, 0, false);
00324 
00325         // StatePlaying
00326         addStateWindows(skinManager, ClientState::StatePlaying, "playing");
00327         GLWWindowManager::instance()->addWindow(ClientState::StatePlaying, 
00328                         ResignDialog::instance(), resignKey, false);
00329         GLWWindowManager::instance()->addWindow(ClientState::StatePlaying, 
00330                         SkipDialog::instance(), skipKey, false);
00331         GLWWindowManager::instance()->addWindow(ClientState::StatePlaying, 
00332                         SkipAllDialog::instance(), 0, false);
00333         addCommonComponents(skinManager, ClientState::StatePlaying);
00334 
00335         // StateShot
00336         addCommonComponents(skinManager, ClientState::StateShot);
00337 
00338         // StateScore
00339         addCommonComponents(skinManager, ClientState::StateScore);
00340         GLWWindowManager::instance()->addWindow(ClientState::StateScore,
00341                 ScoreDialog::instance2(), 0, true);
00342 }

Generated on Mon Feb 16 15:14:37 2009 for Scorched3D by  doxygen 1.5.3