changeset 601:915de6c7d342 default tip

Add support for making the editor fullscreen too.
author Simon Cross <hodgestar@gmail.com>
date Sat, 14 Jan 2023 19:34:26 +0100
parents 93cb9c1d2bb2
children
files mamba/__main__.py mamba/constants.py mamba/habitats/editor.py
diffstat 3 files changed, 20 insertions(+), 9 deletions(-) [+]
line wrap: on
line diff
--- a/mamba/__main__.py	Sat Jan 14 19:33:57 2023 +0100
+++ b/mamba/__main__.py	Sat Jan 14 19:34:26 2023 +0100
@@ -4,7 +4,9 @@
 import pygame
 from pygame.locals import SWSURFACE
 
-from mamba.constants import SCREEN, NAME, WINDOW_ICON
+from mamba.constants import (
+    SCREEN, NAME, WINDOW_ICON, DISPLAY_FLAGS, FULLSCREEN_FLAGS,
+)
 from mamba.options import options, parse_args, check_args
 from mamba.engine import Engine
 from mamba.gamestate import load_state
@@ -31,11 +33,9 @@
 
     SoundSystem(options.sound)
 
-    display_flags = SWSURFACE
+    display_flags = DISPLAY_FLAGS
     if options.fullscreen:
-        display_flags |= pygame.FULLSCREEN
-        if getattr(pygame, "SCALED", None):
-            display_flags |= pygame.SCALED
+        display_flags |= FULLSCREEN_FLAGS
 
     pygame.display.init()
     pygame.font.init()
--- a/mamba/constants.py	Sat Jan 14 19:33:57 2023 +0100
+++ b/mamba/constants.py	Sat Jan 14 19:34:26 2023 +0100
@@ -1,3 +1,4 @@
+import pygame
 from pygame.locals import K_ESCAPE, K_q, K_BACKSPACE, K_DELETE
 
 # version tuple for maps
@@ -11,6 +12,8 @@
 SCREEN = (800, 600)
 EDIT_SCREEN = (1000, 600)
 TILE_SIZE = (20, 20)
+DISPLAY_FLAGS = pygame.SWSURFACE
+FULLSCREEN_FLAGS = pygame.FULLSCREEN | getattr(pygame, "SCALED", 0)
 
 # Miscellaneous constants
 NAME = "Mutable Mamba"
@@ -48,6 +51,7 @@
 DEFAULTS = {
     'debug': False,
     'sound': True,
+    'fullscreen': False,
     'level': None,
     'uncurated': None,
     'list_uncurated': False,
--- a/mamba/habitats/editor.py	Sat Jan 14 19:33:57 2023 +0100
+++ b/mamba/habitats/editor.py	Sat Jan 14 19:34:26 2023 +0100
@@ -22,10 +22,14 @@
 from mamba.widgets.editsprite import EditSpriteBox
 from mamba.widgets.editlevel import EditLevelBox
 from mamba.level import Level, Tileset, TILE_MAP, THING_MAP, InvalidMapError
+from mamba.options import options
 from mamba.data import (check_level_exists, get_level_list, load_file,
                         load_image, load_tile_image)
-from mamba.constants import (SCREEN, EDIT_SCREEN, NAME, ESCAPE_KEYS,
-        RESERVED_NAMES, WINDOW_ICON, LEVEL_SERVER, UP, DOWN, LEFT, RIGHT)
+from mamba.constants import (
+        SCREEN, EDIT_SCREEN, NAME, DISPLAY_FLAGS, FULLSCREEN_FLAGS,
+        ESCAPE_KEYS, RESERVED_NAMES, WINDOW_ICON, LEVEL_SERVER,
+        UP, DOWN, LEFT, RIGHT,
+)
 
 MAX_TOOLS = 6
 MODE_HEIGHT = 370
@@ -59,13 +63,16 @@
                 }
         helpfile = load_file(HELP, mode="r")
         self.help_msg = ''.join(helpfile.readlines())
+        self._display_flags = DISPLAY_FLAGS
+        if options.fullscreen:
+            self._display_flags |= FULLSCREEN_FLAGS
 
     def on_enter(self):
         # We need to juggle the display to the correct size
         # This is a horrible hack
         pygame.display.quit()
         pygame.display.init()
-        pygame.display.set_mode(EDIT_SCREEN, SWSURFACE)
+        pygame.display.set_mode(EDIT_SCREEN, self._display_flags)
         pygame.display.set_icon(load_image(WINDOW_ICON))
         pygame.display.set_caption('%s Level editor' % NAME)
         super(EditorHabitat, self).on_enter()
@@ -77,7 +84,7 @@
         super(EditorHabitat, self).on_exit()
         pygame.display.quit()
         pygame.display.init()
-        pygame.display.set_mode(SCREEN, SWSURFACE)
+        pygame.display.set_mode(SCREEN, self._display_flags)
         pygame.display.set_icon(load_image(WINDOW_ICON))
         pygame.display.set_caption(NAME)