Added gamepad support. Yes, more globals... Globals are good.

This commit is contained in:
Storm Dragon 2025-02-07 00:54:28 -05:00
parent 21216f361a
commit ab2a5f58f5

View File

@ -48,6 +48,34 @@ except ImportError:
localConfig = configparser.ConfigParser()
globalConfig = configparser.ConfigParser()
# Gamepad state globals
try:
pygame.joystick.init()
except:
pass
gamepadLeft = False
gamepadRight = False
gamepadUp = False
gamepadDown = False
gamepadX = False
gamepadCircle = False
gamepadSquare = False
gamepadTriangle = False
gamepadL1 = False
gamepadR1 = False
gamepadL2 = False
gamepadR2 = False
gamepadShare = False
gamepadOptions = False
gamepadPlaystation = False
gamepad = None if pygame.joystick.get_count() == 0 else pygame.joystick.Joystick(0)
if gamepad:
try:
gamepad.init()
except:
gamepad = None
# Volume control globals
bgmVolume = 0.75 # Default background music volume
sfxVolume = 1.0 # Default sound effects volume
@ -245,6 +273,44 @@ def initialize_gui(gameTitle):
return soundData
def update_gamepad():
"""Update global gamepad state variables."""
global gamepadLeft, gamepadRight, gamepadUp, gamepadDown
global gamepadX, gamepadCircle, gamepadSquare, gamepadTriangle
global gamepadL1, gamepadR1, gamepadL2, gamepadR2
global gamepadShare, gamepadOptions, gamepadPlaystation, gamepad
try:
if gamepad:
# Get D-pad state
hat = gamepad.get_hat(0)
gamepadLeft = hat[0] < 0
gamepadRight = hat[0] > 0
gamepadUp = hat[1] > 0
gamepadDown = hat[1] < 0
# Also check analog stick with deadzone
x_axis = gamepad.get_axis(0)
if x_axis < -0.2: # Left deadzone
gamepadLeft = True
elif x_axis > 0.2: # Right deadzone
gamepadRight = True
# Update button states
gamepadX = gamepad.get_button(0)
gamepadCircle = gamepad.get_button(1)
gamepadTriangle = gamepad.get_button(2)
gamepadSquare = gamepad.get_button(3)
gamepadL1 = gamepad.get_button(4)
gamepadR1 = gamepad.get_button(5)
gamepadL2 = gamepad.get_button(6)
gamepadR2 = gamepad.get_button(7)
gamepadShare = gamepad.get_button(8)
gamepadOptions = gamepad.get_button(9)
gamepadPlaystation = gamepad.get_button(10)
except:
pass
def adjust_master_volume(change):
"""Adjust the master volume for all sounds.