Bug #1549 » 3_4-aak_player_city1.patch
common/actions.c | ||
---|---|---|
Create a new action.
|
||
**************************************************************************/
|
||
static struct action *action_new(action_id id,
|
||
enum action_actor_kind aak,
|
||
enum action_result result,
|
||
const int min_distance,
|
||
const int max_distance,
|
||
... | ... | |
/* Not set here */
|
||
BV_CLR_ALL(action->sub_results);
|
||
action->actor_kind = AAK_UNIT;
|
||
action->actor_kind = aak;
|
||
action->target_kind = actres_target_kind_default(result);
|
||
action->sub_target_kind = actres_sub_target_kind_default(result);
|
||
action->target_complexity = actres_target_compl_calc(result);
|
||
... | ... | |
const int max_distance,
|
||
bool actor_consuming_always)
|
||
{
|
||
struct action *act = action_new(id, result,
|
||
struct action *act = action_new(id, AAK_UNIT, result,
|
||
min_distance, max_distance,
|
||
actor_consuming_always);
|
||
... | ... | |
player_action_new(action_id id,
|
||
enum action_result result)
|
||
{
|
||
struct action *act = action_new(id, result,
|
||
struct action *act = action_new(id, AAK_PLAYER, result,
|
||
0, 0, FALSE);
|
||
return act;
|
||
... | ... | |
action_iterate(blocker_id) {
|
||
struct action *blocker = action_by_number(blocker_id);
|
||
fc_assert_action(action_get_actor_kind(blocker) == AAK_UNIT,
|
||
continue);
|
||
if (action_get_actor_kind(blocker) != AAK_UNIT) {
|
||
/* Currently, only unit's actions may block each other */
|
||
continue;
|
||
}
|
||
if (!action_would_be_blocked_by(act, blocker)) {
|
||
/* It doesn't matter if it is legal. It won't block the action. */
|
||
... | ... | |
/* No actor detected. */
|
||
return FALSE;
|
||
case AAK_CITY:
|
||
case AAK_PLAYER:
|
||
/* Currently can't detect */
|
||
return TRUE;
|
||
case AAK_COUNT:
|
||
fc_assert(action_get_actor_kind(paction) != AAK_COUNT);
|
||
break;
|
||
... | ... | |
}
|
||
} unit_type_iterate_end;
|
||
break;
|
||
case AAK_CITY:
|
||
case AAK_PLAYER:
|
||
/* No ruleset hard reqs atm */
|
||
return TRUE;
|
||
case AAK_COUNT:
|
||
fc_assert(action_get_actor_kind(paction) != AAK_COUNT);
|
||
break;
|
common/actions.h | ||
---|---|---|
#define SPECENUM_NAME action_actor_kind
|
||
#define SPECENUM_VALUE0 AAK_UNIT
|
||
#define SPECENUM_VALUE0NAME N_("a unit")
|
||
#define SPECENUM_VALUE1 AAK_CITY
|
||
#define SPECENUM_VALUE1NAME N_("a city")
|
||
#define SPECENUM_VALUE2 AAK_PLAYER
|
||
#define SPECENUM_VALUE2NAME N_("a player")
|
||
#define SPECENUM_COUNT AAK_COUNT
|
||
#include "specenum_gen.h"
|
||
common/improvement.c | ||
---|---|---|
}
|
||
} unit_type_iterate_end;
|
||
break;
|
||
case AAK_CITY:
|
||
case AAK_PLAYER:
|
||
/* No traceable limitations */
|
||
return TRUE;
|
||
case AAK_COUNT:
|
||
fc_assert(action_id_get_actor_kind(act) != AAK_COUNT);
|
||
break;
|
- « Previous
- 1
- 2
- Next »