Author: sveinung Date: Wed Mar 23 12:30:02 2016 New Revision: 32266 URL: http://svn.gna.org/viewcvs/freeciv?rev=32266&view=rev Log: Optimize action enabled / probability checking.
Don't bother to continue checking if a unit can perform an action its unit type never can perform. See patch #7070 Modified: branches/S2_6/common/actions.c Modified: branches/S2_6/common/actions.c URL: http://svn.gna.org/viewcvs/freeciv/branches/S2_6/common/actions.c?rev=32266&r1=32265&r2=32266&view=diff ============================================================================== --- branches/S2_6/common/actions.c (original) +++ branches/S2_6/common/actions.c Wed Mar 23 12:30:02 2016 @@ -760,6 +760,11 @@ action_get_target_kind(wanted_action)), action_target_kind_name(ATK_CITY)); + if (!unit_can_do_action(actor_unit, wanted_action)) { + /* No point in continuing. */ + return FALSE; + } + return is_action_enabled(wanted_action, unit_owner(actor_unit), tile_city(actor_tile), NULL, actor_tile, @@ -800,6 +805,11 @@ action_target_kind_name( action_get_target_kind(wanted_action)), action_target_kind_name(ATK_UNIT)); + + if (!unit_can_do_action(actor_unit, wanted_action)) { + /* No point in continuing. */ + return FALSE; + } return is_action_enabled(wanted_action, unit_owner(actor_unit), tile_city(actor_tile), @@ -1223,6 +1233,11 @@ action_get_target_kind(action_id)), action_target_kind_name(ATK_CITY)); + if (!unit_can_do_action(actor_unit, action_id)) { + /* No point in continuing. */ + return ACTPROB_IMPOSSIBLE; + } + return action_prob(action_id, unit_owner(actor_unit), tile_city(actor_tile), NULL, actor_tile, actor_unit, @@ -1259,6 +1274,11 @@ action_target_kind_name( action_get_target_kind(action_id)), action_target_kind_name(ATK_UNIT)); + + if (!unit_can_do_action(actor_unit, action_id)) { + /* No point in continuing. */ + return ACTPROB_IMPOSSIBLE; + } return action_prob(action_id, unit_owner(actor_unit), tile_city(actor_tile), _______________________________________________ Freeciv-commits mailing list Freeciv-commits@gna.org https://mail.gna.org/listinfo/freeciv-commits