Neue messages, kompiliert, aber ein linker-error (NEW_MESSAGES)AT_OPTIONS define - solange option.h noch fehlt

This commit is contained in:
Enno Rehling 2001-02-28 22:14:59 +00:00
parent c76a605b19
commit b9f413f6fc
11 changed files with 83 additions and 30 deletions

View File

@ -1,6 +1,6 @@
/* vi: set ts=2: /* vi: set ts=2:
* *
* $Id: attributes.c,v 1.9 2001/02/28 18:25:23 corwin Exp $ * $Id: attributes.c,v 1.10 2001/02/28 22:14:56 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)
@ -26,7 +26,9 @@
#include "iceberg.h" #include "iceberg.h"
#include "hate.h" #include "hate.h"
#include "overrideroads.h" #include "overrideroads.h"
#include "option.h" #ifdef AT_OPTION
# include "option.h"
#endif
/* util includes */ /* util includes */
#include <attrib.h> #include <attrib.h>
@ -56,5 +58,7 @@ init_attributes(void)
init_hate(); init_hate();
/* at_reduceproduction */ /* at_reduceproduction */
init_reduceproduction(); init_reduceproduction();
#ifdef AT_OPTION
init_option(); init_option();
#endif
} }

View File

@ -1,6 +1,6 @@
/* vi: set ts=2: /* vi: set ts=2:
* *
* $Id: laws.c,v 1.31 2001/02/28 18:31:49 corwin Exp $ * $Id: laws.c,v 1.32 2001/02/28 22:14:56 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)
@ -64,8 +64,10 @@
#include <goodies.h> #include <goodies.h>
#include <rand.h> #include <rand.h>
#ifdef AT_OPTION
/* attributes includes */ /* attributes includes */
#include <attributes/option.h> #include <attributes/option.h>
#endif
/* libc includes */ /* libc includes */
#include <stdio.h> #include <stdio.h>
@ -1692,7 +1694,7 @@ set_passw(void)
case K_SEND: case K_SEND:
s = getstrtoken(); s = getstrtoken();
o = findoption(s); o = findoption(s);
#ifdef AT_OPTION
/* Sonderbehandlung Zeitungsoption */ /* Sonderbehandlung Zeitungsoption */
if (o == O_NEWS) { if (o == O_NEWS) {
attrib *a = a_find(u->faction->attribs, &at_option_news); attrib *a = a_find(u->faction->attribs, &at_option_news);
@ -1714,7 +1716,7 @@ set_passw(void)
} }
break; break;
} }
#endif
if (o == -1) { if (o == -1) {
cmistake(u, S->s, 135, MSG_EVENT); cmistake(u, S->s, 135, MSG_EVENT);
} else { } else {

View File

@ -1,6 +1,6 @@
/* vi: set ts=2: /* vi: set ts=2:
* *
* $Id: report.c,v 1.18 2001/02/28 18:25:24 corwin Exp $ * $Id: report.c,v 1.19 2001/02/28 22:14:56 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)
@ -30,7 +30,9 @@
/* attributes includes */ /* attributes includes */
#include <attributes/overrideroads.h> #include <attributes/overrideroads.h>
#include <attributes/option.h> #ifdef AT_OPTION
# include <attributes/option.h>
#endif
/* gamecode includes */ /* gamecode includes */
#include "creation.h" #include "creation.h"
@ -738,13 +740,22 @@ rp_messages(FILE * F, message_list * msgs, faction * viewer, int indent, boolean
#endif #endif
while (m) { while (m) {
boolean debug = viewer->options & want(O_DEBUG); boolean debug = viewer->options & want(O_DEBUG);
if (m->type->section!=category) continue;
#ifdef MSG_LEVELS #ifdef MSG_LEVELS
if (!debug && get_msglevel(viewer->warnings, viewer->msglevels, m->type) < m->level) continue; if (!debug && get_msglevel(viewer->warnings, viewer->msglevels, m->type) < m->level) continue;
#endif #endif
/* messagetype * mt = m->type; */ /* messagetype * mt = m->type; */
if (m->receiver==NULL || !viewer || viewer==m->receiver) { #ifdef NEW_MESSAGES
if (strcmp(nr_section(m->msg), category->name)==0)
#else
if (m->receiver==NULL || !viewer || viewer==m->receiver)
#endif
{
#ifdef OLD_MESSAGES
const char * s = render(m, viewer->locale); const char * s = render(m, viewer->locale);
#else
char buf[4096], *s = buf;
nr_render(m->msg, viewer->locale, s);
#endif
if (!k && categorized) { if (!k && categorized) {
const char * name; const char * name;
char cat_identifier[24]; char cat_identifier[24];
@ -771,6 +782,7 @@ rp_messages(FILE * F, message_list * msgs, faction * viewer, int indent, boolean
strcpy(buf+indent, s); strcpy(buf+indent, s);
s = buf; s = buf;
} }
#ifdef MSG_LEVELS
if (debug) { if (debug) {
int mylevel = get_msglevel(viewer->warnings, viewer->msglevels, m->type); int mylevel = get_msglevel(viewer->warnings, viewer->msglevels, m->type);
int level = msg_level(m); int level = msg_level(m);
@ -778,6 +790,7 @@ rp_messages(FILE * F, message_list * msgs, faction * viewer, int indent, boolean
sprintf(buf+strlen(s), " [%d:%d(%d)]", m->type->hashkey, level, mylevel); sprintf(buf+strlen(s), " [%d:%d(%d)]", m->type->hashkey, level, mylevel);
s = buf; s = buf;
} }
#endif
rpsnr(F, s, 2); rpsnr(F, s, 2);
} }
m=m->next; m=m->next;
@ -1791,6 +1804,7 @@ report(FILE *F, faction * f)
if (f->options & (int) pow(2, op)) { if (f->options & (int) pow(2, op)) {
scat(" "); scat(" ");
scat(options[op]); scat(options[op]);
#ifdef AT_OPTION
if(op == O_NEWS) { if(op == O_NEWS) {
attrib *a = a_find(f->attribs, &at_option_news); attrib *a = a_find(f->attribs, &at_option_news);
if(!a) { if(!a) {
@ -1810,6 +1824,7 @@ report(FILE *F, faction * f)
scat(")"); scat(")");
} }
} }
#endif
flag++; flag++;
} }
} }
@ -3136,7 +3151,7 @@ writenewssubscriptions(void)
sprintf(zText, "%s/news-subscriptions", basepath()); sprintf(zText, "%s/news-subscriptions", basepath());
F = cfopen(zText, "w"); F = cfopen(zText, "w");
if (!F) return; if (!F) return;
#ifdef AT_OPTION
for(f=factions; f; f=f->next) { for(f=factions; f; f=f->next) {
attrib *a = a_find(f->attribs, &at_option_news); attrib *a = a_find(f->attribs, &at_option_news);
if(!a) { if(!a) {
@ -3145,6 +3160,7 @@ writenewssubscriptions(void)
fprintf(F, "%s:%d\n", f->email, a->data.i); fprintf(F, "%s:%d\n", f->email, a->data.i);
} }
} }
#endif
fclose(F); fclose(F);
} }

View File

@ -21,6 +21,16 @@
#ifndef ERESSEA_H #ifndef ERESSEA_H
#define ERESSEA_H #define ERESSEA_H
#ifndef NEW_MESSAGES
#define MSG_LEVELS /* msg-levels wieder aktiviert */
#define OLD_MESSAGES
#define message_type messagetype
#define message_list message
#define report_section message
#else
#undef MSG_LEVELS
#endif
#ifndef NEW_MESSAGES #ifndef NEW_MESSAGES
#define OLD_MESSAGES #define OLD_MESSAGES
#define message_type messagetype #define message_type messagetype
@ -89,7 +99,6 @@ struct building_type;
#define DAEMON_HUNGER /* Dämonen hungern, statt mit 10% in ihre sphäre zurückzukehren */ #define DAEMON_HUNGER /* Dämonen hungern, statt mit 10% in ihre sphäre zurückzukehren */
#define NO_FOREST /* Es gibt keinen Terraintyp "Wald" mehr */ #define NO_FOREST /* Es gibt keinen Terraintyp "Wald" mehr */
#define NEW_RECEIPIES /* Vereinfachte, besser verteilte Kräuterzutaten für Tränke */ #define NEW_RECEIPIES /* Vereinfachte, besser verteilte Kräuterzutaten für Tränke */
#define MSG_LEVELS /* msg-levels wieder aktiviert */
#define NEW_TRIGGER #define NEW_TRIGGER
#undef OLD_TRIGGER /* leave active for compatibility until conversion is implemented */ #undef OLD_TRIGGER /* leave active for compatibility until conversion is implemented */
#define NEW_TAVERN #define NEW_TAVERN

View File

@ -1,6 +1,6 @@
/* vi: set ts=2: /* vi: set ts=2:
* *
* $Id: message.c,v 1.8 2001/02/24 12:50:48 enno Exp $ * $Id: message.c,v 1.9 2001/02/28 22:14:57 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)
@ -308,7 +308,7 @@ parse_message(char * b, const struct locale * deflocale)
/* add the messagetype */ /* add the messagetype */
mtype = mt_register(mt_new(name, args)); mtype = mt_register(mt_new(name, args));
nrt_register(mtype, lang, message); nrt_register(mtype, lang, message, level, section);
crt_register(mtype, lang); crt_register(mtype, lang);
} }
@ -323,6 +323,12 @@ read_messages(FILE * F, const struct locale * lang)
} }
#else #else
void
addmessage(region * r, faction * f, const char *s, msg_t mtype, int level)
{
caddmessage(r, f, gc_add(strdup(translate_regions(s, f))), mtype, level);
}
void void
caddmessage(region * r, faction * f, char *s, msg_t mtype, int level) caddmessage(region * r, faction * f, char *s, msg_t mtype, int level)
{ {
@ -370,12 +376,6 @@ caddmessage(region * r, faction * f, char *s, msg_t mtype, int level)
if (m) m->level = level; if (m) m->level = level;
} }
void
addmessage(region * r, faction * f, const char *s, msg_t mtype, int level)
{
caddmessage(r, f, gc_add(strdup(translate_regions(s, f))), mtype, level);
}
static messagetype * messagetypes; static messagetype * messagetypes;
void void

