Esempio n. 1
0
ShipDesign::ShipDesign( const ShipDesign &other )
{
    m_name = other.name();
    m_type = other.type();
    m_class = other.missionClass();
    m_components = other.getComponents();
}
Esempio n. 2
0
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;
}
Esempio n. 3
0
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())
{}
Esempio n. 4
0
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();
}