changing unsigned flags to regular ints

the storage library does not understand unsigned at the moment, and using the highest order bit causes trouble
new version of datafile
This commit is contained in:
Enno Rehling 2014-05-10 18:57:04 +02:00
parent 1e7e5877a1
commit c2329f7f2b
14 changed files with 65 additions and 31 deletions

2
cutest

@ -1 +1 @@
Subproject commit d83cec09a52835274ab8ed4849de16fb8658982a Subproject commit 788659594ef87e9f497b8039da764182adfd2943

31
process/cron/run-eressea Executable file
View File

@ -0,0 +1,31 @@
#!/bin/sh
GAME=$1
BIN=$HOME/bin
export ERESSEA=$HOME/eressea
export PATH
TURN=$(cat $ERESSEA/game-$GAME)
if [ ! -e $ERESSEA/game-$GAME/data/$TURN.dat ]; then
echo "data file $TURN is missing, cannot run turn for game $GAME"
exit 1
fi
$REPORTS=$ERESSEA/game-$GAME/reports
if [ -d $REPORTS ]; then
rm -rf $REPORTS
fi
mkdir $REPORTS
$BIN/run-turn.sh $GAME
if [ ! -s $ERESSEA/game-$GAME/orders.$TURN ]; then
echo "server did not create orders for turn $TURN in game $GAME"
exit 2
fi
LET TURN=$TURN+1
if [ ! -s $ERESSEA/game-$GAME/data/$TURN.dat ]; then
echo "server did not create data for turn $TURN in game $GAME"
exit 3
fi
if [ ! -s $REPORTS/reports.txt ]; then
echo "server did not create reports.txt for turn $TURN in game $GAME"
exit 4
fi
$BIN/compress.sh $GAME $TURN
$BIN/sendreports.sh $GAME

View File

