Esempio n. 1
0
    def _show_change_player_details_popup(self, game):
        """Shows a dialog where the player can change its name and/or color"""

        assigned = [
            p["color"]
            for p in NetworkInterface().get_game().get_player_list()
            if p["name"] != NetworkInterface().get_client_name()
        ]
        unused_colors = set(Color.get_defaults()) - set(assigned)

        playerdata = PlayerDataSelection(color_palette=unused_colors)
        playerdata.set_player_name(NetworkInterface().get_client_name())
        playerdata.set_color(NetworkInterface().get_client_color())

        dialog = load_uh_widget('set_player_details.xml')
        dialog.findChild(name="playerdataselectioncontainer").addChild(
            playerdata.get_widget())

        def _change_playerdata():
            NetworkInterface().change_name(playerdata.get_player_name())
            NetworkInterface().change_color(playerdata.get_player_color().id)
            dialog.hide()
            self._update_game_details()

        def _cancel():
            dialog.hide()

        dialog.mapEvents({
            OkButton.DEFAULT_NAME: _change_playerdata,
            CancelButton.DEFAULT_NAME: _cancel
        })

        dialog.show()
Esempio n. 2
0
	def _show_change_player_details_popup(self, game):
		"""Shows a dialog where the player can change its name and/or color"""

		assigned = [p["color"] for p in NetworkInterface().get_game().get_player_list()
		            if p["name"] != NetworkInterface().get_client_name()]
		unused_colors = set(Color.get_defaults()) - set(assigned)

		playerdata = PlayerDataSelection(color_palette=unused_colors)
		playerdata.set_player_name(NetworkInterface().get_client_name())
		playerdata.set_color(NetworkInterface().get_client_color())

		dialog = load_uh_widget('set_player_details.xml')
		dialog.findChild(name="playerdataselectioncontainer").addChild(playerdata.get_widget())

		def _change_playerdata():
			NetworkInterface().change_name(playerdata.get_player_name())
			NetworkInterface().change_color(playerdata.get_player_color().id)
			dialog.hide()
			self._update_game_details()

		def _cancel():
			dialog.hide()

		dialog.mapEvents({
			OkButton.DEFAULT_NAME: _change_playerdata,
			CancelButton.DEFAULT_NAME: _cancel
		})

		dialog.show()
Esempio n. 3
0
    def _get_player_list(self):
        if self._player_list is not None:
            return self._player_list

        # for now just make it a bit easier for the AI
        difficulty_level = {
            False: DifficultySettings.DEFAULT_LEVEL,
            True: DifficultySettings.EASY_LEVEL
        }

        players = []
        players.append({
            'id':
            1,
            'name':
            self.player_name,
            'color':
            Color.get(1) if self.player_color is None else self.player_color,
            'local':
            True,
            'ai':
            self.human_ai,
            'difficulty':
            difficulty_level[bool(self.human_ai)],
        })

        cur_locale = horizons.globals.fife.get_locale()

        # add AI players with a distinct color; if none can be found then use black
        for num in range(self.ai_players):
            color = Color.get(
                COLORS.BLACK)  # if none can be found then be black
            for possible_color in Color.get_defaults():
                if possible_color == Color.get(COLORS.BLACK):
                    continue  # black is used by the trader and the pirate
                used = any(possible_color == player['color']
                           for player in players)
                if not used:
                    color = possible_color
                    break

            name = horizons.globals.db.get_random_ai_name(
                cur_locale, [p['name'] for p in players])
            # out of pre-defined names?
            if name is None:
                name = 'AI' + str(num + 1)

            players.append({
                'id': num + 2,
                'name': name,
                'color': color,
                'local': False,
                'ai': True,
                'difficulty': difficulty_level[True],
            })
        return players
    def _get_player_list(self):
        if self._player_list is not None:
            return self._player_list

            # for now just make it a bit easier for the AI
        difficulty_level = {False: DifficultySettings.DEFAULT_LEVEL, True: DifficultySettings.EASY_LEVEL}

        players = []
        players.append(
            {
                "id": 1,
                "name": self.player_name,
                "color": Color.get(1) if self.player_color is None else self.player_color,
                "local": True,
                "ai": self.human_ai,
                "difficulty": difficulty_level[bool(self.human_ai)],
            }
        )

        cur_locale = horizons.globals.fife.get_locale()

        # add AI players with a distinct color; if none can be found then use black
        for num in xrange(self.ai_players):
            color = Color.get(COLORS.BLACK)  # if none can be found then be black
            for possible_color in Color.get_defaults():
                if possible_color == Color.get(COLORS.BLACK):
                    continue  # black is used by the trader and the pirate
                used = any(possible_color == player["color"] for player in players)
                if not used:
                    color = possible_color
                    break

            name = horizons.globals.db.get_random_ai_name(cur_locale, [p["name"] for p in players])
            # out of pre-defined names?
            if name is None:
                name = "AI" + str(num + 1)

            players.append(
                {
                    "id": num + 2,
                    "name": name,
                    "color": color,
                    "local": False,
                    "ai": True,
                    "difficulty": difficulty_level[True],
                }
            )
        return players
	def change_color(self, new_color, save=True):
		new_color %= len(set(Color.get_defaults()))

		if save:
			horizons.globals.fife.set_uh_setting("ColorID", new_color)
			horizons.globals.fife.save_settings()

		try:
			if self._client_data.color == new_color:
				return
			self.log.debug("[CHANGECOLOR] %s", new_color)
			if self._mode is None or self._game is None:
				self._client_data.color = new_color
				return
			self.send_packet(packets.client.cmd_changecolor(new_color))
		except NetworkException as e:
			self._handle_exception(e)
