mirror of
https://github.com/ondra-novak/gates_of_skeldal.git
synced 2025-08-28 14:17:18 -04:00
new sse control commands, console direct control
This commit is contained in:
parent
4211f044ed
commit
bef06cd345
4 changed files with 72 additions and 27 deletions
|
@ -162,6 +162,7 @@ extern char immortality;
|
||||||
extern char nohassle;
|
extern char nohassle;
|
||||||
extern char dead_food;
|
extern char dead_food;
|
||||||
extern char pass_all_mobs;
|
extern char pass_all_mobs;
|
||||||
|
extern char force_levitate;
|
||||||
|
|
||||||
|
|
||||||
static char console_input_line[console_max_characters+1] = "";
|
static char console_input_line[console_max_characters+1] = "";
|
||||||
|
@ -316,6 +317,10 @@ static int process_on_off_command(const char *cmd, char on) {
|
||||||
nofloors = on;
|
nofloors = on;
|
||||||
return 1;
|
return 1;
|
||||||
}
|
}
|
||||||
|
if (istrcmp(cmd, "levitation") == 0) {
|
||||||
|
force_levitate = on;
|
||||||
|
return 1;
|
||||||
|
}
|
||||||
if (istrcmp(cmd, "enemy-insight") == 0) {
|
if (istrcmp(cmd, "enemy-insight") == 0) {
|
||||||
show_mob_info = on;
|
show_mob_info = on;
|
||||||
return 1;
|
return 1;
|
||||||
|
@ -724,16 +729,9 @@ static void console_keyboard(EVENT_MSG *msg, void **_) {
|
||||||
}
|
}
|
||||||
msg->msg = -1;
|
msg->msg = -1;
|
||||||
} else if (c == '\r') {
|
} else if (c == '\r') {
|
||||||
console_command = console_input_line;
|
if (console_exec(console_input_line)) {
|
||||||
PARSED_COMMAND cmd = parse_command(console_input_line);
|
|
||||||
char ok = process_command(cmd);
|
|
||||||
if (ok) {
|
|
||||||
flush_console_command();
|
|
||||||
console_top_line = 0;
|
|
||||||
console_input_line[0] = 0;
|
console_input_line[0] = 0;
|
||||||
}
|
}
|
||||||
console_command = NULL;
|
|
||||||
free(cmd.cmd_buffer);
|
|
||||||
msg->msg = -1;
|
msg->msg = -1;
|
||||||
} else if (c == 3 && !get_shift_key_state()) {
|
} else if (c == 3 && !get_shift_key_state()) {
|
||||||
console_copy_to_clipboard();
|
console_copy_to_clipboard();
|
||||||
|
@ -773,7 +771,18 @@ void console_show(char show) {
|
||||||
if (show) wire_console();
|
if (show) wire_console();
|
||||||
else unwire_console();
|
else unwire_console();
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
char console_exec(const char *cmd_text) {
|
||||||
|
console_command = cmd_text;
|
||||||
|
PARSED_COMMAND cmd = parse_command(cmd_text);
|
||||||
|
char ok = process_command(cmd);
|
||||||
|
if (ok) {
|
||||||
|
flush_console_command();
|
||||||
|
console_top_line = 0;
|
||||||
|
}
|
||||||
|
console_command = NULL;
|
||||||
|
free(cmd.cmd_buffer);
|
||||||
|
return ok;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
|
@ -1836,6 +1836,7 @@ static __inline int quit_request_as_escape(int c) {
|
||||||
|
|
||||||
void draw_console_window(void);
|
void draw_console_window(void);
|
||||||
void console_show(char show);
|
void console_show(char show);
|
||||||
|
char console_exec(const char *cmd);
|
||||||
char console_is_visible(void);
|
char console_is_visible(void);
|
||||||
|
|
||||||
char *map_hash_to_string_impl(char *c, uint32_t h, int sz);
|
char *map_hash_to_string_impl(char *c, uint32_t h, int sz);
|
||||||
|
|
|
@ -74,6 +74,7 @@ char datapath;
|
||||||
D_ACTION *d_action={NULL};
|
D_ACTION *d_action={NULL};
|
||||||
int end_ptr;
|
int end_ptr;
|
||||||
char pass_all_mobs = 0; //cheat make all mobs passable
|
char pass_all_mobs = 0; //cheat make all mobs passable
|
||||||
|
char force_levitate = 0; //cheat
|
||||||
uint8_t cur_group=1;
|
uint8_t cur_group=1;
|
||||||
uint8_t group_select=1;
|
uint8_t group_select=1;
|
||||||
char cancel_pass=0;
|
char cancel_pass=0;
|
||||||
|
@ -1143,7 +1144,7 @@ void check_players_place(char mode) {
|
||||||
int sect;
|
int sect;
|
||||||
int u1;
|
int u1;
|
||||||
|
|
||||||
levitat = (h->vlastnosti[VLS_KOUZLA] & SPL_LEVITATION) != 0;
|
levitat = force_levitate || ((h->vlastnosti[VLS_KOUZLA] & SPL_LEVITATION) != 0);
|
||||||
sect = h->sektor;
|
sect = h->sektor;
|
||||||
if (sect >= mapsize)
|
if (sect >= mapsize)
|
||||||
continue;
|
continue;
|
||||||
|
|
|
@ -891,7 +891,7 @@ const void *boldcz;
|
||||||
void init_DDL_manager() {
|
void init_DDL_manager() {
|
||||||
|
|
||||||
const char *ddlfile = build_pathname(2, gpathtable[SR_DATA],"SKELDAL.DDL");
|
const char *ddlfile = build_pathname(2, gpathtable[SR_DATA],"SKELDAL.DDL");
|
||||||
ddlfile = local_strdup(ddlfile);
|
ddlfile = local_strdup(ddlfile);
|
||||||
|
|
||||||
init_manager();
|
init_manager();
|
||||||
if (!add_patch_file(ddlfile)) {
|
if (!add_patch_file(ddlfile)) {
|
||||||
|
@ -1125,6 +1125,25 @@ void *map_keyboard(EVENT_MSG *msg,void **usr);
|
||||||
|
|
||||||
char doNotLoadMapState=0;
|
char doNotLoadMapState=0;
|
||||||
|
|
||||||
|
static void reload_restart_map() {
|
||||||
|
unwire_proc();
|
||||||
|
if (battle) konec_kola();
|
||||||
|
battle=0;
|
||||||
|
running_battle=0;
|
||||||
|
doNotLoadMapState=1;
|
||||||
|
hl_ptr=ikon_libs;
|
||||||
|
destroy_fly_map();
|
||||||
|
load_items();
|
||||||
|
zneplatnit_block(H_ENEMY);
|
||||||
|
zneplatnit_block(H_SHOP_PIC);
|
||||||
|
zneplatnit_block(H_DIALOGY_DAT);
|
||||||
|
load_shops();
|
||||||
|
autosave_on_enter = 0;
|
||||||
|
game_display_focus();
|
||||||
|
send_message(E_CLOSE_MAP);
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
static int reload_map_handler(EVENT_MSG *msg,void **usr)
|
static int reload_map_handler(EVENT_MSG *msg,void **usr)
|
||||||
{
|
{
|
||||||
extern char running_battle;
|
extern char running_battle;
|
||||||
|
@ -1136,7 +1155,15 @@ extern char running_battle;
|
||||||
int side;
|
int side;
|
||||||
int i;
|
int i;
|
||||||
|
|
||||||
if (sscanf(m, "RELOAD %12s %d %d", fname, §or, &side) == 3) {
|
if (strcmp(m, "RELOAD") == 0) {
|
||||||
|
reload_ddls();
|
||||||
|
loadlevel.start_pos=viewsector;
|
||||||
|
loadlevel.dir=viewdir;
|
||||||
|
strcopy_n(loadlevel.name, level_fname, sizeof(loadlevel.name));
|
||||||
|
SEND_LOG("(WIZARD) Reload map");
|
||||||
|
reload_restart_map();
|
||||||
|
|
||||||
|
} else if (sscanf(m, "TELEPORT %12s %d %d", fname, §or, &side) == 3) {
|
||||||
|
|
||||||
reload_ddls();
|
reload_ddls();
|
||||||
strcopy_n(loadlevel.name,fname,sizeof(loadlevel.name));
|
strcopy_n(loadlevel.name,fname,sizeof(loadlevel.name));
|
||||||
|
@ -1148,23 +1175,30 @@ extern char running_battle;
|
||||||
postavy[i].groupnum = 1;
|
postavy[i].groupnum = 1;
|
||||||
}
|
}
|
||||||
SEND_LOG("(WIZARD) Load map '%s' %d %d",loadlevel.name,loadlevel.start_pos, loadlevel.dir);
|
SEND_LOG("(WIZARD) Load map '%s' %d %d",loadlevel.name,loadlevel.start_pos, loadlevel.dir);
|
||||||
unwire_proc();
|
reload_restart_map();
|
||||||
if (battle) konec_kola();
|
} else if (sscanf(m, "CONSOLE %d", &i) == 1) {
|
||||||
battle=0;
|
console_show(i);
|
||||||
running_battle=0;
|
game_display_focus();
|
||||||
doNotLoadMapState=1;
|
} else if (strncmp(m, "CONSOLE_CMD ", 12) == 0) {
|
||||||
hl_ptr=ikon_libs;
|
const char *cmd = m+12;
|
||||||
destroy_fly_map();
|
if (strchr(cmd, '~') == NULL) {
|
||||||
load_items();
|
console_exec(cmd);
|
||||||
zneplatnit_block(H_ENEMY);
|
} else {
|
||||||
zneplatnit_block(H_SHOP_PIC);
|
char *tmp = local_strdup(cmd);
|
||||||
zneplatnit_block(H_DIALOGY_DAT);
|
char *x = strchr(tmp,'~');
|
||||||
load_shops();
|
while (x) {
|
||||||
autosave_on_enter = 0;
|
*x = 0;
|
||||||
|
console_exec(tmp);
|
||||||
|
tmp = x+1;
|
||||||
|
x = strchr(tmp,'~');
|
||||||
|
}
|
||||||
|
if (*tmp) console_exec(tmp);
|
||||||
|
}
|
||||||
|
|
||||||
game_display_focus();
|
game_display_focus();
|
||||||
send_message(E_CLOSE_MAP);
|
|
||||||
} else if (strncmp(m, "MESSAGE ", 8) == 0) {
|
} else if (strncmp(m, "MESSAGE ", 8) == 0) {
|
||||||
bott_disp_text(m+8);
|
bott_disp_text(m+8);
|
||||||
|
game_display_focus();
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
@ -1191,7 +1225,7 @@ void enter_game(void)
|
||||||
|
|
||||||
send_message(E_ADD,E_RELOADMAP,reload_map_handler);
|
send_message(E_ADD,E_RELOADMAP,reload_map_handler);
|
||||||
{
|
{
|
||||||
EVENT_MSG *msg = task_wait_event(E_CLOSE_MAP);
|
EVENT_MSG *msg = task_wait_event(E_CLOSE_MAP);
|
||||||
end = msg != NULL?va_arg(msg->data, int):0;
|
end = msg != NULL?va_arg(msg->data, int):0;
|
||||||
}
|
}
|
||||||
send_message(E_DONE,E_RELOADMAP,reload_map_handler);
|
send_message(E_DONE,E_RELOADMAP,reload_map_handler);
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue