Skip to content

Commit 1b56336

Browse files
authored
Merge pull request #4401 from Goober5000/add_isActive_checks
add isActive checks for new-style script hooks
2 parents 3ee1321 + 7013981 commit 1b56336

File tree

15 files changed

+128
-63
lines changed

15 files changed

+128
-63
lines changed

code/debris/debris.cpp

Lines changed: 5 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -668,9 +668,11 @@ object *debris_create(object *source_obj, int model_num, int submodel_num, vec3d
668668
// ensure vel is valid
669669
Assert( !vm_is_vec_nan(&obj->phys_info.vel) );
670670

671-
OnDebrisCreatedHook->run(scripting::hook_param_list(
672-
scripting::hook_param("Debris", 'o', obj),
673-
scripting::hook_param("Source", 'o', source_obj)));
671+
if (OnDebrisCreatedHook->isActive()) {
672+
OnDebrisCreatedHook->run(scripting::hook_param_list(
673+
scripting::hook_param("Debris", 'o', obj),
674+
scripting::hook_param("Source", 'o', source_obj)));
675+
}
674676

675677
if (db->is_hull) {
676678
MONITOR_INC(NumHullDebris,1);

code/graphics/2d.cpp

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2557,7 +2557,9 @@ void gr_flip(bool execute_scripting)
25572557
TRACE_SCOPE(tracing::LuaOnFrame);
25582558

25592559
// WMC - Do conditional hooks. Yippee!
2560-
OnFrameHook->run();
2560+
if (OnFrameHook->isActive()) {
2561+
OnFrameHook->run();
2562+
}
25612563
// WMC - Do scripting reset stuff
25622564
Script_system.EndFrame();
25632565
}

code/hud/hudmessage.cpp

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -603,8 +603,10 @@ void hud_sourced_print(int source, const char *msg)
603603
HUD_msg_buffer.push_back(new_msg);
604604

605605
// Invoke the scripting hook
606-
OnHudMessageReceivedHook->run(scripting::hook_param_list(scripting::hook_param("Text", 's', msg),
607-
scripting::hook_param("SourceType", 'i', source)));
606+
if (OnHudMessageReceivedHook->isActive()) {
607+
OnHudMessageReceivedHook->run(scripting::hook_param_list(scripting::hook_param("Text", 's', msg),
608+
scripting::hook_param("SourceType", 'i', source)));
609+
}
608610
}
609611

610612
int hud_query_scrollback_size()

code/menuui/readyroom.cpp

Lines changed: 6 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1567,7 +1567,9 @@ void campaign_reset(const SCP_string& campaign_file)
15671567
Pilot.save_savefile();
15681568
}
15691569

1570-
OnCampaignBeginHook->run(scripting::hook_param_list(scripting::hook_param("Campaign", 's', Campaign.filename)));
1570+
if (OnCampaignBeginHook->isActive()) {
1571+
OnCampaignBeginHook->run(scripting::hook_param_list(scripting::hook_param("Campaign", 's', Campaign.filename)));
1572+
}
15711573
}
15721574

15731575
mission_campaign_next_mission();
@@ -1686,7 +1688,9 @@ void campaign_select_campaign(const SCP_string& campaign_file)
16861688
Pilot.save_savefile();
16871689
}
16881690

1689-
OnCampaignBeginHook->run(scripting::hook_param_list(scripting::hook_param("Campaign", 's', Campaign.filename)));
1691+
if (OnCampaignBeginHook->isActive()) {
1692+
OnCampaignBeginHook->run(scripting::hook_param_list(scripting::hook_param("Campaign", 's', Campaign.filename)));
1693+
}
16901694
}
16911695

16921696
// that's all we need to do for now; the campaign loading status will be checked again when we try to load the

code/mission/missionmessage.cpp

Lines changed: 9 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -1633,13 +1633,15 @@ void message_queue_process()
16331633
if (Message_shipnum >= 0) {
16341634
sender = &Objects[Ships[Message_shipnum].objnum];
16351635
}
1636-
OnMessageReceivedHook->run(scripting::hook_param_list(
1637-
scripting::hook_param("Name", 's', m->name),
1638-
scripting::hook_param("MessageHandle", 'o', scripting::api::l_Message.Set(q->message_num)),
1639-
scripting::hook_param("Message", 's', buf),
1640-
scripting::hook_param("SenderString", 's', who_from),
1641-
scripting::hook_param("Builtin", 'b', builtinMessage),
1642-
scripting::hook_param("Sender", 'o', sender)));
1636+
if (OnMessageReceivedHook->isActive()) {
1637+
OnMessageReceivedHook->run(scripting::hook_param_list(
1638+
scripting::hook_param("Name", 's', m->name),
1639+
scripting::hook_param("MessageHandle", 'o', scripting::api::l_Message.Set(q->message_num)),
1640+
scripting::hook_param("Message", 's', buf),
1641+
scripting::hook_param("SenderString", 's', who_from),
1642+
scripting::hook_param("Builtin", 'b', builtinMessage),
1643+
scripting::hook_param("Sender", 'o', sender)));
1644+
}
16431645

16441646
Num_messages_playing++; // this has to be done at the end because some sound functions use it to index into the array
16451647
all_done:

code/mission/missionparse.cpp

Lines changed: 7 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -7545,10 +7545,13 @@ int mission_do_departure(object *objp, bool goal_is_to_warp)
75457545

75467546
mprintf(("Entered mission_do_departure() for %s\n", shipp->ship_name));
75477547