@ -46,7 +46,7 @@ extern "C" {
struct alliance *next; struct alliance *next;
struct faction *_leader; struct faction *_leader;
struct quicklist *members; struct quicklist *members;
unsigned int flags; int flags;
int id; int id;
char *name; char *name;
struct ally *allies; struct ally *allies;

View File

@ -34,7 +34,7 @@ extern "C" {
typedef struct maintenance { typedef struct maintenance {
const struct resource_type *rtype; /* type of resource required */ const struct resource_type *rtype; /* type of resource required */
int number; /* amount of resources */ int number; /* amount of resources */
unsigned int flags; /* misc. flags */ int flags; /* misc. flags */
} maintenance; } maintenance;
/* building_type::flags */ /* building_type::flags */
@ -112,7 +112,7 @@ extern "C" {
int size; int size;
int sizeleft; /* is only used during battle. should be a temporary attribute */ int sizeleft; /* is only used during battle. should be a temporary attribute */
int besieged; /* should be an attribute */ int besieged; /* should be an attribute */
unsigned int flags; int flags;
} building; } building;
extern struct attrib_type at_building_generic_type; extern struct attrib_type at_building_generic_type;

View File

@ -41,7 +41,7 @@ OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
#include <string.h> #include <string.h>
#include <stdlib.h> #include <stdlib.h>
unsigned int nextborder = 0; int nextborder = 0;
#define BORDER_MAXHASH 8191 #define BORDER_MAXHASH 8191
connection *borders[BORDER_MAXHASH]; connection *borders[BORDER_MAXHASH];

View File

@ -25,7 +25,7 @@ OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
extern "C" { extern "C" {
#endif #endif
extern unsigned int nextborder; extern int nextborder;
typedef struct connection { typedef struct connection {
struct border_type *type; /* the type of this connection */ struct border_type *type; /* the type of this connection */
@ -33,7 +33,7 @@ extern "C" {
struct connection *nexthash; /* next connection between these regions */ struct connection *nexthash; /* next connection between these regions */
struct region *from, *to; /* borders can be directed edges */ struct region *from, *to; /* borders can be directed edges */
variant data; variant data;
unsigned int id; /* unique id */ int id; /* unique id */
} connection; } connection;
typedef struct border_type { typedef struct border_type {

View File

@ -192,7 +192,7 @@ extern "C" {
struct curse *nexthash; struct curse *nexthash;
int no; /* 'Einheitennummer' dieses Curse */ int no; /* 'Einheitennummer' dieses Curse */
const struct curse_type *type; /* Zeiger auf ein curse_type-struct */ const struct curse_type *type; /* Zeiger auf ein curse_type-struct */
unsigned int flags; /* WARNING: these are XORed with type->flags! */ int flags; /* WARNING: these are XORed with type->flags! */
int duration; /* Dauer der Verzauberung. Wird jede Runde vermindert */ int duration; /* Dauer der Verzauberung. Wird jede Runde vermindert */
float vigour; /* Stärke der Verzauberung, Widerstand gegen Antimagie */ float vigour; /* Stärke der Verzauberung, Widerstand gegen Antimagie */
struct unit *magician; /* Pointer auf den Magier, der den Spruch gewirkt hat */ struct unit *magician; /* Pointer auf den Magier, der den Spruch gewirkt hat */
@ -207,8 +207,8 @@ extern "C" {
typedef struct curse_type { typedef struct curse_type {
const char *cname; /* Name der Zauberwirkung, Identifizierung des curse */ const char *cname; /* Name der Zauberwirkung, Identifizierung des curse */
int typ; int typ;
unsigned int flags; int flags;
unsigned int mergeflags; int mergeflags;
struct message *(*curseinfo) (const void *, objtype_t, const struct curse *, struct message *(*curseinfo) (const void *, objtype_t, const struct curse *,
int); int);
void(*change_vigour) (curse *, float); void(*change_vigour) (curse *, float);

View File

@ -51,7 +51,7 @@ extern "C" {
int id; int id;
char *name; char *name;
int minx, maxx, miny, maxy; int minx, maxx, miny, maxy;
unsigned int flags; int flags;
struct attrib *attribs; struct attrib *attribs;
} plane; } plane;

View File

@ -81,7 +81,7 @@ extern "C" {
struct alliance *alliance; struct alliance *alliance;
int since_turn; /* turn the region changed owners */ int since_turn; /* turn the region changed owners */
int morale_turn; /* turn when morale has changed most recently */ int morale_turn; /* turn when morale has changed most recently */
unsigned int flags; int flags;
} region_owner; } region_owner;
typedef struct demand { typedef struct demand {
@ -126,7 +126,7 @@ extern "C" {
int x, y; int x, y;
struct plane *_plane; /* to access, use rplane(r) */ struct plane *_plane; /* to access, use rplane(r) */
char *display; char *display;
unsigned int flags; int flags;
unsigned short age; unsigned short age;
struct message_list *msgs; struct message_list *msgs;
struct individual_message { struct individual_message {

View File

@ -441,7 +441,7 @@ static void read_alliances(struct storage *store)
READ_STR(store, aname, sizeof(aname)); READ_STR(store, aname, sizeof(aname));
al = makealliance(id, aname); al = makealliance(id, aname);
if (global.data_version >= OWNER_2_VERSION) { if (global.data_version >= OWNER_2_VERSION) {
READ_UINT(store, &al->flags); READ_INT(store, &al->flags);
} }
if (global.data_version >= ALLIANCELEADER_VERSION) { if (global.data_version >= ALLIANCELEADER_VERSION) {
read_reference(&al->_leader, store, read_faction_reference, read_reference(&al->_leader, store, read_faction_reference,
@ -513,7 +513,7 @@ static void read_owner(struct gamedata *data, region_owner ** powner)
owner->since_turn = since_turn; owner->since_turn = since_turn;
READ_INT(data->store, &owner->morale_turn); READ_INT(data->store, &owner->morale_turn);
if (data->version >= MOURNING_VERSION) { if (data->version >= MOURNING_VERSION) {
READ_UINT(data->store, &owner->flags); READ_INT(data->store, &owner->flags);
} else { } else {
owner->flags = 0; owner->flags = 0;
} }
@ -699,7 +699,7 @@ unit *read_unit(struct gamedata *data)
READ_INT(data->store, &n); READ_INT(data->store, &n);
setstatus(u, n); setstatus(u, n);
READ_UINT(data->store, &u->flags); READ_INT(data->store, &u->flags);
u->flags &= UFL_SAVEMASK; u->flags &= UFL_SAVEMASK;
if ((u->flags & UFL_ANON_FACTION) && !rule_stealth_faction()) { if ((u->flags & UFL_ANON_FACTION) && !rule_stealth_faction()) {
/* if this rule is broken, then fix broken units */ /* if this rule is broken, then fix broken units */
@ -844,11 +844,11 @@ static region *readregion(struct gamedata *data, int x, int y)
region *r = findregion(x, y); region *r = findregion(x, y);
const terrain_type *terrain; const terrain_type *terrain;
char token[32]; char token[32];
unsigned int uid = 0; int uid = 0;
int n; int n;
if (data->version >= UID_VERSION) { if (data->version >= UID_VERSION) {
READ_UINT(data->store, &uid); READ_INT(data->store, &uid);
} }
if (r == NULL) { if (r == NULL) {
@ -896,7 +896,7 @@ static region *readregion(struct gamedata *data, int x, int y)
} }
} }
r->terrain = terrain; r->terrain = terrain;
READ_UINT(data->store, &r->flags); READ_INT(data->store, &r->flags);
READ_INT(data->store, &n); READ_INT(data->store, &n);
r->age = (unsigned short)n; r->age = (unsigned short)n;
@ -1267,10 +1267,12 @@ faction *readfaction(struct gamedata * data)
} }
READ_INT(data->store, &f->flags); READ_INT(data->store, &f->flags);
assert((f->flags&FFL_SAVEMASK) == f->flags); if (data->version < INTFLAGS_VERSION) {
if (f->no==0 || f->no==666) { if (f->no==0 || f->no==666) {
f->flags |= FFL_NPC; f->flags = FFL_NPC|FFL_NOTIMEOUT|FFL_NOIDLEOUT;
} }
}
assert((f->flags&FFL_SAVEMASK) == f->flags);
a_read(data->store, &f->attribs, f); a_read(data->store, &f->attribs, f);
if (data->version >= CLAIM_VERSION) { if (data->version >= CLAIM_VERSION) {
@ -1462,7 +1464,7 @@ int readgame(const char *filename, int backup)
rng_init(turn); rng_init(turn);
++global.cookie; ++global.cookie;
READ_INT(&store, &nread); /* max_unique_id = ignore */ READ_INT(&store, &nread); /* max_unique_id = ignore */
READ_UINT(&store, &nextborder); READ_INT(&store, &nextborder);
/* Planes */ /* Planes */
planes = NULL; planes = NULL;
@ -1487,7 +1489,7 @@ int readgame(const char *filename, int backup)
READ_INT(&store, &pl->maxx); READ_INT(&store, &pl->maxx);
READ_INT(&store, &pl->miny); READ_INT(&store, &pl->miny);
READ_INT(&store, &pl->maxy); READ_INT(&store, &pl->maxy);
READ_UINT(&store, &pl->flags); READ_INT(&store, &pl->flags);
/* read watchers */ /* read watchers */
if (gdata.version < FIX_WATCHERS_VERSION) { if (gdata.version < FIX_WATCHERS_VERSION) {
@ -1625,7 +1627,7 @@ int readgame(const char *filename, int backup)
READ_INT(&store, &sh->size); READ_INT(&store, &sh->size);
READ_INT(&store, &sh->damage); READ_INT(&store, &sh->damage);
if (gdata.version >= FOSS_VERSION) { if (gdata.version >= FOSS_VERSION) {
READ_UINT(&store, &sh->flags); READ_INT(&store, &sh->flags);
} }
/* Attribute rekursiv einlesen */ /* Attribute rekursiv einlesen */

View File

@ -89,7 +89,7 @@ extern "C" {
struct attrib *attribs; struct attrib *attribs;
int size; int size;
int damage; /* damage in 100th of a point of size */ int damage; /* damage in 100th of a point of size */
unsigned int flags; int flags;
const struct ship_type *type; const struct ship_type *type;
direction_t coast; direction_t coast;
} ship; } ship;

View File

@ -61,7 +61,7 @@ extern "C" {
typedef struct terrain_type { typedef struct terrain_type {
char *_name; char *_name;
int size; /* how many peasants can work? */ int size; /* how many peasants can work? */
unsigned int flags; int flags;
short max_road; /* this many stones make a full road */ short max_road; /* this many stones make a full road */
short distribution; /* multiplier used for seeding */ short distribution; /* multiplier used for seeding */
struct terrain_production *production; struct terrain_production *production;

View File

@ -107,7 +107,7 @@ extern "C" {
const struct race *race_; const struct race *race_;
const struct race *irace; const struct race *irace;
unsigned int flags; int flags;
struct attrib *attribs; struct attrib *attribs;
status_t status; status_t status;
int n; /* enno: attribut? */ int n; /* enno: attribut? */

View File

@ -70,8 +70,9 @@
#define UNIQUE_SPELLS_VERSION 339 /* turn 775, spell names are now unique globally, not just per school */ #define UNIQUE_SPELLS_VERSION 339 /* turn 775, spell names are now unique globally, not just per school */
#define SPELLBOOK_VERSION 340 /* turn 775, full spellbooks are stored for factions */ #define SPELLBOOK_VERSION 340 /* turn 775, full spellbooks are stored for factions */
#define NOOVERRIDE_VERSION 341 /* turn 775, full spellbooks are stored for factions */ #define NOOVERRIDE_VERSION 341 /* turn 775, full spellbooks are stored for factions */
#define INTFLAGS_VERSION 342 /* turn 876, FFL_NPC is now bit 25, flags is an int */
#define MIN_VERSION CURSETYPE_VERSION /* minimal datafile we support */ #define MIN_VERSION CURSETYPE_VERSION /* minimal datafile we support */
#define RELEASE_VERSION NOOVERRIDE_VERSION /* current datafile */ #define RELEASE_VERSION INTFLAGS_VERSION /* current datafile */
#define STREAM_VERSION 2 /* internal encoding of binary files */ #define STREAM_VERSION 2 /* internal encoding of binary files */