adonthell-commits
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[adonthell-wastesedge-commits] Release_0-3-1 78eb33a 147/237: UPDATED sc


From: Kai Sterker
Subject: [adonthell-wastesedge-commits] Release_0-3-1 78eb33a 147/237: UPDATED scripts to make use of the new win_manager features
Date: Mon, 25 Jul 2016 18:15:07 +0000 (UTC)

tag: Release_0-3-1
commit 78eb33acf170a4f8e78b09a1c8466d80d9499f4e
Author: adondev <adondev>
Commit: adondev <adondev>

    UPDATED scripts to make use of the new win_manager features
---
 mapengine.data                                     |  Bin 4067 -> 4341 bytes
 scripts/actions/talk.py                            |    6 +-
 scripts/events/open_inn_door.py                    |    4 +-
 scripts/init.py                                    |  194 ++++++++++----------
 scripts/modules/character_screen.py                |   14 +-
 scripts/modules/events.py                          |   36 +---
 scripts/modules/intro.py                           |    2 +-
 scripts/modules/main_menu.py                       |  124 ++++++-------
 scripts/schedules/mapcharacters/intro.py           |   14 +-
 .../schedules/mapcharacters/keyboard_control.py    |   98 +++++-----
 scripts/schedules/mapcharacters/orloth.py          |   69 +++----
 11 files changed, 247 insertions(+), 314 deletions(-)

diff --git a/mapengine.data b/mapengine.data
index c84f158..abf8ec3 100755
Binary files a/mapengine.data and b/mapengine.data differ
diff --git a/scripts/actions/talk.py b/scripts/actions/talk.py
index 8546176..b964741 100755
--- a/scripts/actions/talk.py
+++ b/scripts/actions/talk.py
@@ -32,7 +32,7 @@ class talk:
             requester.set_schedule_active (0)
 
             # -- look into the player's face
-            self.myself.look_invert(requester.currentmove())
+            self.myself.look_invert (requester.currentmove ())
 
             # -- init the dialogue engine
             dlg = adonthell.dialog_screen (self.myself, 
self.myself.get_dialogue (), 0)
@@ -44,8 +44,8 @@ class talk:
             dlg.py_signal_connect (self.restore_schedule, 
adonthell.win_event_CLOSE, (requester, self.myself))
 
             # -- add the dialogue window to the win_manager
-            adonthell.win_manager_add (dlg)
-            adonthell.win_manager_set_focus (dlg)
+            adonthell.win_manager_get_active ().add (dlg)
+            adonthell.win_manager_get_active ().set_focus (dlg)
 
             # -- start the dialogue
             dlg.run ()
diff --git a/scripts/events/open_inn_door.py b/scripts/events/open_inn_door.py
index ca0c4bd..d9e8f43 100755
--- a/scripts/events/open_inn_door.py
+++ b/scripts/events/open_inn_door.py
@@ -20,5 +20,5 @@ class open_inn_door:
         pass
 
     def run (self, submap, x, y, dir, name):
-        adonthell.gamedata_map_engine ().get_landmap ().get_mapobject (0).\
-                                      get_animation (0).next_frame ()
+        adonthell.gamedata_engine ().get_landmap ().get_mapobject (0).\
+                                     get_animation (0).next_frame ()
diff --git a/scripts/init.py b/scripts/init.py
index 3a111cc..1cdab4e 100755
--- a/scripts/init.py
+++ b/scripts/init.py
@@ -79,21 +79,17 @@ class title_screen:
         self.draw_func = self.initial_fade_in
 
         self.alpha = 0
-        self.retval = 1
-
-        # -- let the win_manager handle everything
-        win_manager_add (self.window)
-        win_manager_set_focus (self.window)
 
         audio_play_background (0)
 
-        # -- launch the mapengine
+        # -- launch the engine
         gametime_start_action ()
-        gamedata_map_engine ().set_should_update_map (0)
-        gamedata_map_engine ().run ()
+        gamedata_engine ().main (self.window, "title_sequence")
+
 
     def __del__ (self):
         print "Destructor called"
+        gamedata_engine ().main_quit ()
 
     # -- catch ESC key
     def on_update (self):
@@ -107,7 +103,8 @@ class title_screen:
                 self.draw_func = None
                 self.show_menu (1, 0)
 
-        return self.retval
+        # return self.retval
+        return 1
 
     # -- callback for drawing operations
     def on_draw (self):
@@ -124,7 +121,7 @@ class title_screen:
 
         else:
             # -- fade in
-            self.alpha = self.alpha + gametime_frames_to_do()
+            self.alpha = self.alpha + gametime_frames_to_skip()
             if self.alpha > 255: self.alpha = 255
             self.bag_c.set_alpha (self.alpha)
 
@@ -154,53 +151,57 @@ class title_screen:
 
         else:
             # -- fade in
-            self.alpha = self.alpha + gametime_frames_to_do()
+            self.alpha = self.alpha + gametime_frames_to_skip()
             if self.alpha > 255: self.alpha = 255
             self.bag_o.set_alpha (self.alpha)
 
     # -- Show the main menu
     def show_menu (self, a, b):
-        self.menu = main_menu (a, b)
-        self.menu.thisown = C
-        self.menu.py_signal_connect (self.on_menu_close, win_event_CLOSE)
+        menu = main_menu (a, b)
+        
+        # -- open the menu
+        gamedata_engine ().main (menu, "game_menu")
+        
+        # -- once the menu is closed, see what we got
+        retval = menu.get_result ()
+        print "Main menu closed with retval", retval
 
-        win_manager_add (self.menu)
-        win_manager_set_focus (self.menu)
-
-    # -- on to the main menu
-    def on_menu_close (self, retval):
         audio_pause_music ()
         audio_unload_background (0)
