From a08cb98fd2f18b8b4a448038a221dad3ba842f83 Mon Sep 17 00:00:00 2001 From: Enno Rehling Date: Thu, 21 Jun 2012 21:42:11 -0700 Subject: [PATCH] remove unused code paths from combat code before refactoring it --- src/kernel/battle.c | 201 +------------------------------------------- src/kernel/battle.h | 29 ------- src/settings.h | 3 - 3 files changed, 3 insertions(+), 230 deletions(-) diff --git a/src/kernel/battle.c b/src/kernel/battle.c index ab7a52db7..6417c1b91 100644 --- a/src/kernel/battle.c +++ b/src/kernel/battle.c @@ -175,35 +175,6 @@ static int army_index(side * s) return s->index; } -#ifndef SIMPLE_ESCAPE -region *fleeregion(const unit * u) -{ - region *r = u->region; - region *neighbours[MAXDIRECTIONS]; - int c = 0; - direction_t i; - - if (u->ship && !fval(r->terrain, SEA_REGION)) - return NULL; - - if (u->ship && !(u->race->flags & RCF_SWIM) && !(u->race->flags & RCF_FLY)) { - return NULL; - } - - for (i = 0; i != MAXDIRECTIONS; ++i) { - region *r2 = rconnect(r, i); - if (r2) { - if (can_survive(u, r2) && !move_blocked(u, r, r2)) - neighbours[c++] = r2; - } - } - - if (!c) - return NULL; - return neighbours[rng_int() % c]; -} -#endif /* SIMPLE_ESCAPE */ - static char *sidename(side * s) { #define SIDENAMEBUFLEN 256 @@ -508,7 +479,6 @@ int get_unitrow(const fighter * af, const side * vs) break; return FIGHT_ROW + (row - i); } else { -#ifdef FASTROW battle *b = vs->battle; if (row != b->rowcache.row || b->alive != b->rowcache.alive || af->side != b->rowcache.as || vs != b->rowcache.vs) { @@ -526,9 +496,6 @@ int get_unitrow(const fighter * af, const side * vs) } #endif return b->rowcache.result; -#else - return get_row(af->side, row, vs); -#endif } } @@ -538,14 +505,6 @@ static void reportcasualties(battle * b, fighter * fig, int dead) region *r = NULL; if (fig->alive == fig->unit->number) return; -#ifndef SIMPLE_ESCAPE - if (fig->run.region == NULL) { - fig->run.region = fleeregion(fig->unit); - if (fig->run.region == NULL) - fig->run.region = b->region; - } - r = fig->run.region; -#endif /* SIMPLE_ESCAPE */ m = msg_message("casualties", "unit runto run alive fallen", fig->unit, r, fig->run.number, fig->alive, dead); message_all(b, m); @@ -973,12 +932,8 @@ void remove_troop(troop dt) fighter *df = dt.fighter; struct person p = df->person[dt.index]; battle *b = df->side->battle; -#ifdef FASTCOUNT b->fast.alive = -1; /* invalidate cached value */ -#endif -#ifdef FASTROW b->rowcache.alive = -1; /* invalidate cached value */ -#endif ++df->removed; ++df->side->removed; df->person[dt.index] = df->person[df->alive - df->removed]; @@ -1125,9 +1080,7 @@ terminate(troop dt, troop at, int type, const char *damage, boolean missile) int da = dice_rand(damage); assert(du->number > 0); -#ifdef SHOW_KILLS ++at.fighter->hits; -#endif switch (type) { case AT_STANDARD: @@ -1364,9 +1317,7 @@ terminate(troop dt, troop at, int type, const char *damage, boolean missile) return false; } } -#ifdef SHOW_KILLS ++at.fighter->kills; -#endif if (bdebug) { fprintf(bdebug, "Damage %d, armor %d, type %d: %d -> %d HP, tot.\n", @@ -1468,7 +1419,6 @@ int count_enemies(battle * b, const fighter * af, int minrow, int maxrow, int select) { -#ifdef FASTCOUNT int sr = statusrow(af->status); side *as = af->side; @@ -1497,12 +1447,9 @@ count_enemies(battle * b, const fighter * af, int minrow, int maxrow, b->fast.maxrow = maxrow; memset(b->fast.enemies, -1, sizeof(b->fast.enemies)); } -#endif if (maxrow >= FIRST_ROW) { int i = count_enemies_i(b, af, minrow, maxrow, select); -#ifdef FASTCOUNT b->fast.enemies[select] = i; -#endif return i; } return 0; @@ -1788,14 +1735,6 @@ void do_combatmagic(battle * b, combatmagic_t was) } } -static void combat_action(fighter * af) -{ -#ifndef SIMPLE_COMBAT - af->action_counter++; - af->side->bf->lastturn = af->side->battle->turn; -#endif -} - static int cast_combatspell(troop at, const spell * sp, int level, double force) { castorder co; @@ -1806,7 +1745,6 @@ static int cast_combatspell(troop at, const spell * sp, int level, double force) free_castorder(&co); if (level > 0) { pay_spell(at.fighter->unit, sp, level, 1); - combat_action(at.fighter); } return level; } @@ -2186,7 +2124,6 @@ static void attack(battle * b, troop ta, const att * a, int numattack) af->catmsg += dead; if (!standard_attack && af->person[ta.index].last_action < b->turn) { af->person[ta.index].last_action = b->turn; - combat_action(af); } } if (standard_attack) { @@ -2202,7 +2139,6 @@ static void attack(battle * b, troop ta, const att * a, int numattack) return; if (ta.fighter->person[ta.index].last_action < b->turn) { ta.fighter->person[ta.index].last_action = b->turn; - combat_action(ta.fighter); } reload = true; if (hits(ta, td, wp)) { @@ -2235,7 +2171,6 @@ static void attack(battle * b, troop ta, const att * a, int numattack) return; if (ta.fighter->person[ta.index].last_action < b->turn) { ta.fighter->person[ta.index].last_action = b->turn; - combat_action(ta.fighter); } if (hits(ta, td, NULL)) { terminate(td, ta, a->type, a->data.dice, false); @@ -2247,7 +2182,6 @@ static void attack(battle * b, troop ta, const att * a, int numattack) return; if (ta.fighter->person[ta.index].last_action < b->turn) { ta.fighter->person[ta.index].last_action = b->turn; - combat_action(ta.fighter); } if (hits(ta, td, NULL)) { int c = dice_rand(a->data.dice); @@ -2267,7 +2201,6 @@ static void attack(battle * b, troop ta, const att * a, int numattack) return; if (ta.fighter->person[ta.index].last_action < b->turn) { ta.fighter->person[ta.index].last_action = b->turn; - combat_action(ta.fighter); } if (hits(ta, td, NULL)) { drain_exp(td.fighter->unit, dice_rand(a->data.dice)); @@ -2279,7 +2212,6 @@ static void attack(battle * b, troop ta, const att * a, int numattack) return; if (ta.fighter->person[ta.index].last_action < b->turn) { ta.fighter->person[ta.index].last_action = b->turn; - combat_action(ta.fighter); } if (hits(ta, td, NULL)) { dazzle(b, &td); @@ -2291,7 +2223,6 @@ static void attack(battle * b, troop ta, const att * a, int numattack) return; if (ta.fighter->person[ta.index].last_action < b->turn) { ta.fighter->person[ta.index].last_action = b->turn; - combat_action(ta.fighter); } if (td.fighter->unit->ship) { /* FIXME should use damage_ship here? */ @@ -2453,7 +2384,6 @@ side *make_side(battle * b, const faction * f, const group * g, side *s1 = b->sides + b->nsides; bfaction *bf; -#ifdef SIMPLE_COMBAT if (fval(b->region->terrain, SEA_REGION)) { /* every fight in an ocean is short */ flags |= SIDE_HASGUARDS; @@ -2468,7 +2398,6 @@ side *make_side(battle * b, const faction * f, const group * g, } } } -#endif s1->battle = b; s1->group = g; @@ -2631,22 +2560,6 @@ static void loot_items(fighter * corpse) } } -#ifndef SIMPLE_ESCAPE -static void loot_fleeing(fighter * fig, unit * runner) -{ - /* TODO: Vernünftig fixen */ - runner->items = NULL; - assert(runner->items == NULL); - runner->items = fig->run.items; - fig->run.items = NULL; -} - -static void merge_fleeloot(fighter * fig, unit * u) -{ - i_merge(&u->items, &fig->run.items); -} -#endif /* SIMPLE_ESCAPE */ - static boolean seematrix(const faction * f, const side * s) { if (f == s->faction) @@ -2743,7 +2656,6 @@ static void aftermath(battle * b) if (playerrace(df->unit->race)) { s->casualties += dead; } -#ifdef SHOW_KILLS if (df->hits + df->kills) { struct message *m = msg_message("killsandhits", "unit hits kills", du, df->hits, @@ -2751,7 +2663,6 @@ static void aftermath(battle * b) message_faction(b, du->faction, m); msg_release(m); } -#endif } } @@ -2762,22 +2673,9 @@ static void aftermath(battle * b) int snumber = 0; fighter *df; boolean relevant = false; /* Kampf relevant für diese Partei? */ -#ifdef SIMPLE_COMBAT - if (fval(s, SIDE_HASGUARDS) == 0) + if (!fval(s, SIDE_HASGUARDS)) { relevant = true; -#else - if (s->bf->lastturn > 1) { - relevant = true; - } else if (s->bf->lastturn == 1 && b->has_tactics_turn) { - side *stac; - for (stac = b->sides; stac; stac = stac->next) { - if (stac->leader.value == b->max_tactics && helping(stac, s)) { - relevant = true; - break; - } - } } -#endif s->flee = 0; for (df = s->fighters; df; df = df->next) { @@ -2792,13 +2690,11 @@ static void aftermath(battle * b) } } snumber += du->number; -#ifdef SIMPLE_COMBAT if (relevant) { int flags = UFL_LONGACTION | UFL_NOTMOVING; -#ifdef SIMPLE_ESCAPE - if (du->status == ST_FLEE) + if (du->status == ST_FLEE) { flags -= UFL_NOTMOVING; -#endif /* SIMPLE_ESCAPE */ + } fset(du, flags); } if (sum_hp + df->run.hp < du->hp) { @@ -2807,17 +2703,6 @@ static void aftermath(battle * b) if (sh) fset(sh, SF_DAMAGED); } -#else - if (relevant) { - fset(du, UFL_NOTMOVING); /* unit cannot move this round */ - if (df->action_counter >= du->number) { - ship *sh = du->ship ? du->ship : leftship(du); - if (sh) - fset(sh, SF_DAMAGED); - fset(du, UFL_LONGACTION); - } - } -#endif if (df->alive == du->number) { du->hp = sum_hp; @@ -2830,18 +2715,9 @@ static void aftermath(battle * b) /* Zuerst dürfen die Feinde plündern, die mitgenommenen Items * stehen in fig->run.items. Dann werden die Fliehenden auf * die leere (tote) alte Einheit gemapt */ -#ifdef SIMPLE_ESCAPE if (!fval(df, FIG_NOLOOT)) { loot_items(df); } -#else - if (fval(df, FIG_NOLOOT)) { - merge_fleeloot(df, du); - } else { - loot_items(df); - loot_fleeing(df, du); - } -#endif /* SIMPLE_ESCAPE */ scale_number(du, df->run.number); du->hp = df->run.hp; setguard(du, GUARD_NONE); @@ -2850,13 +2726,6 @@ static void aftermath(battle * b) if (!fval(r->terrain, SEA_REGION)) { leave(du, true); /* even region owners have to flee */ } -#ifndef SIMPLE_ESCAPE - if (df->run.region) { - run_to(du, df->run.region); - df->run.region = du->region; - } - fset(du, UFL_LONGACTION | UFL_NOTMOVING); -#endif /* SIMPLE_ESCAPE */ fset(du, UFL_FLEEING); } else { /* nur teilweise geflohene Einheiten mergen sich wieder */ @@ -2865,9 +2734,6 @@ static void aftermath(battle * b) s->size[statusrow(df->status)] += df->run.number; s->alive += df->run.number; sum_hp += df->run.hp; -#ifndef SIMPLE_ESCAPE - merge_fleeloot(df, du); -#endif /* SIMPLE_ESCAPE */ df->run.number = 0; df->run.hp = 0; /* df->run.region = NULL; */ @@ -2882,9 +2748,6 @@ static void aftermath(battle * b) /* alle sind tot, niemand geflohen. Einheit auflösen */ df->run.number = 0; df->run.hp = 0; -#ifndef SIMPLE_ESCAPE - df->run.region = NULL; -#endif /* SIMPLE_ESCAPE */ /* Report the casualties */ reportcasualties(b, df, dead); @@ -3319,13 +3182,8 @@ fighter *make_fighter(battle * b, unit * u, side * s1, boolean attack) if (s1 == NULL) { for (s2 = b->sides; s2 != b->sides + b->nsides; ++s2) { if (s2->faction == u->faction && s2->group == g) { -#ifdef SIMPLE_COMBAT int s1flags = flags | SIDE_HASGUARDS; int s2flags = s2->flags | SIDE_HASGUARDS; -#else - int s1flags = flags; - int s2flags = s2->flags; -#endif if (rule_anon_battle && s2->stealthfaction != stealthfaction) { continue; } @@ -4010,53 +3868,6 @@ static void flee(const troop dt) fighter *fig = dt.fighter; unit *u = fig->unit; -#ifndef SIMPLE_ESCAPE - int carry = personcapacity(u) - u->race->weight; - int money; - - item **ip = &u->items; - - while (*ip) { - item *itm = *ip; - const item_type *itype = itm->type; - int keep = 0; - - if (fval(itype, ITF_ANIMAL)) { - /* Regeländerung: Man muß das Tier nicht reiten können, - * um es vom Schlachtfeld mitzunehmen, ist ja nur - * eine Region weit. * */ - keep = MIN(1, itm->number); - /* da ist das weight des tiers mit drin */ - carry += itype->capacity - itype->weight; - } else if (itm->type->weight <= 0) { - /* if it doesn'tactics weigh anything, it won'tactics slow us down */ - keep = itm->number; - } - /* jeder troop nimmt seinen eigenen Teil der Sachen mit */ - if (keep > 0) { - if (itm->number == keep) { - i_add(&fig->run.items, i_remove(ip, itm)); - } else { - item *run_itm = i_new(itype, keep); - i_add(&fig->run.items, run_itm); - i_change(ip, itype, -keep); - } - } - if (*ip == itm) - ip = &itm->next; - } - - /* we will take money with us */ - money = get_money(u); - /* nur ganzgeflohene/resttote Einheiten verlassen die Region */ - if (money > carry) - money = carry; - if (money > 0) { - i_change(&u->items, i_silver, -money); - i_change(&fig->run.items, i_silver, +money); - } -#endif /* SIMPLE_ESCAPE */ - fig->run.hp += fig->person[dt.index].hp; ++fig->run.number; @@ -4378,12 +4189,6 @@ static void battle_flee(battle * b) } dt.fighter = fig; -#ifndef SIMPLE_ESCAPE - if (!fig->run.region) - fig->run.region = fleeregion(u); - if (!fig->run.region) - continue; -#endif /* SIMPLE_ESCAPE */ dt.index = fig->alive - fig->removed; while (s->size[SUM_ROW] && dt.index != 0) { double ispaniced = 0.0; diff --git a/src/kernel/battle.h b/src/kernel/battle.h index b7fbf9f2f..bc8acc66f 100644 --- a/src/kernel/battle.h +++ b/src/kernel/battle.h @@ -22,9 +22,6 @@ OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. extern "C" { #endif -#define SHOW_KILLS -#undef SMALL_BATTLE_MESSAGES - /** more defines **/ #define FS_ENEMY 1 #define FS_HELP 2 @@ -49,9 +46,6 @@ extern "C" { struct bfaction *next; struct side *sides; struct faction *faction; -#ifndef SIMPLE_COMBAT - int lastturn; /* last time this struct faction was involved in combat */ -#endif boolean attacker; } bfaction; @@ -61,9 +55,7 @@ extern "C" { } tactics; #define SIDE_STEALTH 1<<0 -#ifdef SIMPLE_COMBAT #define SIDE_HASGUARDS 1<<1 -#endif typedef struct side { struct side *nextF; /* next army of same faction */ struct battle *battle; @@ -106,11 +98,6 @@ extern "C" { int keeploot; boolean reelarrow; int alive; -#ifdef SMALL_BATTLE_MESSAGES - boolean small; -#endif -#define FASTROW -#ifdef FASTROW struct { const struct side *as; const struct side *vs; @@ -118,9 +105,6 @@ extern "C" { int row; int result; } rowcache; -#endif -#define FASTCOUNT -#ifdef FASTCOUNT struct { struct side *side; int status; @@ -128,7 +112,6 @@ extern "C" { int minrow, maxrow; int enemies[8]; } fast; -#endif } battle; typedef struct weapon { @@ -198,18 +181,9 @@ extern "C" { struct { int number; /* number of people who fled */ int hp; /* accumulated hp of fleeing people */ -#ifndef SIMPLE_ESCAPE - struct region *region; /* destination of fleeing people */ - struct item *items; /* items they take */ -#endif /* SIMPLE_ESCAPE */ } run; -#ifndef SIMPLE_COMBAT - int action_counter; /* number of active actions the struct unit did in the fight */ -#endif /* SIMPLE_COMBAT */ -#ifdef SHOW_KILLS int kills; int hits; -#endif } fighter; /* schilde */ @@ -257,9 +231,6 @@ extern "C" { extern int get_unitrow(const struct fighter *af, const struct side *vs); extern boolean helping(const struct side *as, const struct side *ds); extern void rmfighter(fighter * df, int i); -#ifndef SIMPLE_ESCAPE - extern struct region *fleeregion(const struct unit *u); -#endif extern struct fighter *select_corpse(struct battle *b, struct fighter *af); extern int statusrow(int status); extern void drain_exp(struct unit *u, int d); diff --git a/src/settings.h b/src/settings.h index 087f37cae..552e4c1c9 100644 --- a/src/settings.h +++ b/src/settings.h @@ -48,9 +48,6 @@ #define CHANGED_CROSSBOWS 0 /* use the WTF_ARMORPIERCING flag */ #undef GLOBAL_WARMING /* number of turns before global warming sets in */ -#define SIMPLE_COMBAT -#define SIMPLE_ESCAPE - #if defined(BINDINGS_LUABIND) # undef BINDINGS_TOLUA #elif defined(BINDINGS_TOLUA)