forked from github/server
Merge remote-tracking branch 'upstream/develop' into develop
This commit is contained in:
commit
88a6813358
|
@ -13,5 +13,6 @@ return {
|
|||
require('eressea.ponnuki'),
|
||||
require('eressea.astral'),
|
||||
require('eressea.locales'),
|
||||
require('eressea.jsreport'),
|
||||
require('eressea.ents')
|
||||
}
|
||||
|
|
|
@ -0,0 +1,18 @@
|
|||
local pkg = {}
|
||||
|
||||
function pkg.update()
|
||||
local factions = { '777', '1wpy', 'd08a', 'hani', 'scaL' }
|
||||
for id in ipairs(factions) do
|
||||
local f = faction.get(id)
|
||||
if f then
|
||||
local o = f.options
|
||||
local bit = (math.floor(o / 8) % 2)
|
||||
if bit==0 then
|
||||
eressea.log.debug("enable JSON report for " .. tostring(f))
|
||||
f.options = o + 8
|
||||
end
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
return pkg
|
|
@ -79,6 +79,7 @@ set (ERESSEA_SRC
|
|||
skill.c
|
||||
json.c
|
||||
creport.c
|
||||
jsreport.c
|
||||
economy.c
|
||||
give.c
|
||||
items.c
|
||||
|
|
|
@ -25,6 +25,7 @@
|
|||
#include "report.h"
|
||||
#include "items.h"
|
||||
#include "creport.h"
|
||||
#include "jsreport.h"
|
||||
#include "names.h"
|
||||
#include "wormhole.h"
|
||||
#include "spells.h"
|
||||
|
@ -56,6 +57,7 @@ void game_init(void)
|
|||
|
||||
register_nr();
|
||||
register_cr();
|
||||
register_jsreport();
|
||||
|
||||
register_races();
|
||||
register_spells();
|
||||
|
|
|
@ -0,0 +1,80 @@
|
|||
#include "reports.h"
|
||||
#include "jsreport.h"
|
||||
#include "kernel/region.h"
|
||||
#include "kernel/terrain.h"
|
||||
#include "kernel/terrainid.h"
|
||||
#include "kernel/config.h"
|
||||
|
||||
#include <limits.h>
|
||||
#include <stdio.h>
|
||||
#include <math.h>
|
||||
|
||||
static void coor_to_tiled(int *x, int *y) {
|
||||
*y = -*y;
|
||||
*x = *x - (*y + 1) / 2;
|
||||
}
|
||||
|
||||
static void coor_from_tiled(int *x, int *y) {
|
||||
*x = *x + (*y + 1) / 2;
|
||||
*y = -*y;
|
||||
}
|
||||
|
||||
static int report_json(const char *filename, report_context * ctx, const char *charset)
|
||||
{
|
||||
if (get_param_int(global.parameters, "feature.jsreport.enable", 0) != 0) {
|
||||
FILE * F = fopen(filename, "w");
|
||||
if (F) {
|
||||
int x, y, minx = INT_MAX, maxx = INT_MIN, miny = INT_MAX, maxy = INT_MIN;
|
||||
seen_region *sr;
|
||||
region *r;
|
||||
/* traverse all regions */
|
||||
for (sr = NULL, r = ctx->first; sr == NULL && r != ctx->last; r = r->next) {
|
||||
sr = find_seen(ctx->seen, r);
|
||||
}
|
||||
for (; sr != NULL; sr = sr->next) {
|
||||
int tx = sr->r->x;
|
||||
int ty = sr->r->y;
|
||||
coor_to_tiled(&tx, &ty);
|
||||
if (ty < miny) miny = ty;
|
||||
else if (ty > maxy) maxy = ty;
|
||||
if (tx < minx) minx = tx;
|
||||
else if (tx > maxx) maxx = tx;
|
||||
}
|
||||
if (maxx >= minx && maxy >= miny) {
|
||||
int w = maxx - minx + 1, h = maxy - miny + 1;
|
||||
fputs("{ \"orientation\":\"hexagonal\",\"staggeraxis\":\"y\",", F);
|
||||
fprintf(F, "\"staggerindex\":\"%s\", \"height\":%d, \"width\":%d, \"layers\":[", (miny & 1) ? "odd" : "even", h, w);
|
||||
fprintf(F, "{ \"height\":%d, \"width\":%d, ", h, w);
|
||||
fputs("\"visible\":true, \"opacity\":1, \"type\":\"tilelayer\", \"name\":\"terrain\", \"x\":0, \"y\":0, \"data\":[", F);
|
||||
for (y = miny; y <= maxy; ++y) {
|
||||
for (x = minx; x <= maxx; ++x) {
|
||||
int data = 0;
|
||||
int tx = x, ty = y;
|
||||
coor_from_tiled(&tx, &ty);
|
||||
r = findregion(tx, ty);
|
||||
if (r) {
|
||||
sr = find_seen(ctx->seen, r);
|
||||
if (sr) {
|
||||
terrain_t ter = oldterrain(r->terrain);
|
||||
data = 1 + (int)ter;
|
||||
}
|
||||
}
|
||||
fprintf(F, "%d", data);
|
||||
if (x != maxx || y != maxy) fputs(", ", F);
|
||||
}
|
||||
}
|
||||
fputs("]}], \"tilesets\": [{\"firstgid\": 1, \"image\": \"magellan.png\", \"imageheight\": 192, \"imagewidth\": 256,"
|
||||
"\"margin\": 0, \"name\": \"hextiles\", \"properties\": { }, \"spacing\": 0, "
|
||||
"\"tileheight\" : 64, \"tilewidth\" : 64 }], \"tilewidth\": 64, \"tileheight\": 96}", F);
|
||||
}
|
||||
return 0;
|
||||
}
|
||||
return ferror(F);
|
||||
}
|
||||
return 0;
|
||||
}
|
||||
|
||||
void register_jsreport(void)
|
||||
{
|
||||
register_reporttype("json", &report_json, 1 << O_JSON);
|
||||
}
|
|
@ -0,0 +1,24 @@
|
|||
#pragma once
|
||||
/*
|
||||
+-------------------+ Christian Schlittchen <corwin@amber.kn-bremen.de>
|
||||
| | Enno Rehling <enno@eressea.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.
|
||||
*/
|
||||
#ifndef H_GC_JSREPORT
|
||||
#define H_GC_JSREPORT
|
||||
#ifdef __cplusplus
|
||||
extern "C" {
|
||||
#endif
|
||||
|
||||
void register_jsreport(void);
|
||||
|
||||
#ifdef __cplusplus
|
||||
}
|
||||
#endif
|
||||
#endif
|
|
@ -1262,7 +1262,10 @@ faction *readfaction(struct gamedata * data)
|
|||
/* Kein Report eingestellt, Fehler */
|
||||
f->options |= n;
|
||||
}
|
||||
|
||||
if (data->version < JSON_REPORT_VERSION) {
|
||||
/* mistakes were made in the past*/
|
||||
f->options &= ~want(O_JSON);
|
||||
}
|
||||
sfp = &f->allies;
|
||||
for (;;) {
|
||||
int aid = 0;
|
||||
|
|
|
@ -35,7 +35,7 @@ OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
|
|||
#include <stdlib.h>
|
||||
#include <string.h>
|
||||
|
||||
#define MAXTERRAINS 20
|
||||
#define MAXTERRAINS 14
|
||||
|
||||
const char *terraindata[MAXTERRAINS] = {
|
||||
"ocean",
|
||||
|
@ -46,19 +46,12 @@ const char *terraindata[MAXTERRAINS] = {
|
|||
"mountain",
|
||||
"glacier",
|
||||
"firewall",
|
||||
NULL, /* dungeon module */
|
||||
NULL, /* former grassland */
|
||||
"fog",
|
||||
"thickfog",
|
||||
"volcano",
|
||||
"activevolcano",
|
||||
"iceberg_sleep",
|
||||
"iceberg",
|
||||
|
||||
NULL, /* museum module */
|
||||
NULL, /* museum module */
|
||||
NULL, /* former magicstorm */
|
||||
NULL /* museum module */
|
||||
"iceberg"
|
||||
};
|
||||
|
||||
static terrain_type *registered_terrains;
|
||||
|
|
|
@ -16,25 +16,19 @@ extern "C" {
|
|||
|
||||
enum {
|
||||
T_OCEAN = 0,
|
||||
T_PLAIN = 1,
|
||||
T_SWAMP = 2,
|
||||
T_DESERT = 3, /* kann aus T_PLAIN entstehen */
|
||||
T_HIGHLAND = 4,
|
||||
T_MOUNTAIN = 5,
|
||||
T_GLACIER = 6, /* kann aus T_MOUNTAIN entstehen */
|
||||
T_FIREWALL = 7, /* Unpassierbar */
|
||||
/* T_HELL = 8, Hölle */
|
||||
/* T_GRASSLAND = 9, */
|
||||
T_ASTRAL = 10,
|
||||
T_ASTRALB = 11,
|
||||
T_VOLCANO = 12,
|
||||
T_VOLCANO_SMOKING = 13,
|
||||
T_ICEBERG_SLEEP = 14,
|
||||
T_ICEBERG = 15,
|
||||
/* T_HALL1 = 16, */
|
||||
/* T_CORRIDOR1 = 17, */
|
||||
/* T_MAGICSTORM = 18, */
|
||||
/* T_WALL1 = 19, */
|
||||
T_PLAIN,
|
||||
T_SWAMP,
|
||||
T_DESERT,
|
||||
T_HIGHLAND,
|
||||
T_MOUNTAIN,
|
||||
T_GLACIER,
|
||||
T_FIREWALL,
|
||||
T_ASTRAL,
|
||||
T_ASTRALB,
|
||||
T_VOLCANO,
|
||||
T_VOLCANO_SMOKING,
|
||||
T_ICEBERG_SLEEP,
|
||||
T_ICEBERG,
|
||||
NOTERRAIN = (terrain_t) - 1
|
||||
};
|
||||
|
||||
|
|
|
@ -167,7 +167,7 @@ enum {
|
|||
O_REPORT, /* 1 */
|
||||
O_COMPUTER, /* 2 */
|
||||
O_ZUGVORLAGE, /* 4 */
|
||||
O_UNUSED_3,
|
||||
O_JSON, /* 8 */
|
||||
O_STATISTICS, /* 16 */
|
||||
O_DEBUG, /* 32 */
|
||||
O_COMPRESS, /* 64 */
|
||||
|
|
|
@ -28,8 +28,9 @@
|
|||
#define SAVEGAMEID_VERSION 343 /* instead of XMLNAME, save the game.id parameter from the config */
|
||||
#define BUILDNO_VERSION 344 /* storing the build number in the save */
|
||||
#define AUTO_RACENAME_VERSION 345 /* NPC units with name==NULL will automatically get their race for a name */
|
||||
#define JSON_REPORT_VERSION 346 /* bit 3 in f->options flags the json report */
|
||||
|
||||
#define MIN_VERSION INTPAK_VERSION /* minimal datafile we support */
|
||||
#define RELEASE_VERSION AUTO_RACENAME_VERSION /* current datafile */
|
||||
#define RELEASE_VERSION JSON_REPORT_VERSION /* current datafile */
|
||||
|
||||
#define STREAM_VERSION 2 /* internal encoding of binary files */
|
||||
|
|
|
@ -1,3 +1,4 @@
|
|||
#pragma once
|
||||
/*
|
||||
Copyright (c) 1998-2015, Enno Rehling <enno@eressea.de>
|
||||
Katja Zedel <katze@felidae.kn-bremen.de
|
||||
|
@ -19,6 +20,7 @@ OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
|
|||
#ifndef H_KRNL_REPORTS
|
||||
#define H_KRNL_REPORTS
|
||||
|
||||
#include <platform.h>
|
||||
#include <time.h>
|
||||
#include <kernel/objtypes.h>
|
||||
#include <kernel/types.h>
|
||||
|
|
Loading…
Reference in New Issue