00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
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
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
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
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
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
00248 GLWWindowManager::instance()->addWindow(ClientState::StateLoadPlayers,
00249 BackdropDialog::instance(), 0, true);
00250
00251
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
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
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
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
00311 addCommonComponents(skinManager, ClientState::StateWait);
00312
00313
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
00321 addCommonComponents(skinManager, ClientState::StateAutoDefense);
00322 GLWWindowManager::instance()->addWindow(ClientState::StateAutoDefense,
00323 new AutoDefenseDialog, 0, false);
00324
00325
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
00336 addCommonComponents(skinManager, ClientState::StateShot);
00337
00338
00339 addCommonComponents(skinManager, ClientState::StateScore);
00340 GLWWindowManager::instance()->addWindow(ClientState::StateScore,
00341 ScoreDialog::instance2(), 0, true);
00342 }