Compare commits
8 Commits
48bd8126a5
...
main
| Author | SHA1 | Date | |
|---|---|---|---|
|
4d32ff6f5a
|
|||
| dee653ca31 | |||
| 32aa61533c | |||
| 214edfbe3a | |||
| 1b84249f47 | |||
| 89241c2939 | |||
| 77406db737 | |||
| f324848c19 |
32
__main__.py
32
__main__.py
@ -7,8 +7,7 @@ import attr
|
||||
import sys
|
||||
import os
|
||||
|
||||
# TODO: Auto install game requirements
|
||||
# TODO: If a game is specified, only install those requirements
|
||||
# TODO: Add Discord rich presence
|
||||
|
||||
logging.basicConfig(level=logging.DEBUG)
|
||||
log = logging.getLogger('PainJamLauncher')
|
||||
@ -54,8 +53,6 @@ for path in os.listdir('../'):
|
||||
|
||||
log.debug(f'Loaded game {gameID}')
|
||||
|
||||
run = True
|
||||
|
||||
pygame.init()
|
||||
|
||||
# I'm sorry, I prefer object-oriented programming. So sue me.
|
||||
@ -79,28 +76,31 @@ class Launcher:
|
||||
os.chdir(game.path)
|
||||
# Load the games game.py file.
|
||||
spec = importlib.util.spec_from_file_location(game.id, os.path.join(game.path, 'game.py'))
|
||||
foo = importlib.util.module_from_spec(spec)
|
||||
spec.loader.exec_module(foo)
|
||||
module = importlib.util.module_from_spec(spec)
|
||||
spec.loader.exec_module(module)
|
||||
# Initialise the games Game class, then set the
|
||||
# current game to that.
|
||||
self.currentGame = foo.Game(self.gameSurface)
|
||||
self.currentGame = module.Game(self.gameSurface)
|
||||
# Set the window title to the games name
|
||||
pygame.display.set_caption(game.name)
|
||||
|
||||
|
||||
def update(self):
|
||||
for event in pygame.event.get():
|
||||
if self.gameRunning:
|
||||
self.currentGame.onEvent(event)
|
||||
self.currentGame._onEvent(event)
|
||||
|
||||
# CTRL+ESC
|
||||
if event.type == pygame.QUIT or (event.type == pygame.KEYDOWN and event.key == pygame.K_ESCAPE and event.mod == 64):
|
||||
print(event)
|
||||
# Close the game.
|
||||
# TODO: Fade out game?
|
||||
self.currentGame.close()
|
||||
self.currentGame = None
|
||||
os.chdir(originalCWD)
|
||||
pygame.display.set_caption('Pain Jam Launcher')
|
||||
# If we launched directly into a game
|
||||
if args.gameID is not None:
|
||||
# Exit the launcher when we exit the game
|
||||
self.running = False
|
||||
else:
|
||||
if event.type == pygame.QUIT:
|
||||
# Exit the launcher.
|
||||
@ -108,23 +108,23 @@ class Launcher:
|
||||
elif event.type == pygame.KEYDOWN:
|
||||
if event.key == pygame.K_1:
|
||||
self.loadGame(games['russianRoulette'])
|
||||
|
||||
|
||||
if self.gameRunning:
|
||||
self.currentGame.update()
|
||||
self.screen.blit(self.currentGame.surf, (0, 0))
|
||||
self.currentGame._update()
|
||||
self.screen.blit(self.currentGame._surf, (0, 0))
|
||||
else:
|
||||
self.screen.fill((0, 0, 0))
|
||||
|
||||
pygame.display.update()
|
||||
|
||||
self.clock.tick(args.fpsCap)
|
||||
|
||||
|
||||
@property
|
||||
def gameRunning(self):
|
||||
return self.currentGame != None
|
||||
return self.currentGame is not None
|
||||
|
||||
launcher = Launcher()
|
||||
if args.gameID != None:
|
||||
if args.gameID is not None:
|
||||
launcher.loadGame(games[args.gameID])
|
||||
while launcher.running:
|
||||
launcher.update()
|
||||
|
||||
@ -1,2 +1,3 @@
|
||||
pygame-ce
|
||||
pishock
|
||||
attrs
|
||||
Reference in New Issue
Block a user