View File

@ -10,7 +10,7 @@ include $(ERESSEA)/Makefile.include
## more definitions ## more definitions
INCLUDES += -I../util -I../kernel -I../gamecode -I.. INCLUDES += -I../gamecode -I../kernel -I../util -I..
# library: # library:
$(BUILD_DIR)/$(LIBRARY):: $(BUILD_DIR) $(OBJECTS) $(BUILD_DIR)/$(LIBRARY):: $(BUILD_DIR) $(OBJECTS)

View File

@ -10,7 +10,7 @@ include $(ERESSEA)/Makefile.include
## more definitions ## more definitions
INCLUDES += -I../util -I../kernel -I../gamecode INCLUDES += -I../gamecode -I../kernel -I../util
# library: # library:
$(BUILD_DIR)/$(LIBRARY):: $(BUILD_DIR) $(OBJECTS) $(BUILD_DIR)/$(LIBRARY):: $(BUILD_DIR) $(OBJECTS)

View File

@ -8,7 +8,7 @@
This program may not be used, modified or distributed This program may not be used, modified or distributed
without prior permission by the authors of Eressea. without prior permission by the authors of Eressea.
$Id: message.c,v 1.1 2001/02/24 12:50:50 enno Exp $ $Id: message.c,v 1.2 2001/02/28 22:14:58 enno Exp $
*/ */
#include <config.h> #include <config.h>
@ -30,8 +30,8 @@ mt_new(const char * name, const char * args[])
mtype->name = strdup(name); mtype->name = strdup(name);
mtype->nparameters = nparameters; mtype->nparameters = nparameters;
mtype->pnames = (char**)malloc(sizeof(char*) * nparameters); mtype->pnames = (const char**)malloc(sizeof(char*) * nparameters);
mtype->types = (char**)malloc(sizeof(char*) * nparameters); mtype->types = (const char**)malloc(sizeof(char*) * nparameters);
for (i=0;args[i];++i) { for (i=0;args[i];++i) {
const char * x = args[i]; const char * x = args[i];
const char * spos = strchr(x, ':'); const char * spos = strchr(x, ':');
@ -128,4 +128,4 @@ msg_free(message *m)
{ {
free((void*)m->parameters); free((void*)m->parameters);
free(m); free(m);
} }

View File

@ -8,7 +8,7 @@
This program may not be used, modified or distributed This program may not be used, modified or distributed
without prior permission by the authors of Eressea. without prior permission by the authors of Eressea.
$Id: nrmessage.c,v 1.2 2001/02/25 20:10:43 enno Exp $ $Id: nrmessage.c,v 1.3 2001/02/28 22:14:59 enno Exp $
*/ */
#include <config.h> #include <config.h>
@ -26,6 +26,8 @@ typedef struct nrmessage_type {
const char * string; const char * string;
const char * vars; const char * vars;
struct nrmessage_type * next; struct nrmessage_type * next;
int level;
const char * section;
} nrmessage_type; } nrmessage_type;
static nrmessage_type * messagetypes; static nrmessage_type * messagetypes;
@ -47,7 +49,7 @@ nrt_find(const struct locale * lang, const struct message_type * mtype)
} }
void void
nrt_register(const struct message_type * mtype, const struct locale * lang, const char * string) nrt_register(const struct message_type * mtype, const struct locale * lang, const char * string, int level, const char * section)
{ {
nrmessage_type * nrt = messagetypes; nrmessage_type * nrt = messagetypes;
while (nrt && (nrt->lang!=lang || nrt->mtype!=mtype)) { while (nrt && (nrt->lang!=lang || nrt->mtype!=mtype)) {
@ -61,6 +63,8 @@ nrt_register(const struct message_type * mtype, const struct locale * lang, cons
nrt->lang = lang; nrt->lang = lang;
nrt->mtype = mtype; nrt->mtype = mtype;
nrt->next = messagetypes; nrt->next = messagetypes;
nrt->level=level;
nrt->section = strdup(section);
messagetypes = nrt; messagetypes = nrt;
nrt->string = strdup(string); nrt->string = strdup(string);
for (i=0;i!=mtype->nparameters;++i) { for (i=0;i!=mtype->nparameters;++i) {
@ -68,7 +72,7 @@ nrt_register(const struct message_type * mtype, const struct locale * lang, cons
c+= strlen(strcpy(c, mtype->pnames[i])); c+= strlen(strcpy(c, mtype->pnames[i]));
} }
nrt->vars = strdup(zNames); nrt->vars = strdup(zNames);
/* TODO: really necessary to strdup them all? here? better to extend va_translate! */ /* TODO: really necessary to strdup them all? here? better to extend the caller? hash? */
} }
} }
@ -84,3 +88,17 @@ nr_render(const struct message * msg, const struct locale * lang, char * buffer)
} }
return -1; return -1;
} }
int
nr_level(const struct message *msg)
{
nrmessage_type * nrt = nrt_find(NULL, msg->type);
return nrt->level;
}
const char *
nr_section(const struct message *msg)
{
nrmessage_type * nrt = nrt_find(NULL, msg->type);
return nrt->section;
}

View File

@ -18,7 +18,11 @@ struct nrmessage_type;
extern int nr_render(const struct message * msg, const struct locale * lang, extern int nr_render(const struct message * msg, const struct locale * lang,
char * buffer); char * buffer);
extern void nrt_register(const struct message_type * mtype, extern void nrt_register(const struct message_type * mtype,
const struct locale * lang, const char * script); const struct locale * lang, const char * script,
int level, const char * section);
extern int nr_level(const struct message *msg);
extern const char * nr_section(const struct message *msg);
/* before: /* before:
* fogblock;movement:0;de;{unit} konnte von {region} nicht nach {$dir direction} ausreisen, der Nebel war zu dicht. * fogblock;movement:0;de;{unit} konnte von {region} nicht nach {$dir direction} ausreisen, der Nebel war zu dicht.

View File

@ -175,7 +175,7 @@ find_function(const char * symbol)
} }
static const char * parse(const char* in); static const char * parse(const char* in);
static const char * sample = "\"enno and $bool($if($eq($i,0),\"noone else\",\"$i other people\"))\""; /* static const char * sample = "\"enno and $bool($if($eq($i,0),\"noone else\",\"$i other people\"))\""; */
static const char * static const char *
parse_symbol(const char* in) parse_symbol(const char* in)