X-Git-Url: https://git.artsoft.org/?a=blobdiff_plain;f=src%2Flibgame%2Fmisc.c;h=28cc8bd5af3efdbb66387dbb11e0d14c36afeb06;hb=6cf34a189f4a3707c9131652621dd67731f14f6b;hp=d31ed248b7d4c9322da95812042ab6fcf14716d0;hpb=3e10387c490e2db8997d6e909d7d13d71fe876e3;p=rocksndiamonds.git diff --git a/src/libgame/misc.c b/src/libgame/misc.c index d31ed248..28cc8bd5 100644 --- a/src/libgame/misc.c +++ b/src/libgame/misc.c @@ -1516,6 +1516,10 @@ void translate_keyname(Key *keysym, char **x11name, char **name, int mode) char *name; } translate_key[] = { + /* return and escape keys */ + { KSYM_Return, "XK_Return", "return" }, + { KSYM_Escape, "XK_Escape", "escape" }, + /* normal cursor keys */ { KSYM_Left, "XK_Left", "cursor left" }, { KSYM_Right, "XK_Right", "cursor right" }, @@ -2039,6 +2043,31 @@ int get_switch3_from_string(char *s) return result; } +int get_player_nr_from_string(char *s) +{ + static char *player_text[] = + { + "player_1", + "player_2", + "player_3", + "player_4", + + NULL + }; + + char *s_lower = getStringToLower(s); + int result = 0; + int i; + + for (i = 0; player_text[i] != NULL; i++) + if (strEqual(s_lower, player_text[i])) + result = i; + + free(s_lower); + + return result; +} + /* ------------------------------------------------------------------------- */ /* functions for generic lists */ @@ -2806,6 +2835,33 @@ int get_anim_parameter_value(char *s) return result; } +int get_anim_action_parameter_value(char *token) +{ + int result = getImageIDFromToken(token); + + if (result == -1) + { + char *gfx_token = getStringCat2("gfx.", token); + + result = getImageIDFromToken(gfx_token); + + checked_free(gfx_token); + } + + if (result == -1) + { + Key key = getKeyFromX11KeyName(token); + + if (key != KSYM_UNDEFINED) + result = -(int)key; + } + + if (result == -1) + result = ANIM_EVENT_ACTION_NONE; + + return result; +} + int get_parameter_value(char *value_raw, char *suffix, int type) { char *value = getStringToLower(value_raw); @@ -2887,6 +2943,11 @@ int get_parameter_value(char *value_raw, char *suffix, int type) // add optional "click:anim_X" or "click:anim_X.part_X" parameter result |= get_anim_parameter_value(value); } + else if (strEqual(suffix, ".init_event_action") || + strEqual(suffix, ".anim_event_action")) + { + result = get_anim_action_parameter_value(value_raw); + } else if (strEqual(suffix, ".class")) { result = (strEqual(value, ARG_UNDEFINED) ? ARG_UNDEFINED_VALUE : @@ -2904,6 +2965,12 @@ int get_parameter_value(char *value_raw, char *suffix, int type) if (string_has_parameter(value, "reverse")) result |= STYLE_REVERSE; + + if (string_has_parameter(value, "passthrough_clicks")) + result |= STYLE_PASSTHROUGH; + + if (string_has_parameter(value, "multiple_actions")) + result |= STYLE_MULTIPLE_ACTIONS; } else if (strEqual(suffix, ".fade_mode")) {