@@ -14133,47 +14133,64 @@ void player_t::reset_resource_callbacks()
1413314133/**
1413414134 * Checks if a resource callback condition has been met and if yes activate it.
1413514135 */
14136- void player_t::check_resource_change_for_callback(resource_e resource, double previous_amount, double previous_pct_points)
14137- {
14138- for (auto& callback : resource_callbacks)
14139- {
14140- if (callback.is_consumed)
14141- continue;
14142- if (callback.resource != resource)
14143- continue;
14144-
14145- // Evaluate if callback condition is met.
14146- bool callback_condition_valid = false;
14147- if (callback.is_pct)
14148- {
14149- double current_pct_points = resources.current[ resource ] / resources.max[ resource ] * 100.0;
14150- if ((callback.value < previous_pct_points && callback.value >= current_pct_points) ||
14151- (callback.value >= previous_pct_points && callback.value < current_pct_points))
14152- {
14153- callback_condition_valid = true;
14154- }
14155- }
14156- else
14157- {
14158- double current_amount = resources.current[ resource ];
14159- if ((callback.value < previous_amount && callback.value >= current_amount) ||
14160- (callback.value >= previous_amount && callback.value < current_amount))
14161- {
14162- callback_condition_valid = true;
14163- }
14164- }
14165- if (!callback_condition_valid)
14166- {
14167- continue;
14168- }
14169-
14170- sim->print_debug("{} resource callback triggered.", name());
14171- // We have a callback event, trigger stuff.
14172- callback.callback();
14173- if (callback.fire_once)
14174- {
14175- callback.is_consumed = true;
14176- }
14136+ void player_t::check_resource_change_for_callback( resource_e resource, double previous_amount,
14137+ double previous_pct_points )
14138+ {
14139+ for ( auto& callback : resource_callbacks )
14140+ {
14141+ if ( callback.is_consumed )
14142+ continue;
14143+
14144+ if ( callback.resource != resource )
14145+ continue;
14146+
14147+ // Evaluate if callback condition is met.
14148+ bool callback_condition_valid = false;
14149+ bool increasing;
14150+
14151+ if ( callback.is_pct )
14152+ {
14153+ double current_pct_points = resources.current[ resource ] / resources.max[ resource ] * 100.0;
14154+ if ( callback.value < previous_pct_points && callback.value >= current_pct_points )
14155+ {
14156+ callback_condition_valid = true;
14157+ increasing = false;
14158+ }
14159+ else if ( callback.value >= previous_pct_points && callback.value < current_pct_points )
14160+ {
14161+ callback_condition_valid = true;
14162+ increasing = true;
14163+ }
14164+ }
14165+ else
14166+ {
14167+ double current_amount = resources.current[ resource ];
14168+ if ( callback.value < previous_amount && callback.value >= current_amount )
14169+ {
14170+ callback_condition_valid = true;
14171+ increasing = false;
14172+ }
14173+ else if ( callback.value >= previous_amount && callback.value < current_amount )
14174+ {
14175+ callback_condition_valid = true;
14176+ increasing = true;
14177+ }
14178+ }
14179+
14180+ if ( !callback_condition_valid )
14181+ {
14182+ continue;
14183+ }
14184+
14185+ sim->print_debug( "{} resource callback triggered.", name() );
14186+
14187+ // We have a callback event, trigger stuff.
14188+ callback.callback( increasing );
14189+
14190+ if ( callback.fire_once )
14191+ {
14192+ callback.is_consumed = true;
14193+ }
1417714194 }
1417814195
1417914196 check_resource_callback_deactivation();
0 commit comments