def __init__(self, windows): super(SingleplayerMenu, self).__init__(windows) self._mode = None self._gui = load_uh_widget('singleplayermenu.xml') self._gui.mapEvents({ 'cancel': self._windows.close, 'okay': self.act, 'scenario': Callback(self._select_mode, 'scenario'), 'random': Callback(self._select_mode, 'random'), 'free_maps': Callback(self._select_mode, 'free_maps') }) self._playerdata = PlayerDataSelection() self._aidata = AIDataSelection() self._gui.findChild(name="playerdataselectioncontainer").addChild( self._playerdata.get_widget()) self._gui.findChild(name="aidataselectioncontainer").addChild( self._aidata.get_widget())
def show_single(self, show='scenario'): # show scenarios to highlight tutorials """ @param show: string, which type of games to show """ # save player name before removing playerdata container self._save_player_name() self.hide() # start with default single player settings self.widgets.reload('singleplayermenu') self._switch_current_widget('singleplayermenu', center=True) self.active_right_side = None for mode in ('random', 'scenario', 'free_maps'): self.widgets.reload('sp_%s' % mode) right_side = self.widgets['sp_%s' % mode] self.current.findChild(name="right_side_box").addChild(right_side) right_side.parent.hideChild(right_side) # create and add permanent left side widgets self.current.playerdata = PlayerDataSelection(self.current, self.widgets) self.current.aidata = AIDataSelection(self.current, self.widgets) self.map_preview = MapPreview(lambda: self.current) self._select_single(show)
def __init__(self, windows): super(SingleplayerMenu, self).__init__(windows) self._mode = None self._gui = load_uh_widget('singleplayermenu.xml') self._gui.mapEvents({ 'cancel' : self._windows.close, 'okay' : self.act, 'scenario' : Callback(self._select_mode, 'scenario'), 'random' : Callback(self._select_mode, 'random'), 'free_maps': Callback(self._select_mode, 'free_maps') }) self._playerdata = PlayerDataSelection() self._aidata = AIDataSelection() self._gui.findChild(name="playerdataselectioncontainer").addChild(self._playerdata.get_widget()) self._gui.findChild(name="aidataselectioncontainer").addChild(self._aidata.get_widget())
class SingleplayerMenu(Window): def __init__(self, windows): super(SingleplayerMenu, self).__init__(windows) self._mode = None self._gui = load_uh_widget('singleplayermenu.xml') self._gui.mapEvents({ 'cancel' : self._windows.close, 'okay' : self.act, 'scenario' : Callback(self._select_mode, 'scenario'), 'random' : Callback(self._select_mode, 'random'), 'free_maps': Callback(self._select_mode, 'free_maps') }) self._playerdata = PlayerDataSelection() self._aidata = AIDataSelection() self._gui.findChild(name="playerdataselectioncontainer").addChild(self._playerdata.get_widget()) self._gui.findChild(name="aidataselectioncontainer").addChild(self._aidata.get_widget()) def hide(self): # Save the player-data on hide so that other menus gets updated data self._playerdata.save_settings() self._gui.hide() def show(self): self._playerdata.update_data() self._gui.findChild(name='scenario').marked = True self._select_mode('scenario') def on_return(self): self.act() def _select_mode(self, mode): self._gui.hide() modes = { 'random': RandomMapWidget, 'free_maps': FreeMapsWidget, 'scenario': ScenarioMapWidget, } # remove old widget if self._mode: self._mode.end() self._gui.findChild(name="right_side_box").removeChild(self._mode.get_widget()) self._mode = modes[mode](self._windows, self, self._aidata) self._mode.show() self._gui.findChild(name="right_side_box").addChild(self._mode.get_widget()) self._gui.show() def act(self): """Start the game. Called when OK button is pressed.""" player_color = self._playerdata.get_player_color() player_name = self._playerdata.get_player_name() if not player_name: self._windows.open_popup(_("Invalid player name"), _("You entered an invalid playername.")) return horizons.globals.fife.set_uh_setting("Nickname", player_name) self._windows.close() self._mode.act(player_name, player_color)
class SingleplayerMenu(object): def __init__(self, mainmenu): self._mainmenu = mainmenu self._mode = None self._gui = load_uh_widget('singleplayermenu.xml') self._gui.mapEvents({ 'cancel' : self.cancel, 'okay' : self.act, 'scenario' : Callback(self._select_mode, 'scenario'), 'random' : Callback(self._select_mode, 'random'), 'free_maps': Callback(self._select_mode, 'free_maps') }) self._playerdata = PlayerDataSelection() self._aidata = AIDataSelection() self._gui.findChild(name="playerdataselectioncontainer").addChild(self._playerdata.get_widget()) self._gui.findChild(name="aidataselectioncontainer").addChild(self._aidata.get_widget()) def hide(self): self._gui.hide() def cancel(self): self._mainmenu.show_main() def show(self): self._mainmenu.hide() self._mainmenu.current = self self._mainmenu.on_escape = self.cancel self._gui.findChild(name='scenario').marked = True self._select_mode('scenario') def _select_mode(self, mode): self._gui.hide() modes = { 'random': RandomMapWidget, 'free_maps': FreeMapsWidget, 'scenario': ScenarioMapWidget, } # remove old widget if self._mode: self._mode.end() self._gui.findChild(name="right_side_box").removeChild(self._mode.get_widget()) self._mode = modes[mode](self._mainmenu, self, self._aidata) self._mode.show() self._gui.findChild(name="right_side_box").addChild(self._mode.get_widget()) self._gui.show() def act(self): """Start the game. Called when OK button is pressed.""" player_color = self._playerdata.get_player_color() player_name = self._playerdata.get_player_name() if not player_name: self._mainmenu.show_popup(_("Invalid player name"), _("You entered an invalid playername.")) return horizons.globals.fife.set_uh_setting("Nickname", player_name) self._mode.act(player_name, player_color)
class SingleplayerMenu(Window): def __init__(self, windows): super(SingleplayerMenu, self).__init__(windows) self._mode = None self._gui = load_uh_widget('singleplayermenu.xml') self._gui.mapEvents({ 'cancel': self._windows.close, 'okay': self.act, 'scenario': Callback(self._select_mode, 'scenario'), 'random': Callback(self._select_mode, 'random'), 'free_maps': Callback(self._select_mode, 'free_maps') }) self._playerdata = PlayerDataSelection() self._aidata = AIDataSelection() self._gui.findChild(name="playerdataselectioncontainer").addChild( self._playerdata.get_widget()) self._gui.findChild(name="aidataselectioncontainer").addChild( self._aidata.get_widget()) def hide(self): # Save the player-data on hide so that other menus gets updated data self._playerdata.save_settings() self._gui.hide() def show(self): self._playerdata.update_data() self._gui.findChild(name='scenario').marked = True self._select_mode('scenario') def on_return(self): self.act() def _select_mode(self, mode): self._gui.hide() modes = { 'random': RandomMapWidget, 'free_maps': FreeMapsWidget, 'scenario': ScenarioMapWidget, } # remove old widget if self._mode: self._mode.end() self._gui.findChild(name="right_side_box").removeChild( self._mode.get_widget()) self._mode = modes[mode](self._windows, self, self._aidata) self._mode.show() self._gui.findChild(name="right_side_box").addChild( self._mode.get_widget()) self._gui.show() def act(self): """Start the game. Called when OK button is pressed.""" player_color = self._playerdata.get_player_color() player_name = self._playerdata.get_player_name() if not player_name: self._windows.open_popup(_("Invalid player name"), _("You entered an invalid playername.")) return horizons.globals.fife.set_uh_setting("Nickname", player_name) self._windows.close() self._mode.act(player_name, player_color)