From 69209c38968c6f4066a772e0a51a2928749217de Mon Sep 17 00:00:00 2001 From: "FWoltermann@gmail.com" Date: Fri, 9 Dec 2011 19:00:23 +0000 Subject: Re-indenting the code to use standard tabs. Yes, I know this is pretty pointless, but who cares? --- Stars45/CmdForceDlg.cpp | 1058 +++++++++++++++++++++++------------------------ 1 file changed, 529 insertions(+), 529 deletions(-) (limited to 'Stars45/CmdForceDlg.cpp') diff --git a/Stars45/CmdForceDlg.cpp b/Stars45/CmdForceDlg.cpp index 205817d..7593e46 100644 --- a/Stars45/CmdForceDlg.cpp +++ b/Stars45/CmdForceDlg.cpp @@ -1,15 +1,15 @@ /* Project Starshatter 4.5 - Destroyer Studios LLC - Copyright © 1997-2004. All Rights Reserved. + Destroyer Studios LLC + Copyright © 1997-2004. All Rights Reserved. - SUBSYSTEM: Stars.exe - FILE: CmdForceDlg.cpp - AUTHOR: John DiCamillo + SUBSYSTEM: Stars.exe + FILE: CmdForceDlg.cpp + AUTHOR: John DiCamillo - OVERVIEW - ======== - Operational Command Dialog (Order of Battle Tab) + OVERVIEW + ======== + Operational Command Dialog (Order of Battle Tab) */ #include "MemDebug.h" @@ -53,16 +53,16 @@ DEF_MAP_CLIENT(CmdForceDlg, OnTransfer); // +--------------------------------------------------------------------+ CmdForceDlg::CmdForceDlg(Screen* s, FormDef& def, CmpnScreen* mgr) - : FormWindow(s, 0, 0, s->Width(), s->Height()), manager(mgr), - CmdDlg(mgr), - cmb_forces(0), lst_combat(0), lst_desc(0), - stars(0), campaign(0), current_group(0), current_unit(0), - btn_transfer(0) +: FormWindow(s, 0, 0, s->Width(), s->Height()), manager(mgr), +CmdDlg(mgr), +cmb_forces(0), lst_combat(0), lst_desc(0), +stars(0), campaign(0), current_group(0), current_unit(0), +btn_transfer(0) { - stars = Starshatter::GetInstance(); - campaign = Campaign::GetCampaign(); + stars = Starshatter::GetInstance(); + campaign = Campaign::GetCampaign(); - Init(def); + Init(def); } CmdForceDlg::~CmdForceDlg() @@ -74,36 +74,36 @@ CmdForceDlg::~CmdForceDlg() void CmdForceDlg::RegisterControls() { - cmb_forces = (ComboBox*) FindControl(400); - lst_combat = (ListBox*) FindControl(401); - lst_desc = (ListBox*) FindControl(402); - btn_transfer = (Button*) FindControl(403); + cmb_forces = (ComboBox*) FindControl(400); + lst_combat = (ListBox*) FindControl(401); + lst_desc = (ListBox*) FindControl(402); + btn_transfer = (Button*) FindControl(403); - RegisterCmdControls(this); + RegisterCmdControls(this); - if (btn_save) - REGISTER_CLIENT(EID_CLICK, btn_save, CmdForceDlg, OnSave); + if (btn_save) + REGISTER_CLIENT(EID_CLICK, btn_save, CmdForceDlg, OnSave); - if (btn_exit) - REGISTER_CLIENT(EID_CLICK, btn_exit, CmdForceDlg, OnExit); + if (btn_exit) + REGISTER_CLIENT(EID_CLICK, btn_exit, CmdForceDlg, OnExit); - for (int i = 0; i < 5; i++) { - if (btn_mode[i]) - REGISTER_CLIENT(EID_CLICK, btn_mode[i], CmdForceDlg, OnMode); - } + for (int i = 0; i < 5; i++) { + if (btn_mode[i]) + REGISTER_CLIENT(EID_CLICK, btn_mode[i], CmdForceDlg, OnMode); + } - if (cmb_forces) - REGISTER_CLIENT(EID_SELECT, cmb_forces, CmdForceDlg, OnForces); + if (cmb_forces) + REGISTER_CLIENT(EID_SELECT, cmb_forces, CmdForceDlg, OnForces); - if (lst_combat) { - lst_combat->AddColumn("datatype", 0); - REGISTER_CLIENT(EID_SELECT, lst_combat, CmdForceDlg, OnCombat); - } + if (lst_combat) { + lst_combat->AddColumn("datatype", 0); + REGISTER_CLIENT(EID_SELECT, lst_combat, CmdForceDlg, OnCombat); + } - if (btn_transfer) { - btn_transfer->SetEnabled(false); - REGISTER_CLIENT(EID_CLICK, btn_transfer, CmdForceDlg, OnTransfer); - } + if (btn_transfer) { + btn_transfer->SetEnabled(false); + REGISTER_CLIENT(EID_CLICK, btn_transfer, CmdForceDlg, OnTransfer); + } } // +--------------------------------------------------------------------+ @@ -111,7 +111,7 @@ CmdForceDlg::RegisterControls() void CmdForceDlg::ExecFrame() { - CmdDlg::ExecFrame(); + CmdDlg::ExecFrame(); } // +--------------------------------------------------------------------+ @@ -119,30 +119,30 @@ CmdForceDlg::ExecFrame() void CmdForceDlg::Show() { - mode = MODE_FORCES; + mode = MODE_FORCES; - FormWindow::Show(); - ShowCmdDlg(); + FormWindow::Show(); + ShowCmdDlg(); - cmb_forces->ClearItems(); + cmb_forces->ClearItems(); - campaign = Campaign::GetCampaign(); + campaign = Campaign::GetCampaign(); - if (campaign) { - List& combatants = campaign->GetCombatants(); + if (campaign) { + List& combatants = campaign->GetCombatants(); - if (combatants.size() > 0) { - for (int i = 0; i < combatants.size(); i++) { - if (IsVisible(combatants[i])) { - cmb_forces->AddItem(combatants[i]->Name()); - } - } + if (combatants.size() > 0) { + for (int i = 0; i < combatants.size(); i++) { + if (IsVisible(combatants[i])) { + cmb_forces->AddItem(combatants[i]->Name()); + } + } - cmb_forces->SetSelection(0); - Combatant* c = combatants[0]; - ShowCombatant(c); - } - } + cmb_forces->SetSelection(0); + Combatant* c = combatants[0]; + ShowCombatant(c); + } + } } // +--------------------------------------------------------------------+ @@ -150,26 +150,26 @@ CmdForceDlg::Show() bool CmdForceDlg::IsVisible(Combatant* c) { - int nvis = 0; + int nvis = 0; - if (c) { - CombatGroup* force = c->GetForce(); + if (c) { + CombatGroup* force = c->GetForce(); - if (force) { - List& groups = force->GetComponents(); - for (int i = 0; i < groups.size(); i++) { - CombatGroup* g = groups[i]; + if (force) { + List& groups = force->GetComponents(); + for (int i = 0; i < groups.size(); i++) { + CombatGroup* g = groups[i]; - if (g->Type() < CombatGroup::CIVILIAN && - g->CountUnits() > 0 && - g->IntelLevel() >= Intel::KNOWN) + if (g->Type() < CombatGroup::CIVILIAN && + g->CountUnits() > 0 && + g->IntelLevel() >= Intel::KNOWN) - nvis++; - } - } - } + nvis++; + } + } + } - return nvis > 0; + return nvis > 0; } // +--------------------------------------------------------------------+ @@ -180,123 +180,123 @@ static bool blank_line = false; void CmdForceDlg::ShowCombatant(Combatant* c) { - if (!lst_combat || !c) return; + if (!lst_combat || !c) return; - lst_combat->ClearItems(); - ZeroMemory(pipe_stack, 32); + lst_combat->ClearItems(); + ZeroMemory(pipe_stack, 32); - CombatGroup* force = c->GetForce(); + CombatGroup* force = c->GetForce(); - if (force) { - List& groups = force->GetComponents(); - for (int i = 0; i < groups.size(); i++) { - CombatGroup* g = groups[i]; - if (g->Type() < CombatGroup::CIVILIAN && g->CountUnits() > 0) - AddCombatGroup(g); - } - } + if (force) { + List& groups = force->GetComponents(); + for (int i = 0; i < groups.size(); i++) { + CombatGroup* g = groups[i]; + if (g->Type() < CombatGroup::CIVILIAN && g->CountUnits() > 0) + AddCombatGroup(g); + } + } - current_group = 0; - current_unit = 0; + current_group = 0; + current_unit = 0; - if (lst_desc) lst_desc->ClearItems(); - if (btn_transfer) btn_transfer->SetEnabled(false); + if (lst_desc) lst_desc->ClearItems(); + if (btn_transfer) btn_transfer->SetEnabled(false); } void CmdForceDlg::AddCombatGroup(CombatGroup* grp, bool last_child) { - if (!lst_combat || !grp || grp->IntelLevel() < Intel::KNOWN) return; - - char prefix[4]; - - if (!grp->GetParent() || grp->GetParent()->Type() == CombatGroup::FORCE) { - if (!grp->IsExpanded()) { - prefix[0] = Font::PIPE_PLUS; - prefix[1] = 0; - } - else { - prefix[0] = Font::PIPE_MINUS; - prefix[1] = 0; - } - } - else { - prefix[0] = last_child ? Font::PIPE_LL : Font::PIPE_LT; - prefix[1] = Font::PIPE_HORZ; - prefix[2] = 0; - prefix[3] = 0; - - if (grp->GetLiveComponents().size() > 0 || grp->GetUnits().size() > 0) { - if (grp->IsExpanded()) - prefix[1] = Font::PIPE_MINUS; - else - prefix[1] = Font::PIPE_PLUS; - } - } - - int index = lst_combat->AddItemWithData( - Text(pipe_stack) + - Text(prefix) + - grp->GetDescription(), - (DWORD) grp); - lst_combat->SetItemData(index-1, 1, 0); - blank_line = false; - - int stacklen = strlen(pipe_stack); - - if (!grp->GetParent() || grp->GetParent()->Type() == CombatGroup::FORCE) - ; // no stack after first entry - else if (prefix[0] == Font::PIPE_LT) - pipe_stack[stacklen++] = Font::PIPE_VERT; - else - pipe_stack[stacklen++] = Font::PIPE_NBSP; - pipe_stack[stacklen] = 0; - - if (grp->IsExpanded() && grp->GetUnits().size() > 0) { - prefix[0] = (grp->GetLiveComponents().size() > 0) ? Font::PIPE_VERT : Font::PIPE_NBSP; - prefix[1] = Font::PIPE_NBSP; - prefix[2] = 0; - prefix[3] = 0; - - ListIter unit_iter = grp->GetUnits(); - while (++unit_iter) { - CombatUnit* unit = unit_iter.value(); - char info[512]; - int damage = (int) (100 * unit->GetSustainedDamage() / unit->GetDesign()->integrity); - - if (damage < 1 || unit->DeadCount() >= unit->Count()) { - sprintf(info, "%s%s%s", pipe_stack, prefix, unit->GetDescription()); - } - else { - sprintf(info, "%s%s%s %d%% damage", pipe_stack, prefix, unit->GetDescription(), - damage); - } - - int index = lst_combat->AddItemWithData(info, (DWORD) unit); - - lst_combat->SetItemData(index-1, 1, 1); - lst_combat->SetItemColor(index-1, lst_combat->GetForeColor() * 0.65); - } - - // blank line after last unit in group: - lst_combat->AddItem(Text(pipe_stack) + Text(prefix)); - blank_line = true; - } - - if (grp->IsExpanded() && grp->GetLiveComponents().size() > 0) { - List& groups = grp->GetLiveComponents(); - for (int i = 0; i < groups.size(); i++) { - AddCombatGroup(groups[i], i == groups.size()-1); - } - - // blank line after last group in group: - if (!blank_line) { - lst_combat->AddItem(pipe_stack); - blank_line = true; - } - } - - pipe_stack[stacklen-1] = 0; + if (!lst_combat || !grp || grp->IntelLevel() < Intel::KNOWN) return; + + char prefix[4]; + + if (!grp->GetParent() || grp->GetParent()->Type() == CombatGroup::FORCE) { + if (!grp->IsExpanded()) { + prefix[0] = Font::PIPE_PLUS; + prefix[1] = 0; + } + else { + prefix[0] = Font::PIPE_MINUS; + prefix[1] = 0; + } + } + else { + prefix[0] = last_child ? Font::PIPE_LL : Font::PIPE_LT; + prefix[1] = Font::PIPE_HORZ; + prefix[2] = 0; + prefix[3] = 0; + + if (grp->GetLiveComponents().size() > 0 || grp->GetUnits().size() > 0) { + if (grp->IsExpanded()) + prefix[1] = Font::PIPE_MINUS; + else + prefix[1] = Font::PIPE_PLUS; + } + } + + int index = lst_combat->AddItemWithData( + Text(pipe_stack) + + Text(prefix) + + grp->GetDescription(), + (DWORD) grp); + lst_combat->SetItemData(index-1, 1, 0); + blank_line = false; + + int stacklen = strlen(pipe_stack); + + if (!grp->GetParent() || grp->GetParent()->Type() == CombatGroup::FORCE) + ; // no stack after first entry + else if (prefix[0] == Font::PIPE_LT) + pipe_stack[stacklen++] = Font::PIPE_VERT; + else + pipe_stack[stacklen++] = Font::PIPE_NBSP; + pipe_stack[stacklen] = 0; + + if (grp->IsExpanded() && grp->GetUnits().size() > 0) { + prefix[0] = (grp->GetLiveComponents().size() > 0) ? Font::PIPE_VERT : Font::PIPE_NBSP; + prefix[1] = Font::PIPE_NBSP; + prefix[2] = 0; + prefix[3] = 0; + + ListIter unit_iter = grp->GetUnits(); + while (++unit_iter) { + CombatUnit* unit = unit_iter.value(); + char info[512]; + int damage = (int) (100 * unit->GetSustainedDamage() / unit->GetDesign()->integrity); + + if (damage < 1 || unit->DeadCount() >= unit->Count()) { + sprintf(info, "%s%s%s", pipe_stack, prefix, unit->GetDescription()); + } + else { + sprintf(info, "%s%s%s %d%% damage", pipe_stack, prefix, unit->GetDescription(), + damage); + } + + int index = lst_combat->AddItemWithData(info, (DWORD) unit); + + lst_combat->SetItemData(index-1, 1, 1); + lst_combat->SetItemColor(index-1, lst_combat->GetForeColor() * 0.65); + } + + // blank line after last unit in group: + lst_combat->AddItem(Text(pipe_stack) + Text(prefix)); + blank_line = true; + } + + if (grp->IsExpanded() && grp->GetLiveComponents().size() > 0) { + List& groups = grp->GetLiveComponents(); + for (int i = 0; i < groups.size(); i++) { + AddCombatGroup(groups[i], i == groups.size()-1); + } + + // blank line after last group in group: + if (!blank_line) { + lst_combat->AddItem(pipe_stack); + blank_line = true; + } + } + + pipe_stack[stacklen-1] = 0; } // +--------------------------------------------------------------------+ @@ -304,281 +304,281 @@ CmdForceDlg::AddCombatGroup(CombatGroup* grp, bool last_child) void CmdForceDlg::OnForces(AWEvent* event) { - Text name = cmb_forces->GetSelectedItem(); - - campaign = Campaign::GetCampaign(); - - if (campaign) { - ListIter iter = campaign->GetCombatants(); - - while (++iter) { - Combatant* c = iter.value(); - - if (name == c->Name()) { - ShowCombatant(c); - break; - } - } - } + Text name = cmb_forces->GetSelectedItem(); + + campaign = Campaign::GetCampaign(); + + if (campaign) { + ListIter iter = campaign->GetCombatants(); + + while (++iter) { + Combatant* c = iter.value(); + + if (name == c->Name()) { + ShowCombatant(c); + break; + } + } + } } // +--------------------------------------------------------------------+ struct WepGroup { - Text name; - int count; + Text name; + int count; - WepGroup() : count(0) { } + WepGroup() : count(0) { } }; WepGroup* FindWepGroup(WepGroup* weapons, const char* name) { - WepGroup* group = 0; - WepGroup* iter = weapons; - int w = 0; - int first = -1; + WepGroup* group = 0; + WepGroup* iter = weapons; + int w = 0; + int first = -1; - while (!group && w < 8) { - if (first < 0 && iter->name.length() == 0) - first = w; + while (!group && w < 8) { + if (first < 0 && iter->name.length() == 0) + first = w; - if (!stricmp(iter->name, name)) - group = iter; + if (!stricmp(iter->name, name)) + group = iter; - iter++; - w++; - } + iter++; + w++; + } - if (!group && first >= 0) { - group = weapons + first; - group->name = name; - } + if (!group && first >= 0) { + group = weapons + first; + group->name = name; + } - return group; + return group; } void CmdForceDlg::OnCombat(AWEvent* event) { - static int old_index = -1; + static int old_index = -1; - int top_index = 0; - bool expand = false; - DWORD data = 0; - DWORD type = 0; + int top_index = 0; + bool expand = false; + DWORD data = 0; + DWORD type = 0; - current_group = 0; - current_unit = 0; + current_group = 0; + current_unit = 0; - if (lst_combat) { - top_index = lst_combat->GetTopIndex(); + if (lst_combat) { + top_index = lst_combat->GetTopIndex(); - int index = lst_combat->GetListIndex(); - data = lst_combat->GetItemData(index); - type = lst_combat->GetItemData(index, 1); - Text item = lst_combat->GetItemText(index); - int nplus = item.indexOf(Font::PIPE_PLUS); - int xplus = -1; - int dx = 10000; - - if (nplus < 0) - nplus = item.indexOf(Font::PIPE_MINUS); - - if (nplus >= 0 && nplus < 64) { - char pipe[64]; - strncpy(pipe, item.data(), nplus+1); - pipe[nplus+1] = 0; - - Rect rect(0, 0, 1000, 20); - lst_combat->DrawText(pipe, 0, rect, DT_LEFT|DT_SINGLELINE|DT_VCENTER|DT_CALCRECT); - - xplus = rect.w; - } - - if (xplus > 0) { - dx = Mouse::X() - (lst_combat->GetRect().x + xplus - 16); - } - - // look for click on plus/minus in pipe - if (dx >= 0 && dx < 16) { - if (data && type == 0) { - CombatGroup* grp = (CombatGroup*) data; - grp->SetExpanded(!grp->IsExpanded()); - expand = true; - - current_group = grp; - current_unit = 0; - } - } - - old_index = index; - } - - if (campaign && data) { - if (!expand) { - lst_desc->ClearItems(); - - // combat group - if (type == 0) { - CombatGroup* grp = (CombatGroup*) data; - - current_group = grp; - current_unit = 0; - - // if has units, show location and assignment - if (grp->GetUnits().size() > 0) { - char txt[64]; - int n; - - n = lst_desc->AddItem("Group:") - 1; - lst_desc->SetItemText(n, 1, grp->GetDescription()); - n = lst_desc->AddItem("Sector:") - 1; - lst_desc->SetItemText(n, 1, grp->GetRegion()); - - lst_desc->AddItem(" "); - n = lst_desc->AddItem("Sorties:") - 1; - - if (grp->Sorties() >= 0) - sprintf(txt, "%d", grp->Sorties()); - else - strcpy(txt, "Unavail"); - - lst_desc->SetItemText(n, 1, txt); - - n = lst_desc->AddItem("Kills:") - 1; - - if (grp->Kills() >= 0) - sprintf(txt, "%d", grp->Kills()); - else - strcpy(txt, "Unavail"); - - lst_desc->SetItemText(n, 1, txt); - - n = lst_desc->AddItem("Eff Rating:") - 1; - - if (grp->Points() >= 0) { - if (grp->Sorties() > 0) - sprintf(txt, "%.1f", (double) grp->Points() / grp->Sorties()); - else - sprintf(txt, "%.1f", (double) grp->Points()); - } - else { - strcpy(txt, "Unavail"); - } - - lst_desc->SetItemText(n, 1, txt); - } - - // else (if high-level) show components - else { - int n; - - n = lst_desc->AddItem("Group:") - 1; - lst_desc->SetItemText(n, 1, grp->GetDescription()); - - ListIter c = grp->GetLiveComponents(); - while (++c) { - n = lst_desc->AddItem("-") - 1; - lst_desc->SetItemText(n, 1, c->GetDescription()); - } - } - } - // combat unit - else { - CombatUnit* unit = (CombatUnit*) data; - current_group = unit->GetCombatGroup(); - current_unit = unit; - - int n; - char txt[64]; - - n = lst_desc->AddItem("Unit:") - 1; - lst_desc->SetItemText(n, 1, unit->GetDescription()); - n = lst_desc->AddItem("Sector:") - 1; - lst_desc->SetItemText(n, 1, unit->GetRegion()); - - const ShipDesign* design = unit->GetDesign(); - if (design) { - lst_desc->AddItem(" "); - n = lst_desc->AddItem("Type:") - 1; - lst_desc->SetItemText(n, 1, Ship::ClassName(design->type)); - n = lst_desc->AddItem("Class:") - 1; - lst_desc->SetItemText(n, 1, design->DisplayName()); - - if (design->type < Ship::STATION) - FormatNumber(txt, design->radius/2); - else - FormatNumber(txt, design->radius*2); - - strcat(txt, " m"); - - n = lst_desc->AddItem("Length:") - 1; - lst_desc->SetItemText(n, 1, txt); - - FormatNumber(txt, design->mass); - strcat(txt, " T"); - - n = lst_desc->AddItem("Mass:") - 1; - lst_desc->SetItemText(n, 1, txt); - - FormatNumber(txt, design->integrity); - n = lst_desc->AddItem("Hull:") - 1; - lst_desc->SetItemText(n, 1, txt); - - if (design->weapons.size()) { - lst_desc->AddItem(" "); - n = lst_desc->AddItem("Weapons:") - 1; - - WepGroup groups[8]; - for (int w = 0; w < design->weapons.size(); w++) { - Weapon* gun = design->weapons[w]; - WepGroup* group = FindWepGroup(groups, gun->Group()); - - if (group) - group->count++; - } - - for (int g = 0; g < 8; g++) { - WepGroup* group = &groups[g]; - if (group && group->count) { - sprintf(txt, "%s (%d)", group->name.data(), group->count); - if (g > 0) n = lst_desc->AddItem(" ") - 1; - lst_desc->SetItemText(n, 1, txt); - } - } - } - } - } - } - - else { - List& combatants = campaign->GetCombatants(); - Combatant* c = combatants[0]; - - if (cmb_forces) { - Text name = cmb_forces->GetSelectedItem(); - - for (int i = 0; i < combatants.size(); i++) { - c = combatants[i]; - - if (name == c->Name()) { - break; - } - } - } - - if (c) { - ShowCombatant(c); - - lst_combat->ScrollTo(top_index); - lst_combat->SetSelected(old_index); - } - } - } - - if (btn_transfer && campaign && current_group) - btn_transfer->SetEnabled( campaign->IsActive() && - CanTransfer(current_group) ); + int index = lst_combat->GetListIndex(); + data = lst_combat->GetItemData(index); + type = lst_combat->GetItemData(index, 1); + Text item = lst_combat->GetItemText(index); + int nplus = item.indexOf(Font::PIPE_PLUS); + int xplus = -1; + int dx = 10000; + + if (nplus < 0) + nplus = item.indexOf(Font::PIPE_MINUS); + + if (nplus >= 0 && nplus < 64) { + char pipe[64]; + strncpy(pipe, item.data(), nplus+1); + pipe[nplus+1] = 0; + + Rect rect(0, 0, 1000, 20); + lst_combat->DrawText(pipe, 0, rect, DT_LEFT|DT_SINGLELINE|DT_VCENTER|DT_CALCRECT); + + xplus = rect.w; + } + + if (xplus > 0) { + dx = Mouse::X() - (lst_combat->GetRect().x + xplus - 16); + } + + // look for click on plus/minus in pipe + if (dx >= 0 && dx < 16) { + if (data && type == 0) { + CombatGroup* grp = (CombatGroup*) data; + grp->SetExpanded(!grp->IsExpanded()); + expand = true; + + current_group = grp; + current_unit = 0; + } + } + + old_index = index; + } + + if (campaign && data) { + if (!expand) { + lst_desc->ClearItems(); + + // combat group + if (type == 0) { + CombatGroup* grp = (CombatGroup*) data; + + current_group = grp; + current_unit = 0; + + // if has units, show location and assignment + if (grp->GetUnits().size() > 0) { + char txt[64]; + int n; + + n = lst_desc->AddItem("Group:") - 1; + lst_desc->SetItemText(n, 1, grp->GetDescription()); + n = lst_desc->AddItem("Sector:") - 1; + lst_desc->SetItemText(n, 1, grp->GetRegion()); + + lst_desc->AddItem(" "); + n = lst_desc->AddItem("Sorties:") - 1; + + if (grp->Sorties() >= 0) + sprintf(txt, "%d", grp->Sorties()); + else + strcpy(txt, "Unavail"); + + lst_desc->SetItemText(n, 1, txt); + + n = lst_desc->AddItem("Kills:") - 1; + + if (grp->Kills() >= 0) + sprintf(txt, "%d", grp->Kills()); + else + strcpy(txt, "Unavail"); + + lst_desc->SetItemText(n, 1, txt); + + n = lst_desc->AddItem("Eff Rating:") - 1; + + if (grp->Points() >= 0) { + if (grp->Sorties() > 0) + sprintf(txt, "%.1f", (double) grp->Points() / grp->Sorties()); + else + sprintf(txt, "%.1f", (double) grp->Points()); + } + else { + strcpy(txt, "Unavail"); + } + + lst_desc->SetItemText(n, 1, txt); + } + + // else (if high-level) show components + else { + int n; + + n = lst_desc->AddItem("Group:") - 1; + lst_desc->SetItemText(n, 1, grp->GetDescription()); + + ListIter c = grp->GetLiveComponents(); + while (++c) { + n = lst_desc->AddItem("-") - 1; + lst_desc->SetItemText(n, 1, c->GetDescription()); + } + } + } + // combat unit + else { + CombatUnit* unit = (CombatUnit*) data; + current_group = unit->GetCombatGroup(); + current_unit = unit; + + int n; + char txt[64]; + + n = lst_desc->AddItem("Unit:") - 1; + lst_desc->SetItemText(n, 1, unit->GetDescription()); + n = lst_desc->AddItem("Sector:") - 1; + lst_desc->SetItemText(n, 1, unit->GetRegion()); + + const ShipDesign* design = unit->GetDesign(); + if (design) { + lst_desc->AddItem(" "); + n = lst_desc->AddItem("Type:") - 1; + lst_desc->SetItemText(n, 1, Ship::ClassName(design->type)); + n = lst_desc->AddItem("Class:") - 1; + lst_desc->SetItemText(n, 1, design->DisplayName()); + + if (design->type < Ship::STATION) + FormatNumber(txt, design->radius/2); + else + FormatNumber(txt, design->radius*2); + + strcat(txt, " m"); + + n = lst_desc->AddItem("Length:") - 1; + lst_desc->SetItemText(n, 1, txt); + + FormatNumber(txt, design->mass); + strcat(txt, " T"); + + n = lst_desc->AddItem("Mass:") - 1; + lst_desc->SetItemText(n, 1, txt); + + FormatNumber(txt, design->integrity); + n = lst_desc->AddItem("Hull:") - 1; + lst_desc->SetItemText(n, 1, txt); + + if (design->weapons.size()) { + lst_desc->AddItem(" "); + n = lst_desc->AddItem("Weapons:") - 1; + + WepGroup groups[8]; + for (int w = 0; w < design->weapons.size(); w++) { + Weapon* gun = design->weapons[w]; + WepGroup* group = FindWepGroup(groups, gun->Group()); + + if (group) + group->count++; + } + + for (int g = 0; g < 8; g++) { + WepGroup* group = &groups[g]; + if (group && group->count) { + sprintf(txt, "%s (%d)", group->name.data(), group->count); + if (g > 0) n = lst_desc->AddItem(" ") - 1; + lst_desc->SetItemText(n, 1, txt); + } + } + } + } + } + } + + else { + List& combatants = campaign->GetCombatants(); + Combatant* c = combatants[0]; + + if (cmb_forces) { + Text name = cmb_forces->GetSelectedItem(); + + for (int i = 0; i < combatants.size(); i++) { + c = combatants[i]; + + if (name == c->Name()) { + break; + } + } + } + + if (c) { + ShowCombatant(c); + + lst_combat->ScrollTo(top_index); + lst_combat->SetSelected(old_index); + } + } + } + + if (btn_transfer && campaign && current_group) + btn_transfer->SetEnabled( campaign->IsActive() && + CanTransfer(current_group) ); } // +--------------------------------------------------------------------+ @@ -586,24 +586,24 @@ CmdForceDlg::OnCombat(AWEvent* event) bool CmdForceDlg::CanTransfer(CombatGroup* grp) { - if (!grp || !campaign) - return false; + if (!grp || !campaign) + return false; - if (grp->Type() < CombatGroup::WING) - return false; + if (grp->Type() < CombatGroup::WING) + return false; - if (grp->Type() > CombatGroup::CARRIER_GROUP) - return false; + if (grp->Type() > CombatGroup::CARRIER_GROUP) + return false; - if (grp->Type() == CombatGroup::FLEET || - grp->Type() == CombatGroup::LCA_SQUADRON) - return false; + if (grp->Type() == CombatGroup::FLEET || + grp->Type() == CombatGroup::LCA_SQUADRON) + return false; - CombatGroup* player_group = campaign->GetPlayerGroup(); - if (player_group->GetIFF() != grp->GetIFF()) - return false; + CombatGroup* player_group = campaign->GetPlayerGroup(); + if (player_group->GetIFF() != grp->GetIFF()) + return false; - return true; + return true; } @@ -612,19 +612,19 @@ CmdForceDlg::CanTransfer(CombatGroup* grp) void CmdForceDlg::OnSave(AWEvent* event) { - CmdDlg::OnSave(event); + CmdDlg::OnSave(event); } void CmdForceDlg::OnExit(AWEvent* event) { - CmdDlg::OnExit(event); + CmdDlg::OnExit(event); } void CmdForceDlg::OnMode(AWEvent* event) { - CmdDlg::OnMode(event); + CmdDlg::OnMode(event); } @@ -633,86 +633,86 @@ CmdForceDlg::OnMode(AWEvent* event) void CmdForceDlg::OnTransfer(AWEvent* event) { - if (campaign && current_group) { - - // check player rank/responsibility: - Player* player = Player::GetCurrentPlayer(); - int cmd_class = Ship::FIGHTER; - - switch (current_group->Type()) { - case CombatGroup::WING: - case CombatGroup::INTERCEPT_SQUADRON: - case CombatGroup::FIGHTER_SQUADRON: - cmd_class = Ship::FIGHTER; - break; - - case CombatGroup::ATTACK_SQUADRON: - cmd_class = Ship::ATTACK; - break; - - case CombatGroup::LCA_SQUADRON: - cmd_class = Ship::LCA; - break; - - case CombatGroup::DESTROYER_SQUADRON: - cmd_class = Ship::DESTROYER; - break; - - case CombatGroup::BATTLE_GROUP: - cmd_class = Ship::CRUISER; - break; - - case CombatGroup::CARRIER_GROUP: - case CombatGroup::FLEET: - cmd_class = Ship::CARRIER; - break; - } - - char transfer_info[512]; - - if (player->CanCommand(cmd_class)) { - if (current_unit) { - campaign->SetPlayerUnit(current_unit); - - sprintf(transfer_info, "Your transfer request has been approved, %s %s. You are now assigned to the %s. Good luck.\n\nFleet Admiral A. Evars FORCOM\nCommanding", - Player::RankName(player->Rank()), - player->Name().data(), - current_unit->GetDescription()); - } - else { - campaign->SetPlayerGroup(current_group); - - sprintf(transfer_info, "Your transfer request has been approved, %s %s. You are now assigned to the %s. Good luck.\n\nFleet Admiral A. Evars FORCOM\nCommanding", - Player::RankName(player->Rank()), - player->Name().data(), - current_group->GetDescription()); - } - - Button::PlaySound(Button::SND_ACCEPT); - - CmdMsgDlg* msgdlg = manager->GetCmdMsgDlg(); - msgdlg->Title()->SetText("Transfer Approved"); - msgdlg->Message()->SetText(transfer_info); - msgdlg->Message()->SetTextAlign(DT_LEFT); - - manager->ShowCmdMsgDlg(); - } - - else { - Button::PlaySound(Button::SND_REJECT); - - sprintf(transfer_info, "Your transfer request has been denied, %s %s. The %s requires a command rank of %s. Please return to your unit and your duties.\n\nFleet Admiral A. Evars FORCOM\nCommanding", - Player::RankName(player->Rank()), - player->Name().data(), - current_group->GetDescription(), - Player::RankName(Player::CommandRankRequired(cmd_class))); - - CmdMsgDlg* msgdlg = manager->GetCmdMsgDlg(); - msgdlg->Title()->SetText("Transfer Denied"); - msgdlg->Message()->SetText(transfer_info); - msgdlg->Message()->SetTextAlign(DT_LEFT); - - manager->ShowCmdMsgDlg(); - } - } + if (campaign && current_group) { + + // check player rank/responsibility: + Player* player = Player::GetCurrentPlayer(); + int cmd_class = Ship::FIGHTER; + + switch (current_group->Type()) { + case CombatGroup::WING: + case CombatGroup::INTERCEPT_SQUADRON: + case CombatGroup::FIGHTER_SQUADRON: + cmd_class = Ship::FIGHTER; + break; + + case CombatGroup::ATTACK_SQUADRON: + cmd_class = Ship::ATTACK; + break; + + case CombatGroup::LCA_SQUADRON: + cmd_class = Ship::LCA; + break; + + case CombatGroup::DESTROYER_SQUADRON: + cmd_class = Ship::DESTROYER; + break; + + case CombatGroup::BATTLE_GROUP: + cmd_class = Ship::CRUISER; + break; + + case CombatGroup::CARRIER_GROUP: + case CombatGroup::FLEET: + cmd_class = Ship::CARRIER; + break; + } + + char transfer_info[512]; + + if (player->CanCommand(cmd_class)) { + if (current_unit) { + campaign->SetPlayerUnit(current_unit); + + sprintf(transfer_info, "Your transfer request has been approved, %s %s. You are now assigned to the %s. Good luck.\n\nFleet Admiral A. Evars FORCOM\nCommanding", + Player::RankName(player->Rank()), + player->Name().data(), + current_unit->GetDescription()); + } + else { + campaign->SetPlayerGroup(current_group); + + sprintf(transfer_info, "Your transfer request has been approved, %s %s. You are now assigned to the %s. Good luck.\n\nFleet Admiral A. Evars FORCOM\nCommanding", + Player::RankName(player->Rank()), + player->Name().data(), + current_group->GetDescription()); + } + + Button::PlaySound(Button::SND_ACCEPT); + + CmdMsgDlg* msgdlg = manager->GetCmdMsgDlg(); + msgdlg->Title()->SetText("Transfer Approved"); + msgdlg->Message()->SetText(transfer_info); + msgdlg->Message()->SetTextAlign(DT_LEFT); + + manager->ShowCmdMsgDlg(); + } + + else { + Button::PlaySound(Button::SND_REJECT); + + sprintf(transfer_info, "Your transfer request has been denied, %s %s. The %s requires a command rank of %s. Please return to your unit and your duties.\n\nFleet Admiral A. Evars FORCOM\nCommanding", + Player::RankName(player->Rank()), + player->Name().data(), + current_group->GetDescription(), + Player::RankName(Player::CommandRankRequired(cmd_class))); + + CmdMsgDlg* msgdlg = manager->GetCmdMsgDlg(); + msgdlg->Title()->SetText("Transfer Denied"); + msgdlg->Message()->SetText(transfer_info); + msgdlg->Message()->SetTextAlign(DT_LEFT); + + manager->ShowCmdMsgDlg(); + } + } } -- cgit v1.1