Compare commits

...

6 Commits

Author SHA1 Message Date
Nick Dyer 34d934fb4a default res now 240x240 2021-07-03 03:28:11 -04:00
Nick Dyer 7def89db02 added backlight test to dev menu 2021-07-02 01:51:52 -04:00
Nick Dyer d753058352 added dev to launch, changed default resolution to 240x240 2021-07-02 01:48:36 -04:00
Nick Dyer 4aa8af306c added backlight control in gpio_handler.py 2021-07-02 01:47:51 -04:00
Nick Dyer 195abbc5eb added new fake functions and scrips to FakeGPIO.py 2021-07-02 01:47:19 -04:00
Nick Dyer 85557ebb1c made changes to launch script, added customizable resolution 2021-06-20 20:52:23 -04:00
6 changed files with 98 additions and 35 deletions

View File

@ -1,29 +1,7 @@
"""
Launch script for Pocket Friends.
Wrapper that launches the launch script.
"""
import os
from pathlib import Path
import pygame
import sys
from pocket_friends.game_files.game import main as game_main
from pocket_friends.development.dev_menu import main as dev_menu_main
import pocket_friends.launch as launch
if __name__ == '__main__':
enable_dev = False
# enable dev mode if --dev argument is passed
if len(sys.argv) > 0:
for args in sys.argv:
if args == '--dev':
enable_dev = True
if args == '--delete-save':
save_dir = os.path.join(Path.home(), '.pocket_friends')
os.remove(save_dir + '/save.json')
if not enable_dev:
game_main()
else:
dev_menu_main()
pygame.quit()
sys.exit()
launch.main()

View File

@ -6,8 +6,12 @@ the hardware can be run without the actual hardware.
# Constants used by RPi.GPIO
BOARD = 0
IN = 0
OUT = 1
FALLING = 0
HIGH = 1
LOW = 0
def setmode(new_mode):
"""
@ -28,6 +32,16 @@ def setup(channel, mode, initial=None, pull_up_down=None):
pass
def output(channel, set):
"""
Fake function to set a fake channel output.
:param channel:
:param set:
:return:
"""
pass
def add_event_detect(channel, edge_type, callback=None, bouncetime=0):
"""
Fake function to add a non-existent event detect.
@ -43,7 +57,7 @@ def event_detected(channel):
"""
Fake function to detect an event. Always returns false.
:param channel:
:return:
:return: False
"""
return False

View File

@ -29,6 +29,15 @@ def run_button_test():
GPIOHandler.setup()
def backlight_test():
"""
Turns off the backlight for 5 seconds.
"""
GPIOHandler.turn_off_backlight()
time.sleep(5)
GPIOHandler.turn_on_backlight()
def clear_screen():
"""
Clears the screen.
@ -55,9 +64,9 @@ def quit_menu():
def quit_with_error():
"""
Quits the menu with error code 3.
Quits the menu with error code 2.
"""
exit(3)
exit(2)
def change_menu(new_menu):
@ -96,6 +105,7 @@ def main():
main_menu = Menu('Pocket Friends Dev Menu')
main_menu.add_option(Menu.Option('Start Game', start_game))
main_menu.add_option(Menu.Option('Button Test', run_button_test))
main_menu.add_option(Menu.Option('Backlight Test', backlight_test))
main_menu.add_option(Menu.Option('Restart Dev Menu', quit_with_error))
main_menu.add_option(Menu.Option('Shutdown Pi', change_menu, 'shutdown'))
main_menu.add_option(Menu.Option('Restart Pi', change_menu, 'restart'))

View File

@ -534,7 +534,7 @@ except ImportError:
on_hardware = False
def game():
def game(screen_size):
"""
Starts the game.
"""
@ -543,10 +543,6 @@ def game():
# Hide the cursor for the Pi display.
pygame.mouse.set_visible(False)
# The game is normally rendered at 80 pixels and upscaled from there. If changing displays, change the
# screen_size to reflect what the resolution of the new display is.
screen_size = 320
window = pygame.display.set_mode((screen_size, screen_size))
surface = pygame.Surface((game_res, game_res))
@ -974,11 +970,11 @@ def game():
draw()
def main():
def main(screen_size=240):
"""
Calls the game() function to start the game.
"""
game()
game(screen_size)
GPIOHandler.teardown()
pygame.quit()

View File

@ -24,6 +24,9 @@ class Constants:
'j_l': 13, # Joystick left
'j_r': 16 # Joystick right
}
hardware = {
'backlight': 37
}
class GPIOHandler:
@ -54,6 +57,8 @@ class GPIOHandler:
GPIO.add_event_detect(Constants.buttons.get('j_l'), GPIO.FALLING)
GPIO.add_event_detect(Constants.buttons.get('j_r'), GPIO.FALLING)
GPIO.setup(Constants.hardware.get('backlight'), GPIO.OUT, initial=GPIO.HIGH)
@staticmethod
def teardown():
"""
@ -69,3 +74,17 @@ class GPIOHandler:
:return: True if the button is has been pressed, False otherwise
"""
return GPIO.event_detected(button)
@staticmethod
def turn_on_backlight():
"""
Turns on the TFT backlight.
"""
GPIO.output(Constants.hardware.get('backlight'), GPIO.HIGH)
@staticmethod
def turn_off_backlight():
"""
Turns off the TFT backlight.
"""
GPIO.output(Constants.hardware.get('backlight'), GPIO.LOW)

46
pocket_friends/launch.py Normal file
View File

@ -0,0 +1,46 @@
import os
from pathlib import Path
import argparse
import pygame
import sys
from pocket_friends.game_files.game import main as game_main
from pocket_friends.development.dev_menu import main as dev_main
def main():
"""
Launch script for Pocket Friends.
"""
# Creates the parser object.
parser = argparse.ArgumentParser()
# Adds parser arguments.
parser.add_argument('-D', '--delete-save', action='store_true', help='Deletes the save file if it exists.')
parser.add_argument('-s', '--size', type=int, default=240, help='Sets the size of the window.')
parser.add_argument('--dev', action='store_true', help='Deletes the save file if it exists.')
# Parse the arguments given
args = parser.parse_args()
# If given the delete-save argument, delete the safe file
if args.delete_save:
save_dir = os.path.join(Path.home(), '.pocket_friends')
# Remove the file if it exists
try:
os.remove(save_dir + '/save.json')
print('Save file deleted.')
except FileNotFoundError:
print('Save file does not exist, cannot delete.')
# Set the screen size
screen_size = int(args.size)
if not args.dev:
game_main(screen_size)
else:
dev_main()
# Cleanup
pygame.quit()
sys.exit()