Compare commits
6 Commits
master
...
rpi-dev-me
Author | SHA1 | Date | |
---|---|---|---|
|
34d934fb4a | ||
|
7def89db02 | ||
|
d753058352 | ||
|
4aa8af306c | ||
|
195abbc5eb | ||
|
85557ebb1c |
@ -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()
|
||||
|
@ -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
|
||||
|
||||
|
@ -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'))
|
||||
|
@ -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()
|
||||
|
@ -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
46
pocket_friends/launch.py
Normal 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()
|
Loading…
Reference in New Issue
Block a user