#ifndef H_GC_ECONOMY #define H_GC_ECONOMY #include #ifdef __cplusplus extern "C" { #endif /* Welchen Teil des Silbers die Bauern fuer Unterhaltung ausgeben (1/20), und * wiviel Silber ein Unterhalter pro Talentpunkt bekommt. */ /* Wieviele Silbermuenzen jeweils auf einmal "getaxed" werden. */ #define TAXFRACTION 10 /* Wieviel Silber pro Talentpunkt geklaut wird. */ #define STEALINCOME 50 /* Teil der Bauern, welche Luxusgueter kaufen und verkaufen (1/100). */ #define TRADE_FRACTION 100 /* Wieviel Fremde eine Partei pro Woche aufnehmen kann */ #define MAXNEWBIES 5 struct unit; struct race; struct region; struct faction; struct order; struct message; struct terrain_type; struct item_type; typedef struct econ_request { struct econ_request *next; struct unit *unit; int qty; enum econ_type { ECON_LIST, ECON_ENTERTAIN, ECON_WORK, ECON_TAX, ECON_LOOT, ECON_BUY, ECON_SELL, ECON_STEAL, } type; union { struct { int no; bool goblin; /* stealing */ } steal; struct { const struct luxury_type *ltype; /* trading */ } trade; } data; } econ_request; int expand_production(struct region * r, struct econ_request * requests, struct econ_request ***results); int income(const struct unit *u); int entertainmoney(const struct region *r); void economics(struct region *r); void destroy(struct region *r); void produce(struct region *r); void auto_work(struct region *r); bool trade_needs_castle(const struct terrain_type *terrain, const struct race *rc); typedef enum income_t { IC_WORK, IC_ENTERTAIN, IC_TAX, IC_TRADE, IC_TRADETAX, IC_STEAL, IC_MAGIC, IC_LOOT } income_t; void add_income(struct unit * u, income_t type, int want, int qty); void maintain_buildings(struct region *r); void make_item(struct unit * u, const struct item_type * itype, int want); int make_cmd(struct unit *u, struct order *ord); void split_allocations(struct region *r); int give_control_cmd(struct unit *u, struct order *ord); void give_control(struct unit * u, struct unit * u2); void tax_cmd(struct unit * u, struct order *ord, struct econ_request ** taxorders); void expandtax(struct region * r, struct econ_request * taxorders); struct message * steal_message(const struct unit * u, struct order *ord); void steal_cmd(struct unit * u, struct order *ord, struct econ_request ** stealorders); void expandstealing(struct region * r, struct econ_request * stealorders); #ifdef __cplusplus } #endif #endif