本文整理汇总了Python中horizons.gui.modules.PlayerDataSelection.update_data方法的典型用法代码示例。如果您正苦于以下问题:Python PlayerDataSelection.update_data方法的具体用法?Python PlayerDataSelection.update_data怎么用?Python PlayerDataSelection.update_data使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类horizons.gui.modules.PlayerDataSelection
的用法示例。
在下文中一共展示了PlayerDataSelection.update_data方法的2个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的Python代码示例。
示例1: SingleplayerMenu
# 需要导入模块: from horizons.gui.modules import PlayerDataSelection [as 别名]
# 或者: from horizons.gui.modules.PlayerDataSelection import update_data [as 别名]
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)
示例2: MultiplayerMenu
# 需要导入模块: from horizons.gui.modules import PlayerDataSelection [as 别名]
# 或者: from horizons.gui.modules.PlayerDataSelection import update_data [as 别名]
class MultiplayerMenu(Window):
def __init__(self, mainmenu, windows):
super(MultiplayerMenu, self).__init__(windows)
self._mainmenu = mainmenu
self._gui = load_uh_widget('multiplayermenu.xml')
self._gui.mapEvents({
'cancel' : self._windows.close,
'join' : self._join_game,
'create' : self._create_game,
'refresh': Callback(self._refresh, play_sound=True)
})
self._gui.findChild(name='gamelist').capture(self._update_game_details)
self._playerdata = PlayerDataSelection()
self._gui.findChild(name="playerdataselectioncontainer").addChild(self._playerdata.get_widget())
# to track if the menu window is opened or not.
self._is_open = False
def hide(self):
# Save the player-data on hide so that other menus gets updated data
self._playerdata.save_settings()
self._gui.hide()
ExtScheduler().rem_all_classinst_calls(self)
def show(self):
if not self._check_connection():
return
if not self._refresh():
self._windows.close()
return
if not self._is_open:
self._is_open = True
# subscribe "error" when this menu window is firstly opened
# only unsubscribe if this menu window is closed
NetworkInterface().subscribe("error", self._on_error)
# get updated player data
self._playerdata.update_data()
self._gui.show()
# TODO: Remove once loading a game is implemented again
self._gui.findChild(name='load').parent.hide()
ExtScheduler().add_new_object(self._refresh, self, run_in=5, loops=-1)
def close(self):
# if the window is not open (due to connection errors), just do nothing
if not self._is_open:
return
self.hide()
NetworkInterface().unsubscribe("error", self._on_error)
self._is_open = False
# the window is also closed when a game starts, don't disconnect in that case
if NetworkInterface().is_connected and not NetworkInterface().is_joined:
NetworkInterface().disconnect()
def on_return(self):
self._join_game()
def _check_connection(self):
"""
Check if all dependencies for multiplayer games are met and we can connect to
the master server. If any dependency is not met, the window is closed.
"""
# It is important to close this window before showing the error popup.
# Otherwise closing the popup will trigger `show` again, a new attempt
# to connect is made, which ends up in an endless loop.
if enet is None:
self._windows.close()
headline = _("Unable to find pyenet")
descr = _('The multiplayer feature requires the library "pyenet", '
"which could not be found on your system.")
advice = _("Linux users: Try to install pyenet through your package manager.")
self._windows.open_error_popup(headline, descr, advice)
return False
if NetworkInterface() is None:
try:
NetworkInterface.create_instance()
except RuntimeError as e:
self._windows.close()
headline = _("Failed to initialize networking.")
descr = _("Network features could not be initialized with the current configuration.")
advice = _("Check the settings you specified in the network section.")
self._windows.open_error_popup(headline, descr, advice, unicode(e))
return False
if not NetworkInterface().is_connected:
try:
NetworkInterface().connect()
except Exception as err:
#.........这里部分代码省略.........