From d8a219243c39f046142105bea8638a0cbb6c4e6e Mon Sep 17 00:00:00 2001 From: Yonokid <37304577+Yonokid@users.noreply.github.com> Date: Thu, 1 Jan 2026 10:56:55 -0500 Subject: [PATCH] unlikely fix --- libs/screen.py | 2 ++ libs/utils.py | 22 ++++++++++++++++++---- 2 files changed, 20 insertions(+), 4 deletions(-) diff --git a/libs/screen.py b/libs/screen.py index 9b55d35..741992e 100644 --- a/libs/screen.py +++ b/libs/screen.py @@ -3,6 +3,7 @@ from typing import Any from libs.audio import audio from libs.texture import tex +from libs.utils import input_state logger = logging.getLogger(__name__) @@ -34,6 +35,7 @@ class Screen: return next_screen def update(self) -> Any: + input_state.update() ret_val = self._do_screen_start() if ret_val: return ret_val diff --git a/libs/utils.py b/libs/utils.py index e0cde8d..6ddda98 100644 --- a/libs/utils.py +++ b/libs/utils.py @@ -1,10 +1,9 @@ -import string import ctypes import hashlib -import sys import logging +import string +import sys import time -from libs.global_data import PlayerNum, global_data from pathlib import Path from typing import Optional @@ -16,6 +15,7 @@ from raylib import ( SHADER_UNIFORM_VEC4, ) +from libs.global_data import PlayerNum, global_data from libs.texture import TextureWrapper logger = logging.getLogger(__name__) @@ -57,11 +57,25 @@ def strip_comments(code: str) -> str: index += 1 return result +class InputState: + def __init__(self): + self.pressed_keys_this_frame = set() + + def update(self): + """Call this once per frame to drain the key queue""" + self.pressed_keys_this_frame.clear() + key = rl.GetKeyPressed() + while key > 0: + self.pressed_keys_this_frame.add(key) + key = rl.GetKeyPressed() + +input_state = InputState() + def is_input_key_pressed(keys: list[int], gamepad_buttons: list[int]): if global_data.input_locked: return False for key in keys: - if rl.IsKeyPressed(key): + if key in input_state.pressed_keys_this_frame: return True if rl.IsGamepadAvailable(0):