forked from github/server
abgleich beta->dev version
This commit is contained in:
parent
cfdbc32470
commit
b737838e60
|
@ -1,6 +1,4 @@
|
||||||
/* vi: set ts=2:
|
/* vi: set ts=2:
|
||||||
*
|
|
||||||
*
|
|
||||||
* 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)
|
||||||
|
@ -29,6 +27,7 @@
|
||||||
#include <triggers/changerace.h>
|
#include <triggers/changerace.h>
|
||||||
#include <triggers/createcurse.h>
|
#include <triggers/createcurse.h>
|
||||||
#include <triggers/createunit.h>
|
#include <triggers/createunit.h>
|
||||||
|
#include <triggers/gate.h>
|
||||||
#include <triggers/giveitem.h>
|
#include <triggers/giveitem.h>
|
||||||
#include <triggers/killunit.h>
|
#include <triggers/killunit.h>
|
||||||
#include <triggers/removecurse.h>
|
#include <triggers/removecurse.h>
|
||||||
|
@ -50,6 +49,7 @@ register_triggers(void)
|
||||||
tt_register(&tt_changerace);
|
tt_register(&tt_changerace);
|
||||||
tt_register(&tt_createcurse);
|
tt_register(&tt_createcurse);
|
||||||
tt_register(&tt_createunit);
|
tt_register(&tt_createunit);
|
||||||
|
tt_register(&tt_gate);
|
||||||
tt_register(&tt_giveitem);
|
tt_register(&tt_giveitem);
|
||||||
tt_register(&tt_killunit);
|
tt_register(&tt_killunit);
|
||||||
tt_register(&tt_removecurse);
|
tt_register(&tt_removecurse);
|
||||||
|
|
|
@ -881,13 +881,13 @@ resolve_building(void * id) {
|
||||||
}
|
}
|
||||||
|
|
||||||
void
|
void
|
||||||
building_write(const struct building * b, FILE * F)
|
write_building_reference(const struct building * b, FILE * F)
|
||||||
{
|
{
|
||||||
fprintf(F, "%s ", b?itoa36(b->no):"0");
|
fprintf(F, "%s ", b?itoa36(b->no):"0");
|
||||||
}
|
}
|
||||||
|
|
||||||
int
|
int
|
||||||
building_read(struct building ** b, FILE * F)
|
read_building_reference(struct building ** b, FILE * F)
|
||||||
{
|
{
|
||||||
int id;
|
int id;
|
||||||
char zText[10];
|
char zText[10];
|
||||||
|
|
|
@ -135,8 +135,8 @@ extern const struct building_type * oldbuildings[MAXBUILDINGTYPES];
|
||||||
#define NOBUILDING NULL
|
#define NOBUILDING NULL
|
||||||
|
|
||||||
extern void * resolve_building(void * data);
|
extern void * resolve_building(void * data);
|
||||||
extern void building_write(const struct building * b, FILE * F);
|
extern void write_building_reference(const struct building * b, FILE * F);
|
||||||
extern int building_read(struct building ** b, FILE * F);
|
extern int read_building_reference(struct building ** b, FILE * F);
|
||||||
|
|
||||||
extern struct building *findbuilding(int n);
|
extern struct building *findbuilding(int n);
|
||||||
|
|
||||||
|
|
|
@ -320,13 +320,13 @@ void
|
||||||
a_writesiege(const attrib * a, FILE * f)
|
a_writesiege(const attrib * a, FILE * f)
|
||||||
{
|
{
|
||||||
struct building * b = (struct building*)a->data.v;
|
struct building * b = (struct building*)a->data.v;
|
||||||
building_write(b, f);
|
write_building_reference(b, f);
|
||||||
}
|
}
|
||||||
|
|
||||||
int
|
int
|
||||||
a_readsiege(attrib * a, FILE * f)
|
a_readsiege(attrib * a, FILE * f)
|
||||||
{
|
{
|
||||||
return building_read((struct building**)&a->data.v, f);
|
return read_building_reference((struct building**)&a->data.v, f);
|
||||||
}
|
}
|
||||||
|
|
||||||
attrib_type at_siege = {
|
attrib_type at_siege = {
|
||||||
|
|
|
@ -8,17 +8,20 @@
|
||||||
|
|
||||||
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.
|
||||||
|
*/
|
||||||
*/
|
|
||||||
#include <config.h>
|
#include <config.h>
|
||||||
#include <eressea.h>
|
#include <eressea.h>
|
||||||
#include "gmcmd.h"
|
#include "gmcmd.h"
|
||||||
#include "command.h"
|
#include "command.h"
|
||||||
|
|
||||||
|
/* misc includes */
|
||||||
#include <items/demonseye.h>
|
#include <items/demonseye.h>
|
||||||
#include <attributes/key.h>
|
#include <attributes/key.h>
|
||||||
|
#include <triggers/gate.h>
|
||||||
|
|
||||||
/* kernel includes */
|
/* kernel includes */
|
||||||
|
#include <building.h>
|
||||||
#include <faction.h>
|
#include <faction.h>
|
||||||
#include <item.h>
|
#include <item.h>
|
||||||
#include <plane.h>
|
#include <plane.h>
|
||||||
|
@ -27,9 +30,10 @@
|
||||||
#include <unit.h>
|
#include <unit.h>
|
||||||
|
|
||||||
/* util includes */
|
/* util includes */
|
||||||
#include <base36.h>
|
|
||||||
#include <umlaut.h>
|
|
||||||
#include <attrib.h>
|
#include <attrib.h>
|
||||||
|
#include <base36.h>
|
||||||
|
#include <event.h>
|
||||||
|
#include <umlaut.h>
|
||||||
|
|
||||||
/* libc includes */
|
/* libc includes */
|
||||||
#include <stdlib.h>
|
#include <stdlib.h>
|
||||||
|
@ -122,6 +126,34 @@ gm_create(const char * str, void * data, const char * cmd)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
** GM: GATE <id> <x> <y>
|
||||||
|
** requires: permission-key "gmgate"
|
||||||
|
**/
|
||||||
|
static void
|
||||||
|
gm_gate(const char * str, void * data, const char * cmd)
|
||||||
|
{
|
||||||
|
unit * u = (unit*)data;
|
||||||
|
const struct plane * p = rplane(u->region);
|
||||||
|
int id = atoi36(igetstrtoken(str));
|
||||||
|
int x = rel_to_abs(p, u->faction, atoi(getstrtoken()), 0);
|
||||||
|
int y = rel_to_abs(p, u->faction, atoi(getstrtoken()), 1);
|
||||||
|
region * r = findregion(x, y);
|
||||||
|
building * b = findbuilding(id);
|
||||||
|
if (b==NULL || r==NULL || p!=rplane(b->region) || p!=rplane(r)) {
|
||||||
|
mistake(u, cmd, "Dieses Gebäude kann die Einheit nicht umwandeln.\n", 0);
|
||||||
|
return;
|
||||||
|
} else {
|
||||||
|
/* checking permissions */
|
||||||
|
attrib * permissions = a_find(u->faction->attribs, &at_permissions);
|
||||||
|
if (!permissions || !find_key((attrib*)permissions->data.v, atoi36("gmgate"))) return;
|
||||||
|
else {
|
||||||
|
add_trigger(&u->attribs, "timer", trigger_gate(b, r));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
** GM: TERRAFORM <terrain> <x> <y>
|
** GM: TERRAFORM <terrain> <x> <y>
|
||||||
** requires: permission-key "gmterf"
|
** requires: permission-key "gmterf"
|
||||||
|
@ -137,7 +169,7 @@ gm_terraform(const char * str, void * data, const char * cmd)
|
||||||
region * r = findregion(x, y);
|
region * r = findregion(x, y);
|
||||||
terrain_t t;
|
terrain_t t;
|
||||||
if (r==NULL || p!=rplane(r)) {
|
if (r==NULL || p!=rplane(r)) {
|
||||||
mistake(u, cmd, "Diese Regon kann die Einheit nicht umwandeln.\n", 0);
|
mistake(u, cmd, "Diese Region kann die Einheit nicht umwandeln.\n", 0);
|
||||||
return;
|
return;
|
||||||
} else {
|
} else {
|
||||||
/* checking permissions */
|
/* checking permissions */
|
||||||
|
@ -300,6 +332,7 @@ init_gmcmd(void)
|
||||||
add_command(&g_keys, &g_cmds, "gm", &gm_command);
|
add_command(&g_keys, &g_cmds, "gm", &gm_command);
|
||||||
add_command(&g_keys, &g_cmds, "terraform", &gm_terraform);
|
add_command(&g_keys, &g_cmds, "terraform", &gm_terraform);
|
||||||
add_command(&g_keys, &g_cmds, "create", &gm_create);
|
add_command(&g_keys, &g_cmds, "create", &gm_create);
|
||||||
|
add_command(&g_keys, &g_cmds, "gate", &gm_gate);
|
||||||
add_command(&g_keys, &g_cmds, "give", &gm_give);
|
add_command(&g_keys, &g_cmds, "give", &gm_give);
|
||||||
add_command(&g_keys, &g_cmds, "take", &gm_take);
|
add_command(&g_keys, &g_cmds, "take", &gm_take);
|
||||||
add_command(&g_keys, &g_cmds, "teleport", &gm_teleport);
|
add_command(&g_keys, &g_cmds, "teleport", &gm_teleport);
|
||||||
|
@ -403,6 +436,7 @@ gm_addquest(const char * email, const char * name, int radius, unsigned int flag
|
||||||
a = a_add(&f->attribs, a_new(&at_permissions));
|
a = a_add(&f->attribs, a_new(&at_permissions));
|
||||||
|
|
||||||
a_add((attrib**)&a->data.v, make_key(atoi36("gmterf")));
|
a_add((attrib**)&a->data.v, make_key(atoi36("gmterf")));
|
||||||
|
a_add((attrib**)&a->data.v, make_key(atoi36("gmgate")));
|
||||||
a_add((attrib**)&a->data.v, make_key(atoi36("gmtele")));
|
a_add((attrib**)&a->data.v, make_key(atoi36("gmtele")));
|
||||||
a_add((attrib**)&a->data.v, make_key(atoi36("gmgive")));
|
a_add((attrib**)&a->data.v, make_key(atoi36("gmgive")));
|
||||||
a_add((attrib**)&a->data.v, make_key(atoi36("gmskil")));
|
a_add((attrib**)&a->data.v, make_key(atoi36("gmskil")));
|
||||||
|
|
|
@ -0,0 +1,99 @@
|
||||||
|
#include <config.h>
|
||||||
|
#include <eressea.h>
|
||||||
|
#include "gate.h"
|
||||||
|
|
||||||
|
/* kernel includes */
|
||||||
|
#include <building.h>
|
||||||
|
#include <region.h>
|
||||||
|
#include <unit.h>
|
||||||
|
|
||||||
|
/* util includes */
|
||||||
|
#include <event.h>
|
||||||
|
#include <log.h>
|
||||||
|
|
||||||
|
/* libc includes */
|
||||||
|
#include <stdlib.h>
|
||||||
|
|
||||||
|
typedef struct gate_data {
|
||||||
|
struct building * gate;
|
||||||
|
struct region * target;
|
||||||
|
} gate_data;
|
||||||
|
|
||||||
|
static int
|
||||||
|
gate_handle(trigger * t, void * data)
|
||||||
|
{
|
||||||
|
/* call an event handler on gate.
|
||||||
|
* data.v -> ( variant event, int timer )
|
||||||
|
*/
|
||||||
|
gate_data * gd = (gate_data*)t->data.v;
|
||||||
|
struct building * b = gd->gate;
|
||||||
|
struct region * r = gd->target;
|
||||||
|
|
||||||
|
if (b && r) {
|
||||||
|
unit ** up = &b->region->units;
|
||||||
|
while (*up) {
|
||||||
|
unit * u = *up;
|
||||||
|
if (u->building==b) move_unit(u, r, NULL);
|
||||||
|
if (*up==u) up = &u->next;
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
log_error(("could not perform gate::handle()\n"));
|
||||||
|
return -1;
|
||||||
|
}
|
||||||
|
unused(data);
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
static void
|
||||||
|
gate_write(const trigger * t, FILE * F)
|
||||||
|
{
|
||||||
|
gate_data * gd = (gate_data*)t->data.v;
|
||||||
|
building * b = gd->gate;
|
||||||
|
region * r = gd->target;
|
||||||
|
|
||||||
|
write_building_reference(b, F);
|
||||||
|
write_region_reference(r, F);
|
||||||
|
}
|
||||||
|
|
||||||
|
static int
|
||||||
|
gate_read(trigger * t, FILE * F)
|
||||||
|
{
|
||||||
|
gate_data * gd = (gate_data*)t->data.v;
|
||||||
|
|
||||||
|
read_building_reference(&gd->gate, F);
|
||||||
|
read_region_reference(&gd->target, F);
|
||||||
|
|
||||||
|
return 1;
|
||||||
|
}
|
||||||
|
|
||||||
|
static void
|
||||||
|
gate_init(trigger * t)
|
||||||
|
{
|
||||||
|
t->data.v = calloc(sizeof(gate_data), 1);
|
||||||
|
}
|
||||||
|
|
||||||
|
static void
|
||||||
|
gate_done(trigger * t)
|
||||||
|
{
|
||||||
|
free(t->data.v);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
struct trigger_type tt_gate = {
|
||||||
|
"gate",
|
||||||
|
gate_init,
|
||||||
|
gate_done,
|
||||||
|
gate_handle,
|
||||||
|
gate_write,
|
||||||
|
gate_read
|
||||||
|
};
|
||||||
|
|
||||||
|
trigger *
|
||||||
|
trigger_gate(building * b, region * target)
|
||||||
|
{
|
||||||
|
trigger * t = t_new(&tt_gate);
|
||||||
|
gate_data * td = (gate_data*)t->data.v;
|
||||||
|
td->gate = b;
|
||||||
|
td->target = target;
|
||||||
|
return t;
|
||||||
|
}
|
|
@ -0,0 +1,26 @@
|
||||||
|
/* 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 - 2001 | 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.
|
||||||
|
*/
|
||||||
|
|
||||||
|
#ifndef GATE_H
|
||||||
|
#define GATE_H
|
||||||
|
|
||||||
|
/* all types we use are defined here to reduce dependencies */
|
||||||
|
struct trigger_type;
|
||||||
|
struct trigger;
|
||||||
|
struct region;
|
||||||
|
struct building;
|
||||||
|
|
||||||
|
extern struct trigger_type tt_gate;
|
||||||
|
|
||||||
|
extern struct trigger * trigger_gate(struct building * b, struct region * r);
|
||||||
|
|
||||||
|
#endif
|
|
@ -29,6 +29,7 @@
|
||||||
#include <triggers/changerace.h>
|
#include <triggers/changerace.h>
|
||||||
#include <triggers/createcurse.h>
|
#include <triggers/createcurse.h>
|
||||||
#include <triggers/createunit.h>
|
#include <triggers/createunit.h>
|
||||||
|
#include <triggers/gate.h>
|
||||||
#include <triggers/giveitem.h>
|
#include <triggers/giveitem.h>
|
||||||
#include <triggers/killunit.h>
|
#include <triggers/killunit.h>
|
||||||
#include <triggers/removecurse.h>
|
#include <triggers/removecurse.h>
|
||||||
|
@ -50,6 +51,7 @@ init_triggers(void)
|
||||||
tt_register(&tt_changerace);
|
tt_register(&tt_changerace);
|
||||||
tt_register(&tt_createcurse);
|
tt_register(&tt_createcurse);
|
||||||
tt_register(&tt_createunit);
|
tt_register(&tt_createunit);
|
||||||
|
tt_register(&tt_gate);
|
||||||
tt_register(&tt_giveitem);
|
tt_register(&tt_giveitem);
|
||||||
tt_register(&tt_killunit);
|
tt_register(&tt_killunit);
|
||||||
tt_register(&tt_removecurse);
|
tt_register(&tt_removecurse);
|
||||||
|
|
|
@ -21,6 +21,8 @@
|
||||||
#include <config.h>
|
#include <config.h>
|
||||||
#include <eressea.h>
|
#include <eressea.h>
|
||||||
|
|
||||||
|
/* misc includes */
|
||||||
|
#include <attributes/key.h>
|
||||||
#include <modules/xmas2000.h>
|
#include <modules/xmas2000.h>
|
||||||
#include <modules/museum.h>
|
#include <modules/museum.h>
|
||||||
|
|
||||||
|
@ -1322,18 +1324,15 @@ extern attrib * make_atpermissions(void);
|
||||||
extern struct attrib_type at_permissions;
|
extern struct attrib_type at_permissions;
|
||||||
|
|
||||||
static void
|
static void
|
||||||
make_gms(void)
|
update_gms(void)
|
||||||
{
|
{
|
||||||
faction * f = findfaction(atoi36("rr"));
|
faction * f;
|
||||||
if (f) {
|
for (f=factions;f;f=f->next) {
|
||||||
attrib * a = a_find(f->attribs, &at_permissions);
|
attrib * a = a_find(f->attribs, &at_permissions);
|
||||||
if (!a) {
|
if (a) {
|
||||||
item_type * itype;
|
if (!find_key((attrib*)a->data.v, atoi36("gmgate"))) {
|
||||||
a = a_add(&f->attribs, make_atpermissions());
|
a_add((attrib**)&a->data.v, make_key(atoi36("gmgate")));
|
||||||
for (itype=itemtypes;itype;itype=itype->next) {
|
|
||||||
a_add((attrib**)&a->data.v, make_atgmcreate(itype));
|
|
||||||
}
|
}
|
||||||
a_add((attrib**)&a->data.v, make_key(atoi36("gmtf")));
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -2245,8 +2244,7 @@ korrektur(void)
|
||||||
#ifdef TEST_GM_COMMANDS
|
#ifdef TEST_GM_COMMANDS
|
||||||
setup_gm_faction();
|
setup_gm_faction();
|
||||||
#endif
|
#endif
|
||||||
make_gms();
|
update_gms();
|
||||||
/* Wieder entfernen! */
|
|
||||||
verify_owners(false);
|
verify_owners(false);
|
||||||
/* fix_herbtypes(); */
|
/* fix_herbtypes(); */
|
||||||
#ifdef CONVERT_TRIGGER
|
#ifdef CONVERT_TRIGGER
|
||||||
|
|
|
@ -29,6 +29,7 @@
|
||||||
#include <triggers/changerace.h>
|
#include <triggers/changerace.h>
|
||||||
#include <triggers/createcurse.h>
|
#include <triggers/createcurse.h>
|
||||||
#include <triggers/createunit.h>
|
#include <triggers/createunit.h>
|
||||||
|
#include <triggers/gate.h>
|
||||||
#include <triggers/giveitem.h>
|
#include <triggers/giveitem.h>
|
||||||
#include <triggers/killunit.h>
|
#include <triggers/killunit.h>
|
||||||
#include <triggers/removecurse.h>
|
#include <triggers/removecurse.h>
|
||||||
|
@ -50,6 +51,7 @@ init_triggers(void)
|
||||||
tt_register(&tt_changerace);
|
tt_register(&tt_changerace);
|
||||||
tt_register(&tt_createcurse);
|
tt_register(&tt_createcurse);
|
||||||
tt_register(&tt_createunit);
|
tt_register(&tt_createunit);
|
||||||
|
tt_register(&tt_gate);
|
||||||
tt_register(&tt_giveitem);
|
tt_register(&tt_giveitem);
|
||||||
tt_register(&tt_killunit);
|
tt_register(&tt_killunit);
|
||||||
tt_register(&tt_removecurse);
|
tt_register(&tt_removecurse);
|
||||||
|
|
|
@ -8,5 +8,4 @@
|
||||||
|
|
||||||
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.
|
||||||
|
*/
|
||||||
*/
|
|
||||||
|
|
|
@ -146,7 +146,7 @@ void
|
||||||
warnung(WINDOW * win, const char *text)
|
warnung(WINDOW * win, const char *text)
|
||||||
{
|
{
|
||||||
if (!win) {
|
if (!win) {
|
||||||
win = openwin(strlen(text) + 4, 3, "< WARNUNG >");
|
win = openwin(strlen(text) + 4, 3, "< WARNING >");
|
||||||
wmove(win, 1, 2);
|
wmove(win, 1, 2);
|
||||||
}
|
}
|
||||||
wprintw(win, (NCURSES_CONST char*)"%s", text);
|
wprintw(win, (NCURSES_CONST char*)"%s", text);
|
||||||
|
@ -185,7 +185,8 @@ my_input(WINDOW * win, int x, int y, const char *text, const char *def)
|
||||||
|
|
||||||
if (!win) {
|
if (!win) {
|
||||||
win = openwin(SX - 10, 3, 0);
|
win = openwin(SX - 10, 3, 0);
|
||||||
y = nw = 1;
|
nw = 1;
|
||||||
|
y = 1;
|
||||||
x = 2;
|
x = 2;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -230,8 +231,10 @@ my_input(WINDOW * win, int x, int y, const char *text, const char *def)
|
||||||
beep();
|
beep();
|
||||||
wrefresh(win);
|
wrefresh(win);
|
||||||
} while (!(ch == '\n'));
|
} while (!(ch == '\n'));
|
||||||
if (nw)
|
if (nw) {
|
||||||
|
wclear(win);
|
||||||
delwin(win);
|
delwin(win);
|
||||||
|
}
|
||||||
curs_set(0);
|
curs_set(0);
|
||||||
lbuf[val] = 0;
|
lbuf[val] = 0;
|
||||||
return lbuf;
|
return lbuf;
|
||||||
|
@ -367,3 +370,21 @@ do_selection(selection * sel, const char * title, void (*perform)(selection *, v
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
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;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
|
@ -17,6 +17,7 @@
|
||||||
#define BOOL_DEFINED
|
#define BOOL_DEFINED
|
||||||
/* wenn config.h nicht vor curses included wird, kompiliert es unter windows nicht */
|
/* wenn config.h nicht vor curses included wird, kompiliert es unter windows nicht */
|
||||||
#include <config.h>
|
#include <config.h>
|
||||||
|
#include <stdio.h>
|
||||||
#include <curses.h>
|
#include <curses.h>
|
||||||
#include <eressea.h>
|
#include <eressea.h>
|
||||||
#include "mapper.h"
|
#include "mapper.h"
|
||||||
|
@ -764,6 +765,25 @@ movearound(int rx, int ry) {
|
||||||
}
|
}
|
||||||
ch=-9;
|
ch=-9;
|
||||||
} break;
|
} break;
|
||||||
|
case 'W':
|
||||||
|
if(Tagged) {
|
||||||
|
FILE *mapFile = mapperFopen("mapper.map","w");
|
||||||
|
const char *tname;
|
||||||
|
if(mapFile) {
|
||||||
|
tag=Tagged;
|
||||||
|
while(tag) {
|
||||||
|
fprintf(mapFile, "REGION %d %d\n",tag->r->x, tag->r->y);
|
||||||
|
if(r_isforest(tag->r)) {
|
||||||
|
tname = "forest";
|
||||||
|
} else {
|
||||||
|
tname = terrain[rterrain(tag->r)].name;
|
||||||
|
}
|
||||||
|
fprintf(mapFile, "\"%s\"; Terrain\n", locale_string(NULL, tname));
|
||||||
|
tag=tag->next;
|
||||||
|
}
|
||||||
|
fclose(mapFile);
|
||||||
|
}
|
||||||
|
} break;
|
||||||
case 'G':
|
case 'G':
|
||||||
rx=tx; ry=ty;
|
rx=tx; ry=ty;
|
||||||
recalc_everything(&x, &y, &rx, &ry);
|
recalc_everything(&x, &y, &rx, &ry);
|
||||||
|
|
|
@ -61,6 +61,7 @@ void make_new_region(int x, int y);
|
||||||
int map_input(WINDOW * win, int x, int y, const char *text, int mn, int mx, int pre);
|
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);
|
boolean yes_no(WINDOW * win, const char *text, const char def);
|
||||||
void warnung(WINDOW * win, const char *text);
|
void warnung(WINDOW * win, const char *text);
|
||||||
|
FILE *mapperFopen(const char *defName, const char *mode);
|
||||||
void adddbllist(dbllist ** S, const char *s);
|
void adddbllist(dbllist ** S, const char *s);
|
||||||
void ScrollRegList(int dir);
|
void ScrollRegList(int dir);
|
||||||
void DisplayRegList(int neu);
|
void DisplayRegList(int neu);
|
||||||
|
|
Loading…
Reference in New Issue