Add more save file helpers
[tabakrolletjie.git] / tabakrolletjie / utils.py
index 0775204345e60a94146164feb2966bdecb886642..6f9e133cb999cd57b20dd64f65f251f4516415e3 100644 (file)
@@ -2,8 +2,13 @@
 
 import functools
 import time
+import pygame.surface
+import pygame.locals as pgl
+import os
+import sys
 
 from .constants import DEBUG
+from .loader import loader
 
 
 def debug_timer(label, debug=False):
@@ -52,3 +57,38 @@ class DetailedTimer(object):
     def end(self):
         print "  %s: %s" % ("total", time.time() - self.times[0])
         print "---- ----"
+
+
+def shadowed_text(text, font_name, size, offset=4):
+    font_black = loader.load_font(font_name, size=size)
+    font_white = loader.load_font(font_name, size=size)
+    background = font_black.render(text, True, (0, 0, 0))
+    foreground = font_white.render(text, True, (255, 255, 255))
+    new_size = (background.get_width() + offset,
+                background.get_height() + offset)
+    base = pygame.surface.Surface(new_size, pgl.SWSURFACE).convert_alpha()
+    base.fill((0, 0, 0, 0))
+    base.blit(background, (offset, offset), None)
+    base.blit(foreground, (0, 0), None)
+    return base
+
+
+def save_location():
+    """Return the directory for the save location."""
+    app = "tabakrolletjie"
+    if sys.platform.startswith('win'):
+        if 'APPDATA' in os.environ:
+            return os.path.join(os.environ['APPDATA'], app)
+        return os.path.join(os.path.expanduser('~'), '.' + app)
+    elif 'XDG_DATA_HOME' in os.environ:
+        return os.path.join(os.environ['XDG_DATA_HOME'], app)
+    return os.path.join(os.path.expanduser('~'), '.local', 'share', app)
+
+
+def get_save_file_name():
+    return os.path.join(save_location(), 'savegame.json')
+
+
+def save_file_exists():
+    savefile = get_save_file_name()
+    return os.path.isfile(savefile)