diff demos/shooter/scripts/world.py @ 456:41fd97da94d1

Moved guis to their own file. Added a continue button to the main menu.
author prock@33b003aa-7bff-0310-803a-e67f0ece8222
date Wed, 07 Apr 2010 21:26:26 +0000
parents e686b82d93d0
children 597b066d5ccb
line wrap: on
line diff
--- a/demos/shooter/scripts/world.py	Wed Apr 07 19:37:42 2010 +0000
+++ b/demos/shooter/scripts/world.py	Wed Apr 07 21:26:26 2010 +0000
@@ -30,59 +30,12 @@
 from scripts.common.helpers import normalize
 from fife.extensions.loaders import loadMapFile
 
+from scripts.gui.guis import *
+
 from scripts.ships.shipbase import Ship
 from scripts.ships.player import Player
 from scripts.scene import Scene
 
-class MainMenu(object):
-	def __init__(self, world):
-		self._world = world
-		self._widget = pychan.loadXML('gui/mainmenu.xml')
-
-		self._continue = self._widget.findChild(name="continue")
-		self._newgame = self._widget.findChild(name="new_game")
-		self._credits = self._widget.findChild(name="credits")
-		self._highscores = self._widget.findChild(name="high_scores")
-		self._quit = self._widget.findChild(name="quit")
-		
-		self._widget.position = (0,0)
-
-		eventMap = {
-			'continue': self._world.continueGame,
-			'new_game': self._world.newGame,
-			'credits': self._world.showCredits,
-			'high_scores': self._world.showHighScores,
-			'quit': self._world.quit,
-		}
-
-		self._widget.mapEvents(eventMap)		
-		
-		self._continueMinWidth = self._continue.min_width
-		self._continueMinHeight = self._continue.min_height
-		self._continueMaxWidth = self._continue.max_width
-		self._continueMaxHeight = self._continue.max_height	
-
-		
-	def show(self, cont=False):
-		if cont:
-			self._continue.min_width = self._continueMinWidth
-			self._continue.min_height = self._continueMinHeight
-			self._continue.max_width = self._continueMaxWidth
-			self._continue.max_height = self._continueMaxHeight
-			
-		else:
-			self._continue.min_width = 0
-			self._continue.min_height = 0
-			self._continue.max_width = 0
-			self._continue.max_height = 0
-
-		self._continue.adaptLayout()
-		self._widget.show()
-		
-	def hide(self):
-		self._widget.hide()
-		
-
 class World(EventListenerBase):
 	"""
 	The world!
@@ -114,7 +67,8 @@
 		self._mainmenu = MainMenu(self)
 		self.showMainMenu()
 		
-		self._hudwindow = None
+		self._hudwindow = HeadsUpDisplay(self)
+		self._hudwindow.hide()
 
 	
 	def showMainMenu(self):
@@ -154,16 +108,8 @@
 		self.map = loadMapFile(self.filename, self.engine)
 
 		self.scene = Scene(self.engine, self.map.getLayer('objects'))
-		
-		if not self._hudwindow:
-			self._hudwindow = pychan.loadXML('gui/mainwindow.xml')
-			self.fpstext = self._hudwindow.findChild(name="fps")
-			self.velocitytext = self._hudwindow.findChild(name="velocity")
-			self.positiontext = self._hudwindow.findChild(name="position")
-			self.scoretext = self._hudwindow.findChild(name="score")
-			self._hudwindow.position = (0,0)
-		
 		self.scene.initScene(self.map)
+
 		self.initCameras()
 
 		self._hudwindow.show()
@@ -267,18 +213,18 @@
 			else:
 				fps = 0
 			fpstxt = "%3.2f" % fps
-			self.fpstext.text = unicode(fpstxt)
+			self._hudwindow.setFPSText(unicode(fpstxt))
 		
 			player = self.scene.player
 			exactcoords = player.location.getExactLayerCoordinates()
 			pos = "%1.2f" % exactcoords.x + ", %1.2f" % exactcoords.y
-			self.positiontext.text = unicode(pos)
+			self._hudwindow.setPositionText(unicode(pos))
 		
 			vel = "%1.2f" % player.velocity.x + ", %1.2f" % player.velocity.y
-			self.velocitytext.text = unicode(vel)
+			self._hudwindow.setVelocityText(unicode(vel))
 		
 			score = unicode(str(player.score))
-			self.scoretext.text = score
+			self._hudwindow.setScoreText(score)
 			
 		else:
 			if not self.scene.paused: