diff --git a/src/sdl-instead/game.c b/src/sdl-instead/game.c index fc97e1f..5451bde 100644 --- a/src/sdl-instead/game.c +++ b/src/sdl-instead/game.c @@ -404,7 +404,7 @@ int game_load(int nr) int game_saves_enabled(void) { int rc; - instead_function("isEnableSave", NULL); + instead_function("instead.isEnableSave", NULL); rc = instead_bretval(0); instead_clear(); return rc; @@ -413,7 +413,7 @@ int game_saves_enabled(void) int game_autosave_enabled(void) { int rc; - instead_function("isEnableAutosave", NULL); + instead_function("instead.isEnableAutosave", NULL); rc = instead_bretval(0); instead_clear(); return rc; @@ -435,11 +435,11 @@ int game_save(int nr) { .val = NULL, } }; if (nr == -1) - instead_function("autosave", args_1); /* enable saving for -1 */ + instead_function("instead.autosave", args_1); /* enable saving for -1 */ else if (!game_autosave_enabled()) return 0; /* nothing todo */ else - instead_function("autosave", args_0); /* enable saving for 0 */ + instead_function("instead.autosave", args_0); /* enable saving for 0 */ instead_clear(); } snprintf(cmd, sizeof(cmd) - 1, "save %s", s); @@ -1164,7 +1164,7 @@ static int check_fading(void) { int rc; int st; - instead_function("get_fading", NULL); + instead_function("instead.get_fading", NULL); rc = instead_bretval(0); st = instead_iretval(1); @@ -1200,7 +1200,7 @@ static void game_autosave(void) int b,r; if (!curgame_dir) return; - instead_function("get_autosave", NULL); + instead_function("instead.get_autosave", NULL); b = instead_bretval(0); r = instead_iretval(1); instead_clear(); @@ -1216,7 +1216,7 @@ static void dec_music(void *data) int rc; if (!curgame_dir) return; - instead_function("dec_music_loop", NULL); + instead_function("instead.dec_music_loop", NULL); rc = instead_iretval(0); instead_clear(); if (rc == -1) @@ -1237,7 +1237,7 @@ void game_music_player(void) return; if (!opt_music) return; - instead_function("get_music", NULL); + instead_function("instead.get_music", NULL); mus = instead_retval(0); loop = instead_iretval(1); unix_path(mus); @@ -1330,7 +1330,7 @@ void game_sound_player(void) if (!snd_volume_mus(-1)) return; - instead_function("get_sound", NULL); + instead_function("instead.get_sound", NULL); loop = instead_iretval(2); chan = instead_iretval(1); @@ -1340,11 +1340,11 @@ void game_sound_player(void) if (chan != -1) { /* halt channel */ snd_halt_chan(chan, 500); - instead_function("set_sound", args); instead_clear(); + instead_function("instead.set_sound", args); instead_clear(); } return; } - instead_function("set_sound", args); instead_clear(); + instead_function("instead.set_sound", args); instead_clear(); unix_path(snd); w = sound_find(snd); @@ -1356,26 +1356,18 @@ void game_sound_player(void) snd_play(w, chan, loop - 1); } -char *norm_inv(char *invstr) +static char *get_inv(void) { char *ni; struct instead_args args[] = { - { .val = NULL, .type = INSTEAD_STR }, { .val = NULL, .type = INSTEAD_BOOL }, { .val = NULL, }, }; - if (!invstr || !(*invstr)) - return invstr; - args[0].val = invstr; - args[1].val = (INV_MODE(game_theme.inv_mode) == INV_MODE_HORIZ)?"true":"false"; - instead_function("normalize_inv", args); + args[0].val = (INV_MODE(game_theme.inv_mode) == INV_MODE_HORIZ)?"true":"false"; + instead_function("instead.get_inv", args); ni = instead_retval(0); instead_clear(); - if (ni) { - free(invstr); - invstr = ni; - } - return invstr; + return ni; } static int find_diff_pos(const char *p1, const char *p2) @@ -1438,13 +1430,13 @@ int game_cmd(char *cmd) if (!cmdstr) goto inv; /* hackish? ok, yes it is... */ - instead_function("get_title", NULL); + instead_function("instead.get_title", NULL); title = instead_retval(0); instead_clear(); new_place = check_new_place(title); - instead_function("get_picture", NULL); + instead_function("instead.get_picture", NULL); pict = instead_retval(0); instead_clear(); @@ -1522,7 +1514,9 @@ int game_cmd(char *cmd) el_clear(el_ways); el_clear(el_scene); - waystr = instead_cmd("way"); instead_clear(); + instead_function("instead.get_ways", NULL); + waystr = instead_retval(0); + instead_clear(); if (waystr) { waystr[strcspn(waystr,"\n")] = 0; @@ -1595,9 +1589,7 @@ inv: if (inv_enabled()) { int off; - invstr = instead_cmd("inv"); instead_clear(); - - invstr = norm_inv(invstr); + invstr = get_inv(); off = txt_box_off(el_box(el_inv)); txt_layout_set(txt_box_layout(el_box(el_inv)), invstr); diff --git a/src/sdl-instead/instead.c b/src/sdl-instead/instead.c index 33022a9..8e21d1a 100644 --- a/src/sdl-instead/instead.c +++ b/src/sdl-instead/instead.c @@ -148,22 +148,7 @@ int instead_iretval(int n) return 0; return lua_tonumber(L, n - N); } -#if 0 -char *instead_cmd(char *s) -{ - char buf[4096]; - char *p; - p = encode_esc_string(s); - if (!p) - return NULL; - s = togame(p); free(p); - if (!s) - return NULL; - snprintf(buf, sizeof(buf), "return iface:cmd('%s')", s); free(s); - p = getstring(buf); - return p; -} -#else + char *instead_cmd(char *s) { struct instead_args args[] = { @@ -180,7 +165,7 @@ char *instead_cmd(char *s) free(s); return instead_retval(0); } -#endif + int instead_function(char *s, struct instead_args *args) { int base = 0; diff --git a/stead/gui.lua b/stead/gui.lua index 568b222..9c9e3f9 100644 --- a/stead/gui.lua +++ b/stead/gui.lua @@ -106,25 +106,38 @@ iface.inv = function(self, str) end; iface.ways = function(self, str) - if str then - str = stead.string.gsub(str, '\\'..stead.delim, '<&delim;>'); - str = stead.string.gsub(str, stead.delim, game.gui.ways_delim); - str = stead.string.gsub(str, '<&delim;>', stead.delim); - return ''..str..''; - end return str end; -function normalize_inv(str, horiz) - str = stead.string.gsub(str, '\\'..stead.delim, '<&delim;>'):gsub(stead.delim..'$', '') - if not horiz then - str = stead.string.gsub(str, stead.delim, game.gui.inv_delim); - else - str = stead.string.gsub(str, stead.delim, game.gui.hinv_delim); +function get_inv(horiz) + str = iface:cmd("inv"); + if str then + str = stead.string.gsub(str, '\n$',''); + str = stead.string.gsub(str, '\\'..stead.delim, '<&delim;>') + str = stead.string.gsub(str, stead.delim..'$', '') + if not horiz then + str = stead.string.gsub(str, stead.delim, game.gui.inv_delim); + else + str = stead.string.gsub(str, stead.delim, game.gui.hinv_delim); + end + str = stead.string.gsub(str, '<&delim;>', stead.delim); end - str = stead.string.gsub(str, '<&delim;>', stead.delim); return str end +instead.get_inv = get_inv; + +function get_ways() + str = iface:cmd("way"); + if str then + str = stead.string.gsub(str, '\n$',''); + str = stead.string.gsub(str, '\\'..stead.delim, '<&delim;>'); + str = stead.string.gsub(str, stead.delim, game.gui.ways_delim); + str = stead.string.gsub(str, '<&delim;>', stead.delim); + return iface:center(str); + end + return str +end +instead.get_ways = get_ways; function get_title() local s @@ -140,6 +153,20 @@ function get_title() return s end +instead.get_title = get_title; +instead.get_picture = get_picture; +instead.get_music = get_music; +instead.get_sound = get_sound; +instead.set_sound = set_sound; +instead.get_autosave = get_autosave; +instead.get_music_loop = get_music_loop; +instead.dec_music_loop = dec_music_loop; + +instead.isEnableSave = isEnableSave; +instead.isEnableAutosave = isEnableAutosave; +instead.autosave = autosave; + + -- here is gui staff only function stat(v) v.status_type = true @@ -258,7 +285,7 @@ function isFading() --to check fading from sdl gui return g and r ~= false, v end -function get_fading() +instead.get_fading = function() local r, v r, v = isFading() if v == nil then v = game.gui.fading end