Skip to content

Commit e6b2cbf

Browse files
authored
Merge pull request #5870 from Goober5000/any_wingman_check
add a new check to the Voice Acting Manager
2 parents 218a98d + da1e2c1 commit e6b2cbf

File tree

4 files changed

+88
-5
lines changed

4 files changed

+88
-5
lines changed

fred2/fred.rc

Lines changed: 6 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -2179,12 +2179,12 @@ BEGIN
21792179
PUSHBUTTON "Global Affected-By-Gravity",IDC_AFFECTED_BY_GRAVITY,7,58,100,14
21802180
END
21812181

2182-
IDD_VOICE_MANAGER DIALOGEX 0, 0, 407, 250
2182+
IDD_VOICE_MANAGER DIALOGEX 0, 0, 407, 284
21832183
STYLE DS_SETFONT | DS_MODALFRAME | WS_POPUP | WS_CAPTION | WS_SYSMENU
21842184
CAPTION "Voice Acting Manager"
21852185
FONT 8, "MS Sans Serif", 0, 0, 0x0
21862186
BEGIN
2187-
GROUPBOX "File Name Options",IDC_FILE_NAME_OPTIONS,7,7,130,237
2187+
GROUPBOX "File Name Options",IDC_FILE_NAME_OPTIONS,7,7,130,271
21882188
GROUPBOX "Abbreviations",IDC_ABBREVIATIONS,12,17,120,101
21892189
LTEXT "Campaign",IDC_LBL_ABBREV_CAMPAIGN,17,28,58,10
21902190
EDITTEXT IDC_ABBREV_CAMPAIGN,82,27,44,12,ES_AUTOHSCROLL
@@ -2208,7 +2208,7 @@ BEGIN
22082208
CONTROL "Don't replace existing file names",IDC_NO_REPLACE,
22092209
"Button",BS_AUTOCHECKBOX | WS_TABSTOP,14,186,116,10
22102210
PUSHBUTTON "Generate File Names",IDC_GENERATE_FILE_NAMES,12,200,120,14
2211-
GROUPBOX "Script Options",IDC_SCRIPT_OPTIONS,143,7,257,237
2211+
GROUPBOX "Script Options",IDC_SCRIPT_OPTIONS,143,7,257,271
22122212
GROUPBOX "Script Entry Format",IDC_ENTRY,149,17,246,101
22132213
EDITTEXT IDC_ENTRY_FORMAT,154,28,109,83,ES_MULTILINE | ES_AUTOHSCROLL | ES_WANTRETURN
22142214
LTEXT "Placeholder - this text is set at runtime",IDC_ENTRY_FORMAT_DESC,270,28,120,85
@@ -2219,14 +2219,15 @@ BEGIN
22192219
CONTROL "Just Briefings",IDC_EXPORT_BRIEFINGS,"Button",BS_AUTORADIOBUTTON,280,151,99,9
22202220
CONTROL "Just Debriefings",IDC_EXPORT_DEBRIEFINGS,"Button",BS_AUTORADIOBUTTON,280,161,99,9
22212221
CONTROL "Just Messages",IDC_EXPORT_MESSAGES,"Button",BS_AUTORADIOBUTTON,280,171,99,9
2222-
PUSHBUTTON "Generate Script",IDC_GENERATE_SCRIPT,275,208,120,30
2222+
PUSHBUTTON "Generate Script",IDC_GENERATE_SCRIPT,275,242,120,30
22232223
CONTROL "Group send-message-list messages before others",IDC_GROUP_MESSAGES,
22242224
"Button",BS_AUTOCHECKBOX | BS_TOP | BS_MULTILINE | WS_TABSTOP,293,182,100,19
2225-
GROUPBOX "Sync Personas",IDC_SYNC_PERSONAS,149,121,119,118
2225+
GROUPBOX "Sync Personas",IDC_SYNC_PERSONAS,149,121,119,152
22262226
PUSHBUTTON "Copy message personas to ships",IDC_MESSAGE_PERSONAS_TO_SHIPS,154,151,109,14
22272227
PUSHBUTTON "Copy ship personas to messages",IDC_SHIP_PERSONAS_TO_MESSAGES,154,168,109,14
22282228
PUSHBUTTON "Set head ANIs using personas in messages.tbl",IDC_SET_HEAD_ANIS_USING_MESSAGES_TBL,154,211,109,23,BS_MULTILINE
22292229
PUSHBUTTON "Clear personas from ships that don't send messages",IDC_CLEAR_PERSONAS_FROM_NON_SENDERS,154,185,109,23,BS_MULTILINE
2230+
PUSHBUTTON "Check if messages sent by \x22<any wingman>\x22 have at least one ship with that persona",IDC_CHECK_ANY_WINGMAN_PERSONAS,154,237,109,31,BS_MULTILINE
22302231
LTEXT "NOTE: Only wingman personas are modified here.",IDC_LBL_NOTE,155,132,107,16
22312232
END
22322233

