annotate skaapsteker/__main__.py @ 633:cd3514bf79b5

Add --fullscreen option.
author Simon Cross <hodgestar@gmail.com>
date Fri, 27 Jan 2023 23:18:10 +0100
parents 0675f390653c
children
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
6
be641ad97aaa Create a pygame window.
Simon Cross <hodgestar@gmail.com>
parents: 0
diff changeset
1 """Game main module.
be641ad97aaa Create a pygame window.
Simon Cross <hodgestar@gmail.com>
parents: 0
diff changeset
2 """
be641ad97aaa Create a pygame window.
Simon Cross <hodgestar@gmail.com>
parents: 0
diff changeset
3
447
4bec05fed6c7 Load and save.
Jeremy Thurgood <firxen@gmail.com>
parents: 262
diff changeset
4 import os
105
c455b7925212 Global options in skaapsteker.__init__
Stefano Rivera <stefano@rivera.za.net>
parents: 79
diff changeset
5 import sys
c455b7925212 Global options in skaapsteker.__init__
Stefano Rivera <stefano@rivera.za.net>
parents: 79
diff changeset
6 import optparse
c455b7925212 Global options in skaapsteker.__init__
Stefano Rivera <stefano@rivera.za.net>
parents: 79
diff changeset
7
c455b7925212 Global options in skaapsteker.__init__
Stefano Rivera <stefano@rivera.za.net>
parents: 79
diff changeset
8 import pygame
633
cd3514bf79b5 Add --fullscreen option.
Simon Cross <hodgestar@gmail.com>
parents: 632
diff changeset
9 from pygame.locals import SWSURFACE
105
c455b7925212 Global options in skaapsteker.__init__
Stefano Rivera <stefano@rivera.za.net>
parents: 79
diff changeset
10
c455b7925212 Global options in skaapsteker.__init__
Stefano Rivera <stefano@rivera.za.net>
parents: 79
diff changeset
11 from . import options
618
72865593bdc7 Make DEBUG an environment variable.
Jeremy Thurgood <firxen@gmail.com>
parents: 582
diff changeset
12 from .constants import SCREEN
467
73288045cec5 Set program icon
Stefano Rivera <stefano@rivera.za.net>
parents: 447
diff changeset
13 from .data import filepath
79
fe8652a060df Simple menu screen and TextChoice widget
Stefano Rivera <stefano@rivera.za.net>
parents: 56
diff changeset
14 from .engine import Engine
fe8652a060df Simple menu screen and TextChoice widget
Stefano Rivera <stefano@rivera.za.net>
parents: 56
diff changeset
15 from .levelscene import LevelScene
fe8652a060df Simple menu screen and TextChoice widget
Stefano Rivera <stefano@rivera.za.net>
parents: 56
diff changeset
16 from .menuscene import MenuScene
262
de60329cfc9f Factor out sound stuff
Neil Muller <drnlmuller@gmail.com>
parents: 169
diff changeset
17 from .sound import SoundSystem
6
be641ad97aaa Create a pygame window.
Simon Cross <hodgestar@gmail.com>
parents: 0
diff changeset
18
618
72865593bdc7 Make DEBUG an environment variable.
Jeremy Thurgood <firxen@gmail.com>
parents: 582
diff changeset
19 DEBUG = False
72865593bdc7 Make DEBUG an environment variable.
Jeremy Thurgood <firxen@gmail.com>
parents: 582
diff changeset
20 if os.environ.get('DEBUG'):
72865593bdc7 Make DEBUG an environment variable.
Jeremy Thurgood <firxen@gmail.com>
parents: 582
diff changeset
21 DEBUG = True
72865593bdc7 Make DEBUG an environment variable.
Jeremy Thurgood <firxen@gmail.com>
parents: 582
diff changeset
22
6
be641ad97aaa Create a pygame window.
Simon Cross <hodgestar@gmail.com>
parents: 0
diff changeset
23
447
4bec05fed6c7 Load and save.
Jeremy Thurgood <firxen@gmail.com>
parents: 262
diff changeset
24 def _get_default_save_location():
4bec05fed6c7 Load and save.
Jeremy Thurgood <firxen@gmail.com>
parents: 262
diff changeset
25 """Return a default save game location."""
4bec05fed6c7 Load and save.
Jeremy Thurgood <firxen@gmail.com>
parents: 262
diff changeset
26 app = "ninetales"
4bec05fed6c7 Load and save.
Jeremy Thurgood <firxen@gmail.com>
parents: 262
diff changeset
27 if sys.platform.startswith("win") and "APPDATA" in os.environ:
4bec05fed6c7 Load and save.
Jeremy Thurgood <firxen@gmail.com>
parents: 262
diff changeset
28 return os.path.join(os.environ["APPDATA"], app)
4bec05fed6c7 Load and save.
Jeremy Thurgood <firxen@gmail.com>
parents: 262
diff changeset
29 else:
4bec05fed6c7 Load and save.
Jeremy Thurgood <firxen@gmail.com>
parents: 262
diff changeset
30 return os.path.join(os.path.expanduser("~"), ".%s" % app)
4bec05fed6c7 Load and save.
Jeremy Thurgood <firxen@gmail.com>
parents: 262
diff changeset
31
4bec05fed6c7 Load and save.
Jeremy Thurgood <firxen@gmail.com>
parents: 262
diff changeset
32
6
be641ad97aaa Create a pygame window.
Simon Cross <hodgestar@gmail.com>
parents: 0
diff changeset
33 def parse_args(args):
be641ad97aaa Create a pygame window.
Simon Cross <hodgestar@gmail.com>
parents: 0
diff changeset
34 parser = optparse.OptionParser()
be641ad97aaa Create a pygame window.
Simon Cross <hodgestar@gmail.com>
parents: 0
diff changeset
35 parser.add_option("--no-sound", action="store_false", default=True,
be641ad97aaa Create a pygame window.
Simon Cross <hodgestar@gmail.com>
parents: 0
diff changeset
36 dest="sound", help="disable sound")
633
cd3514bf79b5 Add --fullscreen option.
Simon Cross <hodgestar@gmail.com>
parents: 632
diff changeset
37 parser.add_option("--fullscreen", action="store_true", default=False,
cd3514bf79b5 Add --fullscreen option.
Simon Cross <hodgestar@gmail.com>
parents: 632
diff changeset
38 dest="fullscreen", help="enable fullscreen")
106
bf7d511d3650 Dvorak support
Stefano Rivera <stefano@rivera.za.net>
parents: 105
diff changeset
39 parser.add_option("--dvorak", action="store_true", default=False,
bf7d511d3650 Dvorak support
Stefano Rivera <stefano@rivera.za.net>
parents: 105
diff changeset
40 dest="dvorak", help="Dvorak keyboard layout")
447
4bec05fed6c7 Load and save.
Jeremy Thurgood <firxen@gmail.com>
parents: 262
diff changeset
41 parser.add_option("--save-location", action="store", default=_get_default_save_location(),
4bec05fed6c7 Load and save.
Jeremy Thurgood <firxen@gmail.com>
parents: 262
diff changeset
42 dest="save_location", help="Saved game location")
6
be641ad97aaa Create a pygame window.
Simon Cross <hodgestar@gmail.com>
parents: 0
diff changeset
43 if DEBUG:
56
100e80ed781b Rename scene option to level.
Simon Cross <hodgestar@gmail.com>
parents: 38
diff changeset
44 parser.add_option("--level", type="str", default=None,
105
c455b7925212 Global options in skaapsteker.__init__
Stefano Rivera <stefano@rivera.za.net>
parents: 79
diff changeset
45 dest="level", help="Initial level")
531
5f1058593462 Remove all tails by default
Stefano Rivera <stefano@rivera.za.net>
parents: 486
diff changeset
46 parser.add_option("--all-tails", action="store_true", default=False,
5f1058593462 Remove all tails by default
Stefano Rivera <stefano@rivera.za.net>
parents: 486
diff changeset
47 dest='all_tails', help="Start with all the tails")
582
213f46e787c4 Invert --no-rects option (its now --show-rects) and turn rects off by default.
Simon Cross <hodgestar@gmail.com>
parents: 531
diff changeset
48 parser.add_option("--show-rects", action="store_true", default=False,
105
c455b7925212 Global options in skaapsteker.__init__
Stefano Rivera <stefano@rivera.za.net>
parents: 79
diff changeset
49 dest="rects", help="Disable debugging rects")
6
be641ad97aaa Create a pygame window.
Simon Cross <hodgestar@gmail.com>
parents: 0
diff changeset
50 opts, _ = parser.parse_args(args or [])
106
bf7d511d3650 Dvorak support
Stefano Rivera <stefano@rivera.za.net>
parents: 105
diff changeset
51 options['dvorak'] = opts.dvorak
105
c455b7925212 Global options in skaapsteker.__init__
Stefano Rivera <stefano@rivera.za.net>
parents: 79
diff changeset
52 options['sound'] = opts.sound
633
cd3514bf79b5 Add --fullscreen option.
Simon Cross <hodgestar@gmail.com>
parents: 632
diff changeset
53 options['fullscreen'] = opts.fullscreen
447
4bec05fed6c7 Load and save.
Jeremy Thurgood <firxen@gmail.com>
parents: 262
diff changeset
54 options['save_location'] = opts.save_location
105
c455b7925212 Global options in skaapsteker.__init__
Stefano Rivera <stefano@rivera.za.net>
parents: 79
diff changeset
55 if DEBUG:
c455b7925212 Global options in skaapsteker.__init__
Stefano Rivera <stefano@rivera.za.net>
parents: 79
diff changeset
56 options['debug_rects'] = opts.rects
531
5f1058593462 Remove all tails by default
Stefano Rivera <stefano@rivera.za.net>
parents: 486
diff changeset
57 options['all_tails'] = opts.all_tails
105
c455b7925212 Global options in skaapsteker.__init__
Stefano Rivera <stefano@rivera.za.net>
parents: 79
diff changeset
58 return opts.level
6
be641ad97aaa Create a pygame window.
Simon Cross <hodgestar@gmail.com>
parents: 0
diff changeset
59
0
d6fd1a0b192a Commit skellington.
Simon Cross <hodgestar@gmail.com>
parents:
diff changeset
60
d6fd1a0b192a Commit skellington.
Simon Cross <hodgestar@gmail.com>
parents:
diff changeset
61 def main():
6
be641ad97aaa Create a pygame window.
Simon Cross <hodgestar@gmail.com>
parents: 0
diff changeset
62 """Launch Nine Tales.
be641ad97aaa Create a pygame window.
Simon Cross <hodgestar@gmail.com>
parents: 0
diff changeset
63 """
105
c455b7925212 Global options in skaapsteker.__init__
Stefano Rivera <stefano@rivera.za.net>
parents: 79
diff changeset
64 level = parse_args(sys.argv)
6
be641ad97aaa Create a pygame window.
Simon Cross <hodgestar@gmail.com>
parents: 0
diff changeset
65 pygame.display.init()
be641ad97aaa Create a pygame window.
Simon Cross <hodgestar@gmail.com>
parents: 0
diff changeset
66 pygame.font.init()
262
de60329cfc9f Factor out sound stuff
Neil Muller <drnlmuller@gmail.com>
parents: 169
diff changeset
67 soundsystem = SoundSystem(options['sound'])
633
cd3514bf79b5 Add --fullscreen option.
Simon Cross <hodgestar@gmail.com>
parents: 632
diff changeset
68 screen_flags = SWSURFACE
cd3514bf79b5 Add --fullscreen option.
Simon Cross <hodgestar@gmail.com>
parents: 632
diff changeset
69 if options['fullscreen']:
cd3514bf79b5 Add --fullscreen option.
Simon Cross <hodgestar@gmail.com>
parents: 632
diff changeset
70 screen_flags |= getattr(pygame, 'FULLSCREEN', 0)
cd3514bf79b5 Add --fullscreen option.
Simon Cross <hodgestar@gmail.com>
parents: 632
diff changeset
71 pygame.display.set_mode(SCREEN, screen_flags)
467
73288045cec5 Set program icon
Stefano Rivera <stefano@rivera.za.net>
parents: 447
diff changeset
72 pygame.display.set_icon(pygame.image.load(filepath('icons/program/icon_24.png')))
6
be641ad97aaa Create a pygame window.
Simon Cross <hodgestar@gmail.com>
parents: 0
diff changeset
73 pygame.display.set_caption("Nine Tales")
be641ad97aaa Create a pygame window.
Simon Cross <hodgestar@gmail.com>
parents: 0
diff changeset
74
262
de60329cfc9f Factor out sound stuff
Neil Muller <drnlmuller@gmail.com>
parents: 169
diff changeset
75 engine = Engine(soundsystem)
79
fe8652a060df Simple menu screen and TextChoice widget
Stefano Rivera <stefano@rivera.za.net>
parents: 56
diff changeset
76 if level is not None:
486
6dc341ea8950 Start new game when using --level
Stefano Rivera <stefano@rivera.za.net>
parents: 467
diff changeset
77 engine.game_state.new_game()
6dc341ea8950 Start new game when using --level
Stefano Rivera <stefano@rivera.za.net>
parents: 467
diff changeset
78 engine.change_scene(LevelScene(engine.game_state, soundsystem, level + '.starting'))
79
fe8652a060df Simple menu screen and TextChoice widget
Stefano Rivera <stefano@rivera.za.net>
parents: 56
diff changeset
79 else:
262
de60329cfc9f Factor out sound stuff
Neil Muller <drnlmuller@gmail.com>
parents: 169
diff changeset
80 engine.change_scene(MenuScene(engine.game_state, soundsystem))
11
249814efa91b Create game engine. Enable quitting.
Simon Cross <hodgestar@gmail.com>
parents: 8
diff changeset
81 try:
249814efa91b Create game engine. Enable quitting.
Simon Cross <hodgestar@gmail.com>
parents: 8
diff changeset
82 engine.run()
249814efa91b Create game engine. Enable quitting.
Simon Cross <hodgestar@gmail.com>
parents: 8
diff changeset
83 except KeyboardInterrupt:
249814efa91b Create game engine. Enable quitting.
Simon Cross <hodgestar@gmail.com>
parents: 8
diff changeset
84 pass
6
be641ad97aaa Create a pygame window.
Simon Cross <hodgestar@gmail.com>
parents: 0
diff changeset
85
79
fe8652a060df Simple menu screen and TextChoice widget
Stefano Rivera <stefano@rivera.za.net>
parents: 56
diff changeset
86
7
8000358e47d9 support python -m skaapsteker
Stefano Rivera <stefano@rivera.za.net>
parents: 6
diff changeset
87 if __name__ == '__main__':
8000358e47d9 support python -m skaapsteker
Stefano Rivera <stefano@rivera.za.net>
parents: 6
diff changeset
88 main()