Exemple #1
0
class MenuFSM(FSM):

    def __init__(self):
        FSM.__init__(self, 'MenuFSM')
        self.frame = DirectFrame(frameColor = (255,255,255,1),
                                 frameSize = (-1.5,1.5,-1,1),
                                 pos = (0,0,0))

    def enterMenu(self):
        self.mainBackground = OnscreenImage(image = 'images/titleScreen.png', scale = (1.3333333,1, 1))
        self.createMenu(menus.mainMenu, startPos = (-0.7,-13,0), parent = self.mainBackground, increment = 0.2)
        # for button in self.buttons:
        # 	button.reparentTo(self.mainBackground)
        
    def exitMenu(self):
        self.mainBackground.destroy()

    def enterGame(self):
        self.loading = OnscreenImage(image = 'images/loading.png', scale = (1.3333333,0, 1))
        taskMgr.doMethodLater(1, self.startGame, 'tickTask')

        
    def startGame(self, THING):
        # print "lol"
        self.world = World()
        self.world.accept("escape", self.request, ['Menu'])
        # print "abc"
        self.loading.destroy()
        self.frame.destroy()
        
    def exitGame(self):
        sys.exit()

    def enterInstructions(self):
        self.instructions = OnscreenImage(image = 'images/instructions.png', scale = (1.3333333,0, 1))
        self.instructions.accept('escape', self.request, ['Menu'])

    def exitInstructions(self):
        self.instructions.destroy()
        # self.credits = OnscreenImage(image = 'images/credits.png', pos = (-0.5, 0, 0.02))

    def enterCredits(self):
        self.credits = OnscreenImage(image = 'images/credits.png', scale = (1.3333333,0, 1))
        self.credits.accept('escape', self.request, ['Menu'])

    def exitCredits(self):
        self.credits.destroy()

    def createMenu(self, menu, startPos=(0,-13,.9), parent = None, increment = 0.3):
        self.buttons = list()

        if parent is None:
        	parent = self.frame

    	font = loader.loadFont('fonts/beneg.ttf')
    	scale = 0.10

        x = startPos[0]
        y = startPos[1]
        z = startPos[2]

        for v in menu.values():
            
            if 'args' in v:
                temp = DirectButton(text = v['text'],
					                scale=scale,
					                command=v['function'],
					                extraArgs=v.get('args'),
					                pos=(x,y,z),
					                parent = parent,
					                text_font = font,
					                text_fg = (255,255,255,1),
					                frameColor = (0,0,0,0)
					                )
            else:
                temp = DirectButton(text = v['text'],
                					scale=scale,
                					command=v['function'],
                					pos=(x,y,z),
                					parent = parent,
                					text_font = font,
                					text_fg = (255,255,255,1),
                					frameColor = (0,0,0,0))
            self.buttons.append(temp)
            z = z - increment