forked from github/server
the mapper is no longer maintained
This commit is contained in:
parent
ede420cd3b
commit
fef83c4df5
12 changed files with 0 additions and 6409 deletions
|
@ -1,35 +0,0 @@
|
||||||
SubDir TOP mapper ;
|
|
||||||
|
|
||||||
TargetDirectory ;
|
|
||||||
SubDirHdrs $(SUBDIR)/../common/gamecode ;
|
|
||||||
SubDirHdrs $(SUBDIR)/../common/kernel ;
|
|
||||||
SubDirHdrs $(SUBDIR)/../common/util ;
|
|
||||||
SubDirHdrs $(SUBDIR)/../common ;
|
|
||||||
SubDirHdrs $(SUBDIR)/.. ;
|
|
||||||
|
|
||||||
SubDirHdrs $(XMLHDRS) ;
|
|
||||||
|
|
||||||
SOURCES =
|
|
||||||
logging.c
|
|
||||||
map_modify.c
|
|
||||||
map_partei.c
|
|
||||||
mapper.c
|
|
||||||
map_region.c
|
|
||||||
map_tools.c
|
|
||||||
map_units.c
|
|
||||||
;
|
|
||||||
|
|
||||||
Main mapper : $(SOURCES) ;
|
|
||||||
LinkLibraries mapper :
|
|
||||||
gamecode
|
|
||||||
items
|
|
||||||
spells
|
|
||||||
kernel
|
|
||||||
modules
|
|
||||||
attributes
|
|
||||||
races
|
|
||||||
triggers
|
|
||||||
util ;
|
|
||||||
|
|
||||||
libxml2 mapper ;
|
|
||||||
LINKLIBS on mapper += -L$(LUABIND_ROOT)/lib -lm -lncurses ;
|
|
|
@ -1,107 +0,0 @@
|
||||||
/* vi: set ts=2:
|
|
||||||
+-------------------+ Christian Schlittchen <corwin@amber.kn-bremen.de>
|
|
||||||
| | Enno Rehling <enno@eressea-pbem.de>
|
|
||||||
| Eressea PBEM host | Katja Zedel <katze@felidae.kn-bremen.de>
|
|
||||||
| (c) 1998 - 2003 | Henning Peters <faroul@beyond.kn-bremen.de>
|
|
||||||
| | Ingo Wilken <Ingo.Wilken@informatik.uni-oldenburg.de>
|
|
||||||
+-------------------+ Stefan Reich <reich@halbling.de>
|
|
||||||
|
|
||||||
This program may not be used, modified or distributed
|
|
||||||
without prior permission by the authors of Eressea.
|
|
||||||
*/
|
|
||||||
|
|
||||||
#include <config.h>
|
|
||||||
#include <eressea.h>
|
|
||||||
|
|
||||||
/* kernel includes */
|
|
||||||
#include <faction.h>
|
|
||||||
#include <unit.h>
|
|
||||||
#include <region.h>
|
|
||||||
#include <save.h>
|
|
||||||
#include <terrain.h>
|
|
||||||
#include <kernel/terrainid.h>
|
|
||||||
|
|
||||||
/* util includes */
|
|
||||||
#include <base36.h>
|
|
||||||
|
|
||||||
/* libc includes */
|
|
||||||
#include <string.h>
|
|
||||||
#include <stdio.h>
|
|
||||||
|
|
||||||
static FILE * log;
|
|
||||||
|
|
||||||
void
|
|
||||||
log_read(const char * filename)
|
|
||||||
{
|
|
||||||
FILE * log = fopen(filename, "r");
|
|
||||||
faction **fp = &factions;
|
|
||||||
char buf[64];
|
|
||||||
|
|
||||||
while (*fp) fp=&(*fp)->next;
|
|
||||||
fscanf(log, "LOGVERSION %u\n", &global.data_version);
|
|
||||||
while (!feof(log)) {
|
|
||||||
if(fscanf(log, "%s", buf) == EOF) break;
|
|
||||||
if (strcmp(buf, "UNIT")==0) {
|
|
||||||
short x, y;
|
|
||||||
unit * u;
|
|
||||||
region * r;
|
|
||||||
fscanf(log, "%s %hd %hd", buf, &x, &y);
|
|
||||||
u = readunit(log);
|
|
||||||
r = findregion(x, y);
|
|
||||||
if (r==NULL) {
|
|
||||||
r = new_region(x, y);
|
|
||||||
terraform(r, T_PLAIN);
|
|
||||||
}
|
|
||||||
if (u->region!=r) move_unit(u, r, NULL);
|
|
||||||
} else if (strcmp(buf, "REGION")==0) {
|
|
||||||
short x, y;
|
|
||||||
fscanf(log, "%hd %hd", &x, &y);
|
|
||||||
readregion(log, x, y);
|
|
||||||
} else if (strcmp(buf, "FACTION")==0) {
|
|
||||||
faction * f;
|
|
||||||
fscanf(log, "%s", buf);
|
|
||||||
f = findfaction(atoi36(buf));
|
|
||||||
if (f) {
|
|
||||||
readfaction(log);
|
|
||||||
} else {
|
|
||||||
*fp = readfaction(log);
|
|
||||||
fp=&(*fp)->next;
|
|
||||||
}
|
|
||||||
} else assert(0);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
void
|
|
||||||
log_faction(const struct faction * f)
|
|
||||||
{
|
|
||||||
fprintf(log, "FACTION %s\n", factionid(f));
|
|
||||||
writefaction(log, f);
|
|
||||||
}
|
|
||||||
|
|
||||||
void
|
|
||||||
log_unit(const struct unit * u)
|
|
||||||
{
|
|
||||||
fprintf(log, "UNIT %s %d %d\n", unitid(u), u->region->x, u->region->y);
|
|
||||||
writeunit(log, u);
|
|
||||||
}
|
|
||||||
|
|
||||||
void
|
|
||||||
log_region(const struct region * r)
|
|
||||||
{
|
|
||||||
fprintf(log, "REGION %d %d\n", r->x, r->y);
|
|
||||||
writeregion(log, r);
|
|
||||||
}
|
|
||||||
|
|
||||||
void
|
|
||||||
log_start(const char * filename)
|
|
||||||
{
|
|
||||||
log = fopen(filename, "w+");
|
|
||||||
fprintf(log, "LOGVERSION %d\n", RELEASE_VERSION);
|
|
||||||
}
|
|
||||||
|
|
||||||
void
|
|
||||||
log_stop(void)
|
|
||||||
{
|
|
||||||
fclose(log);
|
|
||||||
log = NULL;
|
|
||||||
}
|
|
|
@ -1,23 +0,0 @@
|
||||||
#ifndef _LOGGING_H
|
|
||||||
#define _LOGGING_H
|
|
||||||
|
|
||||||
/* vi: set ts=2:
|
|
||||||
+-------------------+ Christian Schlittchen <corwin@amber.kn-bremen.de>
|
|
||||||
| | Enno Rehling <enno@eressea-pbem.de>
|
|
||||||
| Eressea PBEM host | Katja Zedel <katze@felidae.kn-bremen.de>
|
|
||||||
| (c) 1998 - 2003 | Henning Peters <faroul@beyond.kn-bremen.de>
|
|
||||||
| | Ingo Wilken <Ingo.Wilken@informatik.uni-oldenburg.de>
|
|
||||||
+-------------------+ Stefan Reich <reich@halbling.de>
|
|
||||||
|
|
||||||
This program may not be used, modified or distributed
|
|
||||||
without prior permission by the authors of Eressea.
|
|
||||||
*/
|
|
||||||
|
|
||||||
extern void log_read(const char * logname);
|
|
||||||
extern void log_region(const struct region * r);
|
|
||||||
extern void log_unit(const struct unit * r);
|
|
||||||
extern void log_faction(const struct faction * f);
|
|
||||||
extern void log_start(const char * filename);
|
|
||||||
extern void log_stop(void);
|
|
||||||
|
|
||||||
#endif /* _LOGGING_H */
|
|
File diff suppressed because it is too large
Load diff
|
@ -1,555 +0,0 @@
|
||||||
/* vi: set ts=2:
|
|
||||||
*
|
|
||||||
* Eressea PB(E)M host Copyright (C) 1998-2003
|
|
||||||
* 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)
|
|
||||||
*
|
|
||||||
* This program may not be used, modified or distributed without
|
|
||||||
* prior permission by the authors of Eressea.
|
|
||||||
*/
|
|
||||||
|
|
||||||
#include <config.h>
|
|
||||||
#include <curses.h>
|
|
||||||
#include <eressea.h>
|
|
||||||
#include "mapper.h"
|
|
||||||
|
|
||||||
#include <modules/autoseed.h>
|
|
||||||
|
|
||||||
/* kernel includes */
|
|
||||||
#include <kernel/alliance.h>
|
|
||||||
#include <kernel/faction.h>
|
|
||||||
#include <kernel/item.h>
|
|
||||||
#include <kernel/plane.h>
|
|
||||||
#include <kernel/race.h>
|
|
||||||
#include <kernel/region.h>
|
|
||||||
#include <kernel/reports.h>
|
|
||||||
#include <kernel/save.h>
|
|
||||||
#include <kernel/skill.h>
|
|
||||||
#include <kernel/unit.h>
|
|
||||||
|
|
||||||
/* util includes */
|
|
||||||
#include <util/base36.h>
|
|
||||||
#include <util/goodies.h>
|
|
||||||
#include <language.h>
|
|
||||||
|
|
||||||
/* libc includes */
|
|
||||||
#include <ctype.h>
|
|
||||||
#include <stdlib.h>
|
|
||||||
#include <string.h>
|
|
||||||
|
|
||||||
#ifdef __USE_POSIX
|
|
||||||
#include <sys/types.h>
|
|
||||||
#include <sys/stat.h>
|
|
||||||
#include <unistd.h>
|
|
||||||
#endif
|
|
||||||
|
|
||||||
const char * orderfile = NULL;
|
|
||||||
|
|
||||||
void
|
|
||||||
RemovePartei(void) {
|
|
||||||
faction *f, *F;
|
|
||||||
ally *a, *anext;
|
|
||||||
WINDOW *win;
|
|
||||||
char *fac_nr36;
|
|
||||||
int x;
|
|
||||||
unit *u;
|
|
||||||
region *r;
|
|
||||||
win = openwin(SX - 20, 5, "< Partei löschen >");
|
|
||||||
|
|
||||||
fac_nr36 = my_input(win, 2, 1, "Partei Nummer: ", NULL);
|
|
||||||
|
|
||||||
x = atoi36(fac_nr36);
|
|
||||||
|
|
||||||
if (fac_nr36 && *fac_nr36 && x > 0) {
|
|
||||||
wmove(win, 1, 2);
|
|
||||||
wclrtoeol(win);
|
|
||||||
wrefresh(win);
|
|
||||||
wmove(win, 1, win->_maxx);
|
|
||||||
waddch(win, '|');
|
|
||||||
wrefresh(win);
|
|
||||||
F = findfaction(x);
|
|
||||||
wmove(win, 1, 2);
|
|
||||||
if (F) {
|
|
||||||
wAddstr(factionname(F));
|
|
||||||
wrefresh(win);
|
|
||||||
wmove(win, 3, 4);
|
|
||||||
wattron(win, A_BOLD);
|
|
||||||
wAddstr("Alle Einheiten gehen verloren!");
|
|
||||||
wattroff(win, A_BOLD);
|
|
||||||
wmove(win, 3, 4);
|
|
||||||
beep();
|
|
||||||
if (yes_no(win, "Diese Partei wirklich löschen?", 'n')) {
|
|
||||||
for (f = factions; f; f = f->next)
|
|
||||||
if (f != F)
|
|
||||||
for (a = f->allies; a; a = anext) {
|
|
||||||
anext = a->next;
|
|
||||||
if (a->faction->no == F->no)
|
|
||||||
removelist(&f->allies, a);
|
|
||||||
}
|
|
||||||
for (r = firstregion(F); r != lastregion(F); r = r->next)
|
|
||||||
for (u = r->units; u; u = u->next)
|
|
||||||
if (u->faction == F)
|
|
||||||
set_number(u, 0);
|
|
||||||
modified = 1;
|
|
||||||
remove_empty_units();
|
|
||||||
removelist(&factions, F);
|
|
||||||
findfaction(-1); /* static lastfaction auf NULL setzen */
|
|
||||||
}
|
|
||||||
} else {
|
|
||||||
wprintw(win, (NCURSES_CONST char*)"Partei %d gibt es nicht.", x);
|
|
||||||
wmove(win, 3, 6);
|
|
||||||
wAddstr("<Taste>");
|
|
||||||
wrefresh(win);
|
|
||||||
getch();
|
|
||||||
}
|
|
||||||
}
|
|
||||||
delwin(win);
|
|
||||||
}
|
|
||||||
|
|
||||||
extern int left, top, breit, hoch;
|
|
||||||
|
|
||||||
typedef struct island {
|
|
||||||
vmap factions;
|
|
||||||
int maxage;
|
|
||||||
int x;
|
|
||||||
int y;
|
|
||||||
unsigned int land;
|
|
||||||
int age;
|
|
||||||
} island;
|
|
||||||
|
|
||||||
newfaction *
|
|
||||||
select_newfaction(const struct race * rc)
|
|
||||||
{
|
|
||||||
selection *prev, *ilist = NULL, **iinsert;
|
|
||||||
selection *selected = NULL;
|
|
||||||
newfaction *player = newfactions;
|
|
||||||
|
|
||||||
if (!player) return NULL;
|
|
||||||
insert_selection(&ilist, NULL, "new player", NULL);
|
|
||||||
iinsert=&ilist->next;
|
|
||||||
prev = ilist;
|
|
||||||
|
|
||||||
while (player) {
|
|
||||||
if (rc==NULL || player->race==rc) {
|
|
||||||
char str[80];
|
|
||||||
if (alliances!=NULL) {
|
|
||||||
snprintf(str, 70, "%s %d %s %s", player->bonus?"!":" ", player->allies?player->allies->id:0, locale_string(default_locale, rc_name(player->race, 0)), player->email);
|
|
||||||
} else {
|
|
||||||
snprintf(str, 70, "%s %s %s", player->bonus?"!":" ", locale_string(default_locale, rc_name(player->race, 0)), player->email);
|
|
||||||
}
|
|
||||||
insert_selection(iinsert, prev, str, (void*)player);
|
|
||||||
prev = *iinsert;
|
|
||||||
iinsert = &prev->next;
|
|
||||||
}
|
|
||||||
player=player->next;
|
|
||||||
}
|
|
||||||
selected = do_selection(ilist, "Partei", NULL, NULL);
|
|
||||||
if (selected==NULL) return NULL;
|
|
||||||
return (newfaction*)selected->data;
|
|
||||||
}
|
|
||||||
|
|
||||||
void
|
|
||||||
NeuePartei(region * r)
|
|
||||||
{
|
|
||||||
int i, q, y;
|
|
||||||
char email[INPUT_BUFSIZE+1];
|
|
||||||
newfaction * nf, **nfp;
|
|
||||||
const struct locale * lang;
|
|
||||||
const struct race * frace;
|
|
||||||
int late, subscription = 0;
|
|
||||||
unit *u;
|
|
||||||
const char * passwd = NULL;
|
|
||||||
int locale_nr;
|
|
||||||
faction * f;
|
|
||||||
|
|
||||||
if (!r->land) {
|
|
||||||
warnung(0, "Ungeeignete Region! <Taste>");
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
|
|
||||||
nf = select_newfaction(NULL);
|
|
||||||
|
|
||||||
if (nf!=NULL) {
|
|
||||||
frace = nf->race;
|
|
||||||
subscription = nf->subscription;
|
|
||||||
late = nf->bonus;
|
|
||||||
lang = nf->lang;
|
|
||||||
passwd = nf->password;
|
|
||||||
strcpy(email, nf->email);
|
|
||||||
if (late) {
|
|
||||||
WINDOW *win = openwin(SX - 10, 3, "< Neue Partei einfügen >");
|
|
||||||
if(r->age >= 5)
|
|
||||||
late = (int) map_input(win, 2, 1, "Startbonus", -1, 99, r->age/2);
|
|
||||||
else
|
|
||||||
late = (int) map_input(win, 2, 1, "Startbonus", -1, 99, 0);
|
|
||||||
delwin(win);
|
|
||||||
}
|
|
||||||
} else {
|
|
||||||
WINDOW *win = openwin(SX - 10, 12, "< Neue Partei einfügen >");
|
|
||||||
|
|
||||||
strcpy(buf, my_input(win, 2, 1, "EMail-Adresse (Leer->Ende): ", NULL));
|
|
||||||
if (!buf[0]) {
|
|
||||||
delwin(win);
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
|
|
||||||
strcpy(email, buf);
|
|
||||||
for (f=factions;f;f=f->next) {
|
|
||||||
if (strcmp(email, f->email)==0 && f->age==0) {
|
|
||||||
warnung(0, "Neue Partei mit dieser Adresse existiert bereits.");
|
|
||||||
delwin(win);
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
y = 3;
|
|
||||||
q = 0;
|
|
||||||
wmove(win, y, 4);
|
|
||||||
for (i = 0; i < MAXRACES; i++) if(playerrace(new_race[i])) {
|
|
||||||
sprintf(buf, "%d=%s; ", i, new_race[i]->_name[0]);
|
|
||||||
q += strlen(buf);
|
|
||||||
if (q > SX - 20) {
|
|
||||||
q = strlen(buf);
|
|
||||||
y++;
|
|
||||||
wmove(win, y, 4);
|
|
||||||
}
|
|
||||||
wAddstr(buf);
|
|
||||||
}
|
|
||||||
wrefresh(win);
|
|
||||||
|
|
||||||
y++;
|
|
||||||
do {
|
|
||||||
int nrace = (char) map_input(win, 2, y, "Rasse", -1, MAXRACES-1, 0);
|
|
||||||
if (nrace == -1) {
|
|
||||||
delwin(win);
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
frace = new_race[nrace];
|
|
||||||
} while(!playerrace(frace));
|
|
||||||
|
|
||||||
y++;
|
|
||||||
late = (int) map_input(win, 2, y, "Startbonus", -1, 99, 0);
|
|
||||||
if(late == -1) {
|
|
||||||
delwin(win);
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
i = 0; q = 0; y++;
|
|
||||||
wmove(win, y, 4);
|
|
||||||
while(localenames[i] != NULL) {
|
|
||||||
sprintf(buf, "%d=%s; ", i, localenames[i]);
|
|
||||||
q += strlen(buf);
|
|
||||||
if (q > SX - 20) {
|
|
||||||
q = strlen(buf);
|
|
||||||
y++;
|
|
||||||
wmove(win, y, 4);
|
|
||||||
}
|
|
||||||
wAddstr(buf);
|
|
||||||
i++;
|
|
||||||
}
|
|
||||||
wrefresh(win);
|
|
||||||
|
|
||||||
y++;
|
|
||||||
locale_nr = map_input(win, 2, 8, "Locale", -1, i-1, 0);
|
|
||||||
if(locale_nr == -1) {
|
|
||||||
delwin(win);
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
lang = find_locale(localenames[locale_nr]);
|
|
||||||
|
|
||||||
delwin(win);
|
|
||||||
}
|
|
||||||
|
|
||||||
/* remove duplicate email addresses */
|
|
||||||
nfp=&newfactions;
|
|
||||||
while (*nfp) {
|
|
||||||
newfaction * nf = *nfp;
|
|
||||||
if (strcmp(email, nf->email)==0) {
|
|
||||||
*nfp = nf->next;
|
|
||||||
free(nf);
|
|
||||||
}
|
|
||||||
else nfp = &nf->next;
|
|
||||||
}
|
|
||||||
modified = 1;
|
|
||||||
u = addplayer(r, addfaction(email, passwd, frace, lang, subscription));
|
|
||||||
++numnewbies;
|
|
||||||
|
|
||||||
sprintf(buf, "newuser %s", email);
|
|
||||||
system(buf);
|
|
||||||
}
|
|
||||||
|
|
||||||
static void
|
|
||||||
ModifyPartei(faction * f)
|
|
||||||
{
|
|
||||||
int c, i, q, y;
|
|
||||||
int fmag = count_skill(f, SK_MAGIC);
|
|
||||||
int falch = count_skill(f, SK_ALCHEMY);
|
|
||||||
WINDOW *win;
|
|
||||||
unit *u;
|
|
||||||
sprintf(buf, "<%s >", factionname(f));
|
|
||||||
win = openwin(SX - 6, 12, buf);
|
|
||||||
wmove(win, 1, 2);
|
|
||||||
wprintw(win, (NCURSES_CONST char*)"Rasse: %s", f->race->_name[1]);
|
|
||||||
wmove(win, 2, 2);
|
|
||||||
wprintw(win, (NCURSES_CONST char*)"Einheiten: %d", f->no_units);
|
|
||||||
wmove(win, 3, 2);
|
|
||||||
wprintw(win, (NCURSES_CONST char*)"Personen: %d", f->num_people);
|
|
||||||
wmove(win, 4, 2);
|
|
||||||
wprintw(win, (NCURSES_CONST char*)"Silber: %d", f->money);
|
|
||||||
wmove(win, 5, 2);
|
|
||||||
wprintw(win, (NCURSES_CONST char*)"Magier: %d", fmag);
|
|
||||||
if (fmag) {
|
|
||||||
region *r;
|
|
||||||
freset(f, FL_DH);
|
|
||||||
waddnstr(win, " (", -1);
|
|
||||||
for (r = firstregion(f); r != lastregion(f); r = r->next)
|
|
||||||
for (u = r->units; u; u = u->next)
|
|
||||||
if (u->faction == f && has_skill(u, SK_MAGIC)) {
|
|
||||||
if (fval(f, FL_DH))
|
|
||||||
waddnstr(win, ", ", -1);
|
|
||||||
wprintw(win, (NCURSES_CONST char*)"%s(%d): %d", unitid(u), u->number, get_level(u, SK_MAGIC));
|
|
||||||
fset(f, FL_DH);
|
|
||||||
}
|
|
||||||
waddch(win, ')');
|
|
||||||
}
|
|
||||||
wmove(win, 6, 2);
|
|
||||||
wprintw(win, (NCURSES_CONST char*)"Alchemisten: %d", falch);
|
|
||||||
if (falch) {
|
|
||||||
region *r;
|
|
||||||
waddnstr(win, " (", -1);
|
|
||||||
freset(f, FL_DH);
|
|
||||||
for (r = firstregion(f); r != lastregion(f); r = r->next)
|
|
||||||
for (u = r->units; u; u = u->next)
|
|
||||||
if (u->faction == f && has_skill(u, SK_ALCHEMY)) {
|
|
||||||
if (fval(f, FL_DH))
|
|
||||||
waddnstr(win, ", ", -1);
|
|
||||||
wprintw(win, (NCURSES_CONST char*)"%s(%d): %d", unitid(u), u->number, get_level(u, SK_ALCHEMY));
|
|
||||||
fset(f, FL_DH);
|
|
||||||
}
|
|
||||||
waddch(win, ')');
|
|
||||||
}
|
|
||||||
wmove(win, 7, 2);
|
|
||||||
wprintw(win, (NCURSES_CONST char*)"Regionen: %d", f->nregions);
|
|
||||||
wmove(win, 8, 2);
|
|
||||||
wprintw(win, (NCURSES_CONST char*)"eMail: %s", f->email);
|
|
||||||
wmove(win, 10, 2);
|
|
||||||
wprintw(win, (NCURSES_CONST char*)"Neue (R)asse oder (e)Mail, (q)uit");
|
|
||||||
wrefresh(win);
|
|
||||||
|
|
||||||
for(;;) {
|
|
||||||
c = getch();
|
|
||||||
switch (tolower(c)) {
|
|
||||||
case 'q':
|
|
||||||
case 27:
|
|
||||||
delwin(win);
|
|
||||||
touchwin(stdscr);
|
|
||||||
return;
|
|
||||||
case 'r':
|
|
||||||
mywin = newwin(5, SX - 20, (SY - 5) / 2, (SX - 20) / 2);
|
|
||||||
wclear(mywin);
|
|
||||||
/*wborder(mywin, '|', '|', '-', '-', '.', '.', '`', '\'');*/
|
|
||||||
wborder(mywin, 0, 0, 0, 0, 0, 0, 0, 0);
|
|
||||||
Movexy(3, 0);
|
|
||||||
Addstr("< Rasse wählen >");
|
|
||||||
wrefresh(mywin);
|
|
||||||
y = 2;
|
|
||||||
q = 0;
|
|
||||||
wmove(mywin, y, 4);
|
|
||||||
for (i = 1; i < MAXRACES; i++) {
|
|
||||||
sprintf(buf, "%d=%s; ", i, new_race[i]->_name[0]);
|
|
||||||
q += strlen(buf);
|
|
||||||
if (q > SX - 25) {
|
|
||||||
q = strlen(buf);
|
|
||||||
y++;
|
|
||||||
wmove(mywin, y, 4);
|
|
||||||
}
|
|
||||||
wAddstr(buf);
|
|
||||||
}
|
|
||||||
q = map_input(mywin, 2, 1, "Rasse", 1, MAXRACES-1, old_race(f->race));
|
|
||||||
delwin(mywin);
|
|
||||||
touchwin(stdscr);
|
|
||||||
touchwin(win);
|
|
||||||
if (new_race[q] != f->race) {
|
|
||||||
modified = 1;
|
|
||||||
f->race = new_race[q];
|
|
||||||
wmove(win, 1, 2);
|
|
||||||
wprintw(win, (NCURSES_CONST char*)"Rasse: %s", f->race->_name[1]);
|
|
||||||
}
|
|
||||||
refresh();
|
|
||||||
wrefresh(win);
|
|
||||||
break;
|
|
||||||
case 'e':
|
|
||||||
strcpy(buf, my_input(0, 0, 0, "Neue eMail: ", NULL));
|
|
||||||
touchwin(stdscr);
|
|
||||||
touchwin(win);
|
|
||||||
if (strlen(buf)) {
|
|
||||||
strcpy(f->email, buf);
|
|
||||||
wmove(win, 8, 2);
|
|
||||||
wprintw(win, (NCURSES_CONST char*)"eMail: %s", f->email);
|
|
||||||
modified = 1;
|
|
||||||
}
|
|
||||||
refresh();
|
|
||||||
wrefresh(win);
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
int
|
|
||||||
ParteiListe(void)
|
|
||||||
{
|
|
||||||
dbllist *P = NULL, *oben, *unten, *tmp;
|
|
||||||
faction *f;
|
|
||||||
char *s;
|
|
||||||
int x;
|
|
||||||
|
|
||||||
clear();
|
|
||||||
move(1, 1);
|
|
||||||
addstr("generiere Liste...");
|
|
||||||
refresh();
|
|
||||||
|
|
||||||
for (f = factions; f; f = f->next) {
|
|
||||||
if (SX > 104)
|
|
||||||
sprintf(buf, "%4s: %-30.30s %-12.12s %-24.24s", factionid(f),
|
|
||||||
f->name, f->race->_name[1], f->email);
|
|
||||||
else
|
|
||||||
sprintf(buf, "%4s: %-30.30s %-12.12s", factionid(f),
|
|
||||||
f->name, f->race->_name[1]);
|
|
||||||
adddbllist(&P, buf);
|
|
||||||
}
|
|
||||||
|
|
||||||
oben = unten = pointer = P;
|
|
||||||
pline = 0;
|
|
||||||
x = -1;
|
|
||||||
clear();
|
|
||||||
|
|
||||||
movexy(0, SY - 1);
|
|
||||||
hline('-', SX + 1);
|
|
||||||
movexy(0, SY);
|
|
||||||
addstr("<Ret> Daten; /: suchen; D: Löschen; q,Esc: Ende");
|
|
||||||
|
|
||||||
for (;;) {
|
|
||||||
if (x == -1) {
|
|
||||||
clear();
|
|
||||||
if(oben) {
|
|
||||||
for (unten = oben, x = 0; x < SY - 1 && unten->next; x++) {
|
|
||||||
movexy(3, x);
|
|
||||||
addstr(unten->s);
|
|
||||||
unten = unten->next;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
if (x < SY - 1 && unten) { /* extra, weil sonst
|
|
||||||
* unten=NULL nach for() */
|
|
||||||
movexy(3, x);
|
|
||||||
addstr(unten->s);
|
|
||||||
}
|
|
||||||
movexy(0, SY - 1);
|
|
||||||
hline('-', SX + 1);
|
|
||||||
movexy(0, SY);
|
|
||||||
addstr("<Ret> Daten; /: suchen; D: Löschen; q,Esc: Ende");
|
|
||||||
}
|
|
||||||
movexy(0, pline);
|
|
||||||
addstr("->");
|
|
||||||
refresh();
|
|
||||||
x = getch();
|
|
||||||
movexy(0, pline);
|
|
||||||
addstr(" ");
|
|
||||||
switch (x) {
|
|
||||||
case 'q':
|
|
||||||
case 27:
|
|
||||||
return 0;
|
|
||||||
case 13:
|
|
||||||
case 10:
|
|
||||||
{
|
|
||||||
char fno[5];
|
|
||||||
strncpy(fno, pointer->s, 4);
|
|
||||||
fno[4]=0;
|
|
||||||
ModifyPartei(findfaction(atoi36(fno)));
|
|
||||||
}
|
|
||||||
break;
|
|
||||||
case 'D':
|
|
||||||
RemovePartei();
|
|
||||||
return 1;
|
|
||||||
case KEY_DOWN:
|
|
||||||
if (pointer->next) {
|
|
||||||
pline++;
|
|
||||||
pointer = pointer->next;
|
|
||||||
if (pline == SY - 1) {
|
|
||||||
x = 20;
|
|
||||||
do {
|
|
||||||
oben = oben->next;
|
|
||||||
unten = unten->next;
|
|
||||||
x--;
|
|
||||||
pline--;
|
|
||||||
} while (x && unten /*->next*/ );
|
|
||||||
x = -1;
|
|
||||||
}
|
|
||||||
} else
|
|
||||||
beep();
|
|
||||||
break;
|
|
||||||
case KEY_UP:
|
|
||||||
if (pointer->prev) {
|
|
||||||
pline--;
|
|
||||||
pointer = pointer->prev;
|
|
||||||
if (pline < 0) {
|
|
||||||
x = 20;
|
|
||||||
do {
|
|
||||||
oben = oben->prev;
|
|
||||||
unten = unten->prev;
|
|
||||||
x--;
|
|
||||||
pline++;
|
|
||||||
} while (x && oben->prev);
|
|
||||||
x = -1;
|
|
||||||
}
|
|
||||||
} else
|
|
||||||
beep();
|
|
||||||
break;
|
|
||||||
case KEY_NPAGE:
|
|
||||||
case KEY_RIGHT:
|
|
||||||
for (x = 20; x && unten; x--) {
|
|
||||||
oben = oben->next;
|
|
||||||
pointer = pointer->next;
|
|
||||||
unten = unten->next;
|
|
||||||
}
|
|
||||||
x = -1;
|
|
||||||
break;
|
|
||||||
case KEY_PPAGE:
|
|
||||||
case KEY_LEFT:
|
|
||||||
for (x = 20; x && oben->prev; x--) {
|
|
||||||
oben = oben->prev;
|
|
||||||
pointer = pointer->prev;
|
|
||||||
unten = unten->prev;
|
|
||||||
}
|
|
||||||
x = -1;
|
|
||||||
break;
|
|
||||||
case '/':
|
|
||||||
strcpy(buf, my_input(0, 0, 0, "Partei Nr. oder Name: ", NULL));
|
|
||||||
touchwin(stdscr); /* redraw erzwingen */
|
|
||||||
for (tmp = P; tmp; tmp = tmp->next) {
|
|
||||||
s = tmp->s;
|
|
||||||
while (s && strncasecmp(buf, s, strlen(buf))) {
|
|
||||||
s = strchr(s, ' ');
|
|
||||||
if (s)
|
|
||||||
s++;
|
|
||||||
}
|
|
||||||
if (s)
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
if (tmp) {
|
|
||||||
pointer = tmp;
|
|
||||||
pline = 0;
|
|
||||||
if (tmp->prev) {
|
|
||||||
tmp = tmp->prev;
|
|
||||||
pline++;
|
|
||||||
}
|
|
||||||
oben = tmp;
|
|
||||||
x = -1;
|
|
||||||
} else
|
|
||||||
beep();
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
|
@ -1,402 +0,0 @@
|
||||||
/* vi: set ts=2:
|
|
||||||
*
|
|
||||||
*
|
|
||||||
* Eressea PB(E)M host Copyright (C) 1998-2003
|
|
||||||
* 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)
|
|
||||||
*
|
|
||||||
* This program may not be used, modified or distributed without
|
|
||||||
* prior permission by the authors of Eressea.
|
|
||||||
*/
|
|
||||||
|
|
||||||
#include <config.h>
|
|
||||||
#include <curses.h>
|
|
||||||
#include <ctype.h>
|
|
||||||
#include <eressea.h>
|
|
||||||
#include "mapper.h"
|
|
||||||
|
|
||||||
/* kernel includes */
|
|
||||||
#include <kernel/alliance.h>
|
|
||||||
#include <kernel/building.h>
|
|
||||||
#include <kernel/curse.h>
|
|
||||||
#include <kernel/faction.h>
|
|
||||||
#include <kernel/item.h>
|
|
||||||
#include <kernel/plane.h>
|
|
||||||
#include <kernel/race.h>
|
|
||||||
#include <kernel/region.h>
|
|
||||||
#include <kernel/resources.h>
|
|
||||||
#include <kernel/ship.h>
|
|
||||||
#include <kernel/terrainid.h>
|
|
||||||
#include <kernel/unit.h>
|
|
||||||
|
|
||||||
/* modules includes */
|
|
||||||
|
|
||||||
/* util includes */
|
|
||||||
#include <base36.h>
|
|
||||||
|
|
||||||
/* libc includes */
|
|
||||||
#include <stdlib.h>
|
|
||||||
#include <string.h>
|
|
||||||
|
|
||||||
void
|
|
||||||
incat(char *buf, const int n, const size_t bufsize)
|
|
||||||
{
|
|
||||||
char s[10];
|
|
||||||
snprintf(s, 9, "%d", n);
|
|
||||||
sncat(buf, s, bufsize);
|
|
||||||
}
|
|
||||||
|
|
||||||
int rbottom;
|
|
||||||
dbllist *reglist = NULL;
|
|
||||||
static dbllist *runten = NULL, *roben = NULL;
|
|
||||||
#define LASTLINE SY-3
|
|
||||||
/* Letzte Zeile, in der Regionsinfo bei der Karte kommt */
|
|
||||||
|
|
||||||
|
|
||||||
static void
|
|
||||||
ClearRegion(void)
|
|
||||||
{
|
|
||||||
int line;
|
|
||||||
refresh();
|
|
||||||
for (line = 0; line < LASTLINE; line++) {
|
|
||||||
movexy(SX - 38, line);
|
|
||||||
clrtoeol();
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
void
|
|
||||||
ScrollRegList(int dir)
|
|
||||||
{
|
|
||||||
dbllist *hlp;
|
|
||||||
int line;
|
|
||||||
if ((dir == -1 && !runten->next) || (dir == 1 && !roben->prev))
|
|
||||||
return;
|
|
||||||
|
|
||||||
switch (dir) {
|
|
||||||
case -1:
|
|
||||||
for (line = 0; line < SY - 4 && runten->next; line++) {
|
|
||||||
roben = roben->next;
|
|
||||||
runten = runten->next;
|
|
||||||
}
|
|
||||||
ClearRegion();
|
|
||||||
for (line = 0, hlp = roben; line < LASTLINE && hlp; line++, hlp = hlp->next) {
|
|
||||||
movexy(SX - 37, line);
|
|
||||||
addstr(hlp->s);
|
|
||||||
}
|
|
||||||
rbottom = line;
|
|
||||||
break;
|
|
||||||
case 1:
|
|
||||||
for (line = 0; line < SY - 4 && roben->prev; line++) {
|
|
||||||
roben = roben->prev;
|
|
||||||
runten = runten->prev;
|
|
||||||
}
|
|
||||||
ClearRegion();
|
|
||||||
for (line = 0, hlp = roben; line < LASTLINE && hlp; line++, hlp = hlp->next) {
|
|
||||||
movexy(SX - 37, line);
|
|
||||||
addstr(hlp->s);
|
|
||||||
}
|
|
||||||
rbottom = line;
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
void
|
|
||||||
saddstr(char *s)
|
|
||||||
{
|
|
||||||
if (s[0] < ' ')
|
|
||||||
s++;
|
|
||||||
addstr(s);
|
|
||||||
}
|
|
||||||
|
|
||||||
void
|
|
||||||
DisplayRegList(int neu)
|
|
||||||
{
|
|
||||||
int line;
|
|
||||||
dbllist *hlp;
|
|
||||||
ClearRegion();
|
|
||||||
|
|
||||||
if (!reglist) {
|
|
||||||
movexy(SX - 30, 0);
|
|
||||||
addstr("undefiniert");
|
|
||||||
refresh();
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
if (neu)
|
|
||||||
runten = reglist;
|
|
||||||
else
|
|
||||||
runten = roben;
|
|
||||||
|
|
||||||
for (line = 0, hlp = runten; line < LASTLINE && hlp; line++, hlp = hlp->next) {
|
|
||||||
movexy(SX - 37, line);
|
|
||||||
saddstr(hlp->s);
|
|
||||||
if (runten->next)
|
|
||||||
runten = runten->next;
|
|
||||||
}
|
|
||||||
rbottom = line;
|
|
||||||
if (neu)
|
|
||||||
roben = reglist;
|
|
||||||
refresh();
|
|
||||||
}
|
|
||||||
|
|
||||||
void
|
|
||||||
SpecialFunction(region *r)
|
|
||||||
{
|
|
||||||
WINDOW *win;
|
|
||||||
variant zero_effect;
|
|
||||||
zero_effect.i = 0;
|
|
||||||
|
|
||||||
win = openwin(60, 5, "< Specials Regions >");
|
|
||||||
wmove(win, 1, 2);
|
|
||||||
wAddstr("1 - set Godcurse (n.imm), 2 - set Peace-Curse (imm)");
|
|
||||||
wmove(win, 2, 2);
|
|
||||||
wrefresh(win);
|
|
||||||
switch(getch()) {
|
|
||||||
case '1':
|
|
||||||
if (get_curse(r->attribs, ct_find("godcursezone"))==NULL) {
|
|
||||||
curse * c = create_curse(NULL, &r->attribs, ct_find("godcursezone"),
|
|
||||||
100, 100, zero_effect, 0);
|
|
||||||
curse_setflag(c, CURSE_ISNEW|CURSE_IMMUNE);
|
|
||||||
modified = 1;
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
case '2':
|
|
||||||
if(!is_cursed_internal(r->attribs, ct_find("peacezone"))) {
|
|
||||||
curse * c = create_curse(NULL, &r->attribs, ct_find("peacezone"), 100, 2, zero_effect, 0);
|
|
||||||
curse_setflag(c, CURSE_IMMUNE);
|
|
||||||
modified = 1;
|
|
||||||
}
|
|
||||||
default:
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
delwin(win);
|
|
||||||
}
|
|
||||||
|
|
||||||
static int
|
|
||||||
count_all_money(const region * r)
|
|
||||||
{
|
|
||||||
const unit *u;
|
|
||||||
int m = rmoney(r);
|
|
||||||
|
|
||||||
for (u = r->units; u; u = u->next)
|
|
||||||
m += get_money(u);
|
|
||||||
|
|
||||||
return m;
|
|
||||||
}
|
|
||||||
|
|
||||||
char Tchar[MAXRACES] = "ZEOGMTDIHK~uifdwtbrsz";
|
|
||||||
|
|
||||||
void
|
|
||||||
showregion(region * r, char full)
|
|
||||||
{
|
|
||||||
unit *u;
|
|
||||||
building *b;
|
|
||||||
ship *sh;
|
|
||||||
faction *f;
|
|
||||||
int d,pp=0, ecount[MAXRACES], count[MAXRACES];
|
|
||||||
char str[256];
|
|
||||||
int iron = -1, ironlevel = -1,
|
|
||||||
laen = -1, laenlevel = -1,
|
|
||||||
stone = -1, stonelevel = -1;
|
|
||||||
struct rawmaterial *res;
|
|
||||||
|
|
||||||
if (reglist) {
|
|
||||||
freelist(reglist);
|
|
||||||
reglist = NULL;
|
|
||||||
}
|
|
||||||
if (!r) return;
|
|
||||||
|
|
||||||
memset(ecount, 0, sizeof(ecount));
|
|
||||||
strncpy(str, rname(r, NULL), 24);
|
|
||||||
str[24] = 0;
|
|
||||||
sprintf(buf, "%s (%d,%d)", str, r->x, r->y);
|
|
||||||
adddbllist(®list, buf);
|
|
||||||
memset(str,'¯',strlen(buf)+1);
|
|
||||||
str[strlen(buf)+1] = 0;
|
|
||||||
adddbllist(®list, str);
|
|
||||||
|
|
||||||
sprintf(buf, " %hd turns old:", r->age);
|
|
||||||
adddbllist(®list, buf);
|
|
||||||
if (rterrain(r) != T_OCEAN && rterrain(r)!=T_FIREWALL) {
|
|
||||||
sprintf(buf, " %d peasants, %d(%d) silver", rpeasants(r), rmoney(r), count_all_money(r));
|
|
||||||
adddbllist(®list, buf);
|
|
||||||
sprintf(buf, " %d horses, %d/%d/%d ",
|
|
||||||
rhorses(r), rtrees(r,2), rtrees(r,1), rtrees(r,0));
|
|
||||||
if (fval(r,RF_MALLORN))
|
|
||||||
sncat(buf, "mallorn", BUFSIZE);
|
|
||||||
else
|
|
||||||
sncat(buf, "trees", BUFSIZE);
|
|
||||||
adddbllist(®list, buf);
|
|
||||||
|
|
||||||
for(res=r->resources;res;res=res->next) {
|
|
||||||
const item_type * itype = resource2item(res->type->rtype);
|
|
||||||
if(itype == olditemtype[I_IRON]) {
|
|
||||||
iron = res->amount;
|
|
||||||
ironlevel = res->level + itype->construction->minskill - 1;
|
|
||||||
} else if(itype == olditemtype[I_LAEN]) {
|
|
||||||
laen = res->amount;
|
|
||||||
laenlevel = res->level + itype->construction->minskill - 1;
|
|
||||||
} else if(itype == olditemtype[I_STONE]) {
|
|
||||||
stone = res->amount;
|
|
||||||
stonelevel = res->level + itype->construction->minskill - 1;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
strcpy(buf, " ");
|
|
||||||
if(iron != -1) {
|
|
||||||
incat(buf, iron, BUFSIZE);
|
|
||||||
sncat(buf, " iron/", BUFSIZE);
|
|
||||||
incat(buf, ironlevel, BUFSIZE);
|
|
||||||
}
|
|
||||||
if(laen != -1) {
|
|
||||||
if(iron != -1) {
|
|
||||||
sncat(buf, ", ", BUFSIZE);
|
|
||||||
}
|
|
||||||
incat(buf, laen, BUFSIZE);
|
|
||||||
sncat(buf, " laen/", BUFSIZE);
|
|
||||||
incat(buf, laenlevel, BUFSIZE);
|
|
||||||
}
|
|
||||||
if(iron != -1 || laen != -1) {
|
|
||||||
adddbllist(®list, buf);
|
|
||||||
}
|
|
||||||
if(stone != -1) {
|
|
||||||
snprintf(buf, BUFSIZE, " %d stone/%d", stone, stonelevel);
|
|
||||||
adddbllist(®list, buf);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
if (fval(r, RF_CHAOTIC)) {
|
|
||||||
adddbllist(®list, "chaotisch");
|
|
||||||
}
|
|
||||||
if (r->planep) {
|
|
||||||
strcpy(buf,"Plane: ");
|
|
||||||
strncpy(str, r->planep->name, 30);
|
|
||||||
str[30] = 0; sncat(buf, str, BUFSIZE);
|
|
||||||
sncat(buf, " (", BUFSIZE);
|
|
||||||
sncat(buf, r->planep->name, BUFSIZE);
|
|
||||||
sncat(buf, ")", BUFSIZE);
|
|
||||||
adddbllist(®list, buf);
|
|
||||||
}
|
|
||||||
NL(reglist);
|
|
||||||
|
|
||||||
if (rterrain(r) != T_OCEAN) {
|
|
||||||
strcpy(buf, "buildings:");
|
|
||||||
if (!r->buildings) {
|
|
||||||
sncat(buf, " keine", BUFSIZE);
|
|
||||||
adddbllist(®list, buf);
|
|
||||||
} else if (full) {
|
|
||||||
adddbllist(®list, buf);
|
|
||||||
for (b = r->buildings; b; b = b->next) {
|
|
||||||
adddbllist(®list, Buildingid(b));
|
|
||||||
for (u = r->units; u; u = u->next)
|
|
||||||
if (u->building == b && fval(u, UFL_OWNER)) {
|
|
||||||
strncpy(str, u->name, 27);
|
|
||||||
str[27] = 0;
|
|
||||||
sprintf(buf, " %s (%s)", str, unitid(u));
|
|
||||||
adddbllist(®list, buf);
|
|
||||||
strncpy(str, factionname(u->faction), 34);
|
|
||||||
str[34] = 0;
|
|
||||||
sprintf(buf, " %s", str);
|
|
||||||
adddbllist(®list, buf);
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
if (!u)
|
|
||||||
adddbllist(®list, " steht leer");
|
|
||||||
}
|
|
||||||
} else {
|
|
||||||
d = 0;
|
|
||||||
for (b = r->buildings; b; b = b->next)
|
|
||||||
d++;
|
|
||||||
sncat(buf, " ", BUFSIZE);
|
|
||||||
incat(buf, d, BUFSIZE);
|
|
||||||
adddbllist(®list, buf);
|
|
||||||
}
|
|
||||||
NL(reglist);
|
|
||||||
}
|
|
||||||
strcpy(buf, "ships:");
|
|
||||||
if (!r->ships) {
|
|
||||||
sncat(buf, " keine", BUFSIZE);
|
|
||||||
adddbllist(®list, buf);
|
|
||||||
} else if (full) {
|
|
||||||
adddbllist(®list, buf);
|
|
||||||
for (sh = r->ships; sh; sh = sh->next) {
|
|
||||||
adddbllist(®list, Shipid(sh));
|
|
||||||
for (u = r->units; u; u = u->next)
|
|
||||||
if (u->ship == sh && fval(u, UFL_OWNER)) {
|
|
||||||
strncpy(str, u->name, 28);
|
|
||||||
str[28] = 0;
|
|
||||||
sprintf(buf, " %s (%s)", str, unitid(u));
|
|
||||||
adddbllist(®list, buf);
|
|
||||||
sprintf(buf, " %s", factionname(u->faction));
|
|
||||||
adddbllist(®list, buf);
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
if (!u)
|
|
||||||
adddbllist(®list, " ohne Besitzer");
|
|
||||||
}
|
|
||||||
} else {
|
|
||||||
d = 0;
|
|
||||||
for (sh = r->ships; sh; sh = sh->next)
|
|
||||||
d++;
|
|
||||||
sncat(buf, " ", BUFSIZE);
|
|
||||||
incat(buf, d, BUFSIZE);
|
|
||||||
adddbllist(®list, buf);
|
|
||||||
}
|
|
||||||
NL(reglist);
|
|
||||||
|
|
||||||
if (!factions)
|
|
||||||
return;
|
|
||||||
|
|
||||||
strcpy(buf, "factions:");
|
|
||||||
|
|
||||||
if (!r->units) {
|
|
||||||
sncat(buf, " keine", BUFSIZE);
|
|
||||||
adddbllist(®list, buf);
|
|
||||||
} else {
|
|
||||||
adddbllist(®list, buf);
|
|
||||||
|
|
||||||
for (f = factions; f; f = f->next)
|
|
||||||
f->num_people = f->no_units = 0;
|
|
||||||
for (u = r->units; u; u = u->next) {
|
|
||||||
if (u->faction) {
|
|
||||||
u->faction->no_units++;
|
|
||||||
u->faction->num_people += u->number;
|
|
||||||
} else
|
|
||||||
fprintf(stderr,"Unit %s hat keine faction!\n",unitid(u));
|
|
||||||
}
|
|
||||||
for (f = factions; f; f = f->next)
|
|
||||||
if (f->no_units) {
|
|
||||||
if (alliances==NULL) {
|
|
||||||
sprintf(buf, " %-29.29s (%s)", f->name, factionid(f));
|
|
||||||
} else if (f->alliance != NULL) {
|
|
||||||
sprintf(buf, " %-26.26s (%s/%d)", f->name, factionid(f), f->alliance->id);
|
|
||||||
} else {
|
|
||||||
sprintf(buf, " %-26.26s (%s/-)", f->name, factionid(f));
|
|
||||||
}
|
|
||||||
adddbllist(®list, buf);
|
|
||||||
sprintf(buf, " Einheiten: %d; Leute: %d %c",
|
|
||||||
f->no_units, f->num_people, Tchar[old_race(f->race)]);
|
|
||||||
adddbllist(®list, buf);
|
|
||||||
}
|
|
||||||
|
|
||||||
for (d = RC_UNDEAD; d < MAXRACES; d++)
|
|
||||||
ecount[d] = count[d] = 0;
|
|
||||||
for (u = r->units; u; u = u->next) {
|
|
||||||
if (u->race >= new_race[RC_UNDEAD])
|
|
||||||
pp=1;
|
|
||||||
ecount[old_race(u->race)]++;
|
|
||||||
count[old_race(u->race)] += u->number;
|
|
||||||
}
|
|
||||||
if (pp) {
|
|
||||||
NL(reglist);
|
|
||||||
adddbllist(®list, "Monster, Zauber usw.:");
|
|
||||||
for (d = RC_UNDEAD; d < MAXRACES; d++) {
|
|
||||||
if (count[d]) {
|
|
||||||
sprintf(buf, " %s: %d in %d", new_race[d]->_name[0], count[d], ecount[d]);
|
|
||||||
adddbllist(®list, buf);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
NL(reglist);
|
|
||||||
}
|
|
|
@ -1,405 +0,0 @@
|
||||||
/* vi: set ts=2:
|
|
||||||
*
|
|
||||||
*
|
|
||||||
* Eressea PB(E)M host Copyright (C) 1998-2003
|
|
||||||
* 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)
|
|
||||||
*
|
|
||||||
* This program may not be used, modified or distributed without
|
|
||||||
* prior permission by the authors of Eressea.
|
|
||||||
*/
|
|
||||||
|
|
||||||
#include <config.h>
|
|
||||||
#include <curses.h>
|
|
||||||
#include <eressea.h>
|
|
||||||
#include "mapper.h"
|
|
||||||
|
|
||||||
/* kernel includes */
|
|
||||||
#include <building.h>
|
|
||||||
#include <region.h>
|
|
||||||
#include <ship.h>
|
|
||||||
#include <unit.h>
|
|
||||||
|
|
||||||
/* util includes */
|
|
||||||
#include <base36.h>
|
|
||||||
|
|
||||||
/* libc includes */
|
|
||||||
#include <ctype.h>
|
|
||||||
#include <math.h>
|
|
||||||
#include <stdio.h>
|
|
||||||
#include <stdlib.h>
|
|
||||||
#include <string.h>
|
|
||||||
|
|
||||||
void
|
|
||||||
adddbllist(dbllist ** SP, const char *s)
|
|
||||||
{
|
|
||||||
dbllist *S, *X;
|
|
||||||
|
|
||||||
S = calloc(1, sizeof(dbllist) + strlen(s));
|
|
||||||
strcpy(S->s, s);
|
|
||||||
|
|
||||||
S->next = 0;
|
|
||||||
|
|
||||||
if (*SP) {
|
|
||||||
for (X = *SP; X->next; X = X->next);
|
|
||||||
X->next = S;
|
|
||||||
S->prev = X;
|
|
||||||
} else {
|
|
||||||
S->prev = 0;
|
|
||||||
*SP = S;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
char *
|
|
||||||
Unitid(unit * u)
|
|
||||||
{
|
|
||||||
static char buf[NAMESIZE];
|
|
||||||
static char un[30];
|
|
||||||
strncpy(un, u->name, 25);
|
|
||||||
un[25] = 0;
|
|
||||||
sprintf(buf, "%s (%s)", un, unitid(u));
|
|
||||||
return buf;
|
|
||||||
}
|
|
||||||
|
|
||||||
char *
|
|
||||||
Buildingid(building * b)
|
|
||||||
{
|
|
||||||
static char buf[35];
|
|
||||||
sprintf(buf, "\002%s (%s), Größe %d",
|
|
||||||
buildingtype(b->type, b, b->size /*, NULL */),
|
|
||||||
buildingid(b), b->size);
|
|
||||||
return buf;
|
|
||||||
}
|
|
||||||
|
|
||||||
char *
|
|
||||||
Shipid(ship * sh)
|
|
||||||
{
|
|
||||||
static char buf[30];
|
|
||||||
sprintf(buf, "\023%s (%s)", sh->type->name[0], shipid(sh));
|
|
||||||
return buf;
|
|
||||||
}
|
|
||||||
|
|
||||||
char *
|
|
||||||
BuildingName(building * b)
|
|
||||||
{
|
|
||||||
static char buf[35];
|
|
||||||
sprintf(buf, "%s (%s)",
|
|
||||||
buildingtype(b->type, b, b->size /*, NULL*/), buildingid(b));
|
|
||||||
return buf;
|
|
||||||
}
|
|
||||||
|
|
||||||
int
|
|
||||||
map_input(WINDOW * win, int x, int y, const char *text, int mn, int mx, int pre)
|
|
||||||
{
|
|
||||||
char lbuf[10];
|
|
||||||
int val, ch, cx, nw = 0;
|
|
||||||
if (!win) {
|
|
||||||
win = openwin(50, 3, 0);
|
|
||||||
nw = y = 1;
|
|
||||||
x = 2;
|
|
||||||
} else
|
|
||||||
wrefresh(win);
|
|
||||||
do {
|
|
||||||
char zText[160];
|
|
||||||
sprintf(lbuf, "%d", pre);
|
|
||||||
wmove(win, y, x);
|
|
||||||
curs_set(1);
|
|
||||||
sprintf(zText, "%s (%d..%d): %d", text, mn, mx, pre);
|
|
||||||
wprintw(win, (NCURSES_CONST char*)zText);
|
|
||||||
wrefresh(win);
|
|
||||||
/* getyx(win, y, x); */
|
|
||||||
cx = x + strlen(zText)/* getcurx(win) */- strlen(lbuf);
|
|
||||||
val = strlen(lbuf);
|
|
||||||
do {
|
|
||||||
ch = getch();
|
|
||||||
if (ch==8 || ch == KEY_BACKSPACE || ch == KEY_LEFT) {
|
|
||||||
if (val == 0)
|
|
||||||
beep();
|
|
||||||
else {
|
|
||||||
val--;
|
|
||||||
wmove(win, y, val + cx);
|
|
||||||
waddch(win, ' ');
|
|
||||||
wmove(win, y, val + cx);
|
|
||||||
wrefresh(win);
|
|
||||||
}
|
|
||||||
} else if (ch == 10 || ch == 13) {
|
|
||||||
curs_set(0);
|
|
||||||
} else if ((ch == '-' && val == 0) || (ch >= '0' && ch <= '9' && val < 10)) {
|
|
||||||
waddch(win, ch);
|
|
||||||
lbuf[val] = (char) ch;
|
|
||||||
val++;
|
|
||||||
} else
|
|
||||||
beep();
|
|
||||||
wrefresh(win);
|
|
||||||
} while (!(ch == 10 || ch == 13));
|
|
||||||
lbuf[val] = 0;
|
|
||||||
val = atoi(lbuf);
|
|
||||||
if (val < mn || val > mx)
|
|
||||||
beep();
|
|
||||||
} while (val < mn || val > mx);
|
|
||||||
if (nw)
|
|
||||||
delwin(win);
|
|
||||||
return val;
|
|
||||||
}
|
|
||||||
|
|
||||||
void
|
|
||||||
warnung(WINDOW * win, const char *text)
|
|
||||||
{
|
|
||||||
if (!win) {
|
|
||||||
win = openwin(strlen(text) + 4, 3, "< WARNING >");
|
|
||||||
wmove(win, 1, 2);
|
|
||||||
}
|
|
||||||
wprintw(win, (NCURSES_CONST char*)"%s", text);
|
|
||||||
beep();
|
|
||||||
wrefresh(win);
|
|
||||||
getch();
|
|
||||||
delwin(win);
|
|
||||||
}
|
|
||||||
|
|
||||||
boolean
|
|
||||||
yes_no(WINDOW * win, const char *text, const char def)
|
|
||||||
{
|
|
||||||
int ch;
|
|
||||||
boolean mywin = false;
|
|
||||||
if (!win) {
|
|
||||||
win = openwin(strlen(text) + 10, 3, 0);
|
|
||||||
wmove(win, 1, 2);
|
|
||||||
mywin = true;
|
|
||||||
}
|
|
||||||
wprintw(win, (NCURSES_CONST char*)"%s (%c/%c)", text, def == 'j' ? 'J' : 'j', def == 'n' ? 'N' : 'n');
|
|
||||||
wrefresh(win);
|
|
||||||
ch = getch();
|
|
||||||
if (mywin) {
|
|
||||||
delwin(win);
|
|
||||||
}
|
|
||||||
if (ch == 10 || ch == 13)
|
|
||||||
ch = def;
|
|
||||||
return (boolean)((ch == 'j' || ch == 'J' || ch == 'y' || ch == 'Y')?true:false);
|
|
||||||
}
|
|
||||||
|
|
||||||
char *
|
|
||||||
my_input(WINDOW * win, int x, int y, const char *text, const char *def)
|
|
||||||
{
|
|
||||||
static char lbuf[INPUT_BUFSIZE+1];
|
|
||||||
int val, ch, p, nw = 0;
|
|
||||||
|
|
||||||
if (!win) {
|
|
||||||
win = openwin(SX - 10, 3, 0);
|
|
||||||
nw = 1;
|
|
||||||
y = 1;
|
|
||||||
x = 2;
|
|
||||||
}
|
|
||||||
|
|
||||||
wmove(win, y, x);
|
|
||||||
wAddstr(text);
|
|
||||||
if(def) {
|
|
||||||
strcpy(lbuf, def);
|
|
||||||
wAddstr(lbuf);
|
|
||||||
p = x + strlen(text);
|
|
||||||
val = strlen(lbuf);
|
|
||||||
wmove(win, y, p + val);
|
|
||||||
} else {
|
|
||||||
p = x + strlen(text);
|
|
||||||
wmove(win, y, p);
|
|
||||||
val = 0;
|
|
||||||
}
|
|
||||||
wrefresh(win);
|
|
||||||
curs_set(1);
|
|
||||||
wcursyncup(win);
|
|
||||||
|
|
||||||
do {
|
|
||||||
ch = getch();
|
|
||||||
if (ch == KEY_BACKSPACE || ch == KEY_LEFT) {
|
|
||||||
if (val == 0)
|
|
||||||
beep();
|
|
||||||
else {
|
|
||||||
val--;
|
|
||||||
wmove(win, y, val + p);
|
|
||||||
waddch(win, ' ');
|
|
||||||
wmove(win, y, val + p);
|
|
||||||
wrefresh(win);
|
|
||||||
}
|
|
||||||
} else if (ch == '\n') {
|
|
||||||
curs_set(0);
|
|
||||||
} if(val >= INPUT_BUFSIZE) {
|
|
||||||
beep();
|
|
||||||
} else if (isprint(ch)) {
|
|
||||||
waddch(win, ch);
|
|
||||||
lbuf[val] = (char) ch;
|
|
||||||
val++;
|
|
||||||
} else
|
|
||||||
beep();
|
|
||||||
wrefresh(win);
|
|
||||||
} while (!(ch == '\n'));
|
|
||||||
if (nw) {
|
|
||||||
wclear(win);
|
|
||||||
delwin(win);
|
|
||||||
}
|
|
||||||
curs_set(0);
|
|
||||||
lbuf[val] = 0;
|
|
||||||
return lbuf;
|
|
||||||
}
|
|
||||||
|
|
||||||
void
|
|
||||||
insert_selection(selection ** p_sel, selection * prev, const char * str, void * payload)
|
|
||||||
{
|
|
||||||
selection * sel = calloc(sizeof(selection), 1);
|
|
||||||
sel->str = strdup(str);
|
|
||||||
sel->data = payload;
|
|
||||||
if (*p_sel) {
|
|
||||||
selection * s;
|
|
||||||
sel->next = *p_sel;
|
|
||||||
sel->prev = sel->next->prev;
|
|
||||||
sel->next->prev=sel;
|
|
||||||
if (sel->prev) {
|
|
||||||
sel->prev->next = sel;
|
|
||||||
sel->index=sel->prev->index+1;
|
|
||||||
}
|
|
||||||
for (s=sel->next;s;s=s->next) {
|
|
||||||
s->index = s->prev->index+1;
|
|
||||||
}
|
|
||||||
} else {
|
|
||||||
*p_sel = sel;
|
|
||||||
sel->prev = prev;
|
|
||||||
if (prev) sel->index=prev->index+1;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
selection **
|
|
||||||
push_selection(selection ** p_sel, char * str, void * payload)
|
|
||||||
{
|
|
||||||
selection * sel = calloc(sizeof(selection), 1);
|
|
||||||
selection * prev = NULL;
|
|
||||||
sel->str = str;
|
|
||||||
sel->data = payload;
|
|
||||||
while (*p_sel) {
|
|
||||||
prev = *p_sel;
|
|
||||||
p_sel=&prev->next;
|
|
||||||
}
|
|
||||||
*p_sel = sel;
|
|
||||||
if (prev) {
|
|
||||||
sel->prev = prev;
|
|
||||||
sel->index = prev->index+1;
|
|
||||||
}
|
|
||||||
return p_sel;
|
|
||||||
}
|
|
||||||
|
|
||||||
selection *
|
|
||||||
do_selection(selection * sel, const char * title, void (*perform)(selection *, void *), void * data)
|
|
||||||
{
|
|
||||||
WINDOW * wn;
|
|
||||||
boolean update = true;
|
|
||||||
selection *s;
|
|
||||||
selection *top = sel;
|
|
||||||
selection *current = top;
|
|
||||||
int i;
|
|
||||||
int height=0, width=strlen(title)+8;
|
|
||||||
for (s=sel;s;s=s->next) {
|
|
||||||
if (strlen(s->str)>(unsigned)width) width = strlen(s->str);
|
|
||||||
++height;
|
|
||||||
}
|
|
||||||
if (height==0 || width==0) return NULL;
|
|
||||||
if (width+3>SX) width=SX-4;
|
|
||||||
if (height+2>SY) height=SY-2;
|
|
||||||
|
|
||||||
wn = newwin(height+2, width+4, (SY - height - 2) / 2, (SX - width - 4) / 2);
|
|
||||||
|
|
||||||
for (;;) {
|
|
||||||
int input;
|
|
||||||
if (update) {
|
|
||||||
wclear(wn);
|
|
||||||
for (s=top;s!=NULL && top->index+height!=s->index;s=s->next) {
|
|
||||||
i = s->index-top->index;
|
|
||||||
wmove(wn, i + 1, 4);
|
|
||||||
waddnstr(wn, s->str, -1);
|
|
||||||
}
|
|
||||||
/*wborder(wn, '|', '|', '-', '-', '+', '+', '+', '+');*/
|
|
||||||
wborder(wn, 0, 0, 0, 0, 0, 0, 0, 0);
|
|
||||||
wmove(wn, 0, 2);
|
|
||||||
sprintf(buf, "[ %s ]", title);
|
|
||||||
waddnstr(wn, buf, width);
|
|
||||||
update = false;
|
|
||||||
}
|
|
||||||
i = current->index-top->index;
|
|
||||||
wmove(wn, i + 1, 2);
|
|
||||||
waddstr(wn, "->");
|
|
||||||
wmove(wn, i + 1, 4);
|
|
||||||
wattron(wn, A_BOLD);
|
|
||||||
waddnstr(wn, current->str, width);
|
|
||||||
wattroff(wn, A_BOLD);
|
|
||||||
|
|
||||||
wrefresh(wn);
|
|
||||||
|
|
||||||
input = getch();
|
|
||||||
|
|
||||||
wmove(wn, i + 1, 2);
|
|
||||||
waddstr(wn, " ");
|
|
||||||
wmove(wn, i + 1, 4);
|
|
||||||
waddnstr(wn, current->str, width);
|
|
||||||
|
|
||||||
switch (input) {
|
|
||||||
case KEY_DOWN:
|
|
||||||
if (current->next) {
|
|
||||||
current = current->next;
|
|
||||||
if (current->index-height>=top->index) {
|
|
||||||
top=current;
|
|
||||||
update = true;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
break;
|
|
||||||
case KEY_UP:
|
|
||||||
if (current->prev) {
|
|
||||||
if (current==top) {
|
|
||||||
top = sel;
|
|
||||||
while (top->index+height<current->index) top=top->next;
|
|
||||||
update = true;
|
|
||||||
}
|
|
||||||
current = current->prev;
|
|
||||||
}
|
|
||||||
break;
|
|
||||||
case 27:
|
|
||||||
case 'q':
|
|
||||||
delwin(wn);
|
|
||||||
return NULL;
|
|
||||||
case 10:
|
|
||||||
case 13:
|
|
||||||
if (perform) perform(current, data);
|
|
||||||
else {
|
|
||||||
delwin(wn);
|
|
||||||
return current;
|
|
||||||
}
|
|
||||||
break;
|
|
||||||
default:
|
|
||||||
s = current->next;
|
|
||||||
while (s && s!=current) {
|
|
||||||
if (tolower(s->str[0])==tolower(input)) {
|
|
||||||
current = s;
|
|
||||||
update = true;
|
|
||||||
} else {
|
|
||||||
s = s->next;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
FILE *
|
|
||||||
mapperFopen(const char *defName, const char *mode)
|
|
||||||
{
|
|
||||||
char nameBuf[80];
|
|
||||||
FILE *fileP;
|
|
||||||
|
|
||||||
strncpy(nameBuf, my_input(0,0,0,"Ausgabe in File: ", defName), 79);
|
|
||||||
nameBuf[79] = 0;
|
|
||||||
|
|
||||||
fileP = fopen(nameBuf, mode);
|
|
||||||
if(!fileP) {
|
|
||||||
warnung(NULL, "Can't open file for writing");
|
|
||||||
}
|
|
||||||
|
|
||||||
return fileP;
|
|
||||||
}
|
|
||||||
|
|
File diff suppressed because it is too large
Load diff
1733
src/mapper/mapper.c
1733
src/mapper/mapper.c
File diff suppressed because it is too large
Load diff
|
@ -1,79 +0,0 @@
|
||||||
|
|
||||||
M A P P E R
|
|
||||||
¯¯¯¯¯¯¯¯¯¯¯
|
|
||||||
|
|
||||||
Parameter:
|
|
||||||
-ddatadir -> load/save dir
|
|
||||||
-cx,y -> jumpto x,y
|
|
||||||
-t -> Testkeys
|
|
||||||
|
|
||||||
Kurze Erklärung der Funktionen in den einzelnen Bereichen. Sind mehrere Tasten
|
|
||||||
möglich, sind diese mit , getrennt.
|
|
||||||
|
|
||||||
- Überall
|
|
||||||
? Kurz-Hilfe
|
|
||||||
q Beenden
|
|
||||||
<,> Springt an Anfang/Ende der Liste
|
|
||||||
Cursortasten bewegt Cursor/Zeiger; in Listen bewegt Crsr links/rechts
|
|
||||||
den Zeiger +/- 20 Zeilen.
|
|
||||||
^L redraw
|
|
||||||
|
|
||||||
- Karte
|
|
||||||
Shift+Cursor scrollt die Karte unter dem Cursor
|
|
||||||
T Terraform Region (mit Highlight: Terraform alle Regionen)
|
|
||||||
h Highlight Bereich (kein Scrollen möglich! m,p,j, x, y
|
|
||||||
gesperrt)
|
|
||||||
H Highlight bestimmte Merkmale (Partei, bewohnt, Burgen,
|
|
||||||
Schiffe)
|
|
||||||
C Create Block
|
|
||||||
P Neue Partei einfügen
|
|
||||||
D Partei löschen
|
|
||||||
S Daten Speichern
|
|
||||||
e,u Einheiten-Liste
|
|
||||||
p Partei-Liste
|
|
||||||
M Modify-Region (oder Regionen bei Highlight Bereich)
|
|
||||||
x neue X-Koordinate eingeben
|
|
||||||
y neue Y-Koordinate eingeben
|
|
||||||
m,j neue X- und Y-Koordinate eingeben
|
|
||||||
c springe an Position Clipunit
|
|
||||||
E Lösche Clipunit (es wird nicht die Einheit an sich
|
|
||||||
gelöscht, sondern nur Clipunit=0).
|
|
||||||
i,r ausführlichere Regionsinfos rechts
|
|
||||||
[,],PGUP,PGDN Flipt Seiten der langen Regionsinfo
|
|
||||||
q QUIT (mit Sicherheitsabfrage)
|
|
||||||
Speichert nach Abfrage, wenn Daten verändert wurden
|
|
||||||
|
|
||||||
- Einheiten-Liste
|
|
||||||
Cursortasten bewegt Pointer; => bei Einheit, -> bei Burg/Schiff
|
|
||||||
/ Sucht Text
|
|
||||||
n Sucht Text weiter
|
|
||||||
M Einheit verändern
|
|
||||||
N Neue Einheit schaffen
|
|
||||||
g,G Einheit in Clipunit bzw. Schiff in Clipschiff
|
|
||||||
P Clipunit hier einfügen
|
|
||||||
D Clipunit löschen
|
|
||||||
s Clipschiff hier einfügen oder neues Schiff
|
|
||||||
S Clipschiff löschen (Einheiten verlassen Schiff! Ozean!!)
|
|
||||||
b Neues Gebäude
|
|
||||||
B Gebäude löschen (Einheiten verlassen Gebäude)
|
|
||||||
E Lösche Clipunit (es wird nicht die Einheit an sich
|
|
||||||
gelöscht, sondern nur Clipunit=0).
|
|
||||||
U Einheits-Nummer eingeben (falls "auto-detect" nicht
|
|
||||||
klappt
|
|
||||||
q,Esc Ende Einheiten-Liste
|
|
||||||
|
|
||||||
- Regions-Menu
|
|
||||||
Cursortasten bewegt Pointer; => Wert kann verändert werden
|
|
||||||
-> Wert kann nicht verändert werden
|
|
||||||
Return: bei => Wert neu eingeben
|
|
||||||
s Neues Schiff
|
|
||||||
S Schiff löschen
|
|
||||||
b Neues Gebäude
|
|
||||||
B Gebäude löschen
|
|
||||||
q,Esc Ende Regions-Menu
|
|
||||||
|
|
||||||
|
|
||||||
Ansonsten: RTFS :)
|
|
||||||
|
|
||||||
Faroul
|
|
||||||
|
|
|
@ -1,151 +0,0 @@
|
||||||
# Microsoft Developer Studio Project File - Name="mapper" - Package Owner=<4>
|
|
||||||
# Microsoft Developer Studio Generated Build File, Format Version 6.00
|
|
||||||
# ** DO NOT EDIT **
|
|
||||||
|
|
||||||
# TARGTYPE "Win32 (x86) Console Application" 0x0103
|
|
||||||
|
|
||||||
CFG=mapper - Win32 Debug
|
|
||||||
!MESSAGE This is not a valid makefile. To build this project using NMAKE,
|
|
||||||
!MESSAGE use the Export Makefile command and run
|
|
||||||
!MESSAGE
|
|
||||||
!MESSAGE NMAKE /f "mapper.mak".
|
|
||||||
!MESSAGE
|
|
||||||
!MESSAGE You can specify a configuration when running NMAKE
|
|
||||||
!MESSAGE by defining the macro CFG on the command line. For example:
|
|
||||||
!MESSAGE
|
|
||||||
!MESSAGE NMAKE /f "mapper.mak" CFG="mapper - Win32 Debug"
|
|
||||||
!MESSAGE
|
|
||||||
!MESSAGE Possible choices for configuration are:
|
|
||||||
!MESSAGE
|
|
||||||
!MESSAGE "mapper - Win32 Release" (based on "Win32 (x86) Console Application")
|
|
||||||
!MESSAGE "mapper - Win32 Debug" (based on "Win32 (x86) Console Application")
|
|
||||||
!MESSAGE
|
|
||||||
|
|
||||||
# Begin Project
|
|
||||||
# PROP AllowPerConfigDependencies 0
|
|
||||||
# PROP Scc_ProjName ""
|
|
||||||
# PROP Scc_LocalPath ""
|
|
||||||
CPP=cl.exe
|
|
||||||
RSC=rc.exe
|
|
||||||
|
|
||||||
!IF "$(CFG)" == "mapper - Win32 Release"
|
|
||||||
|
|
||||||
# PROP BASE Use_MFC 0
|
|
||||||
# PROP BASE Use_Debug_Libraries 0
|
|
||||||
# PROP BASE Output_Dir "Release"
|
|
||||||
# PROP BASE Intermediate_Dir "Release"
|
|
||||||
# PROP BASE Target_Dir ""
|
|
||||||
# PROP Use_MFC 0
|
|
||||||
# PROP Use_Debug_Libraries 0
|
|
||||||
# PROP Output_Dir "Release"
|
|
||||||
# PROP Intermediate_Dir "Release"
|
|
||||||
# PROP Ignore_Export_Lib 0
|
|
||||||
# PROP Target_Dir ""
|
|
||||||
# ADD BASE CPP /nologo /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c
|
|
||||||
# ADD CPP /nologo /Za /W4 /GX /Z7 /O2 /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c
|
|
||||||
# ADD BASE RSC /l 0x407 /d "NDEBUG"
|
|
||||||
# ADD RSC /l 0x407 /d "NDEBUG"
|
|
||||||
BSC32=bscmake.exe
|
|
||||||
# ADD BASE BSC32 /nologo
|
|
||||||
# ADD BSC32 /nologo
|
|
||||||
LINK32=link.exe
|
|
||||||
# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib /nologo /subsystem:console /machine:I386
|
|
||||||
# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib /nologo /subsystem:console /debug /machine:I386
|
|
||||||
|
|
||||||
!ELSEIF "$(CFG)" == "mapper - Win32 Debug"
|
|
||||||
|
|
||||||
# PROP BASE Use_MFC 0
|
|
||||||
# PROP BASE Use_Debug_Libraries 1
|
|
||||||
# PROP BASE Output_Dir "Debug"
|
|
||||||
# PROP BASE Intermediate_Dir "Debug"
|
|
||||||
# PROP BASE Target_Dir ""
|
|
||||||
# PROP Use_MFC 0
|
|
||||||
# PROP Use_Debug_Libraries 1
|
|
||||||
# PROP Output_Dir "Debug"
|
|
||||||
# PROP Intermediate_Dir "Debug"
|
|
||||||
# PROP Ignore_Export_Lib 0
|
|
||||||
# PROP Target_Dir ""
|
|
||||||
# ADD BASE CPP /nologo /W3 /Gm /GX /Zi /Od /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c
|
|
||||||
# ADD CPP /nologo /Za /W4 /Gm /ZI /Od /I "../common/kernel" /I "../common/gamecode" /I "../common/util" /I "../common" /I ".." /D "_CONSOLE" /D "_MBCS" /D "WIN32" /D "_DEBUG" /FD /c
|
|
||||||
# SUBTRACT CPP /Fr /YX
|
|
||||||
# ADD BASE RSC /l 0x407 /d "_DEBUG"
|
|
||||||
# ADD RSC /l 0x407 /d "_DEBUG"
|
|
||||||
BSC32=bscmake.exe
|
|
||||||
# ADD BASE BSC32 /nologo
|
|
||||||
# ADD BSC32 /nologo /S (*.h ../*.h ../common/kernel/*.h ../common/attributes/*.h ../common/spells/*.h ../common/triggers/*.h ../common/items/*.h ../common/modules/*.h ../common/util/*.h) ../common/util/Debug/*.sbr ../common/items/Debug/*.sbr ../common/attributes/Debug/*.sbr ../common/kernel/Debug/*.sbr ../common/spells/Debug/*.sbr ../common/modules/Debug/*.sbr
|
|
||||||
LINK32=link.exe
|
|
||||||
# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib /nologo /subsystem:console /debug /machine:I386 /pdbtype:sept
|
|
||||||
# ADD LINK32 curses.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib /nologo /subsystem:console /debug /machine:I386 /pdbtype:sept
|
|
||||||
|
|
||||||
!ENDIF
|
|
||||||
|
|
||||||
# Begin Target
|
|
||||||
|
|
||||||
# Name "mapper - Win32 Release"
|
|
||||||
# Name "mapper - Win32 Debug"
|
|
||||||
# Begin Group "Header"
|
|
||||||
|
|
||||||
# PROP Default_Filter "*.h"
|
|
||||||
# Begin Source File
|
|
||||||
|
|
||||||
SOURCE=.\autoseed.h
|
|
||||||
# End Source File
|
|
||||||
# Begin Source File
|
|
||||||
|
|
||||||
SOURCE=.\logging.h
|
|
||||||
# End Source File
|
|
||||||
# Begin Source File
|
|
||||||
|
|
||||||
SOURCE=.\mapper.h
|
|
||||||
# End Source File
|
|
||||||
# Begin Source File
|
|
||||||
|
|
||||||
SOURCE=..\modules\oceannames.h
|
|
||||||
# End Source File
|
|
||||||
# Begin Source File
|
|
||||||
|
|
||||||
SOURCE=..\modules\score.h
|
|
||||||
# End Source File
|
|
||||||
# Begin Source File
|
|
||||||
|
|
||||||
SOURCE=..\common\triggers\triggers.h
|
|
||||||
# End Source File
|
|
||||||
# Begin Source File
|
|
||||||
|
|
||||||
SOURCE=..\modules\weather.h
|
|
||||||
# End Source File
|
|
||||||
# End Group
|
|
||||||
# Begin Source File
|
|
||||||
|
|
||||||
SOURCE=.\autoseed.c
|
|
||||||
# End Source File
|
|
||||||
# Begin Source File
|
|
||||||
|
|
||||||
SOURCE=.\logging.c
|
|
||||||
# End Source File
|
|
||||||
# Begin Source File
|
|
||||||
|
|
||||||
SOURCE=.\map_modify.c
|
|
||||||
# End Source File
|
|
||||||
# Begin Source File
|
|
||||||
|
|
||||||
SOURCE=.\map_partei.c
|
|
||||||
# End Source File
|
|
||||||
# Begin Source File
|
|
||||||
|
|
||||||
SOURCE=.\map_region.c
|
|
||||||
# End Source File
|
|
||||||
# Begin Source File
|
|
||||||
|
|
||||||
SOURCE=.\map_tools.c
|
|
||||||
# End Source File
|
|
||||||
# Begin Source File
|
|
||||||
|
|
||||||
SOURCE=.\map_units.c
|
|
||||||
# End Source File
|
|
||||||
# Begin Source File
|
|
||||||
|
|
||||||
SOURCE=.\mapper.c
|
|
||||||
# End Source File
|
|
||||||
# End Target
|
|
||||||
# End Project
|
|
|
@ -1,127 +0,0 @@
|
||||||
/* vi: set ts=2:
|
|
||||||
*
|
|
||||||
* Eressea PB(E)M host Copyright (C) 1998-2003
|
|
||||||
* 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)
|
|
||||||
*
|
|
||||||
* This program may not be used, modified or distributed without
|
|
||||||
* prior permission by the authors of Eressea.
|
|
||||||
*/
|
|
||||||
|
|
||||||
#ifndef MAPPER_H
|
|
||||||
#define MAPPER_H
|
|
||||||
|
|
||||||
#define INPUT_BUFSIZE 80
|
|
||||||
|
|
||||||
#include <terrain.h>
|
|
||||||
|
|
||||||
#ifndef ISLANDSIZE
|
|
||||||
# define ISLANDSIZE ((rand()%3)?(25+rand()%10):(11+rand()%14))
|
|
||||||
#endif
|
|
||||||
|
|
||||||
#ifndef NCURSES_CONST
|
|
||||||
#ifdef __PDCURSES__
|
|
||||||
# define NCURSES_CONST
|
|
||||||
#else
|
|
||||||
# define NCURSES_CONST const
|
|
||||||
#endif
|
|
||||||
#endif
|
|
||||||
|
|
||||||
struct race;
|
|
||||||
|
|
||||||
typedef struct dbllist dbllist;
|
|
||||||
struct dbllist {
|
|
||||||
dbllist *next, *prev;
|
|
||||||
char s[1];
|
|
||||||
};
|
|
||||||
|
|
||||||
typedef struct tagregion {
|
|
||||||
struct tagregion *next;
|
|
||||||
struct region *r;
|
|
||||||
} tagregion;
|
|
||||||
|
|
||||||
extern tagregion *Tagged;
|
|
||||||
|
|
||||||
extern const struct terrain_type * select_terrain(const struct terrain_type * default_terrain);
|
|
||||||
|
|
||||||
void saddstr(char *s);
|
|
||||||
struct region *SeedPartei(void);
|
|
||||||
void Exit(int level);
|
|
||||||
int showunits(struct region * r);
|
|
||||||
void showregion(struct region * r, char full);
|
|
||||||
int modify_region(struct region * r);
|
|
||||||
void NeueBurg(struct region * r);
|
|
||||||
void NeuesSchiff(struct region * r);
|
|
||||||
void create_island(struct region *r, int n, const struct terrain_type * t);
|
|
||||||
void make_ocean_block(short x, short y);
|
|
||||||
void make_new_block(int x, int y);
|
|
||||||
void moveln(const int x);
|
|
||||||
char *my_input(WINDOW * win, int x, int y, const char *text, const char *def);
|
|
||||||
void make_new_region(short x, short y);
|
|
||||||
int map_input(WINDOW * win, int x, int y, const char *text, int mn, int mx, int pre);
|
|
||||||
boolean yes_no(WINDOW * win, const char *text, const char def);
|
|
||||||
void warnung(WINDOW * win, const char *text);
|
|
||||||
FILE *mapperFopen(const char *defName, const char *mode);
|
|
||||||
void adddbllist(dbllist ** S, const char *s);
|
|
||||||
void ScrollRegList(int dir);
|
|
||||||
void DisplayRegList(int neu);
|
|
||||||
void NeuePartei(struct region * r);
|
|
||||||
void RemovePartei(void);
|
|
||||||
int ParteiListe(void);
|
|
||||||
int koor_distance(int a, int b, int x, int y);
|
|
||||||
void SpecialFunction(struct region *r);
|
|
||||||
|
|
||||||
extern WINDOW *mywin;
|
|
||||||
extern dbllist *reglist;
|
|
||||||
extern int MINX, MINY, MAXX, MAXY, pline;
|
|
||||||
extern dbllist *pointer;
|
|
||||||
extern char modified;
|
|
||||||
extern char *datadir;
|
|
||||||
extern struct unit *clipunit;
|
|
||||||
extern struct region *clipregion;
|
|
||||||
extern struct ship *clipship;
|
|
||||||
#define SX (stdscr->_maxx-1)
|
|
||||||
#define SY (stdscr->_maxy-1)
|
|
||||||
|
|
||||||
#define NL(S) adddbllist(&S," ")
|
|
||||||
|
|
||||||
#define wAddstr(x) waddnstr(win, (NCURSES_CONST char*)x,-1)
|
|
||||||
#define Addstr(x) waddnstr(mywin, (NCURSES_CONST char*)x,-1)
|
|
||||||
#define Movexy(x,y) wmove(mywin,y,x)
|
|
||||||
#define movexy(x,y) move(y,x)
|
|
||||||
/* move(zeile, spalte) ist "verkehrt"... */
|
|
||||||
|
|
||||||
extern WINDOW * openwin(int b, int h, const char* t);
|
|
||||||
|
|
||||||
#define S_SIGWINCH 1
|
|
||||||
|
|
||||||
char *Unitid(struct unit * u);
|
|
||||||
char *Buildingid(struct building * b);
|
|
||||||
char *Shipid(struct ship * sh);
|
|
||||||
char *BuildingName(struct building * b);
|
|
||||||
|
|
||||||
/* map_tools */
|
|
||||||
typedef struct selection {
|
|
||||||
struct selection * next;
|
|
||||||
struct selection * prev;
|
|
||||||
int index;
|
|
||||||
char * str;
|
|
||||||
void * data;
|
|
||||||
} selection;
|
|
||||||
|
|
||||||
struct selection * do_selection(struct selection * sel, const char * title, void (*perform)(struct selection *, void *), void * data);
|
|
||||||
struct selection ** push_selection(struct selection ** p_sel, char * str, void * payload);
|
|
||||||
void insert_selection(struct selection ** p_sel, struct selection * prev, const char * str, void * payload);
|
|
||||||
void block_create(short x1, short y1, int size, char chaotisch, int special, const terrain_type * terrain);
|
|
||||||
|
|
||||||
extern void read_orders(const char * filename);
|
|
||||||
extern int numnewbies;
|
|
||||||
|
|
||||||
#define sncat(b, s, size) strncat ((b), s, size - strlen (b))
|
|
||||||
|
|
||||||
extern struct newfaction * newfactions;
|
|
||||||
|
|
||||||
#endif /* MAPPER_H */
|
|
Loading…
Reference in a new issue