From d2f341ce9b8c937364117d3a38061b9e3ba9fb3a Mon Sep 17 00:00:00 2001 From: Schallbert Date: Tue, 26 Nov 2019 22:16:13 +0100 Subject: [PATCH] - Fixed "Error on Quit" issue by gently closing gui. - Added 140 text to test 130 and connected spots. - Fixed losing hidden spots after save/load event. TODO: - More Bugfixing! - Story! --- GameLoop_WinterIsComing.py | 4 ++-- GameMechanics_WinterIsComing.py | 14 +++++++++----- GameStatClass_WinterIsComing.py | 9 ++++----- TextData_WinterIsComing.py | 16 ++++++++++++---- 4 files changed, 27 insertions(+), 16 deletions(-) diff --git a/GameLoop_WinterIsComing.py b/GameLoop_WinterIsComing.py index c603700..970dbfa 100644 --- a/GameLoop_WinterIsComing.py +++ b/GameLoop_WinterIsComing.py @@ -25,12 +25,12 @@ resp = gui.inputScreen.GetInput() if resp == 1: NewGame() + gui.inventoryScreen.Update(GameStats.GetInventory()) + gui.statsScreen.Update(GameStats.GetListPlayers()) else: GameStats.Quit(gui.root) #gui preparation -gui.inventoryScreen.Update(GameStats.GetInventory()) -gui.statsScreen.Update(GameStats.GetListPlayers()) GameStats.GetCurrentRoom().OnEnter() while True: CheckPlayerStats() diff --git a/GameMechanics_WinterIsComing.py b/GameMechanics_WinterIsComing.py index 5c09bbb..fa1716a 100644 --- a/GameMechanics_WinterIsComing.py +++ b/GameMechanics_WinterIsComing.py @@ -20,12 +20,16 @@ def __init__(self, number): self.number = number self.name = dictRooms[number] self.description = dictTexts[number] + self.__spot_list = None + self.__room_list = None def OnEnter(self): - """Set up of connected spots and adjacent rooms. - Then refreshes the room's attributes. Input 'room' not used.""" - self.__spot_list = self.__spotBuilder() - self.__room_list = self.__roomBuilder() + """Set up of connected spots and adjacent rooms if not already defined. + Then refreshes the room's attributes.""" + if self.__spot_list == None: + self.__spot_list = self.__spotBuilder() + if self.__room_list == None: + self.__room_list = self.__roomBuilder() checkLooseItem(self.number) def ReloadRoom(self): @@ -421,7 +425,7 @@ def itemSpot(generateFromNr): elif generateFromNr in dictAction: gui.textScreen.TypeWrite(dictAction[generateFromNr]) if generateFromNr in dictSpotChange: - room.SpotExchange(dictSpotChange[generateFromNr], Exchange_dir.FORWARD) + currentRoom.SpotExchange(dictSpotChange[generateFromNr], Exchange_dir.FORWARD) dictInventory[item].DelItem() else: #generate game progress only diff --git a/GameStatClass_WinterIsComing.py b/GameStatClass_WinterIsComing.py index b41da36..d59f046 100644 --- a/GameStatClass_WinterIsComing.py +++ b/GameStatClass_WinterIsComing.py @@ -15,9 +15,9 @@ class GameStats: #---------------------------------------------- @classmethod def Quit(cls, guiRoot): - #tk.destroy() to destroy the gui - guiRoot.destroy() - sys.exit + guiRoot.quit() #First end the gui's bindings + guiRoot.destroy() #Then close gui + sys.exit() #finally, exit program. @classmethod def Save(cls): @@ -78,8 +78,7 @@ def SetListPlayers(cls, listP): @classmethod def GetCurrentRoom(cls): if cls.__currentRoom == None: - print("Error: No current room!") - cls.Quit() + raise Exception("No room object available. Ending game.") else: return cls.__currentRoom diff --git a/TextData_WinterIsComing.py b/TextData_WinterIsComing.py index a54ac6b..e3c8eb7 100644 --- a/TextData_WinterIsComing.py +++ b/TextData_WinterIsComing.py @@ -166,7 +166,7 @@ 132 : \ "Ein See glitzert ruhig in der Sonne, umsäumt von einer sanft\n\ ansteigenden Hügelkette. Ihr seht einen kleinen Anleger mit\n\ -daran festgemachten Böötchen. Ein schönes, ruhiges Bild und\n\ +daran festgemachten Bötchen. Ein schönes, ruhiges Bild und\n\ Ihr bekommt direkt Lust, eine Runde auf dem See zu drehen.\n", 133 : \ "Mendig aus der Ferne.", @@ -178,6 +178,13 @@ Ein herrlicher Tag für so einen Auslug.\n", 136 : \ "Eine einfache Parkbank. Sie lädt euch zum Entspannen und Energie tanken ein.\n", + 140 : \ +"Das Seeufer. Der See liegt tiefblau und träge da, winzige Wellen plätschern\n\ +am schmalen Steinstrand und ein Steg ragt ein paar Meter in den See hinein.\n\ +An ihm sind ein paar weiße Tretboote vertäut.\n\ +Merkwürdigerweise ist hier kein Tier zu sehen, weder Schwäne noch Enten könnt\n\ +ihr ausmachen. Dass auch weit und breit keine Menschenseele auszumachen ist,\n\ +stört euch allerdings nicht weiter.\n", 10101: \ "Ihr nehmt ein Foto der Übersichtskarte auf, um es Euch später ansehen zu können.\n\ Gute Idee!\n", @@ -286,7 +293,7 @@ "Unter dem großen Fenster des Leitstandes befindet sich eine Konsole\n\ mit kleinem Display und nur zwei Knöpfen sowie einem Lämpchen\n\ und einem Schlüsselschalter.\n\ -Die Beschriftungen sind zum Teil abgefallen, dennoch könnt Ihr die Worte 'Fan'\n\ +Die Beschriftungen sind zum Teil verrottet, dennoch könnt Ihr die Worte 'Fan'\n\ und 'Stack health' entziffern. Das Display darüber zeigt blass '08%' an.\n\ Auf dem Boden seht ihr eine Flasche Fensterreiniger, deren Inhalt größtenteils\n\ ausgelaufen sein muss. Ihr nehmt sie mit, um sie im nächsten Mülleimer\n\ @@ -411,7 +418,7 @@ 132 : Action_id.VIEW,\ 133 : Action_id.VIEW,\ 134 : Action_id.VIEW,\ - 135 : Action_id.VIEW,\ + 135 : Action_id.NOC_NO,\ 136 : Action_id.USE\ } @@ -480,7 +487,8 @@ 111 : [0,1],\ 115 : [0, -2],\ 121 : [-1,0],\ - 122 : [-2,0]\ + 122 : [-2,0],\ + 136 : [1,3]\ } dictModType = {