This commit is contained in:
Enno Rehling 2001-02-13 02:58:51 +00:00
parent ad9bd0b291
commit bb0c563c3d
6 changed files with 109 additions and 21 deletions

View File

@ -1,6 +1,6 @@
/* vi: set ts=2: /* vi: set ts=2:
* *
* $Id: eressea.c,v 1.13 2001/02/12 22:39:56 enno Exp $ * $Id: eressea.c,v 1.14 2001/02/13 02:58:51 enno Exp $
* Eressea PB(E)M host Copyright (C) 1998-2000 * Eressea PB(E)M host Copyright (C) 1998-2000
* Christian Schlittchen (corwin@amber.kn-bremen.de) * Christian Schlittchen (corwin@amber.kn-bremen.de)
* Katja Zedel (katze@felidae.kn-bremen.de) * Katja Zedel (katze@felidae.kn-bremen.de)
@ -1033,7 +1033,7 @@ igetstrtoken (const char *s1)
s++; s++;
i = 0; i = 0;
while (i < DISPLAYSIZE && *s && *s != ' ') { while (*s && *s != ' ' && i < DISPLAYSIZE) {
buf[i] = (*s); buf[i] = (*s);
/* Hier wird space_replacement wieder in space zurueck /* Hier wird space_replacement wieder in space zurueck

View File

@ -1,6 +1,6 @@
/* vi: set ts=2: /* vi: set ts=2:
* *
* $Id: item.c,v 1.9 2001/02/11 20:54:01 enno Exp $ * $Id: item.c,v 1.10 2001/02/13 02:58:51 enno Exp $
* Eressea PB(E)M host Copyright (C) 1998-2000 * Eressea PB(E)M host Copyright (C) 1998-2000
* Christian Schlittchen (corwin@amber.kn-bremen.de) * Christian Schlittchen (corwin@amber.kn-bremen.de)
* Katja Zedel (katze@felidae.kn-bremen.de) * Katja Zedel (katze@felidae.kn-bremen.de)
@ -44,11 +44,21 @@ potion_type * potiontypes;
item_type * itemtypes; item_type * itemtypes;
herb_type * herbtypes; herb_type * herbtypes;
attrib_type at_ptype = { "potion_type" }; #ifdef AT_PTYPE
attrib_type at_wtype = { "weapon_type" }; static attrib_type at_ptype = { "potion_type" };
attrib_type at_ltype = { "luxury_type" }; #endif
attrib_type at_itype = { "item_type" }; #ifdef AT_WTYPE
attrib_type at_htype = { "herb_type" }; static attrib_type at_wtype = { "weapon_type" };
#endif
#ifdef AT_LTYPE
static attrib_type at_ltype = { "luxury_type" };
#endif
#ifdef AT_ITYPE
static attrib_type at_itype = { "item_type" };
#endif
#ifdef AT_HTYPE
static attrib_type at_htype = { "herb_type" };
#endif
static int static int
res_changeaura(unit * u, const resource_type * rtype, int delta) res_changeaura(unit * u, const resource_type * rtype, int delta)
@ -158,7 +168,11 @@ it_register(item_type * itype)
item_type ** p_itype = &itemtypes; item_type ** p_itype = &itemtypes;
while (*p_itype && *p_itype != itype) p_itype = &(*p_itype)->next; while (*p_itype && *p_itype != itype) p_itype = &(*p_itype)->next;
if (*p_itype==NULL) { if (*p_itype==NULL) {
#ifdef AT_ITYPE
a_add(&itype->rtype->attribs, a_new(&at_itype))->data.v = (void*) itype; a_add(&itype->rtype->attribs, a_new(&at_itype))->data.v = (void*) itype;
#else
itype->rtype->itype = itype;
#endif
*p_itype = itype; *p_itype = itype;
rt_register(itype->rtype); rt_register(itype->rtype);
} }
@ -190,7 +204,11 @@ new_itemtype(resource_type * rtype,
void void
lt_register(luxury_type * ltype) lt_register(luxury_type * ltype)
{ {
#ifdef AT_LTYPE
a_add(&ltype->itype->rtype->attribs, a_new(&at_ltype))->data.v = (void*) ltype; a_add(&ltype->itype->rtype->attribs, a_new(&at_ltype))->data.v = (void*) ltype;
#else
ltype->itype->rtype->ltype = ltype;
#endif
ltype->next = luxurytypes; ltype->next = luxurytypes;
luxurytypes = ltype; luxurytypes = ltype;
} }
@ -214,7 +232,11 @@ new_luxurytype(item_type * itype, int price)
void void
wt_register(weapon_type * wtype) wt_register(weapon_type * wtype)
{ {
#ifdef AT_WTYPE
a_add(&wtype->itype->rtype->attribs, a_new(&at_wtype))->data.v = (void*) wtype; a_add(&wtype->itype->rtype->attribs, a_new(&at_wtype))->data.v = (void*) wtype;
#else
wtype->itype->rtype->wtype = wtype;
#endif
wtype->next = weapontypes; wtype->next = weapontypes;
weapontypes = wtype; weapontypes = wtype;
} }
@ -250,7 +272,11 @@ new_weapontype(item_type * itype,
void void
pt_register(potion_type * ptype) pt_register(potion_type * ptype)
{ {
#ifdef AT_PTYPE
a_add(&ptype->itype->rtype->attribs, a_new(&at_ptype))->data.v = (void*) ptype; a_add(&ptype->itype->rtype->attribs, a_new(&at_ptype))->data.v = (void*) ptype;
#else
ptype->itype->rtype->ptype = ptype;
#endif
ptype->next = potiontypes; ptype->next = potiontypes;
potiontypes = ptype; potiontypes = ptype;
} }
@ -276,7 +302,11 @@ new_potiontype(item_type * itype,
void void
ht_register(herb_type * htype) ht_register(herb_type * htype)
{ {
#ifdef AT_HTYPE
a_add(&htype->itype->rtype->attribs, a_new(&at_htype))->data.v = (void*) htype; a_add(&htype->itype->rtype->attribs, a_new(&at_htype))->data.v = (void*) htype;
#else
htype->itype->rtype->htype = htype;
#endif
htype->next = herbtypes; htype->next = herbtypes;
herbtypes = htype; herbtypes = htype;
} }
@ -312,43 +342,68 @@ rt_register(resource_type * rtype)
} }
const resource_type * const resource_type *
item2resource(const item_type * itype) { item2resource(const item_type * itype)
{
return itype->rtype; return itype->rtype;
} }
const item_type * const item_type *
resource2item(const resource_type * rtype) { resource2item(const resource_type * rtype)
{
#ifdef AT_ITYPE
attrib * a = a_find(rtype->attribs, &at_itype); attrib * a = a_find(rtype->attribs, &at_itype);
if (a) return (const item_type *)a->data.v; if (a) return (const item_type *)a->data.v;
return NULL; return NULL;
#else
return rtype->itype;
#endif
} }
const herb_type * const herb_type *
resource2herb(const resource_type * rtype) { resource2herb(const resource_type * rtype)
{
#ifdef AT_HTYPE
attrib * a = a_find(rtype->attribs, &at_htype); attrib * a = a_find(rtype->attribs, &at_htype);
if (a) return (const herb_type *)a->data.v; if (a) return (const herb_type *)a->data.v;
return NULL; return NULL;
#else
return rtype->htype;
#endif
} }
const weapon_type * const weapon_type *
resource2weapon(const resource_type * rtype) { resource2weapon(const resource_type * rtype) {
#ifdef AT_WTYPE
attrib * a = a_find(rtype->attribs, &at_wtype); attrib * a = a_find(rtype->attribs, &at_wtype);
if (a) return (const weapon_type *)a->data.v; if (a) return (const weapon_type *)a->data.v;
return NULL; return NULL;
#else
return rtype->wtype;
#endif
} }
const luxury_type * const luxury_type *
resource2luxury(const resource_type * rtype) { resource2luxury(const resource_type * rtype)
{
#ifdef AT_LTYPE
attrib * a = a_find(rtype->attribs, &at_ltype); attrib * a = a_find(rtype->attribs, &at_ltype);
if (a) return (const luxury_type *)a->data.v; if (a) return (const luxury_type *)a->data.v;
return NULL; return NULL;
#else
return rtype->ltype;
#endif
} }
const potion_type * const potion_type *
resource2potion(const resource_type * rtype) { resource2potion(const resource_type * rtype)
{
#ifdef AT_PTYPE
attrib * a = a_find(rtype->attribs, &at_ptype); attrib * a = a_find(rtype->attribs, &at_ptype);
if (a) return (const potion_type *)a->data.v; if (a) return (const potion_type *)a->data.v;
return NULL; return NULL;
#else
return rtype->ptype;
#endif
} }
resource_type * resource_type *

View File

@ -1,6 +1,6 @@
/* vi: set ts=2: /* vi: set ts=2:
* *
* $Id: item.h,v 1.3 2001/02/03 13:45:32 enno Exp $ * $Id: item.h,v 1.4 2001/02/13 02:58:51 enno Exp $
* Eressea PB(E)M host Copyright (C) 1998-2000 * Eressea PB(E)M host Copyright (C) 1998-2000
* Christian Schlittchen (corwin@amber.kn-bremen.de) * Christian Schlittchen (corwin@amber.kn-bremen.de)
* Katja Zedel (katze@felidae.kn-bremen.de) * Katja Zedel (katze@felidae.kn-bremen.de)
@ -37,6 +37,11 @@ typedef struct item {
* limited supply */ * limited supply */
#define RTF_DYNAMIC (1<<3) /* dynamic type, must be saved */ #define RTF_DYNAMIC (1<<3) /* dynamic type, must be saved */
#undef AT_ITYPE /* should resource_type use an attribute for items ? */
#undef AT_HTYPE /* should resource_type use an attribute for herbs ? */
#undef AT_PTYPE /* should resource_type use an attribute for potions ? */
#undef AT_LTYPE /* should resource_type use an attribute for luxuries ? */
#undef AT_WTYPE /* should resource_type use an attribute for weapons ? */
/* flags for resource_type::name() */ /* flags for resource_type::name() */
#define NMF_PLURAL 0x01 #define NMF_PLURAL 0x01
@ -55,6 +60,21 @@ typedef struct resource_type {
struct attrib * attribs; struct attrib * attribs;
struct resource_type * next; struct resource_type * next;
unsigned int hashkey; unsigned int hashkey;
#ifndef AT_ITYPE
struct item_type * itype;
#endif
#ifndef AT_HTYPE
struct herb_type * htype;
#endif
#ifndef AT_PTYPE
struct potion_type * ptype;
#endif
#ifndef AT_LTYPE
struct luxury_type * ltype;
#endif
#ifndef AT_WTYPE
struct weapon_type * wtype;
#endif
} resource_type; } resource_type;
extern resource_type * resourcetypes; extern resource_type * resourcetypes;
extern const char* resourcename(const resource_type * rtype, int flags); extern const char* resourcename(const resource_type * rtype, int flags);