fred2/resource.h

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -333,6 +333,7 @@
333333
#define IDC_SPIN6 1066
334334
#define IDC_SET_HEAD_ANIS_USING_MESSAGES_TBL 1066
335335
#define IDC_CLEAR_PERSONAS_FROM_NON_SENDERS 1067
336+
#define IDC_CHECK_ANY_WINGMAN_PERSONAS 1068
336337
#define ID_SHOW_FIGHTERS 1071
337338
#define IDC_PRIORITY7 1071
338339
#define ID_SHOW_CAPITALSHIPS 1072

fred2/voiceactingmanager.cpp

Lines changed: 80 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -118,6 +118,7 @@ BEGIN_MESSAGE_MAP(VoiceActingManager, CDialog)
118118
ON_BN_CLICKED(IDC_SHIP_PERSONAS_TO_MESSAGES, OnCopyShipPersonasToMessages)
119119
ON_BN_CLICKED(IDC_SET_HEAD_ANIS_USING_MESSAGES_TBL, OnSetHeadANIsUsingMessagesTbl)
120120
ON_BN_CLICKED(IDC_CLEAR_PERSONAS_FROM_NON_SENDERS, OnClearPersonasFromNonSenders)
121+
ON_BN_CLICKED(IDC_CHECK_ANY_WINGMAN_PERSONAS, OnCheckAnyWingmanPersonas)
121122
//}}AFX_MSG_MAP
122123
END_MESSAGE_MAP()
123124

@@ -1142,3 +1143,82 @@ void VoiceActingManager::OnSetHeadANIsUsingMessagesTbl()
11421143

11431144
MessageBox("Message head ANIs have been assigned from builtin messages.", "Voice Acting Manager");
11441145
}
1146+
1147+
void VoiceActingManager::OnCheckAnyWingmanPersonas()
1148+
{
1149+
char sender_buf[NAME_LENGTH];
1150+
SCP_string output_msg;
1151+
bool any_any_wingman = false;
1152+
int issue_count = 0;
1153+
1154+
// go through all messages in the mission
1155+
for (int i = 0; i < Num_messages - Num_builtin_messages; i++)
1156+
{
1157+
auto message = &Messages[i + Num_builtin_messages];
1158+
1159+
// find whoever sent this message
1160+
get_valid_sender(sender_buf, NAME_LENGTH, message);
1161+
1162+
// only check <any wingman>
1163+
if (stricmp(sender_buf, "<any wingman>") != 0)
1164+
continue;
1165+
any_any_wingman = true;
1166+
1167+
// check the message itself
1168+
if (message->persona_index < 0)
1169+
{
1170+
issue_count++;
1171+
output_msg += "\n\"";
1172+
output_msg += message->name;
1173+
output_msg += "\" - does not have a persona";
1174+
continue;
1175+
}
1176+
if (!(Personas[message->persona_index].flags & PERSONA_FLAG_WINGMAN))
1177+
{
1178+
issue_count++;
1179+
output_msg += "\n\"";
1180+
output_msg += message->name;
1181+
output_msg += "\" - does not have a wingman persona";
1182+
continue;
1183+
}
1184+
1185+
bool found_potential_sender = false;
1186+
1187+
// go through all ships in the mission
1188+
for (auto objp : list_range(&obj_used_list))
1189+
{
1190+
if ((objp->type == OBJ_START) || (objp->type == OBJ_SHIP))
1191+
{
1192+
if (Ships[objp->instance].persona_index == message->persona_index)
1193+
{
1194+
found_potential_sender = true;
1195+
break;
1196+
}
1197+
}
1198+
}
1199+
1200+
if (!found_potential_sender)
1201+
{
1202+
issue_count++;
1203+
output_msg += "\n\"";
1204+
output_msg += message->name;
1205+
output_msg += "\" - no ship with persona \"";
1206+
output_msg += Personas[message->persona_index].name;
1207+
output_msg += "\" was found";
1208+
}
1209+
}
1210+
1211+
if (!output_msg.empty())
1212+
{
1213+
if (issue_count == 1)
1214+
output_msg = "The following issue was found for messages sent by <any wingman>:\n" + output_msg;
1215+
else
1216+
output_msg = "The following issues were found for messages sent by <any wingman>:\n" + output_msg;
1217+
1218+
MessageBox(output_msg.c_str(), "Voice Acting Manager");
1219+
}
1220+
else if (!any_any_wingman)
1221+
MessageBox("All messages have been checked. There are no messages sent by <any wingman>.", "Voice Acting Manager");
1222+
else
1223+
MessageBox("All messages have been checked. All messages sent by <any wingman> have at least one candidate sender.", "Voice Acting Manager");
1224+
}

fred2/voiceactingmanager.h

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -96,6 +96,7 @@ class VoiceActingManager : public CDialog
9696
afx_msg void OnCopyShipPersonasToMessages();
9797
afx_msg void OnSetHeadANIsUsingMessagesTbl();
9898
afx_msg void OnClearPersonasFromNonSenders();
99+
afx_msg void OnCheckAnyWingmanPersonas();
99100
//}}AFX_MSG
100101
DECLARE_MESSAGE_MAP()
101102
};

0 commit comments

Comments
 (0)