- Grundgerüst fast fertig, fehlen nur noch die tatsächlichen Bedingungen.

This commit is contained in:
Christian Schlittchen 2002-03-31 10:22:20 +00:00
parent c923b268c1
commit 01e7b2b676
2 changed files with 50 additions and 9 deletions

View File

@ -29,17 +29,42 @@
#if VICTORY_CONDITION == VICTORY_MURDER #if VICTORY_CONDITION == VICTORY_MURDER
static void static void
print_winners_murder(void) print_winners_murder(const int winners)
{ {
/* Eine oder mehrere Parteien haben endgültig gewonnen. Ausgeben. */ faction *f;
char winner_buf[DISPLAYSIZE+1];
message *msg;
boolean first;
winner_buf[0] = 0;
first = true;
for(f=factions; f; f=f->next) {
if(f->no != 0 && f->victory_delay == VICTORY_DELAY) {
if(first == true) {
/* potential buffer overflow here */
strcat(winner_buf, factionid(f));
first = false;
} else {
/* potential buffer overflow here */
strcat(winner_buf, ", ");
strcat(winner_buf, factionid(f));
}
}
}
msg = msg_message("victory_murder_complete",
"winners n", strdup(winner_buf), winners);
for(f=factions; f; f=f->next) {
add_message(&f->messages, msg);
}
msg_release(msg);
} }
static boolean static boolean
is_winner_murder(const faction *f) is_winner_murder(const faction *f)
{ {
/* Prüfen, ob Conditions erfüllt sind. */
/* Wenn ja, counter erhöhen, sonst counter auf 0 */
/* Wenn counter == VICTORY_DELAY: Partei hat gewonnen */
} }
static void static void
@ -62,22 +87,29 @@ check_victory_murder(void)
if(winners > 0) { if(winners > 0) {
print_winners_murder(); print_winners_murder();
return true;
} else if(condfulfilled > 0) { } else if(condfulfilled > 0) {
for(f=factions; f; f=f->next) { for(f=factions; f; f=f->next) {
if(f->victory_delay > 0) { if(f->victory_delay > 0) {
/* Meldung an alle, dass Partei x die Siegbedingung in der n-ten Woche faction *f2;
* erfüllt */ message *msg = msg_message("victory_murder_cfulfilled",
"faction remain", f, VICTORY_DELAY - f->victory_delay);
for(f2=factions; f2; f2=f2->next) {
add_message(&f2->messages, msg);
}
msg_release(msg);
} }
} }
} }
return false;
} }
#endif #endif
void boolean
check_victory(void) check_victory(void)
{ {
#if VICTORY_CONDITION == VICTORY_MURDER #if VICTORY_CONDITION == VICTORY_MURDER
check_victory_murder(); return check_victory_murder();
#endif #endif
} }

View File

@ -7347,5 +7347,14 @@
<text locale="de">"Achtung: $faction($faction) hat die Siegbedingungen erfüllt und wird in $if($eq($remain,1),"einer Woche","$int($remain) Wochen") zum Sieger erklärt werden."</text> <text locale="de">"Achtung: $faction($faction) hat die Siegbedingungen erfüllt und wird in $if($eq($remain,1),"einer Woche","$int($remain) Wochen") zum Sieger erklärt werden."</text>
<text locale="en">"Attention: $faction($faction) has fulfilled the victory condition and will be declared winner in $if($eq($remain,1),"one week","$int($remain) weeks")."</text> <text locale="en">"Attention: $faction($faction) has fulfilled the victory condition and will be declared winner in $if($eq($remain,1),"one week","$int($remain) weeks")."</text>
</message> </message>
<message name="victory_murder_complete" section="events">
<type>
<arg name="winners" type="string"></arg>
<arg name="n" type="int"></arg>
</type>
<text locale="de">"SIEG! $if($eq($n,1), "Die Partei $winners hat", "Die Parteien $winners haben") die Siegbedingung für die erforderliche Zeit erfüllt. Das Spiel ist damit beendet."</text>
<text locale="en">"VICTORY! $if($eq($n,1), "The faction $winners has", "The factions $winners have") fulfilled the victory condition for the necessary time. The game is over."</text>
</message>
</messages> </messages>