From de6a555c94fbd01531a79ad956e8f39947d6d5d9 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?b=CA=B0edoh=E2=82=82=20sw=C3=A9?= Date: Sun, 7 Apr 2024 16:51:56 +0500 Subject: [PATCH] Add files that I forgot to add in previous commit. --- defaultcontrols.py | 57 ++++++++++++++++++++++++++++++++++++++++++++++ engineevents.py | 11 +++++++++ 2 files changed, 68 insertions(+) create mode 100644 defaultcontrols.py create mode 100644 engineevents.py diff --git a/defaultcontrols.py b/defaultcontrols.py new file mode 100644 index 0000000..644b264 --- /dev/null +++ b/defaultcontrols.py @@ -0,0 +1,57 @@ +import pygame +from engineevents import EngineEvent +from constants import ROT, IROT, OFFSET, I +from gyro import GyroVector +from levels import open_level, save_level, make_wall +from alert import Alert + +def defaultcontrols(): + aoEngineEvents = list() + for event in pygame.event.get(): + if event.type == pygame.QUIT: + aoEngineEvents.append(EngineEvent("bCont", lambda _: False)) + if event.type == pygame.KEYDOWN: + if event.key == pygame.K_r: + aoEngineEvents.append(EngineEvent(None, lambda args: args[0].rotate(-1), tsArguments=("gPlayer",))) + if event.key == pygame.K_F3: + aoEngineEvents.append(EngineEvent("debugInfo", lambda args: not args[0])) + if event.key == pygame.K_F1: + aoEngineEvents.append(EngineEvent("bCap", lambda args: not args[0])) + if event.key == pygame.K_F2: + def fX(args): + #0: wall_buffer + #1: gPlayer + #2: level + if (len(args[0]) == 1): + args[0].append(args[1].cPos) + make_wall(args[0], args[2]) + args[0].clear() + else: + args[0].append(args[1].cPos) + aoEngineEvents.append(EngineEvent(None, fX, tsArguments=("wall_buffer", "gPlayer", "level") )) + if event.key == pygame.K_F5: + #0: level + #1: alert_append + #2: display + def fX(args): + filename = save_level(args[0]) + alert = Alert(f"File saved as {filename}", args[2]) + + args[1](alert, 5) + aoEngineEvents.append(EngineEvent(None, fX, tsArguments=("level", "alert_append", "display") )) + if event.key == pygame.K_F4: + aoEngineEvents.append(EngineEvent(None, lambda args: print(args[0].cPos), tsArguments=("gPlayer",))) + keys = pygame.key.get_pressed() + if keys[pygame.K_d]: + aoEngineEvents.append(EngineEvent(None, lambda args: args[0].rotate( ROT), tsArguments=("gPlayer",))) + if keys[pygame.K_a]: + aoEngineEvents.append(EngineEvent(None, lambda args: args[0].rotate(IROT), tsArguments=("gPlayer",))) + if keys[pygame.K_q]: + aoEngineEvents.append(EngineEvent(None, lambda args: args[0].__iadd__(GyroVector(OFFSET * args[0].cRot*I, 1)), tsArguments=("gPlayer",))) + if keys[pygame.K_e]: + aoEngineEvents.append(EngineEvent(None, lambda args: args[0].__isub__(GyroVector(OFFSET * args[0].cRot*I, 1)), tsArguments=("gPlayer",))) + if keys[pygame.K_w]: + aoEngineEvents.append(EngineEvent(None, lambda args: args[0].__isub__(GyroVector(OFFSET * args[0].cRot , 1)), tsArguments=("gPlayer",))) + if keys[pygame.K_s]: + aoEngineEvents.append(EngineEvent(None, lambda args: args[0].__iadd__(GyroVector(OFFSET * args[0].cRot , 1)), tsArguments=("gPlayer",))) + return aoEngineEvents diff --git a/engineevents.py b/engineevents.py new file mode 100644 index 0000000..350691d --- /dev/null +++ b/engineevents.py @@ -0,0 +1,11 @@ +class EngineEvent: + def __init__(self, sVariableToModify, fLambda, tsArguments=None): + self.sVariableToModify = sVariableToModify + self.fLambda = fLambda + if tsArguments is not None: + self.tsArguments = tsArguments + else: + self.tsArguments = (sVariableToModify,) + +class EngineEventProcessingError(Exception): + pass