/************************************************************************** Load the game script variables in file. **************************************************************************/ static void script_vars_load(struct section_file *file) { if (state) { const char *vars; const char *section = "script.vars"; vars = secfile_lookup_str_default(file, "", "%s", section); script_dostring(state, vars, section); } }
/************************************************************************** Load the optional game script code from file (useful for scenarios). **************************************************************************/ static void script_code_load(struct section_file *file) { if (!script_code) { const char *code; const char *section = "script.code"; code = secfile_lookup_str_default(file, "", "%s", section); script_code = mystrdup(code); script_dostring(state, script_code, section); } }
/************************************************************************** Load value for one auth option from section_file. **************************************************************************/ static void load_auth_option(struct section_file *file, struct auth_option *target) { const char *value; value = secfile_lookup_str_default(file, "", "auth.%s", target->name); if (value[0] != '\0') { /* We really loaded something from file */ set_auth_option(target, value, AOS_FILE); } }
/***************************************************************************** Load lua variables from file. *****************************************************************************/ void luascript_vars_load(struct fc_lua *fcl, struct section_file *file, const char *section) { const char *vars; fc_assert_ret(file); fc_assert_ret(fcl); fc_assert_ret(fcl->state); vars = secfile_lookup_str_default(file, "", "%s", section); luascript_do_string(fcl, vars, section); }
/************************************************************************** INTERNAL. Returns TRUE for success. **************************************************************************/ static bool audio_play_tag(const char *tag, bool repeat) { char *soundfile, *fullpath = NULL; if (!tag || strcmp(tag, "-") == 0) { return FALSE; } if (tagfile) { soundfile = secfile_lookup_str_default(tagfile, "-", "files.%s", tag); if (strcmp(soundfile, "-") == 0) { freelog(LOG_VERBOSE, "No sound file for tag %s (file %s)", tag, soundfile); } else { fullpath = datafilename(soundfile); if (!fullpath) { freelog(LOG_ERROR, "Cannot find audio file %s", soundfile); } } } return plugins[selected_plugin].play(tag, fullpath, repeat); }
/************************************************************************** The server sends a stream in a registry 'ini' type format. Read it using secfile functions and fill the server_list structs. **************************************************************************/ static struct server_list *parse_metaserver_data(fz_FILE *f) { struct server_list *server_list; struct section_file the_file, *file = &the_file; int nservers, i, j; /* This call closes f. */ if (!section_file_load_from_stream(file, f)) { return NULL; } server_list = server_list_new(); nservers = secfile_lookup_int_default(file, 0, "main.nservers"); for (i = 0; i < nservers; i++) { char *host, *port, *version, *state, *message, *nplayers; int n; struct server *pserver = (struct server*)fc_malloc(sizeof(struct server)); host = secfile_lookup_str_default(file, "", "server%d.host", i); pserver->host = mystrdup(host); port = secfile_lookup_str_default(file, "", "server%d.port", i); pserver->port = atoi(port); version = secfile_lookup_str_default(file, "", "server%d.version", i); pserver->version = mystrdup(version); state = secfile_lookup_str_default(file, "", "server%d.state", i); pserver->state = mystrdup(state); message = secfile_lookup_str_default(file, "", "server%d.message", i); pserver->message = mystrdup(message); nplayers = secfile_lookup_str_default(file, "0", "server%d.nplayers", i); n = atoi(nplayers); pserver->nplayers = n; if (n > 0) { pserver->players = fc_malloc(n * sizeof(*pserver->players)); } else { pserver->players = NULL; } for (j = 0; j < n; j++) { char *name, *nation, *type, *host; name = secfile_lookup_str_default(file, "", "server%d.player%d.name", i, j); pserver->players[j].name = mystrdup(name); type = secfile_lookup_str_default(file, "", "server%d.player%d.type", i, j); pserver->players[j].type = mystrdup(type); host = secfile_lookup_str_default(file, "", "server%d.player%d.host", i, j); pserver->players[j].host = mystrdup(host); nation = secfile_lookup_str_default(file, "", "server%d.player%d.nation", i, j); pserver->players[j].nation = mystrdup(nation); } server_list_append(server_list, pserver); } section_file_free(file); return server_list; }