Mercurial > skaapsteker
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 |
rev | line source |
---|---|
6 | 1 """Game main module. |
2 """ | |
3 | |
447 | 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 | 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 | 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 | 17 from .sound import SoundSystem |
6 | 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 | 23 |
447 | 24 def _get_default_save_location(): |
25 """Return a default save game location.""" | |
26 app = "ninetales" | |
27 if sys.platform.startswith("win") and "APPDATA" in os.environ: | |
28 return os.path.join(os.environ["APPDATA"], app) | |
29 else: | |
30 return os.path.join(os.path.expanduser("~"), ".%s" % app) | |
31 | |
32 | |
6 | 33 def parse_args(args): |
34 parser = optparse.OptionParser() | |
35 parser.add_option("--no-sound", action="store_false", default=True, | |
36 dest="sound", help="disable sound") | |
633 | 37 parser.add_option("--fullscreen", action="store_true", default=False, |
38 dest="fullscreen", help="enable fullscreen") | |
106 | 39 parser.add_option("--dvorak", action="store_true", default=False, |
40 dest="dvorak", help="Dvorak keyboard layout") | |
447 | 41 parser.add_option("--save-location", action="store", default=_get_default_save_location(), |
42 dest="save_location", help="Saved game location") | |
6 | 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 | 50 opts, _ = parser.parse_args(args or []) |
106 | 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 | 53 options['fullscreen'] = opts.fullscreen |
447 | 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 | 59 |
0 | 60 |
61 def main(): | |
6 | 62 """Launch Nine Tales. |
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 | 65 pygame.display.init() |
66 pygame.font.init() | |
262 | 67 soundsystem = SoundSystem(options['sound']) |
633 | 68 screen_flags = SWSURFACE |
69 if options['fullscreen']: | |
70 screen_flags |= getattr(pygame, 'FULLSCREEN', 0) | |
71 pygame.display.set_mode(SCREEN, screen_flags) | |
467 | 72 pygame.display.set_icon(pygame.image.load(filepath('icons/program/icon_24.png'))) |
6 | 73 pygame.display.set_caption("Nine Tales") |
74 | |
262 | 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 | 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 | 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() |