From 5cc5f181a9cf6faadf7b92435f82b1ecc2269a40 Mon Sep 17 00:00:00 2001 From: cmurnion <48727182+cmurnion@users.noreply.github.com> Date: Tue, 19 Mar 2019 10:09:53 -0600 Subject: [PATCH 1/3] A way to use capitalized letters, >, and so on tcod.Key.text allows the input handlers to recognize capitalized letters and symbols that require the shift key, including '>' for going down stairs. --- A way to use capitalized letters and > | 153 +++++++++++++++++++++++++ 1 file changed, 153 insertions(+) create mode 100644 A way to use capitalized letters and > diff --git a/A way to use capitalized letters and > b/A way to use capitalized letters and > new file mode 100644 index 0000000..206f51e --- /dev/null +++ b/A way to use capitalized letters and > @@ -0,0 +1,153 @@ +import libtcodpy as libtcod + +from game_states import GameStates + + +def handle_keys(key, game_state): + if game_state == GameStates.PLAYERS_TURN: + return handle_player_turn_keys(key) + elif game_state == GameStates.PLAYER_DEAD: + return handle_player_dead_keys(key) + elif game_state == GameStates.TARGETING: + return handle_targeting_keys(key) + elif game_state in (GameStates.SHOW_INVENTORY, GameStates.DROP_INVENTORY): + return handle_inventory_keys(key) + elif game_state == GameStates.LEVEL_UP: + return handle_level_up_menu(key) + elif game_state == GameStates.CHARACTER_SCREEN: + return handle_character_screen(key) + + return {} + + +def handle_player_turn_keys(key): + key_char = key.text + + # Movement keys + if key.vk == libtcod.KEY_UP or key_char == 'k': + return {'move': (0, -1)} + elif key.vk == libtcod.KEY_DOWN or key_char == 'j': + return {'move': (0, 1)} + elif key.vk == libtcod.KEY_LEFT or key_char == 'h': + return {'move': (-1, 0)} + elif key.vk == libtcod.KEY_RIGHT or key_char == 'l': + return {'move': (1, 0)} + elif key_char == 'y': + return {'move': (-1, -1)} + elif key_char == 'u': + return {'move': (1, -1)} + elif key_char == 'b': + return {'move': (-1, 1)} + elif key_char == 'n': + return {'move': (1, 1)} + elif key_char == 'z': + return {'wait': True} + + if key_char == 'g': + return {'pickup': True} + + elif key_char == 'i': + return {'show_inventory': True} + + elif key_char == 'd': + return {'drop_inventory': True} + + elif key_char == '>': + return {'take_stairs': True} + + elif key_char == 'c': + return {'show_character_screen': True} + + if key.vk == libtcod.KEY_ENTER and key.lalt: + # Alt+Enter: toggle full screen + return {'fullscreen': True} + elif key.vk == libtcod.KEY_ESCAPE: + # Exit the game + return {'exit': True} + + # No key was pressed + return {} + + +def handle_targeting_keys(key): + if key.vk == libtcod.KEY_ESCAPE: + return {'exit': True} + + return {} + + +def handle_player_dead_keys(key): + key_char = key.text + + if key_char == 'i': + return {'show_inventory': True} + + if key.vk == libtcod.KEY_ENTER and key.lalt: + # Alt+Enter: toggle full screen + return {'fullscreen': True} + elif key.vk == libtcod.KEY_ESCAPE: + # Exit the menu + return {'exit': True} + + return {} + + +def handle_inventory_keys(key): + index = key.c - ord('a') + + if index >= 0: + return {'inventory_index': index} + + if key.vk == libtcod.KEY_ENTER and key.lalt: + # Alt+Enter: toggle full screen + return {'fullscreen': True} + elif key.vk == libtcod.KEY_ESCAPE: + # Exit the menu + return {'exit': True} + + return {} + + +def handle_main_menu(key): + key_char = key.text + + if key_char == 'a': + return {'new_game': True} + elif key_char == 'b': + return {'load_game': True} + elif key_char == 'c' or key.vk == libtcod.KEY_ESCAPE: + return {'exit': True} + + return {} + + +def handle_level_up_menu(key): + if key: + key_char = key.text + + if key_char == 'a': + return {'level_up': 'hp'} + elif key_char == 'b': + return {'level_up': 'str'} + elif key_char == 'c': + return {'level_up': 'def'} + + return {} + + +def handle_character_screen(key): + if key.vk == libtcod.KEY_ESCAPE: + return {'exit': True} + + return {} + + +def handle_mouse(mouse): + (x, y) = (mouse.cx, mouse.cy) + + if mouse.lbutton_pressed: + return {'left_click': (x, y)} + elif mouse.rbutton_pressed: + return {'right_click': (x, y)} + + return {} From 8af61ab851247d6d60b75134aefbd500412406a7 Mon Sep 17 00:00:00 2001 From: cmurnion <48727182+cmurnion@users.noreply.github.com> Date: Tue, 19 Mar 2019 10:17:02 -0600 Subject: [PATCH 2/3] Delete A way to use capitalized letters and > --- A way to use capitalized letters and > | 153 ------------------------- 1 file changed, 153 deletions(-) delete mode 100644 A way to use capitalized letters and > diff --git a/A way to use capitalized letters and > b/A way to use capitalized letters and > deleted file mode 100644 index 206f51e..0000000 --- a/A way to use capitalized letters and > +++ /dev/null @@ -1,153 +0,0 @@ -import libtcodpy as libtcod - -from game_states import GameStates - - -def handle_keys(key, game_state): - if game_state == GameStates.PLAYERS_TURN: - return handle_player_turn_keys(key) - elif game_state == GameStates.PLAYER_DEAD: - return handle_player_dead_keys(key) - elif game_state == GameStates.TARGETING: - return handle_targeting_keys(key) - elif game_state in (GameStates.SHOW_INVENTORY, GameStates.DROP_INVENTORY): - return handle_inventory_keys(key) - elif game_state == GameStates.LEVEL_UP: - return handle_level_up_menu(key) - elif game_state == GameStates.CHARACTER_SCREEN: - return handle_character_screen(key) - - return {} - - -def handle_player_turn_keys(key): - key_char = key.text - - # Movement keys - if key.vk == libtcod.KEY_UP or key_char == 'k': - return {'move': (0, -1)} - elif key.vk == libtcod.KEY_DOWN or key_char == 'j': - return {'move': (0, 1)} - elif key.vk == libtcod.KEY_LEFT or key_char == 'h': - return {'move': (-1, 0)} - elif key.vk == libtcod.KEY_RIGHT or key_char == 'l': - return {'move': (1, 0)} - elif key_char == 'y': - return {'move': (-1, -1)} - elif key_char == 'u': - return {'move': (1, -1)} - elif key_char == 'b': - return {'move': (-1, 1)} - elif key_char == 'n': - return {'move': (1, 1)} - elif key_char == 'z': - return {'wait': True} - - if key_char == 'g': - return {'pickup': True} - - elif key_char == 'i': - return {'show_inventory': True} - - elif key_char == 'd': - return {'drop_inventory': True} - - elif key_char == '>': - return {'take_stairs': True} - - elif key_char == 'c': - return {'show_character_screen': True} - - if key.vk == libtcod.KEY_ENTER and key.lalt: - # Alt+Enter: toggle full screen - return {'fullscreen': True} - elif key.vk == libtcod.KEY_ESCAPE: - # Exit the game - return {'exit': True} - - # No key was pressed - return {} - - -def handle_targeting_keys(key): - if key.vk == libtcod.KEY_ESCAPE: - return {'exit': True} - - return {} - - -def handle_player_dead_keys(key): - key_char = key.text - - if key_char == 'i': - return {'show_inventory': True} - - if key.vk == libtcod.KEY_ENTER and key.lalt: - # Alt+Enter: toggle full screen - return {'fullscreen': True} - elif key.vk == libtcod.KEY_ESCAPE: - # Exit the menu - return {'exit': True} - - return {} - - -def handle_inventory_keys(key): - index = key.c - ord('a') - - if index >= 0: - return {'inventory_index': index} - - if key.vk == libtcod.KEY_ENTER and key.lalt: - # Alt+Enter: toggle full screen - return {'fullscreen': True} - elif key.vk == libtcod.KEY_ESCAPE: - # Exit the menu - return {'exit': True} - - return {} - - -def handle_main_menu(key): - key_char = key.text - - if key_char == 'a': - return {'new_game': True} - elif key_char == 'b': - return {'load_game': True} - elif key_char == 'c' or key.vk == libtcod.KEY_ESCAPE: - return {'exit': True} - - return {} - - -def handle_level_up_menu(key): - if key: - key_char = key.text - - if key_char == 'a': - return {'level_up': 'hp'} - elif key_char == 'b': - return {'level_up': 'str'} - elif key_char == 'c': - return {'level_up': 'def'} - - return {} - - -def handle_character_screen(key): - if key.vk == libtcod.KEY_ESCAPE: - return {'exit': True} - - return {} - - -def handle_mouse(mouse): - (x, y) = (mouse.cx, mouse.cy) - - if mouse.lbutton_pressed: - return {'left_click': (x, y)} - elif mouse.rbutton_pressed: - return {'right_click': (x, y)} - - return {} From 0d4b45469edca58adab090dd74b229da2277d68d Mon Sep 17 00:00:00 2001 From: cmurnion <48727182+cmurnion@users.noreply.github.com> Date: Tue, 19 Mar 2019 10:17:56 -0600 Subject: [PATCH 3/3] A way to use capitalized letters and > tcod.Key.text allows the input handlers to recognize capitalized letters and symbols that require the shift key, including '>' for going down stairs. --- input_handlers.py | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/input_handlers.py b/input_handlers.py index 3ea0f55..206f51e 100644 --- a/input_handlers.py +++ b/input_handlers.py @@ -21,7 +21,7 @@ def handle_keys(key, game_state): def handle_player_turn_keys(key): - key_char = chr(key.c) + key_char = key.text # Movement keys if key.vk == libtcod.KEY_UP or key_char == 'k': @@ -52,7 +52,7 @@ def handle_player_turn_keys(key): elif key_char == 'd': return {'drop_inventory': True} - elif key.vk == libtcod.KEY_ENTER: + elif key_char == '>': return {'take_stairs': True} elif key_char == 'c': @@ -77,7 +77,7 @@ def handle_targeting_keys(key): def handle_player_dead_keys(key): - key_char = chr(key.c) + key_char = key.text if key_char == 'i': return {'show_inventory': True} @@ -109,7 +109,7 @@ def handle_inventory_keys(key): def handle_main_menu(key): - key_char = chr(key.c) + key_char = key.text if key_char == 'a': return {'new_game': True} @@ -123,7 +123,7 @@ def handle_main_menu(key): def handle_level_up_menu(key): if key: - key_char = chr(key.c) + key_char = key.text if key_char == 'a': return {'level_up': 'hp'}