示例#1
0
void
StarServer::InstantiateMission()
{
    Memory::Check();

    current_mission = 0;

    if (Campaign::GetCampaign()) {
        current_mission = Campaign::GetCampaign()->GetMission();
    }

    Sim* sim = (Sim*) world;

    if (sim) {
        sim->UnloadMission();

        if (current_mission) {
            sim->LoadMission(current_mission);
            sim->ExecMission();
            sim->SetTestMode(false);

            Print("  Mission Instantiated.\n");
        }

        else {
            Print("  *** WARNING: StarServer::InstantiateMission() - no mission selected ***\n");
        }
    }

    Memory::Check();
}
示例#2
0
void
StarServer::SetGameMode(int m)
{
    if (game_mode == m)
    return;

    if (m == LOAD_MODE) {
        Print("  game_mode = LOAD_MODE\n");
        paused = true;
    }

    else if (m == PLAY_MODE) {
        Print("  game_mode = PLAY_MODE\n");

        if (!world) {
            CreateWorld();
            InstantiateMission();
        }

        // stand alone server should wait for players to connect
        // before unpausing the simulation...
        SetTimeCompression(1);
        Pause(true);
    }

    else if (m == MENU_MODE) {
        Print("  game_mode = MENU_MODE\n");
        paused = true;

        Sim* sim = (Sim*) world;

        if (sim)
        sim->UnloadMission();
    }

    game_mode = m;
}
示例#3
0
void
DebriefDlg::OnClose(AWEvent* event)
{
    Sim* sim = Sim::GetSim();

    sim->CommitMission();
    sim->UnloadMission();

    NetLobby* lobby = NetLobby::GetInstance();
    if (lobby && lobby->IsHost()) {
        lobby->SelectMission(0);
        lobby->ExecFrame();
    }

    Player* player = Player::GetCurrentPlayer();
    if (player && player->ShowAward()) {
        manager->ShowAwardDlg();
    }

    else {
        Starshatter* stars = Starshatter::GetInstance();

        if (stars) {
            Mouse::Show(false);

            Campaign* campaign = Campaign::GetCampaign();
            if (campaign && campaign->GetCampaignId() < Campaign::SINGLE_MISSIONS)
            stars->SetGameMode(Starshatter::CMPN_MODE);
            else
            stars->SetGameMode(Starshatter::MENU_MODE);
        }

        else {
            Game::Panic("DebriefDlg::OnClose() - Game instance not found");
        }
    }
}