-        if retval < 5:
-            gamedata_map_engine ().set_should_update_map (1)
-
-            # -- start new game
-            if retval == 1:
-                gamedata_map_engine ().fade_out ()
-                self.cleanup ()
-
-                gamedata_load_characters (0)
-                gamedata_load_quests (0)
-
-                # let the player chose a name for his character
-                from character_screen import *
-                self.cs = character_screen ()
-                self.cs.thisown = C
-                self.cs.py_signal_connect (self.on_cs_close, win_event_CLOSE)
-
-                win_manager_add (self.cs)
-                win_manager_set_focus (self.cs)
-            # -- Load game
-            else:
-                self.cleanup ()
-                gamedata_map_engine ().fade_in ()
-
+        
+        # -- start new game
+        if retval == 1:
+            # -- let the player chose a name for his character
+            from character_screen import *
+            cs = character_screen ()
+            gamedata_engine ().main (cs, "character_screen")
+                
+            gamedata_engine ().fade_out ()
+            self.cleanup ()
+
+            # -- load the initial game
+            gamedata_load (0)
+            # gamedata_load_characters (0)
+            # gamedata_load_quests (0)
+            adonthell.gamedata_player ().rename (cs.name)
+                
+            # -- on to the intro
+            self.play_intro ()
+            
+        # -- Load game
+        elif retval == 2:
+            self.window.set_visible (0)
+            self.cleanup ()
+            gamedata_engine ().mapview_start ()
+            gamedata_engine ().fade_in ()
+
+        # -- quit the game
         else:
-            gamedata_map_engine ().quit ()
+            gamedata_engine ().main_quit ()
 
     # -- cleanup
     def cleanup (self):
-        win_manager_remove (self.window)
+        win_manager_get_active ().remove (self.window)
 
         self.window.remove (self.bag_o)
         self.window.remove (self.bag_c)
@@ -210,30 +211,28 @@ class title_screen:
         del self.bag_c
         del self.bag_t
 
-        self.retval = 0
         audio_pause_music ()
         audio_unload_background (0)
 
-        screen_display.fillrect (0, 0, 320, 240, 0)
-        screen_show ()
 
-    def on_cs_close (self, retval):
+    def play_intro (self):
         # Launches the intro
         import intro
 
         # Creates the map engine context for the game start
-        gamedata_map_engine ().load_map ("test.map")
-        lm = gamedata_map_engine ().get_landmap ()
-
-        the_player = gamedata_player ()
-
-        the_player.set_val ("gender", MALE)
-        the_player.set_val ("race", HALFELF)
-        the_player.load ("player.mchar")
-        the_player.set_map (lm)
-        the_player.jump_to (0, 11, 18, STAND_EAST)
-        the_player.set_schedule ("keyboard_control")
-        gamedata_map_engine ().set_mapview_schedule ("center_character", 
(the_player.get_name (),))
+        lm = gamedata_engine ().get_landmap ()
+        # lm.load ("test.map")
+        
+        player = gamedata_player ()
+        player.set_val ("gender", MALE)
+        player.set_val ("race", HALFELF)
+        player.load ("player.mchar")
+        player.set_map (lm)
+        player.jump_to (0, 4, 18)
+        player.stand_east ()
+        player.set_schedule ("intro")
+        
+        gamedata_engine ().set_mapview_schedule ("center_character", 
(player.get_name (),))
 
         # Setting up the map events
         # Teleport events
@@ -704,7 +703,7 @@ class title_screen:
         ev.x = 10
         ev.y = 2
         ev.dir = STAND_NORTH
