bool stageTwoInitialise(void) { int i; debug(LOG_WZ, "== stageTwoInitalise =="); // make sure we clear on loading; this a bad hack to fix a bug when // loading a savegame where we are building a lassat for (i = 0; i < MAX_PLAYERS; i++) { setLasSatExists(false, i); } if(bMultiPlayer) { if (!multiTemplateSetup()) { return false; } } if (!dispInitialise()) /* Initialise the display system */ { return false; } if(!initMiscImds()) /* Set up the explosions */ { iV_ShutDown(); debug( LOG_FATAL, "Can't find all the explosions graphics?" ); abort(); return false; } if (!cmdDroidInit()) { return false; } /* Shift the interface initialisation here temporarily so that it can pick up the stats after they have been loaded */ if (!intInitialise()) { return false; } if (!initMessage()) /* Initialise the message heaps */ { return false; } if (!gwInitialise()) { return false; } // keymappings keyClearMappings(); keyInitMappings(false); // Set the default uncoloured cursor here, since it looks slightly // better for menus and such. pie_SetMouse(CURSOR_DEFAULT, false); SetFormAudioIDs(ID_SOUND_WINDOWOPEN,ID_SOUND_WINDOWCLOSE); // Setup game queues. // Don't ask why this doesn't go in stage three. In fact, don't even ask me what stage one/two/three is supposed to mean, it seems about as descriptive as stage doStuff, stage doMoreStuff and stage doEvenMoreStuff... debug(LOG_MAIN, "Init game queues, I am %d.", selectedPlayer); for (i = 0; i < MAX_PLAYERS; ++i) { NETinitQueue(NETgameQueue(i)); if (!myResponsibility(i)) { NETsetNoSendOverNetwork(NETgameQueue(i)); } } debug(LOG_MAIN, "stageTwoInitialise: done"); return true; }
// ///////////////// ///////////////////////////////////////////////// // Main Front end game loop. TITLECODE titleLoop(void) { TITLECODE RetCode = TITLECODE_CONTINUE; pie_SetDepthBufferStatus(DEPTH_CMP_ALWAYS_WRT_ON); pie_SetFogStatus(false); screen_RestartBackDrop(); pie_ShowMouse(true); // When we first init the game, firstcall is true. if (firstcall) { firstcall = false; // First check to see if --host was given as a command line option, if not, // then check --join and if neither, run the normal game menu. if( hostlaunch ) { ingame.bHostSetup = true; bMultiPlayer = true; bMultiMessages = true; game.type = SKIRMISH; // needed? changeTitleMode(MULTIOPTION); hostlaunch = false; // reset the bool to default state. } else if(strlen(iptoconnect) ) { changeTitleMode(GAMEFIND); // a ip/hostname was found, so go directly to the GAMEFIND screen } else { changeTitleMode(TITLE); // normal game, run main title screen. } // Using software cursors (when on) for these menus due to a bug in SDL's SDL_ShowCursor() pie_SetMouse(CURSOR_DEFAULT, war_GetColouredCursor()); } if (titleMode != MULTIOPTION && titleMode != MULTILIMIT && titleMode != STARTGAME) screen_disableMapPreview(); switch(titleMode) // run relevant title screen code. { // MULTIPLAYER screens case PROTOCOL: runConnectionScreen(); // multiplayer connection screen. break; case MULTIOPTION: runMultiOptions(); break; case GAMEFIND: runGameFind(); break; case MULTI: runMultiPlayerMenu(); break; case MULTILIMIT: runLimitScreen(); break; case KEYMAP: runKeyMapEditor(); break; case TITLE: runTitleMenu(); break; case SINGLE: runSinglePlayerMenu(); break; case TUTORIAL: runTutorialMenu(); break; // case GRAPHICS: // runGraphicsOptionsMenu(); // break; case CREDITS: runCreditsScreen(); break; // case DEMOMODE: // runDemoMenu(); // break; // case VIDEO: // runVideoOptionsMenu(); // break; case OPTIONS: runOptionsMenu(); break; case GAME: runGameOptionsMenu(); break; case GRAPHICS_OPTIONS: runGraphicsOptionsMenu(); break; case AUDIO_OPTIONS: runAudioOptionsMenu(); break; case VIDEO_OPTIONS: runVideoOptionsMenu(); break; case MOUSE_OPTIONS: runMouseOptionsMenu(); break; case QUIT: RetCode = TITLECODE_QUITGAME; break; case STARTGAME: case LOADSAVEGAME: initLoadingScreen(true);//render active if (titleMode == LOADSAVEGAME) { RetCode = TITLECODE_SAVEGAMELOAD; } else { RetCode = TITLECODE_STARTGAME; } return RetCode; // don't flip! case SHOWINTRO: pie_SetFogStatus(false); pie_ScreenFlip(CLEAR_BLACK); changeTitleMode(TITLE); RetCode = TITLECODE_SHOWINTRO; break; default: debug( LOG_FATAL, "unknown title screen mode" ); abort(); } NETflush(); // Send any pending network data. audio_Update(); pie_DrawMouse(mouseX(), mouseY()); pie_SetFogStatus(false); pie_ScreenFlip(CLEAR_BLACK);//title loop if ((keyDown(KEY_LALT) || keyDown(KEY_RALT)) /* Check for toggling display mode */ && keyPressed(KEY_RETURN)) { screenToggleMode(); } return RetCode; }
bool frontendInitialise(const char *ResourceFile) { debug(LOG_MAIN, "Initialising frontend : %s", ResourceFile); if(!InitialiseGlobals()) // Initialise all globals and statics everywhere. { return false; } iV_Reset(); // Reset the IV library. if (!scrTabInitialise()) // Initialise the script system { return false; } if (!stringsInitialise()) // Initialise the string system { return false; } if (!objInitialise()) // Initialise the object system { return false; } if (!anim_Init()) { return false; } if ( !animObj_Init( init_ObjectDead ) ) { return false; } if (!allocPlayerPower()) //set up the PlayerPower for each player - this should only be done ONCE now { return false; } debug(LOG_MAIN, "frontEndInitialise: loading resource file ....."); if (!resLoad(ResourceFile, 0)) { //need the object heaps to have been set up before loading in the save game return false; } if (!dispInitialise()) // Initialise the display system { return false; } FrontImages = (IMAGEFILE*)resGetData("IMG", "frontend.img"); /* Shift the interface initialisation here temporarily so that it can pick up the stats after they have been loaded */ if (!intInitialise()) { return false; } // keymappings // clear out any existing mappings keyClearMappings(); keyInitMappings(false); // Set the default uncoloured cursor here, since it looks slightly // better for menus and such. pie_SetMouse(CURSOR_DEFAULT, false); SetFormAudioIDs(-1,ID_SOUND_WINDOWCLOSE); // disable the open noise since distorted in 3dfx builds. initMiscVars(); gameTimeInit(); // hit me with some funky beats.... cdAudio_PlayTrack(SONG_FRONTEND); return true; }
static bool _intAddInGameOptions(void) { audio_StopAll(); //clear out any mission widgets - timers etc that may be on the screen clearMissionWidgets(); setWidgetsStatus(true); //if already open, then close! if (widgGetFromID(psWScreen,INTINGAMEOP)) { intCloseInGameOptions(false, true); return true; } intResetScreen(false); // Pause the game. if(!gamePaused()) { kf_TogglePauseMode(); } W_FORMINIT sFormInit; sFormInit.width = INTINGAMEOP_W; // add form sFormInit.formID = 0; sFormInit.id = INTINGAMEOP; sFormInit.style = WFORM_PLAIN; sFormInit.x = (SWORD)INTINGAMEOP_X; sFormInit.y = (SWORD)INTINGAMEOP_Y; sFormInit.height = INTINGAMEOP_H; if ((!bMultiPlayer || (NetPlay.bComms == 0)) && !bInTutorial) { } else { sFormInit.height = INTINGAMEOP_HS; } sFormInit.pDisplay = intOpenPlainForm; sFormInit.disableChildren= true; widgAddForm(psWScreen, &sFormInit); // add 'quit' text if ((!bMultiPlayer || (NetPlay.bComms == 0)) && !bInTutorial) { addIGTextButton(INTINGAMEOP_QUIT, INTINGAMEOP_5_Y, INTINGAMEOP_OP_W, _("Quit"), OPALIGN); } else { addIGTextButton(INTINGAMEOP_QUIT, INTINGAMEOP_3_Y, INTINGAMEOP_OP_W, _("Quit"), OPALIGN); } // add 'resume' addIGTextButton(INTINGAMEOP_RESUME, INTINGAMEOP_1_Y, INTINGAMEOP_OP_W, _("Resume Game"), OPALIGN); // add 'options' addIGTextButton(INTINGAMEOP_OPTIONS, INTINGAMEOP_2_Y, INTINGAMEOP_OP_W, _("Audio Options"), OPALIGN); if ((!bMultiPlayer || (NetPlay.bComms == 0)) && !bInTutorial) { // add 'load' addIGTextButton(INTINGAMEOP_LOAD, INTINGAMEOP_3_Y, INTINGAMEOP_OP_W, _("Load Game"), OPALIGN); // add 'save' addIGTextButton(INTINGAMEOP_SAVE, INTINGAMEOP_4_Y, INTINGAMEOP_OP_W, _("Save Game"), OPALIGN); } intMode = INT_INGAMEOP; // change interface mode. InGameOpUp = true; // inform interface. pie_SetMouse(CURSOR_DEFAULT); return true; }