2001-01-25 10:37:55 +01:00
|
|
|
|
/* vi: set ts=2:
|
|
|
|
|
*
|
2003-07-29 11:48:03 +02:00
|
|
|
|
* Eressea PB(E)M host Copyright (C) 1998-2003
|
2001-01-25 10:37:55 +01:00
|
|
|
|
* Christian Schlittchen (corwin@amber.kn-bremen.de)
|
|
|
|
|
* Katja Zedel (katze@felidae.kn-bremen.de)
|
|
|
|
|
* Henning Peters (faroul@beyond.kn-bremen.de)
|
|
|
|
|
* Enno Rehling (enno@eressea-pbem.de)
|
|
|
|
|
* Ingo Wilken (Ingo.Wilken@informatik.uni-oldenburg.de)
|
|
|
|
|
*
|
|
|
|
|
* based on:
|
|
|
|
|
*
|
|
|
|
|
* Atlantis v1.0 13 September 1993 Copyright 1993 by Russell Wallace
|
|
|
|
|
* Atlantis v1.7 Copyright 1996 by Alex Schr<EFBFBD>der
|
|
|
|
|
*
|
|
|
|
|
* This program may not be used, modified or distributed without
|
|
|
|
|
* prior permission by the authors of Eressea.
|
|
|
|
|
* This program may not be sold or used commercially without prior written
|
|
|
|
|
* permission from the authors.
|
|
|
|
|
*/
|
|
|
|
|
|
2003-07-29 11:48:03 +02:00
|
|
|
|
#ifndef H_KRNL_PLANES
|
|
|
|
|
#define H_KRNL_PLANES
|
|
|
|
|
#ifdef __cplusplus
|
|
|
|
|
extern "C" {
|
|
|
|
|
#endif
|
2001-01-25 10:37:55 +01:00
|
|
|
|
|
- Neue Messages fertig
Messages werden jetzt in einem anderen Meta-Format (message* of
message_type*) gespeichert, das man in beliebige Formate (CR oder NR)
rendern kann. crmessage.c und nrmessage.c sind die render-engines dafür.
Die Messagetypen werden in res/{de,en}/messages.xml gesammelt, ultimativ
kann das aber durchaus eine einzelne Datei sein. Die ist derzeit nicht
wirklich xml (Umlaute drin, keine Definitionsdatei), aber gut lesbar.
- make_message
Diese Funktion ersetzt new_message, und ist etwas einfacher in der Syntax:
make_message("dumb_mistake", "unit region command", u, r, cmd) erzeugt
eine neue Nachricht, die dann einfach mit add_message wie bisher an die
Nachrichtenliste gehängt werden kann.
TODO: Messages könnte man durchaus reference-counten, und in mehrere Listen
einfügen, solang sie a) mehrfachverwendet (Kampf!) und b) vom Betrachter
unabhängig sind. Das spart einigen Speicher.
- CR Version erhöht.
Weil die MESSAGETYPES Blocks anders sind als früher
- OFFENSIVE_DELAY
Verbietet Einheiten, deren Partei eine Reigon niht bewachen, den
Angriff in der Region, wenn sie sich in der Runde zuvor bewegt haben.
Status der letzten Runde wird in neuem Attribut at_moved gespeichert.
- SHORT_ATTACKS
ein define, das angibt ob Kämpfen grundsätzlich keine lange Aktion ist.
- XML Parser
xml.[hc] enthält einen XML-Parser, dem man ein plugin mit callbacks
übergibt, die nach dem Parsen eines tokens aufgerufen werden.
2001-04-12 19:21:57 +02:00
|
|
|
|
#define PFL_NOCOORDS 1
|
|
|
|
|
#define PFL_NORECRUITS 2
|
|
|
|
|
#define PFL_NOALLIANCES 4
|
|
|
|
|
#define PFL_LOWSTEALING 8
|
|
|
|
|
#define PFL_NOGIVE 16 /* <20>bergaben sind unm<6E>glich */
|
|
|
|
|
#define PFL_NOATTACK 32 /* Angriffe und Diebst<73>hle sind unm<6E>glich */
|
|
|
|
|
#define PFL_NOTERRAIN 64 /* Terraintyp wird nicht angezeigt TODO? */
|
|
|
|
|
#define PFL_NOMAGIC 128 /* Zaubern ist unm<6E>glich */
|
|
|
|
|
#define PFL_NOSTEALTH 256 /* Tarnung au<61>er Betrieb */
|
|
|
|
|
#define PFL_NOTEACH 512 /* Lehre au<61>er Betrieb */
|
2002-01-05 17:14:38 +01:00
|
|
|
|
#define PFL_NOBUILD 1024 /* Bauen au<61>er Betrieb */
|
- Neue Messages fertig
Messages werden jetzt in einem anderen Meta-Format (message* of
message_type*) gespeichert, das man in beliebige Formate (CR oder NR)
rendern kann. crmessage.c und nrmessage.c sind die render-engines dafür.
Die Messagetypen werden in res/{de,en}/messages.xml gesammelt, ultimativ
kann das aber durchaus eine einzelne Datei sein. Die ist derzeit nicht
wirklich xml (Umlaute drin, keine Definitionsdatei), aber gut lesbar.
- make_message
Diese Funktion ersetzt new_message, und ist etwas einfacher in der Syntax:
make_message("dumb_mistake", "unit region command", u, r, cmd) erzeugt
eine neue Nachricht, die dann einfach mit add_message wie bisher an die
Nachrichtenliste gehängt werden kann.
TODO: Messages könnte man durchaus reference-counten, und in mehrere Listen
einfügen, solang sie a) mehrfachverwendet (Kampf!) und b) vom Betrachter
unabhängig sind. Das spart einigen Speicher.
- CR Version erhöht.
Weil die MESSAGETYPES Blocks anders sind als früher
- OFFENSIVE_DELAY
Verbietet Einheiten, deren Partei eine Reigon niht bewachen, den
Angriff in der Region, wenn sie sich in der Runde zuvor bewegt haben.
Status der letzten Runde wird in neuem Attribut at_moved gespeichert.
- SHORT_ATTACKS
ein define, das angibt ob Kämpfen grundsätzlich keine lange Aktion ist.
- XML Parser
xml.[hc] enthält einen XML-Parser, dem man ein plugin mit callbacks
übergibt, die nach dem Parsen eines tokens aufgerufen werden.
2001-04-12 19:21:57 +02:00
|
|
|
|
#define PFL_NOFEED 2048 /* Kein Unterhalt n<>tig TODO */
|
|
|
|
|
#define PFL_FRIENDLY 4096 /* everyone is your ally */
|
|
|
|
|
#define PFL_NOORCGROWTH 8192 /* orcs don't grow */
|
2002-03-12 21:48:10 +01:00
|
|
|
|
#define PFL_NOMONSTERS 16384 /* no monster randenc */
|
2002-03-29 05:23:51 +01:00
|
|
|
|
#define PFL_SEESPECIAL 32768 /* far seeing */
|
2001-01-25 10:37:55 +01:00
|
|
|
|
|
2002-02-18 22:41:11 +01:00
|
|
|
|
typedef struct watcher {
|
|
|
|
|
struct watcher * next;
|
|
|
|
|
struct faction * faction;
|
|
|
|
|
unsigned char mode;
|
|
|
|
|
} watcher;
|
|
|
|
|
|
2001-01-25 10:37:55 +01:00
|
|
|
|
typedef struct plane {
|
|
|
|
|
struct plane *next;
|
2002-02-18 22:41:11 +01:00
|
|
|
|
struct watcher * watchers;
|
2001-01-25 10:37:55 +01:00
|
|
|
|
int id;
|
|
|
|
|
char *name;
|
|
|
|
|
int minx,maxx,miny,maxy;
|
|
|
|
|
unsigned int flags;
|
2001-02-17 15:47:43 +01:00
|
|
|
|
struct attrib *attribs;
|
2001-01-25 10:37:55 +01:00
|
|
|
|
} plane;
|
|
|
|
|
|
2001-02-05 17:11:59 +01:00
|
|
|
|
struct plane *planes;
|
2001-01-25 10:37:55 +01:00
|
|
|
|
|
2001-02-05 17:11:59 +01:00
|
|
|
|
struct plane *getplane(const struct region *r);
|
|
|
|
|
struct plane *findplane(int x, int y);
|
2001-01-25 10:37:55 +01:00
|
|
|
|
void init_planes(void);
|
2001-09-05 21:40:40 +02:00
|
|
|
|
int getplaneid(const struct region *r);
|
2001-02-05 17:11:59 +01:00
|
|
|
|
struct plane * getplanebyid(int id);
|
2001-01-25 10:37:55 +01:00
|
|
|
|
int region_x(const struct region *r, const struct faction *f);
|
|
|
|
|
int region_y(const struct region *r, const struct faction *f);
|
2001-04-22 10:21:07 +02:00
|
|
|
|
int plane_center_x(const struct plane *pl);
|
|
|
|
|
int plane_center_y(const struct plane *pl);
|
2001-01-25 10:37:55 +01:00
|
|
|
|
void set_ursprung(struct faction *f, int id, int x, int y);
|
|
|
|
|
plane * create_new_plane(int id, const char *name, int minx, int maxx, int miny, int maxy, int flags);
|
|
|
|
|
plane * getplanebyname(const char *);
|
2001-04-01 08:58:45 +02:00
|
|
|
|
extern int rel_to_abs(const struct plane *pl, const struct faction * f, int rel, unsigned char index);
|
2002-05-05 12:26:33 +02:00
|
|
|
|
extern boolean is_watcher(const struct plane * p, const struct faction * f);
|
2001-02-17 15:47:43 +01:00
|
|
|
|
extern void * resolve_plane(void * data);
|
|
|
|
|
extern void write_plane_reference(const plane * p, FILE * F);
|
2002-04-07 02:44:01 +02:00
|
|
|
|
extern int read_plane_reference(plane ** pp, FILE * F);
|
2001-02-17 15:47:43 +01:00
|
|
|
|
|
2003-07-29 11:48:03 +02:00
|
|
|
|
#ifdef __cplusplus
|
|
|
|
|
}
|
|
|
|
|
#endif
|
2001-01-25 10:37:55 +01:00
|
|
|
|
#endif
|