caption
authorFrank DeMarco <frank.s.demarco@gmail.com>
Sun, 27 Apr 2014 20:27:58 +0000 (05:27 +0900)
committerFrank DeMarco <frank.s.demarco@gmail.com>
Sun, 27 Apr 2014 20:27:58 +0000 (05:27 +0900)
config
scale_sieve/ScaleSieve.py

diff --git a/config b/config
index 0c78f1f..d8916f9 100644 (file)
--- a/config
+++ b/config
@@ -1,6 +1,8 @@
 [display]
+caption = Electric Sieve
 dimensions = 420, 700
-font-path = Titan-One.ttf
+score-font-path = Titan-One.ttf
+title-font-path = Oxygen.ttf
 
 [mouse]
 visible = no
index 7f64b33..1c225e1 100644 (file)
@@ -42,8 +42,37 @@ class Title(GameChild):
         GameChild.__init__(self, parent)
         self.display_surface = self.get_display_surface()
         self.delegate = self.parent.delegate
+        bg_color = (255, 222, 173)
         self.background = surface = Surface(self.display_surface.get_size())
-        surface.fill((0, 255, 255))
+        tile = Surface((2, 2))
+        tile.fill(bg_color)
+        tile.set_at((0, 1), (220, 119, 41))
+        tile.set_at((1, 0), (220, 119, 41))
+        for y in xrange(0, surface.get_height(), 2):
+            for x in xrange(0, surface.get_width(), 2):
+                surface.blit(tile, (x, y))
+        font = Font(self.get_resource("display", "title-font-path"), 20)
+        font.set_italic(True)
+        font.set_bold(True)
+        self.captions = captions = Sprite(self), Sprite(self)
+        colors = (255, 204, 0), (0, 68, 170), (255, 255, 255), (128, 128, 128), \
+                 (220, 119, 41)
+        texts = ["", ""]
+        for ii, text in \
+                enumerate(self.get_configuration("display",
+                                                 "caption").upper().split()):
+            texts[ii] += "•" * (5 if ii else 3)
+            for ch in text:
+                texts[ii] += ch + "    "
+            texts[ii] = texts[ii].strip() + "•" * (5 if ii else 3)
+        for _ in xrange(25):
+            color = choice(colors)
+            captions[0].add_frame(font.render(texts[0], True, color, (220, 208, 255)))
+            captions[1].add_frame(font.render(texts[1], True, color, (220, 208, 255)))
+        cx = self.display_surface.get_rect().centerx
+        captions[0].location.center = cx, 301
+        captions[1].location.center = cx, 398
+        self.scoreboard = Scoreboard(self)
         self.subscribe(self.respond)
 
     def respond(self, event):
@@ -56,6 +85,7 @@ class Title(GameChild):
 
     def activate(self):
         self.active = True
+        self.scoreboard.activate()
 
     def deactivate(self):
         self.active = False
@@ -63,6 +93,9 @@ class Title(GameChild):
     def update(self):
         if self.active:
             self.display_surface.blit(self.background, (0, 0))
+            for caption in self.captions:
+                caption.update()
+            self.scoreboard.update()
 
 
 class Strip(Sprite):
@@ -134,6 +167,16 @@ class Shift(GameChild):
         return self.nodeset.get_y(self.time) * self.direction
 
 
+class Scoreboard(Strip):
+
+    def __init__(self, parent):
+        Strip.__init__(self, parent)
+        surface = Surface((380, 80))
+        surface.fill((255, 255, 255))
+        self.add_frame(surface)
+        self.location.center = self.display_surface.get_rect().centerx, 350
+
+
 class Sieve(Strip):
 
     UP, DOWN = range(2)
@@ -438,7 +481,7 @@ class Total(Sprite):
     def __init__(self, parent):
         Sprite.__init__(self, parent, 68)
         self.deactivate()
-        self.font = Font(self.get_resource("display", "font-path"), 48)
+        self.font = Font(self.get_resource("display", "score-font-path"), 48)
         self.font.set_italic(True)
 
     def deactivate(self):