void
MsnEditNavDlg::ScrapeForm()
{
	if (mission) {
		if (txt_name) {
			mission->SetName(txt_name->GetText());
		}

		if (cmb_type) {
			mission->SetType(cmb_type->GetSelectedIndex());

			if (mission_info)
			mission_info->type = cmb_type->GetSelectedIndex();
		}

		Galaxy*     galaxy = Galaxy::GetInstance();
		StarSystem* system = 0;

		if (galaxy)
		system = galaxy->GetSystem(cmb_system->GetSelectedItem());

		if (cmb_system && system) {
			mission->ClearSystemList();
			mission->SetStarSystem(system);

			if (mission_info)
			mission_info->system = system->Name();
		}

		if (cmb_region) {
			mission->SetRegion(cmb_region->GetSelectedItem());

			if (mission_info)
			mission_info->region = cmb_region->GetSelectedItem();
		}

		SetSystem(system);
	}
}
void
MsnEditNavDlg::OnSystemSelect(AWEvent* event)
{
	StarSystem* sys = 0;

	if (cmb_system) {
		const char* name = cmb_system->GetSelectedItem();

		Galaxy* galaxy = Galaxy::GetInstance();
		ListIter<StarSystem> iter = galaxy->GetSystemList();
		while (++iter) {
			StarSystem* s = iter.value();

			if (!strcmp(s->Name(), name)) {
				sys = s;
				break;
			}
		}
	}

	if (sys && cmb_region) {
		cmb_region->ClearItems();

		List<OrbitalRegion> regions;
		regions.append(sys->AllRegions());
		regions.sort();

		ListIter<OrbitalRegion> iter = regions;
		while (++iter) {
			OrbitalRegion* region = iter.value();
			cmb_region->AddItem(region->Name());
		}
	}

	ScrapeForm();
}
void
MsnEditNavDlg::Show()
{
	bool need_tab_update = !shown;

	NavDlg::Show();

	if (txt_name && cmb_type) {
		txt_name->SetText("");

		if (cmb_system) {
			cmb_system->ClearItems();

			Galaxy* galaxy = Galaxy::GetInstance();
			ListIter<StarSystem> iter = galaxy->GetSystemList();
			while (++iter) {
				cmb_system->AddItem(iter->Name());
			}
		}

		if (mission) {
			int i;

			txt_name->SetText(mission->Name());
			cmb_type->SetSelection(mission->Type());

			StarSystem* sys = mission->GetStarSystem();
			if (sys && cmb_system && cmb_region) {
				for (i = 0; i < cmb_system->NumItems(); i++) {
					if (!strcmp(cmb_system->GetItem(i), sys->Name())) {
						cmb_system->SetSelection(i);
						break;
					}
				}

				cmb_region->ClearItems();
				int sel_rgn = 0;

				List<OrbitalRegion> regions;
				regions.append(sys->AllRegions());
				regions.sort();

				i = 0;
				ListIter<OrbitalRegion> iter = regions;
				while (++iter) {
					OrbitalRegion* region = iter.value();
					cmb_region->AddItem(region->Name());

					if (!strcmp(mission->GetRegion(), region->Name())) {
						sel_rgn = i;
					}

					i++;
				}

				cmb_region->SetSelection(sel_rgn);
			}
		}
	}

	if (need_tab_update) {
		ShowTab(2);
	}

	exit_latch = true;
}
Example #4
0
void
DebriefDlg::Show()
{
    FormWindow::Show();
    Game::SetTimeCompression(1);

    mission  = 0;
    campaign = Campaign::GetCampaign();
    sim      = Sim::GetSim();

    if (sim)
    ship  = sim->GetPlayerShip();

    if (campaign)
    mission = campaign->GetMission();

    if (mission_name) {
        if (mission)
        mission_name->SetText(mission->Name());
        else
        mission_name->SetText(Game::GetText("DebriefDlg.mission-name"));
    }

    if (mission_system) {
        mission_system->SetText("");

        if (mission) {
            StarSystem* sys = mission->GetStarSystem();

            if (sys)
            mission_system->SetText(sys->Name());
        }
    }

    if (mission_sector) {
        mission_sector->SetText("");

        if (mission) {
            MissionElement* elem = mission->GetElements()[0];

            if (elem)
            mission_sector->SetText(elem->Region());
        }
    }

    if (mission_time_start) {
        if (mission) {
            char txt[32];
            FormatDayTime(txt, mission->Start());
            mission_time_start->SetText(txt);
        }
    }

    if (objectives) {
        bool found_objectives = false;

        if (sim && sim->GetPlayerElement()) {
            Text     text;
            Element* elem = sim->GetPlayerElement();

            for (int i = 0; i < elem->NumObjectives(); i++) {
                Instruction* obj = elem->GetObjective(i);
                text += Text("* ") + obj->GetDescription() + Text("\n");

                found_objectives = true;
            }

            objectives->SetText(text);
        }

        if (!found_objectives) {
            if (mission)
            objectives->SetText(mission->Objective());
            else
            objectives->SetText(Game::GetText("DebriefDlg.unspecified"));
        }
    }

    if (situation) {
        if (mission)
        situation->SetText(mission->Situation());
        else
        situation->SetText(Game::GetText("DebriefDlg.unknown"));
    }

    if (mission_score) {
        mission_score->SetText(Game::GetText("DebriefDlg.no-stats"));

        if (ship) {
            for (int i = 0; i < ShipStats::NumStats(); i++) {
                ShipStats* stats = ShipStats::GetStats(i);
                if (stats && !strcmp(ship->Name(), stats->GetName())) {
                    stats->Summarize();

                    Player* player = Player::GetCurrentPlayer();
                    int     points = stats->GetPoints() + stats->GetCommandPoints();

                    if (player && sim)
                        points = player->GetMissionPoints(stats, sim->StartTime()) + stats->GetCommandPoints();

                    char score[32];
                    sprintf_s(score, "%d %s", points, Game::GetText("DebriefDlg.points").data());
                    mission_score->SetText(score);
                    break;
                }
            }
        }
    }

    DrawUnits();
}