HostedRedmine.com has moved to the Planio platform. All logins and passwords remained the same. All users will be able to login and use Redmine just as before. Read more...
Feature #661635 ยป Luadata.patch
freeciv/common/game.c 2017-05-17 22:36:53.933840772 +0300 | ||
---|---|---|
multipliers_init();
|
||
if (is_server()) {
|
||
game.server.luadata = NULL;
|
||
game.server.ruledit.nationlist = NULL;
|
||
game.server.ruledit.embedded_nations = NULL;
|
||
game.server.ruledit.embedded_nations_count = 0;
|
||
... | ... | |
}
|
||
if (is_server()) {
|
||
if (game.server.luadata != NULL) {
|
||
secfile_destroy(game.server.luadata);
|
||
}
|
||
if (game.server.ruledit.description_file != NULL) {
|
||
free(game.server.ruledit.description_file);
|
||
game.server.ruledit.description_file = NULL;
|
freeciv/common/game.h 2017-05-17 22:34:26.946959360 +0300 | ||
---|---|---|
struct rgbcolor_list *plr_colors;
|
||
struct section_file *luadata;
|
||
struct {
|
||
int turns;
|
||
int max_size;
|
freeciv/server/ruleset.c 2017-05-17 22:41:13.751862751 +0300 | ||
---|---|---|
**************************************************************************/
|
||
static const char *valid_ruleset_filename(const char *subdir,
|
||
const char *name,
|
||
const char *extension)
|
||
const char *extension,
|
||
bool optional)
|
||
{
|
||
char filename[512];
|
||
const char *dfilename;
|
||
... | ... | |
dfilename = fileinfoname(get_data_dirs(), filename);
|
||
if (dfilename) {
|
||
return dfilename;
|
||
} else {
|
||
} else if (!optional) {
|
||
ruleset_error(LOG_ERROR,
|
||
/* TRANS: message about an installation error. */
|
||
_("Could not find a readable \"%s.%s\" ruleset file."),
|
||
... | ... | |
{
|
||
char sfilename[512];
|
||
const char *dfilename = valid_ruleset_filename(rsdir, whichset,
|
||
RULES_SUFFIX);
|
||
RULES_SUFFIX, FALSE);
|
||
struct section_file *secfile;
|
||
if (dfilename == NULL) {
|
||
... | ... | |
char **buffer)
|
||
{
|
||
const char *dfilename = valid_ruleset_filename(rsdir, whichset,
|
||
SCRIPT_SUFFIX);
|
||
SCRIPT_SUFFIX, FALSE);
|
||
if (dfilename == NULL) {
|
||
return FALSE;
|
||
... | ... | |
}
|
||
/**************************************************************************
|
||
Load optional luadata.txt
|
||
**************************************************************************/
|
||
static struct section_file *openload_luadata_file(const char *rsdir)
|
||
{
|
||
struct section_file *secfile;
|
||
char sfilename[512];
|
||
const char *dfilename = valid_ruleset_filename(rsdir, "luadata",
|
||
"txt", TRUE);
|
||
if (dfilename == NULL) {
|
||
return NULL;
|
||
}
|
||
/* Need to save a copy of the filename for following message, since
|
||
section_file_load() may call datafilename() for includes. */
|
||
sz_strlcpy(sfilename, dfilename);
|
||
secfile = secfile_load(sfilename, FALSE);
|
||
if (secfile == NULL) {
|
||
ruleset_error(LOG_ERROR, "Could not load luadata '%s':\n%s",
|
||
sfilename, secfile_error());
|
||
}
|
||
return secfile;
|
||
}
|
||
/**************************************************************************
|
||
Load a requirement list. The list is returned as a static vector
|
||
(callers need not worry about freeing anything).
|
||
**************************************************************************/
|
||
... | ... | |
nationfile = openload_ruleset_file("nations", rsdir);
|
||
effectfile = openload_ruleset_file("effects", rsdir);
|
||
gamefile = openload_ruleset_file("game", rsdir);
|
||
game.server.luadata = openload_luadata_file(rsdir);
|
||
if (techfile == NULL
|
||
|| buildfile == NULL
|
freeciv/server/scripting/api_server_luadata.c 2017-05-17 22:51:44.851055930 +0300 | ||
---|---|---|
/*****************************************************************************
|
||
Freeciv - Copyright (C) 2005 - The Freeciv Project
|
||
This program is free software; you can redistribute it and/or modify
|
||
it under the terms of the GNU General Public License as published by
|
||
the Free Software Foundation; either version 2, or (at your option)
|
||
any later version.
|
||
This program is distributed in the hope that it will be useful,
|
||
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||
GNU General Public License for more details.
|
||
*****************************************************************************/
|
||
#ifdef HAVE_CONFIG_H
|
||
#include <fc_config.h>
|
||
#endif
|
||
/* utility */
|
||
#include "registry_ini.h"
|
||
/* common */
|
||
#include "game.h"
|
||
/* common/scriptcore */
|
||
#include "luascript.h"
|
||
/* server/scripting */
|
||
#include "script_server.h"
|
||
#include "api_server_luadata.h"
|
||
/*****************************************************************************
|
||
Get string value from luadata.
|
||
*****************************************************************************/
|
||
const char *api_luadata_get_str(lua_State *L, const char *field)
|
||
{
|
||
LUASCRIPT_CHECK_STATE(L, NULL);
|
||
if (game.server.luadata == NULL) {
|
||
return NULL;
|
||
}
|
||
return secfile_lookup_str_default(game.server.luadata, NULL, "%s", field);
|
||
}
|
freeciv/server/scripting/api_server_luadata.h 2017-05-17 22:46:55.857257330 +0300 | ||
---|---|---|
/*****************************************************************************
|
||
Freeciv - Copyright (C) 2005 - The Freeciv Project
|
||
This program is free software; you can redistribute it and/or modify
|
||
it under the terms of the GNU General Public License as published by
|
||
the Free Software Foundation; either version 2, or (at your option)
|
||
any later version.
|
||
This program is distributed in the hope that it will be useful,
|
||
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||
GNU General Public License for more details.
|
||
*****************************************************************************/
|
||
#ifndef FC__API_SERVER_LUADATA_H
|
||
#define FC__API_SERVER_LUADATA_H
|
||
struct lua_State;
|
||
const char *api_luadata_get_str(lua_State *L, const char *field);
|
||
#endif /* API_SERVER_LUADATA_H */
|
freeciv/server/scripting/Makefile.am 2017-05-17 22:48:20.136615366 +0300 | ||
---|---|---|
api_server_edit.h \
|
||
api_server_game_methods.c \
|
||
api_server_game_methods.h \
|
||
api_server_luadata.c \
|
||
api_server_luadata.h \
|
||
api_server_notify.c \
|
||
api_server_notify.h \
|
||
script_server.c \
|
freeciv/server/scripting/tolua_server.pkg 2017-05-17 22:47:16.005103864 +0300 | ||
---|---|---|
/* server/scripting */
|
||
$#include "api_server_edit.h"
|
||
$#include "api_server_base.h"
|
||
$#include "api_server_luadata.h"
|
||
$#include "api_server_notify.h"
|
||
$#include "api_server_game_methods.h"
|
||
$#include "script_server.h"
|
||
... | ... | |
@ add_player_history(lua_State *L, Player *self, int amount);
|
||
}
|
||
/* Luadata module. */
|
||
module luadata {
|
||
const char *api_luadata_get_str
|
||
@ get_str(lua_State *L, const char *field);
|
||
}
|
||
$[
|
||
-- Compatibility functions
|
||
-- These top-level functions were exposed prior to Freeciv 2.4. Since then
|