From 342e7ee2499133af664213cfb017e7b87026f27d Mon Sep 17 00:00:00 2001 From: Enno Rehling Date: Sun, 27 Feb 2011 12:14:33 -0800 Subject: [PATCH] remove TROLLSAVE code remove more cvector usage --- src/kernel/battle.c | 45 +++++++++++++-------------------------------- src/kernel/battle.h | 4 ++-- src/kernel/config.h | 1 - 3 files changed, 15 insertions(+), 35 deletions(-) diff --git a/src/kernel/battle.c b/src/kernel/battle.c index cbcccca5f..04b6fb1fb 100644 --- a/src/kernel/battle.c +++ b/src/kernel/battle.c @@ -2301,9 +2301,9 @@ add_tactics(tactics * ta, fighter * fig, int value) if (value == 0 || value < ta->value) return; if (value > ta->value) - cv_kill(&ta->fighters); - cv_pushback(&ta->fighters, fig); - cv_pushback(&fig->side->battle->leaders, fig); + ql_free(ta->fighters); + ql_push(&ta->fighters, fig); + ql_push(&fig->side->battle->leaders, fig); ta->value = value; } @@ -2630,10 +2630,6 @@ aftermath(battle * b) bfaction * bf; boolean ships_damaged = (boolean)(b->turn+(b->has_tactics_turn?1:0)>2); /* only used for ship damage! */ -#ifdef TROLLSAVE - int *trollsave = calloc(2 * cv_size(&b->factions), sizeof(int)); -#endif - for (s=b->sides;s!=b->sides+b->nsides;++s) { fighter * df; for (df = s->fighters; df; df=df->next) { @@ -2641,21 +2637,6 @@ aftermath(battle * b) int dead = dead_fighters(df); int pr_mercy = 0; -#ifdef TROLLSAVE - /* Trolle können regenerieren */ - if (df->alive > 0 && dead>0 && du->race == new_race[RC_TROLL]) { - for (i = 0; i != dead; ++i) { - if (chance(TROLL_REGENERATION)) { - ++df->alive; - ++s->alive; - ++s->battle->alive; - ++trollsave[s->index]; - /* do not change dead here, or loop will not terminate! recalculate later */ - } - } - dead = dead_fighters(df); - } -#endif /* Regeneration durch PR_MERCY */ if (dead>0 && pr_mercy) { for (i = 0; i != dead; ++i) { @@ -2918,9 +2899,6 @@ aftermath(battle * b) if (*sp==sh) sp=&sh->next; } } -#ifdef TROLLSAVE - free(trollsave); -#endif reorder_fleeing(r); @@ -3146,7 +3124,7 @@ print_stats(battle * b) b->max_tactics = 0; for (s=b->sides;s!=b->sides+b->nsides;++s) { - if (cv_size(&s->leader.fighters)) { + if (!ql_empty(s->leader.fighters)) { b->max_tactics = MAX(b->max_tactics, s->leader.value); } } @@ -3154,8 +3132,11 @@ print_stats(battle * b) if (b->max_tactics > 0) { for (s=b->sides;s!=b->sides+b->nsides;++s) { if (s->leader.value == b->max_tactics) { - fighter *tf; - cv_foreach(tf, s->leader.fighters) { + quicklist *ql; + int qi; + + for (qi=0,ql=s->leader.fighters;ql;ql_advance(&ql, &qi, 1)) { + fighter *tf = (fighter *)ql_get(ql, qi); unit *u = tf->unit; message * m = NULL; if (!is_attacker(tf)) { @@ -3165,7 +3146,7 @@ print_stats(battle * b) } message_all(b, m); msg_release(m); - } cv_next(tf); + } } } } @@ -3603,7 +3584,7 @@ make_battle(region * r) static void free_side(side * si) { - cv_kill(&si->leader.fighters); + ql_free(si->leader.fighters); } static void @@ -3651,7 +3632,7 @@ free_battle(battle * b) } free_side(s); } - cv_kill(&b->leaders); + ql_free(b->leaders); cv_foreach(meffect, b->meffects) { free(meffect); } @@ -4329,7 +4310,7 @@ do_battle(region * r) for (sh=r->ships; sh; sh=sh->next) freset(sh, SF_DAMAGED); /* Gibt es eine Taktikrunde ? */ - if (cv_size(&b->leaders)) { + if (!ql_empty(b->leaders)) { b->turn = 0; b->has_tactics_turn = true; } else { diff --git a/src/kernel/battle.h b/src/kernel/battle.h index 602121346..dde95838b 100644 --- a/src/kernel/battle.h +++ b/src/kernel/battle.h @@ -58,7 +58,7 @@ extern "C" { } bfaction; typedef struct tactics { - cvector fighters; + struct quicklist * fighters; int value; } tactics; @@ -93,7 +93,7 @@ extern "C" { } side; typedef struct battle { - cvector leaders; + struct quicklist * leaders; struct region *region; struct plane *plane; bfaction * factions; diff --git a/src/kernel/config.h b/src/kernel/config.h index 22544a78b..513d2d859 100644 --- a/src/kernel/config.h +++ b/src/kernel/config.h @@ -35,7 +35,6 @@ struct _dictionary_; #define SHIPDAMAGE /* Schiffsbeschädigungen */ #define INSECT_POTION /* Spezialtrank für Insekten */ #define ORCIFICATION /* giving snotlings to the peasants gets counted */ -#undef TROLLSAVE /* saving throw for dead trolls */ #define ALLIED(f1, f2) (f1==f2 || (f1->alliance && f1->alliance==f2->alliance))