forked from github/server
config.c cleanup: move attribute registration to attributes.c
This commit is contained in:
parent
84a943b698
commit
8aa7fec54c
|
@ -20,12 +20,17 @@ OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
|
||||||
#include <kernel/config.h>
|
#include <kernel/config.h>
|
||||||
#include "attributes.h"
|
#include "attributes.h"
|
||||||
|
|
||||||
|
#include "laws.h"
|
||||||
|
#include "move.h"
|
||||||
|
#include "guard.h"
|
||||||
|
|
||||||
/* attributes includes */
|
/* attributes includes */
|
||||||
#include "follow.h"
|
#include "follow.h"
|
||||||
#include "hate.h"
|
#include "hate.h"
|
||||||
#include "iceberg.h"
|
#include "iceberg.h"
|
||||||
#include "key.h"
|
#include "key.h"
|
||||||
#include "stealth.h"
|
#include "stealth.h"
|
||||||
|
#include "magic.h"
|
||||||
#include "moved.h"
|
#include "moved.h"
|
||||||
#include "movement.h"
|
#include "movement.h"
|
||||||
#include "dict.h"
|
#include "dict.h"
|
||||||
|
@ -38,8 +43,12 @@ OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
|
||||||
#include "targetregion.h"
|
#include "targetregion.h"
|
||||||
|
|
||||||
/* kernel includes */
|
/* kernel includes */
|
||||||
|
#include <kernel/ally.h>
|
||||||
|
#include <kernel/connection.h>
|
||||||
|
#include <kernel/curse.h>
|
||||||
#include <kernel/unit.h>
|
#include <kernel/unit.h>
|
||||||
#include <kernel/faction.h>
|
#include <kernel/faction.h>
|
||||||
|
#include <kernel/group.h>
|
||||||
#include <kernel/region.h>
|
#include <kernel/region.h>
|
||||||
#include <kernel/save.h>
|
#include <kernel/save.h>
|
||||||
#include <kernel/ship.h>
|
#include <kernel/ship.h>
|
||||||
|
@ -47,13 +56,67 @@ OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
|
||||||
|
|
||||||
/* util includes */
|
/* util includes */
|
||||||
#include <util/attrib.h>
|
#include <util/attrib.h>
|
||||||
|
#include <util/event.h>
|
||||||
|
|
||||||
|
#include <storage.h>
|
||||||
|
|
||||||
attrib_type at_unitdissolve = {
|
attrib_type at_unitdissolve = {
|
||||||
"unitdissolve", NULL, NULL, NULL, a_writechars, a_readchars
|
"unitdissolve", NULL, NULL, NULL, a_writechars, a_readchars
|
||||||
};
|
};
|
||||||
|
|
||||||
|
static int read_ext(attrib * a, void *owner, struct storage *store)
|
||||||
|
{
|
||||||
|
int len;
|
||||||
|
|
||||||
|
READ_INT(store, &len);
|
||||||
|
store->api->r_bin(store->handle, NULL, (size_t)len);
|
||||||
|
return AT_READ_OK;
|
||||||
|
}
|
||||||
|
|
||||||
void register_attributes(void)
|
void register_attributes(void)
|
||||||
{
|
{
|
||||||
|
/* Alle speicherbaren Attribute müssen hier registriert werden */
|
||||||
|
at_register(&at_shiptrail);
|
||||||
|
at_register(&at_familiar);
|
||||||
|
at_register(&at_familiarmage);
|
||||||
|
at_register(&at_clone);
|
||||||
|
at_register(&at_clonemage);
|
||||||
|
at_register(&at_eventhandler);
|
||||||
|
at_register(&at_mage);
|
||||||
|
at_register(&at_countdown);
|
||||||
|
at_register(&at_curse);
|
||||||
|
|
||||||
|
at_register(&at_seenspell);
|
||||||
|
|
||||||
|
/* neue REGION-Attribute */
|
||||||
|
at_register(&at_moveblock);
|
||||||
|
at_register(&at_deathcount);
|
||||||
|
at_register(&at_woodcount);
|
||||||
|
|
||||||
|
/* neue UNIT-Attribute */
|
||||||
|
at_register(&at_siege);
|
||||||
|
at_register(&at_effect);
|
||||||
|
at_register(&at_private);
|
||||||
|
|
||||||
|
at_register(&at_icastle);
|
||||||
|
at_register(&at_guard);
|
||||||
|
at_register(&at_group);
|
||||||
|
|
||||||
|
at_register(&at_building_generic_type);
|
||||||
|
at_register(&at_maxmagicians);
|
||||||
|
at_register(&at_npcfaction);
|
||||||
|
|
||||||
|
/* connection-typen */
|
||||||
|
register_bordertype(&bt_noway);
|
||||||
|
register_bordertype(&bt_fogwall);
|
||||||
|
register_bordertype(&bt_wall);
|
||||||
|
register_bordertype(&bt_illusionwall);
|
||||||
|
register_bordertype(&bt_road);
|
||||||
|
|
||||||
|
at_register(&at_germs);
|
||||||
|
|
||||||
|
at_deprecate("xontormiaexpress", a_readint); /* required for old datafiles */
|
||||||
|
at_deprecate("lua", read_ext); /* required for old datafiles */
|
||||||
at_deprecate("gm", a_readint);
|
at_deprecate("gm", a_readint);
|
||||||
at_register(&at_stealth);
|
at_register(&at_stealth);
|
||||||
at_register(&at_dict);
|
at_register(&at_dict);
|
||||||
|
|
|
@ -44,7 +44,6 @@ OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
|
||||||
#include "race.h"
|
#include "race.h"
|
||||||
#include "reports.h"
|
#include "reports.h"
|
||||||
#include "region.h"
|
#include "region.h"
|
||||||
#include "save.h"
|
|
||||||
#include "ship.h"
|
#include "ship.h"
|
||||||
#include "skill.h"
|
#include "skill.h"
|
||||||
#include "terrain.h"
|
#include "terrain.h"
|
||||||
|
@ -85,7 +84,6 @@ OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
/* external libraries */
|
/* external libraries */
|
||||||
#include <storage.h>
|
|
||||||
#include <iniparser.h>
|
#include <iniparser.h>
|
||||||
#include <critbit.h>
|
#include <critbit.h>
|
||||||
|
|
||||||
|
@ -267,34 +265,6 @@ const char *options[MAXOPTIONS] = {
|
||||||
"SHOWSKCHANGE"
|
"SHOWSKCHANGE"
|
||||||
};
|
};
|
||||||
|
|
||||||
static void init_maxmagicians(struct attrib *a)
|
|
||||||
{
|
|
||||||
a->data.i = MAXMAGICIANS;
|
|
||||||
}
|
|
||||||
|
|
||||||
static attrib_type at_maxmagicians = {
|
|
||||||
"maxmagicians",
|
|
||||||
init_maxmagicians,
|
|
||||||
NULL,
|
|
||||||
NULL,
|
|
||||||
a_writeint,
|
|
||||||
a_readint,
|
|
||||||
ATF_UNIQUE
|
|
||||||
};
|
|
||||||
|
|
||||||
int max_magicians(const faction * f)
|
|
||||||
{
|
|
||||||
int m = config_get_int("rules.maxskills.magic", MAXMAGICIANS);
|
|
||||||
attrib *a;
|
|
||||||
|
|
||||||
if ((a = a_find(f->attribs, &at_maxmagicians)) != NULL) {
|
|
||||||
m = a->data.i;
|
|
||||||
}
|
|
||||||
if (f->race == get_race(RC_ELF))
|
|
||||||
++m;
|
|
||||||
return m;
|
|
||||||
}
|
|
||||||
|
|
||||||
FILE *debug;
|
FILE *debug;
|
||||||
|
|
||||||
/* ----------------------------------------------------------------------- */
|
/* ----------------------------------------------------------------------- */
|
||||||
|
@ -786,16 +756,6 @@ void kernel_done(void)
|
||||||
free_attribs();
|
free_attribs();
|
||||||
}
|
}
|
||||||
|
|
||||||
attrib_type at_germs = {
|
|
||||||
"germs",
|
|
||||||
DEFAULT_INIT,
|
|
||||||
DEFAULT_FINALIZE,
|
|
||||||
DEFAULT_AGE,
|
|
||||||
a_writeshorts,
|
|
||||||
a_readshorts,
|
|
||||||
ATF_UNIQUE
|
|
||||||
};
|
|
||||||
|
|
||||||
void setstatus(struct unit *u, int status)
|
void setstatus(struct unit *u, int status)
|
||||||
{
|
{
|
||||||
assert(status >= ST_AGGRO && status <= ST_FLEE);
|
assert(status >= ST_AGGRO && status <= ST_FLEE);
|
||||||
|
@ -1099,70 +1059,12 @@ bool has_limited_skills(const struct unit * u)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
static int read_ext(attrib * a, void *owner, struct storage *store)
|
|
||||||
{
|
|
||||||
int len;
|
|
||||||
|
|
||||||
READ_INT(store, &len);
|
|
||||||
store->api->r_bin(store->handle, NULL, (size_t)len);
|
|
||||||
return AT_READ_OK;
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
void attrib_init(void)
|
|
||||||
{
|
|
||||||
/* Alle speicherbaren Attribute müssen hier registriert werden */
|
|
||||||
at_register(&at_shiptrail);
|
|
||||||
at_register(&at_familiar);
|
|
||||||
at_register(&at_familiarmage);
|
|
||||||
at_register(&at_clone);
|
|
||||||
at_register(&at_clonemage);
|
|
||||||
at_register(&at_eventhandler);
|
|
||||||
at_register(&at_mage);
|
|
||||||
at_register(&at_countdown);
|
|
||||||
at_register(&at_curse);
|
|
||||||
|
|
||||||
at_register(&at_seenspell);
|
|
||||||
|
|
||||||
/* neue REGION-Attribute */
|
|
||||||
at_register(&at_moveblock);
|
|
||||||
at_register(&at_deathcount);
|
|
||||||
at_register(&at_woodcount);
|
|
||||||
|
|
||||||
/* neue UNIT-Attribute */
|
|
||||||
at_register(&at_siege);
|
|
||||||
at_register(&at_effect);
|
|
||||||
at_register(&at_private);
|
|
||||||
|
|
||||||
at_register(&at_icastle);
|
|
||||||
at_register(&at_guard);
|
|
||||||
at_register(&at_group);
|
|
||||||
|
|
||||||
at_register(&at_building_generic_type);
|
|
||||||
at_register(&at_maxmagicians);
|
|
||||||
at_register(&at_npcfaction);
|
|
||||||
|
|
||||||
/* connection-typen */
|
|
||||||
register_bordertype(&bt_noway);
|
|
||||||
register_bordertype(&bt_fogwall);
|
|
||||||
register_bordertype(&bt_wall);
|
|
||||||
register_bordertype(&bt_illusionwall);
|
|
||||||
register_bordertype(&bt_road);
|
|
||||||
|
|
||||||
register_function((pf_generic)minimum_wage, "minimum_wage");
|
|
||||||
|
|
||||||
at_register(&at_germs);
|
|
||||||
|
|
||||||
at_deprecate("xontormiaexpress", a_readint); /* required for old datafiles */
|
|
||||||
at_deprecate("lua", read_ext); /* required for old datafiles */
|
|
||||||
}
|
|
||||||
|
|
||||||
void kernel_init(void)
|
void kernel_init(void)
|
||||||
{
|
{
|
||||||
register_reports();
|
register_reports();
|
||||||
mt_clear();
|
mt_clear();
|
||||||
attrib_init();
|
|
||||||
translation_init();
|
translation_init();
|
||||||
|
register_function((pf_generic)minimum_wage, "minimum_wage");
|
||||||
}
|
}
|
||||||
|
|
||||||
static order * defaults[MAXLOCALES];
|
static order * defaults[MAXLOCALES];
|
||||||
|
|
|
@ -27,11 +27,6 @@ extern "C" {
|
||||||
#include "types.h"
|
#include "types.h"
|
||||||
struct param;
|
struct param;
|
||||||
|
|
||||||
/* getunit results: */
|
|
||||||
#define GET_UNIT 0
|
|
||||||
#define GET_NOTFOUND 1
|
|
||||||
#define GET_PEASANTS 2
|
|
||||||
|
|
||||||
#define DISPLAYSIZE 8192 /* max. Länge einer Beschreibung, incl trailing 0 */
|
#define DISPLAYSIZE 8192 /* max. Länge einer Beschreibung, incl trailing 0 */
|
||||||
#define ORDERSIZE (DISPLAYSIZE*2) /* max. length of an order */
|
#define ORDERSIZE (DISPLAYSIZE*2) /* max. length of an order */
|
||||||
#define NAMESIZE 128 /* max. Länge eines Namens, incl trailing 0 */
|
#define NAMESIZE 128 /* max. Länge eines Namens, incl trailing 0 */
|
||||||
|
@ -50,7 +45,6 @@ struct param;
|
||||||
#define fset(u, i) ((u)->flags |= (i))
|
#define fset(u, i) ((u)->flags |= (i))
|
||||||
#define freset(u, i) ((u)->flags &= ~(i))
|
#define freset(u, i) ((u)->flags &= ~(i))
|
||||||
|
|
||||||
int max_magicians(const struct faction * f);
|
|
||||||
int findoption(const char *s, const struct locale *lang);
|
int findoption(const char *s, const struct locale *lang);
|
||||||
|
|
||||||
param_t findparam(const char *s, const struct locale *lang);
|
param_t findparam(const char *s, const struct locale *lang);
|
||||||
|
|
|
@ -30,6 +30,7 @@ OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
|
||||||
#include "plane.h"
|
#include "plane.h"
|
||||||
#include "race.h"
|
#include "race.h"
|
||||||
#include "region.h"
|
#include "region.h"
|
||||||
|
#include "save.h"
|
||||||
#include "spellbook.h"
|
#include "spellbook.h"
|
||||||
#include "terrain.h"
|
#include "terrain.h"
|
||||||
#include "unit.h"
|
#include "unit.h"
|
||||||
|
@ -773,3 +774,32 @@ int count_maxmigrants(const faction * f)
|
||||||
}
|
}
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static void init_maxmagicians(struct attrib *a)
|
||||||
|
{
|
||||||
|
a->data.i = MAXMAGICIANS;
|
||||||
|
}
|
||||||
|
|
||||||
|
attrib_type at_maxmagicians = {
|
||||||
|
"maxmagicians",
|
||||||
|
init_maxmagicians,
|
||||||
|
NULL,
|
||||||
|
NULL,
|
||||||
|
a_writeint,
|
||||||
|
a_readint,
|
||||||
|
ATF_UNIQUE
|
||||||
|
};
|
||||||
|
|
||||||
|
int max_magicians(const faction * f)
|
||||||
|
{
|
||||||
|
int m = config_get_int("rules.maxskills.magic", MAXMAGICIANS);
|
||||||
|
attrib *a;
|
||||||
|
|
||||||
|
if ((a = a_find(f->attribs, &at_maxmagicians)) != NULL) {
|
||||||
|
m = a->data.i;
|
||||||
|
}
|
||||||
|
if (f->race == get_race(RC_ELF))
|
||||||
|
++m;
|
||||||
|
return m;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
|
@ -29,7 +29,9 @@ extern "C" {
|
||||||
struct alliance;
|
struct alliance;
|
||||||
struct item;
|
struct item;
|
||||||
struct seen_region;
|
struct seen_region;
|
||||||
|
struct attrib_type;
|
||||||
|
|
||||||
|
extern struct attrib_type at_maxmagicians;
|
||||||
/* SMART_INTERVALS: define to speed up finding the interval of regions that a
|
/* SMART_INTERVALS: define to speed up finding the interval of regions that a
|
||||||
faction is in. defining this speeds up the turn by 30-40% */
|
faction is in. defining this speeds up the turn by 30-40% */
|
||||||
#define SMART_INTERVALS
|
#define SMART_INTERVALS
|
||||||
|
@ -173,7 +175,7 @@ extern "C" {
|
||||||
int count_maxmigrants(const struct faction * f);
|
int count_maxmigrants(const struct faction * f);
|
||||||
int count_all(const struct faction * f);
|
int count_all(const struct faction * f);
|
||||||
int count_units(const struct faction * f);
|
int count_units(const struct faction * f);
|
||||||
|
int max_magicians(const struct faction * f);
|
||||||
|
|
||||||
#ifdef __cplusplus
|
#ifdef __cplusplus
|
||||||
}
|
}
|
||||||
|
|
|
@ -256,8 +256,13 @@ extern "C" {
|
||||||
bool unit_name_equals_race(const struct unit *u);
|
bool unit_name_equals_race(const struct unit *u);
|
||||||
bool unit_can_study(const struct unit *u);
|
bool unit_can_study(const struct unit *u);
|
||||||
|
|
||||||
int newunitid(void);
|
/* getunit results: */
|
||||||
|
#define GET_UNIT 0
|
||||||
|
#define GET_NOTFOUND 1
|
||||||
|
#define GET_PEASANTS 2
|
||||||
|
|
||||||
int getunit(const struct region * r, const struct faction * f, struct unit **uresult);
|
int getunit(const struct region * r, const struct faction * f, struct unit **uresult);
|
||||||
|
int newunitid(void);
|
||||||
int read_unitid(const struct faction *f, const struct region *r);
|
int read_unitid(const struct faction *f, const struct region *r);
|
||||||
|
|
||||||
#ifdef __cplusplus
|
#ifdef __cplusplus
|
||||||
|
|
11
src/laws.c
11
src/laws.c
|
@ -478,7 +478,16 @@ static int count_race(const region * r, const race * rc)
|
||||||
return c;
|
return c;
|
||||||
}
|
}
|
||||||
|
|
||||||
extern struct attrib_type at_germs;
|
attrib_type at_germs = {
|
||||||
|
"germs",
|
||||||
|
DEFAULT_INIT,
|
||||||
|
DEFAULT_FINALIZE,
|
||||||
|
DEFAULT_AGE,
|
||||||
|
a_writeshorts,
|
||||||
|
a_readshorts,
|
||||||
|
ATF_UNIQUE
|
||||||
|
};
|
||||||
|
|
||||||
|
|
||||||
static void
|
static void
|
||||||
growing_trees_e3(region * r, const int current_season,
|
growing_trees_e3(region * r, const int current_season,
|
||||||
|
|
|
@ -34,6 +34,7 @@ extern "C" {
|
||||||
struct attrib_type;
|
struct attrib_type;
|
||||||
|
|
||||||
extern struct attrib_type at_germs;
|
extern struct attrib_type at_germs;
|
||||||
|
|
||||||
extern int dropouts[2];
|
extern int dropouts[2];
|
||||||
extern int *age;
|
extern int *age;
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue