Example #1
0
    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)
Example #6
0
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)