View File

@ -1,6 +1,6 @@
/* vi: set ts=2: /* vi: set ts=2:
* *
* $Id: umlaut.c,v 1.3 2001/02/10 10:40:12 enno Exp $ * $Id: umlaut.c,v 1.4 2001/02/13 02:58:51 enno Exp $
* Eressea PB(E)M host Copyright (C) 1998-2000 * Eressea PB(E)M host Copyright (C) 1998-2000
* Christian Schlittchen (corwin@amber.kn-bremen.de) * Christian Schlittchen (corwin@amber.kn-bremen.de)
* Katja Zedel (katze@felidae.kn-bremen.de) * Katja Zedel (katze@felidae.kn-bremen.de)
@ -50,10 +50,12 @@ addtoken(tnode * root, const char* str, void * id)
root->id = id; root->id = id;
root->leaf=1; root->leaf=1;
} else { } else {
char c = (char)tolower(*(unsigned char*)str); tnode * tk;
int index = ((unsigned char)c) % 32; int index, i = 0;
int i=0; char c = *str;
tnode * tk = root->next[index]; if (c<'a' || c>'z') c = (char)tolower((unsigned char)c);
index = ((unsigned char)c) % 32;
tk = root->next[index];
if (root->id==E_TOK_NOMATCH) root->id = id; if (root->id==E_TOK_NOMATCH) root->id = id;
while (tk && tk->c != c) tk = tk->nexthash; while (tk && tk->c != c) tk = tk->nexthash;
if (!tk) { if (!tk) {
@ -81,8 +83,11 @@ findtoken(tnode * tk, const char * str)
if(*str == 0) return E_TOK_NOMATCH; if(*str == 0) return E_TOK_NOMATCH;
while (*str) { while (*str) {
char c = (char)tolower(*str); int index;
int index = ((unsigned char)c) % 32; char c = *str;
if (c<'a' || c>'z') c = (char)tolower((unsigned char)c);
index = ((unsigned char)c) % 32;
tk = tk->next[index]; tk = tk->next[index];
while (tk && tk->c!=c) tk = tk->nexthash; while (tk && tk->c!=c) tk = tk->nexthash;
++str; ++str;

View File

@ -167,6 +167,10 @@ SOURCE=.\lists.h
# End Source File # End Source File
# Begin Source File # Begin Source File
SOURCE=.\log.h
# End Source File
# Begin Source File
SOURCE=.\rand.h SOURCE=.\rand.h
# End Source File # End Source File
# Begin Source File # Begin Source File
@ -228,6 +232,10 @@ SOURCE=.\lists.c
# End Source File # End Source File
# Begin Source File # Begin Source File
SOURCE=.\log.c
# End Source File
# Begin Source File
SOURCE=.\rand.c SOURCE=.\rand.c
# End Source File # End Source File
# Begin Source File # Begin Source File

Binary file not shown.