properly initialize each reinforcement

This commit is contained in:
Goober5000 committed 2026-05-26 10:55:05 -04:00
1 parent 81695b36db
commit b532a7b855
7 files changed
+23 -36

No files matched your search

-4
View File
@@ -6055,10 +6055,6 @@ void parse_reinforcement(mission *pm)
required_string("$Num times:");
stuff_int(&reinforcement.uses);
reinforcement.num_uses = 0;
// reset the flags to 0
reinforcement.flags = 0;
if ( optional_string("+Arrival delay:") )
{
+17
View File
@@ -7646,6 +7646,23 @@ bool wing::has_display_name() const
return flags[Ship::Wing_Flags::Has_display_name];
}
reinforcements::reinforcements(const char *reinforcement_name)
{
if (reinforcement_name)
strcpy_s(name, reinforcement_name);
else
name[0] = '\0';
type = 0;
uses = 1;
num_uses = 0;
arrival_delay = 0;
flags = 0;
memset(no_messages, 0, MAX_REINFORCEMENT_MESSAGES * NAME_LENGTH);
memset(yes_messages, 0, MAX_REINFORCEMENT_MESSAGES * NAME_LENGTH);
}
// NOTE: Now that the clear() member function exists, this function only sets the stuff associated with the object and ship class.
static void ship_set(int ship_index, int objnum, int ship_type)
{
+2
View File
@@ -88,6 +88,8 @@ struct reinforcements {
int flags;
char no_messages[MAX_REINFORCEMENT_MESSAGES][NAME_LENGTH]; // list of messages to possibly send when calling for reinforcement not available
char yes_messages[MAX_REINFORCEMENT_MESSAGES][NAME_LENGTH]; // list of messages to acknowledge reinforcement on the way
reinforcements(const char *reinforcement_name = nullptr);
};
class ship_weapon {
+1 -7
View File
@@ -1750,13 +1750,7 @@ int set_reinforcement(const char *name, int state)
if (state && (cur == -1)) {
Assert(strlen(name) < NAME_LENGTH);
reinforcements reinforcement;
strcpy_s(reinforcement.name, name);
reinforcement.uses = 1;
reinforcement.arrival_delay = 0;
memset( reinforcement.no_messages, 0, MAX_REINFORCEMENT_MESSAGES * NAME_LENGTH );
memset( reinforcement.yes_messages, 0, MAX_REINFORCEMENT_MESSAGES * NAME_LENGTH );
Reinforcements.push_back(std::move(reinforcement));
Reinforcements.emplace_back(name);
// set the reinforcement flag on the ship or wing
index = ship_name_lookup(name);
+1 -13
View File
@@ -138,11 +138,6 @@ void reinforcement_editor_dlg::save_data()
if (cur >= 0) {
m_reinforcements[cur].uses = m_uses;
m_reinforcements[cur].arrival_delay = m_delay;
// save the message information to the reinforcement structure. First clear out the string
// entires in the Reinforcement structure
memset( m_reinforcements[cur].no_messages, 0, MAX_REINFORCEMENT_MESSAGES * NAME_LENGTH );
memset( m_reinforcements[cur].yes_messages, 0, MAX_REINFORCEMENT_MESSAGES * NAME_LENGTH );
}
}
@@ -328,15 +323,8 @@ void reinforcement_editor_dlg::OnAdd()
}
}
reinforcements reinforcement;
strcpy_s(reinforcement.name, dlg.name);
((CListBox *) GetDlgItem(IDC_LIST)) -> AddString(dlg.name);
reinforcement.type = 0;
reinforcement.uses = 1;
reinforcement.arrival_delay = 0;
memset( reinforcement.no_messages, 0, MAX_REINFORCEMENT_MESSAGES * NAME_LENGTH );
memset( reinforcement.yes_messages, 0, MAX_REINFORCEMENT_MESSAGES * NAME_LENGTH );
m_reinforcements.push_back(std::move(reinforcement));
m_reinforcements.emplace_back(dlg.name);
}
}
+1 -7
View File
@@ -1553,13 +1553,7 @@ int Editor::set_reinforcement(const char* name, int state) {
if (state && (cur == -1)) {
Assert(strlen(name) < NAME_LENGTH);
reinforcements reinforcement;
strcpy_s(reinforcement.name, name);
reinforcement.uses = 1;
reinforcement.arrival_delay = 0;
memset(reinforcement.no_messages, 0, MAX_REINFORCEMENT_MESSAGES * NAME_LENGTH);
memset(reinforcement.yes_messages, 0, MAX_REINFORCEMENT_MESSAGES * NAME_LENGTH);
Reinforcements.push_back(std::move(reinforcement));
Reinforcements.emplace_back(name);
// set the reinforcement flag on the ship or wing
index = ship_name_lookup(name);
@@ -84,13 +84,9 @@ bool ReinforcementsDialogModel::apply()
// Properly set all reinforcement info.
Reinforcements.clear();
for (auto& modelReinforcement : _reinforcementList) {
reinforcements reinforcement;
strcpy_s(reinforcement.name, std::get<0>(modelReinforcement).c_str());
reinforcements reinforcement(std::get<0>(modelReinforcement).c_str());
reinforcement.uses = std::get<1>(modelReinforcement);
reinforcement.arrival_delay = std::get<2>(modelReinforcement);
reinforcement.type = 0;
memset( reinforcement.no_messages, 0, MAX_REINFORCEMENT_MESSAGES * NAME_LENGTH );
memset( reinforcement.yes_messages, 0, MAX_REINFORCEMENT_MESSAGES * NAME_LENGTH );
Reinforcements.push_back(std::move(reinforcement));
}