From ca6ed3b6829633401e683997fa61346b5605368c Mon Sep 17 00:00:00 2001 From: fheinrich <fheinrich@techfak.uni-bielefeld.de> Date: Wed, 6 Dec 2023 11:06:10 +0100 Subject: [PATCH] Added viz of tomato, changed key handling slightly to handle holding down the interaction key --- overcooked_simulator/images/tomato.png | Bin 0 -> 14784 bytes .../overcooked_environment.py | 6 ++ overcooked_simulator/pygame_gui.py | 80 ++++++++++++------ 3 files changed, 61 insertions(+), 25 deletions(-) create mode 100644 overcooked_simulator/images/tomato.png diff --git a/overcooked_simulator/images/tomato.png b/overcooked_simulator/images/tomato.png new file mode 100644 index 0000000000000000000000000000000000000000..84e063976d58e8a4aa194124409223e3c67c6834 GIT binary patch literal 14784 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 literal 0 HcmV?d00001 diff --git a/overcooked_simulator/overcooked_environment.py b/overcooked_simulator/overcooked_environment.py index 9bd0e940..4b3d48e2 100644 --- a/overcooked_simulator/overcooked_environment.py +++ b/overcooked_simulator/overcooked_environment.py @@ -23,6 +23,9 @@ class Action: ], "Unknown action type" self.action = action + def __repr__(self): + return f"Action({self.player},{self.act_type},{self.action})" + class Environment: """Environment class which handles the game logic for the overcooked-inspired environment. @@ -76,6 +79,9 @@ class Environment: Args: action: The action to be performed """ + + # print("RECEIVED ACTION:", action) + assert action.player in self.players.keys(), "Unknown player." player = self.players[action.player] diff --git a/overcooked_simulator/pygame_gui.py b/overcooked_simulator/pygame_gui.py index a1c655ef..fbff09f9 100644 --- a/overcooked_simulator/pygame_gui.py +++ b/overcooked_simulator/pygame_gui.py @@ -1,6 +1,7 @@ import numpy as np import pygame +from overcooked_simulator.game_items import Tomato from overcooked_simulator.overcooked_environment import Action from overcooked_simulator.simulation_runner import Simulator @@ -24,7 +25,8 @@ class PlayerKeyset: 6th key ist for picking up things or dropping them. """ - def __init__(self, keys: list[pygame.key]): + def __init__(self, player_name: str, keys: list[pygame.key]): + self.name = player_name self.player_keys = keys self.move_vectors = [[-1, 0], [1, 0], [0, -1], [0, 1]] self.key_to_movement = { @@ -58,8 +60,8 @@ class PyGameGUI: ] keys2 = [pygame.K_a, pygame.K_d, pygame.K_w, pygame.K_s, pygame.K_f, pygame.K_e] self.player_keysets: list[PlayerKeyset] = [ - PlayerKeyset(keys1), - PlayerKeyset(keys2), + PlayerKeyset("p1", keys1), + PlayerKeyset("p2", keys2), ] def send_action(self, action: Action): @@ -95,20 +97,25 @@ class PyGameGUI: action = Action(f"p{player_idx + 1}", "pickup", "pickup") self.send_action(action) - def handle_interact_single_send(self, event): - """Handles key events. Here when a key is held down, only one action is sent. (This can be - switched by the GET_CONTINOUS_INTERACT_AND_PICKUP flag) + def handle_key_event(self, event): + """Handles key events for the pickup and interaction keys. Pickup is a single action, + for interaction keydown and keyup is necessary, because the player has to be able to hold + the key down. Args: - event: Pygame event for extracting the key. + event: Pygame event for extracting the key action. """ - for player_idx, keyset in enumerate(self.player_keysets): - if event.key == keyset.pickup_key: - action = Action(f"p{player_idx + 1}", "pickup", "pickup") - self.send_action(action) - elif event.key == keyset.interact_key: - action = Action(f"p{player_idx + 1}", "interact", "interact") + for keyset in self.player_keysets: + if event.key == keyset.pickup_key and event.type == pygame.KEYDOWN: + action = Action(keyset.name, "pickup", "pickup") self.send_action(action) + if event.key == keyset.interact_key: + if event.type == pygame.KEYDOWN: + action = Action(keyset.name, "interact", "keydown") + self.send_action(action) + elif event.type == pygame.KEYUP: + action = Action(keyset.name, "interact", "keyup") + self.send_action(action) def draw_background(self): """Visualizes a game background.""" @@ -120,6 +127,7 @@ class PyGameGUI: def draw_players(self, state): """Visualizes the players as circles with a triangle for the facing diretion. + If the player holds something in their hands, it is displayed Args: state: The game state returned by the environment. @@ -145,6 +153,36 @@ class PyGameGUI: player.pos + (facing * 20), ), ) + if player.holding is not None: + holding_item_pos = player.pos + (20 * player.facing_direction) + self.draw_item(holding_item_pos, player.holding) + + def draw_item(self, pos, item): + """Visualisation of an item at the specified position. On a counter or in the hands of the player.""" + if isinstance(item, Tomato): + IMAGE = pygame.image.load( + "overcooked_simulator/images/tomato.png" + ).convert_alpha() # or .convert_alpha() + rect = IMAGE.get_rect() + rect.center = pos + self.screen.blit(IMAGE, rect) + + def draw_counter(self, counter): + """Visualisation of a counter at its position. If it is occupied by an item, it is also shown. + + Args: + counter: The counter to visualize. + """ + counter_rect_outline = pygame.Rect( + counter.pos[0] - (self.counter_size / 2), + counter.pos[1] - (self.counter_size / 2), + self.counter_size, + self.counter_size, + ) + pygame.draw.rect(self.screen, COUNTERCOLOR, counter_rect_outline) + + if counter.occupied_by is not None: + self.draw_item(counter.pos, counter.occupied_by) def draw_counters(self, state): """Visualizes the counters in the environment. @@ -152,15 +190,8 @@ class PyGameGUI: Args: state: The game state returned by the environment. """ - for idx, counter in enumerate(state["counters"]): - counter_rect_outline = pygame.Rect( - counter.pos[0] - (self.counter_size / 2), - counter.pos[1] - (self.counter_size / 2), - self.counter_size, - self.counter_size, - ) - - pygame.draw.rect(self.screen, COUNTERCOLOR, counter_rect_outline) + for counter in state["counters"]: + self.draw_counter(counter) def draw(self, state): """Main visualization function. @@ -193,9 +224,8 @@ class PyGameGUI: for event in pygame.event.get(): if event.type == pygame.QUIT: running = False - if not self.GET_CONTINOUS_INTERACT_AND_PICKUP: - if event.type == pygame.KEYDOWN: - self.handle_interact_single_send(event) + if event.type == pygame.KEYDOWN or event.type == pygame.KEYUP: + self.handle_key_event(event) self.handle_keys() clock.tick(self.FPS) -- GitLab