7548-
// add scripting hook for 'On Departure Started' --wookieejedi
7549-
// hook is placed at the beginning of this function to allow the scripter to
7550-
// actually have access to the ship's departure decisions before they are all executed
7551-
OnDepartureStartedHook->run(scripting::hook_param_list(scripting::hook_param("Self", 'o', objp), scripting::hook_param("Ship", 'o', objp)));
7548+
if (OnDepartureStartedHook->isActive())
7549+
{
7550+
// add scripting hook for 'On Departure Started' --wookieejedi
7551+
// hook is placed at the beginning of this function to allow the scripter to
7552+
// actually have access to the ship's departure decisions before they are all executed
7553+
OnDepartureStartedHook->run(scripting::hook_param_list(scripting::hook_param("Self", 'o', objp), scripting::hook_param("Ship", 'o', objp)));
7554+
}
75527555

75537556
// abort rearm, because if we entered this function we're either going to depart via hyperspace, depart via bay,
75547557
// or revert to our default behavior

code/pilotfile/plr.cpp

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1124,7 +1124,9 @@ bool pilotfile::load_player(const char* callsign, player* _p, bool force_binary)
11241124
}
11251125

11261126
mprintf(("PLR => Loading complete!\n"));
1127-
OnPlayerLoadedHook->run(scripting::hook_param_list(scripting::hook_param("Player", 'o', scripting::api::l_Player.Set(scripting::api::player_h(p)))));
1127+
if (OnPlayerLoadedHook->isActive()) {
1128+
OnPlayerLoadedHook->run(scripting::hook_param_list(scripting::hook_param("Player", 'o', scripting::api::l_Player.Set(scripting::api::player_h(p)))));
1129+
}
11281130

11291131
// cleanup and return
11301132
plr_close();

code/playerman/managepilot.cpp

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -165,7 +165,9 @@ void init_new_pilot(player *p, int reset)
165165

166166
pilot_set_start_campaign(p);
167167

168-
OnCampaignBeginHook->run(scripting::hook_param_list(scripting::hook_param("Campaign", 's', p->current_campaign)));
168+
if (OnCampaignBeginHook->isActive()) {
169+
OnCampaignBeginHook->run(scripting::hook_param_list(scripting::hook_param("Campaign", 's', p->current_campaign)));
170+
}
169171
}
170172

171173
int local_num_campaigns = 0;

code/scripting/api/objs/player.cpp

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -327,7 +327,9 @@ ADE_FUNC(loadCampaign, l_Player, "string campaign", "Loads the specified campaig
327327
Pilot.save_savefile();
328328
}
329329

330-
OnCampaignBeginHook->run(scripting::hook_param_list(scripting::hook_param("Campaign", 's', Campaign.filename)));
330+
if (OnCampaignBeginHook->isActive()) {
331+
OnCampaignBeginHook->run(scripting::hook_param_list(scripting::hook_param("Campaign", 's', Campaign.filename)));
332+
}
331333
}
332334

333335
// that's all we need to do for now; the campaign loading status will be checked again when we try to load the

code/ship/ship.cpp

Lines changed: 12 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -7864,10 +7864,12 @@ void ship_destroy_instantly(object *ship_objp, bool with_debris)
78647864
Assert(ship_objp->type == OBJ_SHIP);
78657865
Assert(!(ship_objp == Player_obj));
78667866

7867-
// add scripting hook for 'On Ship Death Started' -- Goober5000
7868-
// hook is placed at the beginning of this function to allow the scripter to
7869-
// actually have access to the ship before any death routines (such as mission logging) are executed
7870-
OnShipDeathStartedHook->run(scripting::hook_param_list(scripting::hook_param("Ship", 'o', ship_objp)));
7867+
if (OnShipDeathStartedHook->isActive()) {
7868+
// add scripting hook for 'On Ship Death Started' -- Goober5000
7869+
// hook is placed at the beginning of this function to allow the scripter to
7870+
// actually have access to the ship before any death routines (such as mission logging) are executed
7871+
OnShipDeathStartedHook->run(scripting::hook_param_list(scripting::hook_param("Ship", 'o', ship_objp)));
7872+
}
78717873

78727874
// undocking and death preparation
78737875
ship_stop_fire_primary(ship_objp);
@@ -10990,10 +10992,12 @@ int ship_launch_countermeasure(object *objp, int rand_val)
1099010992
send_NEW_countermeasure_fired_packet(objp, cmeasure_count, Objects[cobjnum].net_signature);
1099110993
}
1099210994

10993-
// add scripting hook for 'On Countermeasure Fire' --wookieejedi
10994-
OnCountermeasureFireHook->run(scripting::hook_param_list(scripting::hook_param("Ship", 'o', objp),
10995-
scripting::hook_param("CountermeasuresLeft", 'i', shipp->cmeasure_count),
10996-
scripting::hook_param("Countermeasure", 'o', &Objects[cobjnum])));
10995+
if (OnCountermeasureFireHook->isActive()) {
10996+
// add scripting hook for 'On Countermeasure Fire' --wookieejedi
10997+
OnCountermeasureFireHook->run(scripting::hook_param_list(scripting::hook_param("Ship", 'o', objp),
10998+
scripting::hook_param("CountermeasuresLeft", 'i', shipp->cmeasure_count),
10999+
scripting::hook_param("Countermeasure", 'o', &Objects[cobjnum])));
11000+
}
1099711001
}
1099811002

1099911003
return (cobjnum >= 0); // return 0 if not fired, 1 otherwise

0 commit comments

Comments
 (0)