ShipDesign::ShipDesign( const ShipDesign &other ) { m_name = other.name(); m_type = other.type(); m_class = other.missionClass(); m_components = other.getComponents(); }
bool operator ==(const ShipDesign& first, const ShipDesign& second) { if (first.Hull() != second.Hull()) return false; std::map<std::string, int> first_parts; std::map<std::string, int> second_parts; for (const std::string& part_name : first.Parts()) { ++first_parts[part_name]; } for (const std::string& part_name : second.Parts()) { ++second_parts[part_name]; } return first_parts == second_parts; }
ShipDesignOrder::ShipDesignOrder(int empire, int new_design_id, const ShipDesign& ship_design) : Order(empire), m_design_id(new_design_id), m_update_name_or_description(false), m_delete_design_from_empire(false), m_create_new_design(true), m_name(ship_design.Name()), m_description(ship_design.Description()), m_designed_on_turn(ship_design.DesignedOnTurn()), m_hull(ship_design.Hull()), m_parts(ship_design.Parts()), m_is_monster(ship_design.IsMonster()), m_icon(ship_design.Icon()), m_3D_model(ship_design.Model()), m_name_desc_in_stringtable(ship_design.LookupInStringtable()) {}
bool operator ==(const ShipDesign& first, const ShipDesign& second) { if (first.Hull() != second.Hull()) return false; std::map<std::string, int> first_parts; std::map<std::string, int> second_parts; for (std::vector<std::string>::const_iterator it = first.Parts().begin(); it != first.Parts().end(); ++it) { ++first_parts[*it]; } for (std::vector<std::string>::const_iterator it = second.Parts().begin(); it != second.Parts().end(); ++it) { ++second_parts[*it]; } return first_parts == second_parts; }
void MsnElemDlg::OnAccept(AWEvent* event) { if (mission && elem) { char buf[64]; int val; if (edt_name) { elem->SetName(edt_name->GetText()); } if (edt_size) { strcpy_s(buf, edt_size->GetText()); if (isdigit(*buf)) sscanf_s(buf, "%d", &val); else val = 1; elem->SetCount(val); } if (edt_iff) { strcpy_s(buf, edt_iff->GetText()); if (isdigit(*buf)) sscanf_s(buf, "%d", &val); else val = 1; elem->SetIFF(val); } if (edt_loc_x && edt_loc_y && edt_loc_z) { Point loc; strcpy_s(buf, edt_loc_x->GetText()); if (isdigit(*buf) || *buf == '-') sscanf_s(buf, "%d", &val); else val = 0; loc.x = val * 1000; strcpy_s(buf, edt_loc_y->GetText()); if (isdigit(*buf) || *buf == '-') sscanf_s(buf, "%d", &val); else val = 0; loc.y = val * 1000; strcpy_s(buf, edt_loc_z->GetText()); if (isdigit(*buf) || *buf == '-') sscanf_s(buf, "%d", &val); else val = 0; loc.z = val * 1000; elem->SetLocation(loc); } if (edt_respawns) { strcpy_s(buf, edt_respawns->GetText()); if (isdigit(*buf)) sscanf_s(buf, "%d", &val); else val = 0; elem->SetRespawnCount(val); } if (edt_hold_time) { strcpy_s(buf, edt_hold_time->GetText()); if (isdigit(*buf)) sscanf_s(buf, "%d", &val); else val = 0; elem->SetHoldTime(val); } if (btn_player) { if (btn_player->GetButtonState() > 0) { mission->SetPlayer(elem); } else { elem->SetPlayer(0); } } if (btn_playable) elem->SetPlayable(btn_playable->GetButtonState() ? true : false); if (btn_alert) elem->SetAlert(btn_alert->GetButtonState() ? true : false); if (btn_command_ai) elem->SetCommandAI(btn_command_ai->GetButtonState() ? 1 : 0); if (cmb_design) { ShipDesign* d = ShipDesign::Get(cmb_design->GetSelectedItem()); if (d) { elem->SetDesign(d); if (cmb_skin) { const char* skin_name = cmb_skin->GetSelectedItem(); if (strcmp(skin_name, Game::GetText("MsnDlg.default").data())) { elem->SetSkin(d->FindSkin(skin_name)); } else { elem->SetSkin(0); } } } } if (cmb_role) { elem->SetMissionRole(cmb_role->GetSelectedIndex()); } if (cmb_region) { elem->SetRegion(cmb_region->GetSelectedItem()); if (elem->Player() > 0) { mission->SetRegion(cmb_region->GetSelectedItem()); } } if (cmb_heading) { switch (cmb_heading->GetSelectedIndex()) { default: case 0: elem->SetHeading(0); break; case 1: elem->SetHeading(PI/2); break; case 2: elem->SetHeading(PI); break; case 3: elem->SetHeading(3*PI/2); break; } } if (cmb_commander) { elem->SetCommander(cmb_commander->GetSelectedItem()); } if (cmb_squadron) { elem->SetSquadron(cmb_squadron->GetSelectedItem()); } if (cmb_carrier) { elem->SetCarrier(cmb_carrier->GetSelectedItem()); } if (cmb_intel) { elem->SetIntelLevel(Intel::IntelFromName(cmb_intel->GetSelectedItem())); } if (cmb_loadout && cmb_loadout->NumItems()) { elem->Loadouts().destroy(); const char* loadname = cmb_loadout->GetSelectedItem(); if (loadname && *loadname) { MissionLoad* mload = new(__FILE__,__LINE__) MissionLoad(-1, cmb_loadout->GetSelectedItem()); elem->Loadouts().append(mload); } } if (cmb_objective && cmb_target) { List<Instruction>& objectives = elem->Objectives(); objectives.destroy(); int action = cmb_objective->GetSelectedIndex() - 1; const char* target = cmb_target->GetSelectedItem(); if (action >= Instruction::VECTOR) { Instruction* obj = new(__FILE__,__LINE__) Instruction(action, target); objectives.append(obj); } } if (elem->Player()) { mission->SetTeam(elem->GetIFF()); } } manager->ShowMsnEditDlg(); }