-        ev.set_script ("character_speak", (the_player.get_name (), \
+        ev.set_script ("character_speak", (player.get_name (), \
                                            "That clock seems to be late!"))
         lm.add_event (ev)
 
@@ -714,7 +713,7 @@ class title_screen:
         ev.x = 3
         ev.y = 6
         ev.dir = STAND_NORTH
-        ev.set_script ("character_speak", (the_player.get_name (), \
+        ev.set_script ("character_speak", (player.get_name (), \
                                            "I'd better not touch this... What 
if it explodes??"))
         lm.add_event (ev)
 
@@ -724,7 +723,7 @@ class title_screen:
         ev.x = 4
         ev.y = 6
         ev.dir = STAND_NORTH
-        ev.set_script ("character_speak", (the_player.get_name (), \
+        ev.set_script ("character_speak", (player.get_name (), \
                                            "I'd better not touch this... What 
if it explodes??"))
         lm.add_event (ev)
 
@@ -734,7 +733,7 @@ class title_screen:
         ev.x = 2
         ev.y = 5
         ev.dir = STAND_EAST
-        ev.set_script ("character_speak", (the_player.get_name (), \
+        ev.set_script ("character_speak", (player.get_name (), \
                                            "I'd better not touch this... What 
if it explodes??"))
         lm.add_event (ev)
 
@@ -744,7 +743,7 @@ class title_screen:
         ev.x = 5
         ev.y = 5
         ev.dir = STAND_WEST
-        ev.set_script ("character_speak", (the_player.get_name (), \
+        ev.set_script ("character_speak", (player.get_name (), \
                                            "I'd better not touch this... What 
if it explodes??"))
         lm.add_event (ev)
 
@@ -754,7 +753,7 @@ class title_screen:
         ev.x = 3
         ev.y = 4
         ev.dir = STAND_SOUTH
-        ev.set_script ("character_speak", (the_player.get_name (), \
+        ev.set_script ("character_speak", (player.get_name (), \
                                            "I'd better not touch this... What 
if it explodes??"))
         lm.add_event (ev)
 
@@ -764,7 +763,7 @@ class title_screen:
         ev.x = 4
         ev.y = 4
         ev.dir = STAND_SOUTH
-        ev.set_script ("character_speak", (the_player.get_name (), \
+        ev.set_script ("character_speak", (player.get_name (), \
                                            "I'd better not touch this... What 
if it explodes??"))
         lm.add_event (ev)
 
@@ -774,7 +773,7 @@ class title_screen:
         ev.x = 6
         ev.y = 17
         ev.dir = STAND_WEST
-        ev.set_script ("character_speak", (the_player.get_name (), \
+        ev.set_script ("character_speak", (player.get_name (), \
                                            "Closed. We are all imprisoned 
here..."))
         lm.add_event (ev)
 
@@ -784,7 +783,7 @@ class title_screen:
         ev.x = 6
         ev.y = 18
         ev.dir = STAND_WEST
-        ev.set_script ("character_speak", (the_player.get_name (), \
+        ev.set_script ("character_speak", (player.get_name (), \
                                            "Closed. We are all imprisoned 
here..."))
         lm.add_event (ev)
 
@@ -794,7 +793,7 @@ class title_screen:
         ev.x = 6
         ev.y = 19
         ev.dir = STAND_WEST
-        ev.set_script ("character_speak", (the_player.get_name (), \
+        ev.set_script ("character_speak", (player.get_name (), \
                                            "Closed. We are all imprisoned 
here..."))
         lm.add_event (ev)
 
@@ -804,7 +803,7 @@ class title_screen:
         ev.x = 1
         ev.y = 6
         ev.dir = STAND_NORTH
-        ev.set_script ("character_speak", (the_player.get_name (), \
+        ev.set_script ("character_speak", (player.get_name (), \
                                            "It's locked."))
         lm.add_event (ev)
 
@@ -814,7 +813,7 @@ class title_screen:
         ev.x = 2
         ev.y = 5
         ev.dir = STAND_NORTH
-        ev.set_script ("character_speak", (the_player.get_name (), \
+        ev.set_script ("character_speak", (player.get_name (), \
                                            "It's locked."))
         lm.add_event (ev)
 
@@ -824,7 +823,7 @@ class title_screen:
         ev.x = 6
         ev.y = 4
         ev.dir = STAND_NORTH
-        ev.set_script ("character_speak", (the_player.get_name (), \
+        ev.set_script ("character_speak", (player.get_name (), \
                                            "It's locked."))
         lm.add_event (ev)
 
@@ -834,7 +833,7 @@ class title_screen:
         ev.x = 6
         ev.y = 8
         ev.dir = STAND_NORTH
-        ev.set_script ("character_speak", (the_player.get_name (), \
+        ev.set_script ("character_speak", (player.get_name (), \
                                            "It's locked."))
         lm.add_event (ev)
 
@@ -844,7 +843,7 @@ class title_screen:
         ev.x = 1
         ev.y = 4
         ev.dir = STAND_NORTH
-        ev.set_script ("character_speak", (the_player.get_name (), \
+        ev.set_script ("character_speak", (player.get_name (), \
                                            "It's locked."))
         lm.add_event (ev)
 
@@ -854,7 +853,7 @@ class title_screen:
         ev.x = 7
         ev.y = 3
         ev.dir = STAND_NORTH
-        ev.set_script ("character_speak", (the_player.get_name (), \
+        ev.set_script ("character_speak", (player.get_name (), \
                                            "I doubt Master Fingolson would be 
happy if I go through his things..."))
         lm.add_event (ev)
 
@@ -864,21 +863,16 @@ class title_screen:
         ev.x = 1
         ev.y = 6
         ev.dir = STAND_NORTH
-        ev.set_script ("character_speak", (the_player.get_name (), \
+        ev.set_script ("character_speak", (player.get_name (), \
                                            "Well, I can't dig into my 
mistress' shelf!"))
         lm.add_event (ev)
 
 
         # Now setup the characters
-        player = gamedata_player ()
-        player.jump_to (0, 4, 18)
-        player.stand_east ()
-        player.set_schedule ("intro")
-
         lucia = gamedata_get_character ("Lucia Redwyne")
         lucia.set_dialogue ("dialogues/lucia_start")
         lucia.load ("lucia.mchar")
-        lucia.set_map (gamedata_map_engine ().get_landmap ())
+        lucia.set_map (gamedata_engine ().get_landmap ())
         lucia.jump_to (3, 4, 3)
         lucia.set_action ("talk")
         lucia.set_schedule ("lucia")
@@ -888,7 +882,7 @@ class title_screen:
         orloth = gamedata_get_character ("Orloth Redwyne")
         orloth.set_dialogue ("dialogues/orloth_start")
         orloth.load ("orloth.mchar")
-        orloth.set_map (gamedata_map_engine ().get_landmap ())
+        orloth.set_map (gamedata_engine ().get_landmap ())
         orloth.jump_to (1, 2, 2)
         orloth.set_action ("talk")
         orloth.stand_south ()
@@ -898,7 +892,7 @@ class title_screen:
         erek = gamedata_get_character ("Erek Stonebreaker")
         erek.set_dialogue ("dialogues/erek_start")
         erek.load ("erek.mchar")
-        erek.set_map (gamedata_map_engine ().get_landmap ())
+        erek.set_map (gamedata_engine ().get_landmap ())
         erek.jump_to (1, 5, 5)
         erek.set_action ("talk")
         erek.stand_north ()
@@ -910,7 +904,7 @@ class title_screen:
         talan = gamedata_get_character ("Talan Wendth")
         talan.set_dialogue ("dialogues/demo_intro_1")
         talan.load ("talan.mchar")
-        talan.set_map (gamedata_map_engine ().get_landmap ())
+        talan.set_map (gamedata_engine ().get_landmap ())
         talan.jump_to (0, 7, 17)
         talan.set_action ("talk")
         talan.stand_west ()
@@ -920,7 +914,7 @@ class title_screen:
         jelom = gamedata_get_character ("Jelom Rasgar")
         jelom.set_dialogue ("dialogues/jelom_start")
         jelom.load ("jelom.mchar")
-        jelom.set_map (gamedata_map_engine ().get_landmap ())
+        jelom.set_map (gamedata_engine ().get_landmap ())
         jelom.jump_to (9, 2, 6)
         jelom.set_action ("talk")
         jelom.stand_north ()
@@ -930,7 +924,7 @@ class title_screen:
         alek = gamedata_get_character ("Alek Endhelm")
         alek.set_dialogue ("dialogues/alek_start")
         alek.load ("alek.mchar")
-        alek.set_map (gamedata_map_engine ().get_landmap ())
+        alek.set_map (gamedata_engine ().get_landmap ())
         alek.jump_to (1, 1, 3)
         alek.set_action ("talk")
         alek.stand_south ()
@@ -940,7 +934,7 @@ class title_screen:
         oliver = gamedata_get_character ("Oliver Redwyne")
         oliver.set_dialogue ("dialogues/oliver_start")
         oliver.load ("oliver.mchar")
-        oliver.set_map (gamedata_map_engine ().get_landmap ())
+        oliver.set_map (gamedata_engine ().get_landmap ())
         oliver.jump_to (0, 25, 15)
         oliver.set_action ("talk")
         oliver.stand_west ()
@@ -950,7 +944,7 @@ class title_screen:
         frostbloom = gamedata_get_character ("Rhayne Frostbloom")
         frostbloom.set_dialogue ("dialogues/frostbloom_start")
         frostbloom.load ("frostbloom.mchar")
-        frostbloom.set_map (gamedata_map_engine ().get_landmap ())
+        frostbloom.set_map (gamedata_engine ().get_landmap ())
         frostbloom.jump_to (0, 18, 22)
         frostbloom.set_action ("talk")
         frostbloom.stand_north ()
@@ -960,7 +954,7 @@ class title_screen:
         bjarn = gamedata_get_character ("Bjarn Fingolson")
         bjarn.set_dialogue ("dialogues/bjarn_start")
         bjarn.load ("bjarn.mchar")
-        bjarn.set_map (gamedata_map_engine ().get_landmap ())
+        bjarn.set_map (gamedata_engine ().get_landmap ())
         bjarn.jump_to (7, 3, 6)
         bjarn.set_action ("talk")
         bjarn.stand_west ()
@@ -969,7 +963,7 @@ class title_screen:
 
         silverhair = gamedata_get_character ("Imoen Silverhair")
         silverhair.load ("silverhair.mchar")
-        silverhair.set_map (gamedata_map_engine ().get_landmap ())
+        silverhair.set_map (gamedata_engine ().get_landmap ())
         silverhair.jump_to (13, 4, 4)
         silverhair.set_action ("talk")
         silverhair.stand_south ()
@@ -979,7 +973,7 @@ class title_screen:
         sarin = gamedata_get_character ("Sarin Trailfollower")
         sarin.set_dialogue ("dialogues/sarin_start")
         sarin.load ("servant2.mchar")
-        sarin.set_map (gamedata_map_engine ().get_landmap ())
+        sarin.set_map (gamedata_engine ().get_landmap ())
         sarin.jump_to (13, 5, 3)
         sarin.set_action ("talk")
         sarin.stand_west ()
@@ -989,7 +983,7 @@ class title_screen:
         janesta = gamedata_get_character ("Janesta Skywind")
         janesta.set_dialogue ("dialogues/janesta_start")
         janesta.load ("servant1.mchar")
-        janesta.set_map (gamedata_map_engine ().get_landmap ())
+        janesta.set_map (gamedata_engine ().get_landmap ())
         janesta.jump_to (13, 6, 3)
         janesta.set_action ("talk")
         janesta.stand_north ()
@@ -999,7 +993,7 @@ class title_screen:
         fellnir = gamedata_get_character ("Fellnir Kezular")
         fellnir.set_dialogue ("dialogues/fellnir_start")
         fellnir.load ("fellnir.mchar")
-        fellnir.set_map (gamedata_map_engine ().get_landmap ())
+        fellnir.set_map (gamedata_engine ().get_landmap ())
         fellnir.jump_to (10, 4, 4)
         fellnir.set_action ("talk")
         fellnir.stand_south ()
@@ -1009,7 +1003,7 @@ class title_screen:
         tristan = gamedata_get_character ("Tristan Illig")
         tristan.set_dialogue ("dialogues/tristan_start")
         tristan.load ("illig.mchar")
-        tristan.set_map (gamedata_map_engine ().get_landmap ())
+        tristan.set_map (gamedata_engine ().get_landmap ())
         tristan.jump_to (1, 4, 6)
         tristan.set_action ("talk")
         tristan.stand_west ()
@@ -1019,9 +1013,11 @@ class title_screen:
         # Once we want to generate the data context files,
         # just call gamedata::save (1) and copy the .data files
         # to the game's root directory.
-
+        
+        # -- start the mapengine
+        gamedata_engine ().mapview_start ()
         gametime_update ()
-        gamedata_map_engine ().fade_in ()
+        gamedata_engine ().fade_in ()
 
 # -- Main --
 title = title_screen ()
diff --git a/scripts/modules/character_screen.py 
b/scripts/modules/character_screen.py
index 7a67465..7508bc0 100644
--- a/scripts/modules/character_screen.py
+++ b/scripts/modules/character_screen.py
@@ -21,11 +21,6 @@ class character_screen (adonthell.win_container):
     def __init__(self):        
         adonthell.win_container.__init__(self)
 
-        self.thisown = 0
-        self.quit = 1
-
-        self.py_signal_connect (self.on_destroy, adonthell.win_event_DESTROY)
-
         # -- get font and theme
         self.font = adonthell.win_manager_get_font ("original")
         self.theme = adonthell.win_manager_get_theme ("original")
@@ -82,10 +77,5 @@ class character_screen (adonthell.win_container):
 
     # -- callback for accepting name
     def on_enter (self):
-        name = self.entry.text_char ()
-        adonthell.gamedata_player ().rename (name)
-        self.quit = 0
-
-    # -- callback to close the window
-    def on_destroy (self):
-        return self.quit
+        self.name = self.entry.text_char ()
+        adonthell.gamedata_engine ().main_quit ()
diff --git a/scripts/modules/events.py b/scripts/modules/events.py
index 02efab6..60b5d6e 100755
--- a/scripts/modules/events.py
+++ b/scripts/modules/events.py
@@ -12,35 +12,10 @@
 
 import adonthell
 
-# -- Fade the screen out
-def fade_out ():
-    i = 0
-
-    while i < 60:
-        adonthell.gamedata_map_engine ().mainloop ()
-
-        adonthell.screen_transition (i * 2)
-        adonthell.screen_show ()
-
-        adonthell.gametime_update ()
-        i = i + (adonthell.gametime_frames_to_do () * 2)
-
-# -- Fade the screen in
-def fade_in ():
-    i = 60
-
-    while i > 0:
-        adonthell.gamedata_map_engine ().mainloop ()
-
-        adonthell.screen_transition(i * 2)
-        adonthell.screen_show ()
-
-        adonthell.gametime_update ()
-        i = i - (adonthell.gametime_frames_to_do () * 2)
-
 # -- switch submaps (character, new coordinates, new submap,
 #    direction the character shall face)
 def switch_submap (mychar, x, y, submap, dir):
+    # -- deactivate schedule during teleport
     if mychar.is_schedule_activated ():
         mychar.set_schedule_active (0)
         schedule_active = 1
@@ -49,14 +24,13 @@ def switch_submap (mychar, x, y, submap, dir):
 
     # -- comparing mychar and player directly does not work (???)
     if mychar.get_name () == adonthell.gamedata_player ().get_name ():
-        mychar.set_schedule_active (0)
-        mychar.stand ()
-        fade_out ()
+        # -- fade the new submap in if we teleport the player
+        adonthell.gamedata_engine ().fade_out ()
         mychar.jump_to (x, y, submap, dir)
-        fade_in ()
-        mychar.set_schedule_active (1)
+        adonthell.gamedata_engine ().fade_in ()
     else:
         mychar.jump_to (x, y, submap, dir)
 
+    # -- restore character's schedule
     if schedule_active == 1:
         mychar.set_schedule_active (1)
diff --git a/scripts/modules/intro.py b/scripts/modules/intro.py
index b56e107..91a4020 100644
--- a/scripts/modules/intro.py
+++ b/scripts/modules/intro.py
@@ -131,7 +131,7 @@ audio_play_background (0)
 while not input_has_been_pushed (SDLK_ESCAPE) and not input_has_been_pushed 
(SDLK_SPACE) and not letsexit:
     # Update the stuff
     input_update ()
-    for i in range (0, gametime_frames_to_do ()):
+    for i in range (0, gametime_frames_to_skip ()):
 
         # 1st part: forest scrolling and fade to the inn, with
         #the text appearing letter-by-letter
diff --git a/scripts/modules/main_menu.py b/scripts/modules/main_menu.py
index 072c5ae..b0345a9 100755
--- a/scripts/modules/main_menu.py
+++ b/scripts/modules/main_menu.py
@@ -24,27 +24,20 @@ class main_menu (win_container):
     def __init__ (self, startup, enable_s, enable_b = 0):      
         win_container.__init__(self)
 
-        # Init Position
-        self.move (0,0)        
-        self.resize(320,240)
+        # -- Init Position
+        self.move (0, 0)       
+        self.resize (320, 240)
         
-        self.thisown = 0
-
-        # load font and theme
+        # -- load font and theme
         self.font = win_manager_get_font ("original")
         self.theme = win_manager_get_theme ("original")
 
         self.enable_save = enable_s
         self.enable_b = enable_b
 
-        self.lg = None
-        
-        self.quit = 1
-
         y_pos = 30
         if enable_s: y_pos = 15
 
-        self.py_signal_connect (self.on_destroy, win_event_DESTROY)
         self.py_signal_connect (self.on_update, win_event_UPDATE)
         
         self.a_title = win_image()
@@ -119,7 +112,6 @@ class main_menu (win_container):
         for label in self.labels:
             self.add (label)    
                
-        # activate self object
         self.set_activate (1)
         self.set_visible_all (1)       
 
@@ -140,6 +132,8 @@ class main_menu (win_container):
                 label.move ((self.length()-label.length())/2, label.y ())
             self.add_to_select ()
 
+
+    # -- make the menu options available for selecting
     def add_to_select (self):
         self.select = win_select()
         self.select.move (70,10)
@@ -175,77 +169,67 @@ class main_menu (win_container):
         self.add (self.title)
         self.set_visible_all (1)
 
-    # -- Callback to close the window
-    def on_destroy (self):
-        if self.quit == 0:
-            print "Closing Main Menu ..."
-        return self.quit
 
-    # -- pressing ESC will close the menu if it's open
+    # -- after closing the menu, this returns the selected option
+    def get_result (self):
+        return self.retval
+    
+
+    # -- callback for custom updating
     def on_update (self):
+        # -- slide in the menu options
         if self.startup > 0:
-            self.startup = self.create_menu (self.moves, self.goals)
-
-            if self.startup == 0:
+            if self.create_menu (self.moves, self.goals) == 0:
                 self.add_to_select ()
-
-        elif self.lg == None:
-            if input_has_been_pushed (SDLK_ESCAPE):
-                self.quit = 0
-                # If we're on the title screen, then leave.
-                if self.enable_save == 0:
-                    self.set_return_code (5)
+                self.startup = 0
+                
+        # -- pressing ESC will close the menu if it's open
+        if input_has_been_pushed (SDLK_ESCAPE):
+            # -- If we're on the title screen, then exit the game
+            if self.enable_save == 0: self.retval = 5
+            else: self.retval = 0
+            gamedata_engine ().main_quit ()
+                    
 
     # -- Callback to get informed of the player's choice
     def on_select (self):
-        sel = self.select.get_selected_position ()
+        self.retval = self.select.get_selected_position ()
 
-        if self.enable_save == 0 and sel > 2:
-            sel = sel + 1
-
-        self.set_return_code (sel)
+        # -- skip save option on title screen
+        if self.enable_save == 0 and self.retval > 2:
+            self.retval = self.retval + 1
        
-        # New Game
-        if sel == 1:
-            self.quit = 0
-
-        # Load Game
-        elif sel == 2:
-            self.lg = data_screen (LOAD_SCREEN)
-            self.lg.thisown = 0
-            self.lg.set_activate (1)   
-            if self.startup != 0:
-                # In game
-                self.lg.py_signal_connect (self.on_ingame_data_close, 
win_event_CLOSE)
+        # -- Load Game
+        if self.retval == 2:
+            lg = data_screen (LOAD_SCREEN)
+            lg.set_activate (1)        
+            
+            # -- hide the game menu if we are not on the title screen
+            if self.enable_save == 1:
                 self.set_visible (0)
-            else:
-                # Title screen
-                self.lg.py_signal_connect (self.on_data_close, win_event_CLOSE)
-            win_manager_add (self.lg)
-            win_manager_set_focus (self.lg)
-
-        # Save Game
-        elif sel == 3:
-            self.lg = data_screen (SAVE_SCREEN)
-            self.lg.thisown = 0
-            self.lg.set_activate(1)
-            self.lg.py_signal_connect (self.on_ingame_data_close, 
win_event_CLOSE)
+            
+            # -- open the Load screen
+            gamedata_engine ().main (lg, "load_screen")
+            
+            # -- if we are on the title screen, only close the 
+            #    game menu if a game has been loaded
+            if self.enable_save == 0 and lg.get_result () == 0:
+                return
+            
+        # -- Save Game
+        elif self.retval == 3:
+            lg = data_screen (SAVE_SCREEN)
+            lg.set_activate (1)
+            
+            # -- hide the game menu
             self.set_visible (0)
-            win_manager_add (self.lg)
-            win_manager_set_focus (self.lg)
-
-        # Quit
-        elif sel == 5:
-            self.quit = 0
+            
+            # -- open the Load screen
+            gamedata_engine ().main (lg, "save_screen")
 
-    def on_data_close (self, retval):
-        self.lg = None
-        if retval == 1:
-            self.quit = 0
+        # -- close the main menu        
+        gamedata_engine ().main_quit ()
 
-    def on_ingame_data_close (self, retval):
-        self.lg = None
-        self.quit = 0
 
     # -- Scrolls the different menu options into view
     def create_menu (self, moves, goals):
diff --git a/scripts/schedules/mapcharacters/intro.py 
b/scripts/schedules/mapcharacters/intro.py
index cc2fb4c..385966e 100644
--- a/scripts/schedules/mapcharacters/intro.py
+++ b/scripts/schedules/mapcharacters/intro.py
@@ -1,4 +1,6 @@
 #
+#  $Id$
+#
 #  (C) Copyright 2001 Kai Sterker <address@hidden>
 #  Part of the Adonthell Project http://adonthell.linuxgames.com
 #
@@ -51,8 +53,8 @@ class intro:
     # -- Opens the gate
     def open_gate (self):
         # Get the mapobjects
-        gate_fore = adonthell.gamedata_map_engine ().get_landmap 
().get_mapobject (90)
-        gate_back = adonthell.gamedata_map_engine ().get_landmap 
().get_mapobject (89)
+        gate_fore = adonthell.gamedata_engine ().get_landmap ().get_mapobject 
(90)
+        gate_back = adonthell.gamedata_engine ().get_landmap ().get_mapobject 
(89)
 
         # Only open the gate if it's closed...
         if (gate_fore.get_animation (0).currentframe () == 0):
@@ -62,7 +64,7 @@ class intro:
             gate_fore.get_animation (0).next_frame ()
 
             # Update squares walkability
-            sm = adonthell.gamedata_map_engine ().get_landmap ().get_submap (0)
+            sm = adonthell.gamedata_engine ().get_landmap ().get_submap (0)
             sm.get_square (6, 17).set_walkable_south (0)
             sm.get_square (7, 17).set_walkable_south (0)
             sm.get_square (6, 18).set_walkable_west (1)
@@ -71,8 +73,8 @@ class intro:
     # Close the gate
     def close_gate (self):
         # Get the mapobjects
-        gate_fore = adonthell.gamedata_map_engine ().get_landmap 
().get_mapobject (90)
-        gate_back = adonthell.gamedata_map_engine ().get_landmap 
().get_mapobject (89)
+        gate_fore = adonthell.gamedata_engine ().get_landmap ().get_mapobject 
(90)
+        gate_back = adonthell.gamedata_engine ().get_landmap ().get_mapobject 
(89)
 
         # Only close the gate if it's opened
         if (gate_fore.get_animation (0).currentframe () == 4):
@@ -82,7 +84,7 @@ class intro:
             gate_fore.get_animation (0).next_frame ()
 
             # Update squares walkability
-            sm = adonthell.gamedata_map_engine ().get_landmap ().get_submap (0)
+            sm = adonthell.gamedata_engine ().get_landmap ().get_submap (0)
             sm.get_square (6, 17).set_walkable_south (1)
             sm.get_square (7, 17).set_walkable_south (1)
             sm.get_square (6, 18).set_walkable_west (0)
diff --git a/scripts/schedules/mapcharacters/keyboard_control.py 
b/scripts/schedules/mapcharacters/keyboard_control.py
index a60e0e1..9a28a88 100755
--- a/scripts/schedules/mapcharacters/keyboard_control.py
+++ b/scripts/schedules/mapcharacters/keyboard_control.py
@@ -5,23 +5,11 @@ class keyboard_control:
     def __init__ (self, mapcharinstance):
         self.myself = mapcharinstance
 
-    # -- When the menu is closing, react accordingly
-    def on_menu_close (self, retval, player):
-        # Tells the map engine to update the map
-        gamedata_map_engine ().set_should_update_map (1)
-        # -- Quit was selected, so that's what we do :)
-        if retval == 5:
-            gamedata_map_engine ().quit ()
-            
-    # Reactivate map update when data_screen closed
-    def on_data_screen_close (self, retval):
-        gamedata_map_engine ().set_should_update_map (1)
-                
     # Opens the gate
     def open_gate (self):
         # Get the mapobjects
-        gate_fore = gamedata_map_engine ().get_landmap ().get_mapobject (90)
-        gate_back = gamedata_map_engine ().get_landmap ().get_mapobject (89)
+        gate_fore = gamedata_engine ().get_landmap ().get_mapobject (90)
+        gate_back = gamedata_engine ().get_landmap ().get_mapobject (89)
                     
         # Only open the gate if it's closed...
         if (gate_fore.get_animation (0).currentframe () == 0):
@@ -31,7 +19,7 @@ class keyboard_control:
             gate_fore.get_animation (0).next_frame ()
                         
             # Update squares walkability
-            sm = gamedata_map_engine ().get_landmap ().get_submap (0)
+            sm = gamedata_engine ().get_landmap ().get_submap (0)
             sm.get_square (6, 17).set_walkable_south (0)
             sm.get_square (7, 17).set_walkable_south (0)
             sm.get_square (6, 18).set_walkable_west (1)
@@ -40,8 +28,8 @@ class keyboard_control:
     # Close the gate
     def close_gate (self):
         # Get the mapobjects
-        gate_fore = gamedata_map_engine ().get_landmap ().get_mapobject (90)
-        gate_back = gamedata_map_engine ().get_landmap ().get_mapobject (89)
+        gate_fore = gamedata_engine ().get_landmap ().get_mapobject (90)
+        gate_back = gamedata_engine ().get_landmap ().get_mapobject (89)
                             
         # Only close the gate if it's opened
         if (gate_fore.get_animation (0).currentframe () == 4):
@@ -51,7 +39,7 @@ class keyboard_control:
             gate_fore.get_animation (0).next_frame ()
 
             # Update squares walkability
-            sm = gamedata_map_engine ().get_landmap ().get_submap (0)
+            sm = gamedata_engine ().get_landmap ().get_submap (0)
             sm.get_square (6, 17).set_walkable_south (1)
             sm.get_square (7, 17).set_walkable_south (1)
             sm.get_square (6, 18).set_walkable_west (0)
@@ -60,18 +48,6 @@ class keyboard_control:
 
 
     def run (self):
-        if input_has_been_pushed (SDLK_h):
-            gamedata_map_engine ().set_mapview_schedule ("center_character",
-                                                         ("Talan Wendth",))
-            gamedata_player ().set_schedule ("")
-            gamedata_get_character ("Talan Wendth").set_schedule 
("keyboard_control")
-
-        if input_has_been_pushed (SDLK_g):
-            gamedata_map_engine ().set_mapview_schedule ("center_character",
-                                                         (gamedata_player 
().get_name (),))
-            gamedata_player ().set_schedule ("keyboard_control")
-            gamedata_get_character ("Talan Wendth").set_schedule ("talan")
-
         if input_has_been_pushed (SDLK_o):
             self.open_gate ()
 
@@ -84,12 +60,14 @@ class keyboard_control:
             p = self.myself.whosnext ()
 
             # - Yes :)
-            if p != None and p.currentmove() < WALK_NORTH:
+            if p != None and p.currentmove () < WALK_NORTH:
                 # -- launch the other guy's (object's) action script
                 p.launch_action (self.myself)
 
                 # -- Cleanup
                 p = None
+
+            # -- otherwise launch an action event
             elif p == None:
                 evt = action_event ()
                 evt.submap = self.myself.submap ()
@@ -103,19 +81,23 @@ class keyboard_control:
         elif input_has_been_pushed (SDLK_ESCAPE):
             import main_menu
 
-            # -- open main menu without animation, with saving and background 
enabled
+            # -- create main menu without animation, with saving and 
background enabled
             menu = main_menu.main_menu (1, 1, 1)
-            menu.thisown = C
-
-            # Stop updating the map
-            gamedata_map_engine ().set_should_update_map (0)
 
-            # -- this tells us when the main menu is closed
-            menu.py_signal_connect (self.on_menu_close, win_event_CLOSE, 
(self.myself))
+            # -- Stop updating the map
+            gamedata_engine ().set_update_map (0)
 
-            # -- add stuff to the win_manager
-            win_manager_add (menu)
-            win_manager_set_focus (menu)
+            # -- open the main menu
+            gamedata_engine ().main (menu, "game_menu")
+            
+            # -- main menu closed -> see what to do
+            if menu.get_result () == 5:
+                # -- quit the game
+                gamedata_engine ().main_quit ()
+            else:
+                # -- continue
+                gamedata_engine ().set_update_map (1)
+            
             menu = None
 
         # -- move the player around
@@ -126,7 +108,7 @@ class keyboard_control:
 
         # Special tip! :)
         elif input_has_been_pushed (SDLK_n):
-            if self.myself.submap () < gamedata_map_engine ().get_landmap 
().nbr_of_submaps () - 1:
+            if self.myself.submap () < gamedata_engine ().get_landmap 
().nbr_of_submaps () - 1:
                 self.myself.jump_to (self.myself.submap () + 1, 5, 3)
             else:
                 self.myself.jump_to (0, 7, 18)
@@ -137,31 +119,35 @@ class keyboard_control:
             elif self.myself.submap () == 1:
                 self.myself.jump_to (0, 7, 18)
             else:
-                self.myself.jump_to (gamedata_map_engine ().get_landmap 
().nbr_of_submaps () - 1, 5, 3)
+                self.myself.jump_to (gamedata_engine ().get_landmap 
().nbr_of_submaps () - 1, 5, 3)
 
         # -- shortcut to the load screen
         elif input_has_been_pushed (SDLK_l):
             s = data_screen (LOAD_SCREEN)
-            s.thisown = C
-            s.py_signal_connect (self.on_data_screen_close, win_event_CLOSE)
-            # Stop updating the map
-            gamedata_map_engine ().set_should_update_map (0)
             s.set_activate (1) 
-            win_manager_add (s)
-            win_manager_set_focus (s)
-
 
+            # -- Stop updating the map
+            gamedata_engine ().set_update_map (0)
+            
+            # -- open the load screen
+            gamedata_engine ().main (s, "load_screen")
+            
+            # -- continue
+            gamedata_engine ().set_update_map (1)
+            
         # -- and to the save screen
         elif input_has_been_pushed (SDLK_s):
             s = data_screen (SAVE_SCREEN)
-            s.thisown = C
-            s.py_signal_connect (self.on_data_screen_close, win_event_CLOSE)
-            # Stop updating the map
-            gamedata_map_engine ().set_should_update_map (0)
             s.set_activate (1) 
-            win_manager_add (s)
-            win_manager_set_focus (s)
 
+            # -- Stop updating the map
+            gamedata_engine ().set_update_map (0)
+            
+            # -- open the save screen
+            gamedata_engine ().main (s, "save_screen")
+
+            # -- continue
+            gamedata_engine ().set_update_map (1)
 
         # -- python console
         elif input_has_been_pushed (SDLK_TAB):
diff --git a/scripts/schedules/mapcharacters/orloth.py 
b/scripts/schedules/mapcharacters/orloth.py
index 6256e97..275d0d3 100755
--- a/scripts/schedules/mapcharacters/orloth.py
+++ b/scripts/schedules/mapcharacters/orloth.py
@@ -16,8 +16,7 @@
 #    From time to time he'll complain about the grandfather clock
 
 import adonthell
-from adonthell import STAND_NORTH, STAND_SOUTH, STAND_WEST, STAND_EAST
-from random import randint
+import random
 
 class orloth:
 
@@ -28,11 +27,11 @@ class orloth:
                   "That barrel is leaking.", \
                   "I hope they'll find the thief!"]
 
-        self.coords = [(10, 3, STAND_NORTH), \
-                  (3, 5, STAND_SOUTH), \
-                  (7, 6, STAND_EAST), \
-                  (12, 3, STAND_SOUTH), \
-                  (7, 4, STAND_WEST), \
+        self.coords = [(10, 3, adonthell.STAND_NORTH), \
+                  (3, 5, adonthell.STAND_SOUTH), \
+                  (7, 6, adonthell.STAND_EAST), \
+                  (12, 3, adonthell.STAND_SOUTH), \
+                  (7, 4, adonthell.STAND_WEST), \
                   (3, 7, 0), \
                   (9, 7, 0), \
                   (12, 5, 0), \
@@ -54,44 +53,25 @@ class orloth:
 
                 # -- put/take the first mug
                 if delay == 100:
-                    index = myself.get_val ("table_num")
-                    if index > 0:
-                        key = "table%i_set" % index
-                        val = myself.get_val (key)
-
-                        x, y = self.coords[index+4][:2]
-                        if val == 0:
-                            adonthell.gamedata_map_engine ().get_landmap 
().put_mapobject (1, x, y, 106)
-                        else:
-                            adonthell.gamedata_map_engine ().get_landmap 
().remove_mapobject (1, x, y, 106)
-
+                    self.put_object (106, 0)
+                    
                 # -- put/take the second mug
                 elif delay == 50:
-                    index = myself.get_val ("table_num")
-                    if index > 0:
-                        key = "table%i_set" % index
-                        val = myself.get_val (key)
-                        myself.set_val (key, ~val)
-
-                        x, y = self.coords[index+4][:2]
-                        if val == 0:
-                            adonthell.gamedata_map_engine ().get_landmap 
().put_mapobject (1, x, y, 107)
-                        else:
-                            adonthell.gamedata_map_engine ().get_landmap 
().remove_mapobject (1, x, y, 107)
+                    self.put_object (107, 1)
 
         # -- engage a new movement
         elif todo == 1:
             # -- when we are at the bar, then wait a while before
             #    moving again
             if myself.posx () != 2:
-                delay = randint (40, 120) * 20
+                delay = random.randint (40, 120) * 20
                 myself.set_val ("delay", delay)
-                myself.set_goal (2, 2, STAND_SOUTH)
+                myself.set_goal (2, 2, adonthell.STAND_SOUTH)
                 myself.set_val ("table_num", 0)
 
             # -- otherwise only wait a little
             else:
-                index = randint (0, 4)
+                index = random.randint (0, 4)
                 x, y, dir = self.coords[index]
                 myself.set_goal (x, y, dir)
                 myself.set_val ("delay", 150)
@@ -116,6 +96,27 @@ class orloth:
         tmp = myself.get_val ("say_something")
         myself.set_val ("say_something", tmp - 1)
         if tmp == 0:
-            myself.speak (self.speech[randint (0, 2)])
-            delay = randint (50, 150) * 20
+            myself.speak (self.speech[random.randint (0, 2)])
+            delay = random.randint (50, 150) * 20
             myself.set_val ("say_something", delay)
+
+
+    # -- put/remove something from the table we're standing next to
+    def put_object (self, object, update):
+        myself = self.myself
+        
+        # -- the table we're next to
+        index = myself.get_val ("table_num")
+        if index > 0:
+            # -- see whether table is laid or not
+            key = "table%i_set" % index
+            val = myself.get_val (key)
+
+            x, y = self.coords[index+4][:2]
+            if val == 0:
+                adonthell.gamedata_engine ().get_landmap ().put_mapobject (1, 
x, y, object)
+                if update == 1: myself.set_val (key, 1)
+            else:
+                adonthell.gamedata_engine ().get_landmap ().remove_mapobject 
(1, x, y, object)
+                if update == 1: myself.set_val (key, 0)
+    



reply via email to

[Prev in Thread] Current Thread [Next in Thread]