def __makeGagButton(self, gagName, trackName): gui = loader.loadModel('phase_3.5/models/gui/inventory_gui.bam') icons = loader.loadModel('phase_3.5/models/gui/inventory_icons.bam') icon = icons.find(GagGlobals.InventoryIconByName[gagName]) index = GagGlobals.TrackGagNamesByTrackName[trackName].index(gagName) xValue = GagButtonXValues[index] button = DirectButton(relief=None, image=(gui.find('**/InventoryButtonUp'), gui.find('**/InventoryButtonDown'), gui.find('**/InventoryButtonRollover'), gui.find('**/InventoryButtonFlat')), geom=icon, geom_scale=0.6, parent=self.trackByName[trackName]) button.setX(xValue) self.gagButtonByName[gagName] = button return
def __makeGagButton(self, gagName, trackName): gui = loader.loadModel('phase_3.5/models/gui/inventory_gui.bam') icons = loader.loadModel('phase_3.5/models/gui/inventory_icons.bam') icon = icons.find(GagGlobals.InventoryIconByName[gagName]) index = GagGlobals.TrackGagNamesByTrackName[trackName].index(gagName) xValue = GagButtonXValues[index] button = DirectButton(relief=None, image=(gui.find('**/InventoryButtonUp'), gui.find('**/InventoryButtonDown'), gui.find('**/InventoryButtonRollover'), gui.find('**/InventoryButtonFlat')), geom=icon, geom_scale=0.6, parent=self.trackByName[trackName], text=str(base.localAvatar.getBackpack().getSupply(gagName)), text_align=TextNode.ARight, text_scale=0.04, text_fg=Vec4(1, 1, 1, 1), text_pos=(0.07, -0.04)) button.setX(xValue) self.gagButtonByName[gagName] = button return
def MakeButton(self, egg, up, over, x, y, cmd, parent): maps = loader.loadModel("Assets/Images/Inventory/%s" % (egg)) b = DirectButton(geom = (maps.find('**/%s' % (up)), maps.find('**/%s' % (over)), maps.find('**/%s' % (over)), maps.find('**/%s' % (up))), command = cmd, pressEffect = 0, relief = None, rolloverSound = None, clickSound = None, scale = (150./1024.0, 1, 75.0/1024.0)) b.reparentTo(parent) b.hide() diff = Settings.WIDTH - Settings.HEIGHT xOff = 0 yOff = 0 if(diff > 0): xOff = diff / 2 else: yOff = diff / 2 x = Settings.Transpose(x + 50, 1024) + xOff y = Settings.Transpose(y + 25, 1024) + yOff centerX = Settings.WIDTH / 2 centerY = Settings.HEIGHT / 2 newX = 1.0 * (x - centerX) / (centerX - xOff) newY = 1.0 * (centerY - y) / (centerY - yOff) b.setX(newX) b.setZ(newY) return b
class Game(DirectObject): def __init__(self): self.player = Blanka(self) self.ryu = Ryu() self.setup_panda() self.setup_keys() self.load_sounds() self.load_textures() self.load_sprites() self.setup_gui() self.start_game() def setup_panda(self): FPS = 30 globalClock = ClockObject.getGlobalClock() globalClock.setMode(ClockObject.MLimited) globalClock.setFrameRate(FPS) def setup_keys(self): self.keys = {'move_left': 0, 'move_right': 0, 'jump': 0} self.accept('escape', sys.exit) self.accept('arrow_left', self.set_key, ['move_left', 1]) self.accept('arrow_left-up', self.set_key, ['move_left', 0]) self.accept('arrow_right', self.set_key, ['move_right', 1]) self.accept('arrow_right-up', self.set_key, ['move_right', 0]) self.accept('arrow_up', self.set_key, ['jump', 1]) self.accept('arrow_up-up', self.set_key, ['jump', 0]) def set_key(self, key, value): self.keys[key] = value def setup_game_task(self): self.game_task = taskMgr.add(self.game_loop, 'game_loop') self.game_task.last = 0 taskMgr.add(self.player.manage_collisions, 'manage_collisions') def load_sounds(self): music = loader.loadSfx('sound/guile_theme.ogg') music.setLoop(True) music.setVolume(0.7) music.play() def load_textures(self): self.player.load_textures() self.ryu.load_textures() self.background_sprite = loader.loadTexture('im/Stage.png') self.ko_image = loader.loadTexture('im/KO.png') def load_sprites(self): stage = load_object(self.background_sprite, scale=550, pos=Point3(0, 400, 0), transparency=False) self.ryu.load_sprite() self.player.load_sprite() def setup_gui(self): self.ko = load_object(self.ko_image, scale=10, transparency=True, pos=(0, 40, 0)) self.play_again_button = DirectButton(text = "Play again", scale=0.2, command=self.start_game) self.init_gui() def game_loop(self, task): dt = task.time - task.last task.last = task.time self.player.update_position() return task.cont def start_game(self): self.init_gui() taskMgr.add(self.ryu.begin_to_throw, 'begin_to_throw') self.setup_game_task() def init_gui(self): self.ko.reparentTo(hidden) self.ko.setSx(20) self.play_again_button.setZ(100) self.play_again_button.setX(0.05) def end_game(self): self.ryu.win_sound.play() self.ryu.hadouken.move_to_initial_position() self.ryu.hadouken.set_hidden(True) self.ryu.state = 'idle' taskMgr.remove('manage_collisions') taskMgr.remove('game_loop') taskMgr.remove('throw_hadoukens') taskMgr.remove('move_hadouken') self.ko.reparentTo(camera) self.play_again_button.setZ(-0.8)
class Game(DirectObject): def __init__(self): self.player = Blanka(self) self.ryu = Ryu() self.setup_panda() self.setup_keys() self.load_sounds() self.load_textures() self.load_sprites() self.setup_gui() self.start_game() def setup_panda(self): FPS = 30 globalClock = ClockObject.getGlobalClock() globalClock.setMode(ClockObject.MLimited) globalClock.setFrameRate(FPS) def setup_keys(self): self.keys = {'move_left': 0, 'move_right': 0, 'jump': 0} self.accept('escape', sys.exit) self.accept('arrow_left', self.set_key, ['move_left', 1]) self.accept('arrow_left-up', self.set_key, ['move_left', 0]) self.accept('arrow_right', self.set_key, ['move_right', 1]) self.accept('arrow_right-up', self.set_key, ['move_right', 0]) self.accept('arrow_up', self.set_key, ['jump', 1]) self.accept('arrow_up-up', self.set_key, ['jump', 0]) def set_key(self, key, value): self.keys[key] = value def setup_game_task(self): self.game_task = taskMgr.add(self.game_loop, 'game_loop') self.game_task.last = 0 taskMgr.add(self.player.manage_collisions, 'manage_collisions') def load_sounds(self): music = loader.loadSfx('sound/guile_theme.ogg') music.setLoop(True) music.setVolume(0.7) music.play() def load_textures(self): self.player.load_textures() self.ryu.load_textures() self.background_sprite = loader.loadTexture('im/Stage.png') self.ko_image = loader.loadTexture('im/KO.png') def load_sprites(self): stage = load_object(self.background_sprite, scale=550, pos=Point3(0, 400, 0), transparency=False) self.ryu.load_sprite() self.player.load_sprite() def setup_gui(self): self.ko = load_object(self.ko_image, scale=10, transparency=True, pos=(0, 40, 0)) self.play_again_button = DirectButton(text="Play again", scale=0.2, command=self.start_game) self.init_gui() def game_loop(self, task): dt = task.time - task.last task.last = task.time self.player.update_position() return task.cont def start_game(self): self.init_gui() taskMgr.add(self.ryu.begin_to_throw, 'begin_to_throw') self.setup_game_task() def init_gui(self): self.ko.reparentTo(hidden) self.ko.setSx(20) self.play_again_button.setZ(100) self.play_again_button.setX(0.05) def end_game(self): self.ryu.win_sound.play() self.ryu.hadouken.move_to_initial_position() self.ryu.hadouken.set_hidden(True) self.ryu.state = 'idle' taskMgr.remove('manage_collisions') taskMgr.remove('game_loop') taskMgr.remove('throw_hadoukens') taskMgr.remove('move_hadouken') self.ko.reparentTo(camera) self.play_again_button.setZ(-0.8)