Esempio n. 6
0
	def change_color(self, new_color, save=True):
		new_color %= len(set(Color.get_defaults()))

		if save:
			horizons.globals.fife.set_uh_setting("ColorID", new_color)
			horizons.globals.fife.save_settings()

		try:
			if self._client_data.color == new_color:
				return
			self.log.debug("[CHANGECOLOR] %s" % (new_color))
			if self._mode is None or self._game is None:
				self._client_data.color = new_color
				return
			self.send_packet(packets.client.cmd_changecolor(new_color))
		except NetworkException as e:
			self._handle_exception(e)
    def __init__(self, color_palette=None):
        """
		@param widgets: WidgetsDict
		"""
        self.gui = load_uh_widget('playerdataselection.xml')

        self.colors = self.gui.findChild(name='playercolor')

        colorlabels = []
        events = {}

        # need the id to save it as int in settings file.
        for color in (Color.get_defaults()
                      if color_palette is None else color_palette):
            label = Label(name='{color}'.format(color=color.name),
                          text="    ",
                          max_size=(20, 20),
                          min_size=(20, 20),
                          background_color=color)
            events['{label}/mouseClicked'.format(label=color.name)] = \
                                         Callback(self.set_color, color.id)
            colorlabels.append(label)

        # split into three rows with at max 5 entries in each row
        # right now there are 14 different colors to choose from.
        for i in range(0, len(colorlabels), 5):
            hbox = HBox(name='line_{index}'.format(index=i))
            hbox.addChildren(colorlabels[i:i + 5])
            self.colors.addChild(hbox)

        playertextfield = self.gui.findChild(name='playername')

        def playertextfield_clicked():
            if playertextfield.text == 'Unnamed Traveler':
                playertextfield.text = ""

        playertextfield.capture(playertextfield_clicked,
                                event_name='mouseClicked')

        self.gui.mapEvents(events)
        self.update_data()
Esempio n. 8
0
	def __init__(self, color_palette=None):
		"""
		@param widgets: WidgetsDict
		"""
		self.gui = load_uh_widget('playerdataselection.xml')

		self.colors = self.gui.findChild(name='playercolor')

		colorlabels = []
		events = {}

		# need the id to save it as int in settings file.
		for color in (Color.get_defaults() if color_palette is None else color_palette):
			label = Label(name = u'{color}'.format(color=color.name),
			              text = u"    ",
			              max_size = (20, 20),
			              min_size = (20, 20),
			              background_color = color)
			events['{label}/mouseClicked'.format(label=color.name)] = \
			                             Callback(self.set_color, color.id)
			colorlabels.append(label)

		# split into three rows with at max 5 entries in each row
		# right now there are 14 different colors to choose from.
		for i in xrange(0, len(colorlabels), 5):
			hbox = HBox(name='line_{index}'.format(index=i))
			hbox.addChildren(colorlabels[i:i+5])
			self.colors.addChild(hbox)

		playertextfield = self.gui.findChild(name='playername')
		def playertextfield_clicked():
			if playertextfield.text == 'Unnamed Traveler':
				playertextfield.text = ""
		playertextfield.capture(playertextfield_clicked, event_name='mouseClicked')

		self.gui.mapEvents(events)
		self.update_data()
Esempio n. 9
0
def test_iter():
    colors = list(Color.get_defaults())
    assert len(colors) == 2
    assert all(c.is_default_color for c in colors)
    assert colors[0] == Color(0, 0, 0, 255)
    assert colors[1] == Color(255, 0, 0, 255)
def test_iter():
	colors = list(Color.get_defaults())
	assert len(colors) == 2
	assert all(c.is_default_color for c in colors)
	assert colors[0] == Color(0, 0, 0, 255)
	assert colors[1] == Color(255, 0, 0, 255)
Esempio n. 11
0
 def test_iter(self):
     colors = list(Color.get_defaults())
     self.assertEqual(len(colors), 2)
     self.assertTrue(all(c.is_default_color for c in colors))
     self.assertEqual(colors[0], Color(0, 0, 0, 255))
     self.assertEqual(colors[1], Color(255, 0, 0, 255))