changeset 390:d9c47a9e3d84

Working manual. (Still needs arrows.)
author Jeremy Thurgood <firxen@gmail.com>
date Sat, 28 Aug 2010 19:40:36 +0200
parents eef2fca1aa11
children 30a2366cc8e1
files gamelib/scenes/manual.py
diffstat 1 files changed, 48 insertions(+), 28 deletions(-) [+]
line wrap: on
line diff
--- a/gamelib/scenes/manual.py	Sat Aug 28 19:55:30 2010 +0200
+++ b/gamelib/scenes/manual.py	Sat Aug 28 19:40:36 2010 +0200
@@ -19,42 +19,76 @@
 # classes related the computer detail
 
 
-class PagePrior(Thing):
+class PageBase(Thing):
+    "Displays manual pages"
+
+    def get_page_thing(self):
+        return self.state.current_detail.things['manual.page']
+
+    def get_page(self):
+        return self.get_page_thing().get_data('page')
+
+    def set_page(self, page):
+        self.get_page_thing().set_page(page)
+
+
+class PagePrior(PageBase):
     """Prior page in the manual"""
 
     NAME = 'manual.page_prior'
 
     INTERACTS = {
-            'up' : InteractNoImage(594, 82, 30, 58)
+            'up' : InteractNoImage(0, 350, 80, 25)
             }
     INITIAL = 'up'
 
     def is_interactive(self):
-        page = self.state.current_detail.get_data('page')
-        return page > 0
+        return self.get_page() > 0
 
     def interact_without(self):
-        page = self.state.current_detail.get_data('page')
-        self.state.current_detail.set_data('page', page - 1)
+        self.set_page(self.get_page() - 1)
 
 
-class PageNext(Thing):
+class PageNext(PageBase):
     """Next page in the manual"""
 
     NAME = 'manual.page_next'
 
     INTERACTS = {
-            'down' : InteractNoImage(594, 293, 30, 58)
+            'down' : InteractNoImage(170, 350, 80, 25)
             }
     INITIAL = 'down'
 
     def is_interactive(self):
-        page = self.state.current_detail.get_data('page')
-        return (page + 1) < self.current_detail.get_data('max page')
+        return self.get_page() < len(self.get_page_thing().INTERACTS) - 1
 
     def interact_without(self):
-        page = self.state.current_detail.get_data('page')
-        self.state.current_detail.set_data('page', page + 1)
+        self.set_page(self.get_page() + 1)
+
+
+class ManualPage(Thing):
+    """Page in the manual"""
+
+    NAME = 'manual.page'
+
+    INTERACTS = {
+            0 : InteractImage(0, 0, 'manual_p1.png'),
+            1 : InteractImage(0, 0, 'manual_p2.png'),
+            2 : InteractImage(0, 0, 'manual_p3.png'),
+            3 : InteractImage(0, 0, 'manual_p4.png'),
+            }
+    INITIAL = 0
+
+    INITIAL_DATA = {
+        'page': 0,
+        }
+
+    def is_interactive(self):
+        return False
+
+    def set_page(self, page):
+        self.set_data('page', page)
+        self.set_interact(page)
 
 
 class ManualDetail(Scene):
@@ -62,25 +96,15 @@
     FOLDER = 'manual'
     NAME = 'manual_detail'
 
-    SIZE = (640, 400)
-
-    PAGES = ['manual_p1.png', 'manual_p2.png',
-             'manual_p3.png', 'manual_p4.png']
-
-    BACKGROUND = PAGES[0]
-
-    INITIAL_DATA = {
-            'page' : 0,
-            'max page' : len(PAGES),
-    }
+    BACKGROUND = 'manual_detail.png'
 
     def __init__(self, state):
         super(ManualDetail, self).__init__(state)
 
+        self.add_thing(ManualPage())
         self.add_thing(PagePrior())
         self.add_thing(PageNext())
         self._scene_playlist = None
-        self._pages = [get_image(self.FOLDER, x) for x in self.PAGES]
 
     def enter(self):
         self._scene_playlist = get_current_playlist()
@@ -89,10 +113,6 @@
     def leave(self):
         change_playlist(self._scene_playlist)
 
-    def draw_background(self, surface):
-        self._background = self._pages[self.get_data('page')]
-        super(ManualDetail, self).draw_background(surface)
-
 
 SCENES = []
 DETAIL_VIEWS = [ManualDetail]