本文整理汇总了Python中horizons.extscheduler.ExtScheduler类的典型用法代码示例。如果您正苦于以下问题:Python ExtScheduler类的具体用法?Python ExtScheduler怎么用?Python ExtScheduler使用的例子?那么恭喜您, 这里精选的类代码示例或许可以为您提供帮助。
在下文中一共展示了ExtScheduler类的15个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的Python代码示例。
示例1: __init__
def __init__(self, db, rng_seed=None):
"""
Unfortunately, right now there is no other way to setup Dummy versions of the GUI,
View etc., unless we want to patch the references in the session module.
"""
super(LivingObject, self).__init__()
self.gui = Dummy()
self.db = db
self.savecounter = 0 # this is a new game.
self.is_alive = True
WorldObject.reset()
NamedObject.reset()
AIPlayer.clear_caches()
# Game
self.current_tick = 0
self.random = self.create_rng(rng_seed)
self.timer = self.create_timer()
Scheduler.create_instance(self.timer)
ExtScheduler.create_instance(Dummy)
self.manager = self.create_manager()
self.view = Dummy()
self.view.renderer = Dummy()
Entities.load(self.db)
self.scenario_eventhandler = Dummy()
self.campaign = {}
self.selected_instances = []
# GUI
self.gui.session = self
self.ingame_gui = Dummy()
GAME_SPEED.TICKS_PER_SECOND = 16
示例2: quit
def quit():
"""Quits the game"""
global fife
if _modules.session is not None and _modules.session.is_alive:
_modules.session.end()
preload_game_join(preloading)
ExtScheduler.destroy_instance()
fife.quit()
示例3: cleanup
def cleanup(cls):
"""
If a test uses manual session management, we cannot be sure that session.end was
called before a crash, leaving the game in an unclean state. This method should
return the game to a valid state.
"""
Scheduler.destroy_instance()
ExtScheduler.destroy_instance()
SPSession._clear_caches()
示例4: __init__
def __init__(self, db, rng_seed=None):
"""
Unfortunately, right now there is no other way to setup Dummy versions of the GUI,
View etc., unless we want to patch the references in the session module.
"""
super(LivingObject, self).__init__()
self.gui = Dummy()
self.db = db
self.savecounter = 0 # this is a new game.
self.is_alive = True
WorldObject.reset()
NamedComponent.reset()
AIPlayer.clear_caches()
# Game
self.random = self.create_rng(rng_seed)
self.timer = self.create_timer()
Scheduler.create_instance(self.timer)
ExtScheduler.create_instance(Dummy)
self.manager = self.create_manager()
self.view = Dummy()
self.view.renderer = Dummy()
Entities.load(self.db)
self.scenario_eventhandler = Dummy()
self.campaign = {}
self.message_bus = MessageBus()
self.status_icon_manager = StatusIconManager(self)
# GUI
self.gui.session = self
self.ingame_gui = Dummy()
LastActivePlayerSettlementManager.create_instance(self)
self.selected_instances = set()
self.selection_groups = [set()] * 10 # List of sets that holds the player assigned unit groups.
GAME_SPEED.TICKS_PER_SECOND = 16
示例5: start
def start(_command_line_arguments):
"""Starts the horizons. Will drop you to the main menu.
@param _command_line_arguments: options object from optparse.OptionParser. see run_uh.py.
"""
global fife, db, debug, preloading, command_line_arguments
command_line_arguments = _command_line_arguments
# NOTE: globals are designwise the same thing as singletons. they don't look pretty.
# here, we only have globals that are either trivial, or only one instance may ever exist.
from engine import Fife
# handle commandline globals
debug = command_line_arguments.debug
if command_line_arguments.restore_settings:
# just delete the file, Settings ctor will create a new one
os.remove( PATHS.USER_CONFIG_FILE )
if command_line_arguments.mp_master:
try:
mpieces = command_line_arguments.mp_master.partition(':')
NETWORK.SERVER_ADDRESS = mpieces[0]
# only change port if port is specified
if len(mpieces[2]) > 0:
NETWORK.SERVER_PORT = parse_port(mpieces[2], allow_zero=True)
except ValueError:
print "Error: Invalid syntax in --mp-master commandline option. Port must be a number between 1 and 65535."
return False
if command_line_arguments.generate_minimap: # we've been called as subprocess to generate a map preview
from horizons.gui.modules.singleplayermenu import MapPreview
MapPreview.generate_minimap( * json.loads(
command_line_arguments.generate_minimap
) )
sys.exit(0)
# init fife before mp_bind is parsed, since it's needed there
fife = Fife()
if command_line_arguments.mp_bind:
try:
mpieces = command_line_arguments.mp_bind.partition(':')
NETWORK.CLIENT_ADDRESS = mpieces[0]
fife.set_uh_setting("NetworkPort", parse_port(mpieces[2], allow_zero=True))
except ValueError:
print "Error: Invalid syntax in --mp-bind commandline option. Port must be a number between 1 and 65535."
return False
if command_line_arguments.ai_highlights:
AI.HIGHLIGHT_PLANS = True
if command_line_arguments.human_ai:
AI.HUMAN_AI = True
# set singleplayer natural resource seed
if command_line_arguments.nature_seed:
SINGLEPLAYER.SEED = command_line_arguments.nature_seed
# set MAX_TICKS
if command_line_arguments.max_ticks:
GAME.MAX_TICKS = command_line_arguments.max_ticks
db = _create_main_db()
# init game parts
_init_gettext(fife)
client_id = fife.get_uh_setting("ClientID")
if client_id is None or len(client_id) == 0:
# We need a new client id
client_id = "".join("-" if c in (8, 13, 18, 23) else \
random.choice("0123456789abcdef") for c in xrange(0, 36))
fife.set_uh_setting("ClientID", client_id)
fife.save_settings()
# Install gui logger, needs to be done before instanciating Gui, otherwise we miss
# the events of the main menu buttons
if command_line_arguments.log_gui:
if command_line_arguments.gui_test:
raise Exception("Logging gui interactions doesn't work when running tests.")
try:
from tests.gui.logger import setup_gui_logger
setup_gui_logger()
except ImportError:
import traceback
traceback.print_exc()
print
print "Gui logging requires code that is only present in the repository and is not being installed."
return False
# GUI tests always run with sound disabled and SDL (so they can run under xvfb).
# Needs to be done before engine is initialized.
if command_line_arguments.gui_test:
fife.engine.getSettings().setRenderBackend('SDL')
fife.set_fife_setting('PlaySounds', False)
ExtScheduler.create_instance(fife.pump)
fife.init()
_modules.gui = Gui()
SavegameManager.init()
#.........这里部分代码省略.........
示例6: start
#.........这里部分代码省略.........
atlas_generator = None
horizons_path = os.path.dirname(horizons.__file__)
if VERSION.IS_DEV_VERSION and horizons.globals.fife.get_uh_setting('AtlasesEnabled') \
and horizons.globals.fife.get_uh_setting('AtlasGenerationEnabled') \
and command_line_arguments.atlas_generation \
and not command_line_arguments.gui_test:
args = [sys.executable, os.path.join(horizons_path, 'engine', 'generate_atlases.py'),
str(horizons.globals.fife.get_uh_setting('MaxAtlasSize'))]
atlas_generator = subprocess.Popen(args, stdout=None, stderr=subprocess.STDOUT)
# init game parts
# Install gui logger, needs to be done before instantiating Gui, otherwise we miss
# the events of the main menu buttons
if command_line_arguments.log_gui:
if command_line_arguments.gui_test:
raise Exception("Logging gui interactions doesn't work when running tests.")
try:
from tests.gui.logger import setup_gui_logger
setup_gui_logger()
except ImportError:
traceback.print_exc()
print
print "Gui logging requires code that is only present in the repository and is not being installed."
return False
# GUI tests always run with sound disabled and SDL (so they can run under xvfb).
# Needs to be done before engine is initialized.
if command_line_arguments.gui_test:
horizons.globals.fife.engine.getSettings().setRenderBackend('SDL')
horizons.globals.fife.set_fife_setting('PlaySounds', False)
ExtScheduler.create_instance(horizons.globals.fife.pump)
horizons.globals.fife.init()
if atlas_generator is not None:
atlas_generator.wait()
assert atlas_generator.returncode is not None
if atlas_generator.returncode != 0:
print 'Atlas generation failed. Continuing without atlas support.'
print 'This just means that the game will run a bit slower.'
print 'It will still run fine unless there are other problems.'
print
GFX.USE_ATLASES = False
else:
GFX.USE_ATLASES = True
PATHS.DB_FILES = PATHS.DB_FILES + (PATHS.ATLAS_DB_PATH, )
elif not VERSION.IS_DEV_VERSION and horizons.globals.fife.get_uh_setting('AtlasesEnabled'):
GFX.USE_ATLASES = True
PATHS.DB_FILES = PATHS.DB_FILES + (PATHS.ATLAS_DB_PATH, )
horizons.globals.db = _create_main_db()
horizons.globals.fife.init_animation_loader(GFX.USE_ATLASES)
_modules.gui = Gui()
SavegameManager.init()
from horizons.entities import Entities
Entities.load(horizons.globals.db, load_now=False) # create all references
# for preloading game data while in main screen
preload_lock = threading.Lock()
preload_thread = threading.Thread(target=preload_game_data, args=(preload_lock,))
preloading = (preload_thread, preload_lock)
# Singleplayer seed needs to be changed before startup.
示例7: init_environment
from run_uh import init_environment
init_environment(True)
import horizons.main
from horizons.constants import UNITS, BUILDINGS, TIER
from horizons.scenario.actions import ACTIONS
from horizons.scenario.conditions import CONDITIONS
db = horizons.main._create_main_db()
# we also need to load entities to get access to the yaml data
from horizons.extscheduler import ExtScheduler
from horizons.component.storagecomponent import StorageComponent
from horizons.entities import Entities
from tests.dummy import Dummy
ExtScheduler.create_instance(Dummy()) # sometimes needed by entities in subsequent calls
Entities.load_buildings(db, load_now=True)
Entities.load_units(load_now=True)
building_name_mapping = dict((b.id, b.name) for b in Entities.buildings.itervalues())
unit_name_mapping = dict((u.id, u.name) for u in Entities.units.itervalues())
def get_obj_name(obj):
global db
if obj < UNITS.DIFFERENCE_BUILDING_UNIT_ID:
return db("SELECT name FROM building where id = ?", obj)[0][0]
else:
return unit_name_mapping[obj]
示例8: __init__
def __init__(self, rng_seed=None):
ExtScheduler.create_instance(Dummy)
super(SPTestSession, self).__init__(Dummy, horizons.globals.db, rng_seed)
self.reset_autosave = mock.Mock()
示例9: start
#.........这里部分代码省略.........
if command_line_arguments.ai_combat_highlights:
AI.HIGHLIGHT_COMBAT = True
if command_line_arguments.human_ai:
AI.HUMAN_AI = True
# set MAX_TICKS
if command_line_arguments.max_ticks:
GAME.MAX_TICKS = command_line_arguments.max_ticks
horizons.globals.db = _create_main_db()
# init game parts
# Install gui logger, needs to be done before instantiating Gui, otherwise we miss
# the events of the main menu buttons
if command_line_arguments.log_gui:
if command_line_arguments.gui_test:
raise Exception("Logging gui interactions doesn't work when running tests.")
try:
from tests.gui.logger import setup_gui_logger
setup_gui_logger()
except ImportError:
traceback.print_exc()
print
print "Gui logging requires code that is only present in the repository and is not being installed."
return False
# GUI tests always run with sound disabled and SDL (so they can run under xvfb).
# Needs to be done before engine is initialized.
if command_line_arguments.gui_test:
horizons.globals.fife.engine.getSettings().setRenderBackend('SDL')
horizons.globals.fife.set_fife_setting('PlaySounds', False)
ExtScheduler.create_instance(horizons.globals.fife.pump)
horizons.globals.fife.init()
_modules.gui = Gui()
SavegameManager.init()
from horizons.entities import Entities
Entities.load(horizons.globals.db, load_now=False) # create all references
# for preloading game data while in main screen
preload_lock = threading.Lock()
preload_thread = threading.Thread(target=preload_game_data, args=(preload_lock,))
preloading = (preload_thread, preload_lock)
# Singleplayer seed needs to be changed before startup.
if command_line_arguments.sp_seed:
SINGLEPLAYER.SEED = command_line_arguments.sp_seed
# start something according to commandline parameters
startup_worked = True
if command_line_arguments.start_dev_map:
startup_worked = _start_dev_map(command_line_arguments.ai_players, command_line_arguments.human_ai, command_line_arguments.force_player_id)
elif command_line_arguments.start_random_map:
startup_worked = _start_random_map(command_line_arguments.ai_players, command_line_arguments.human_ai, force_player_id=command_line_arguments.force_player_id)
elif command_line_arguments.start_specific_random_map is not None:
startup_worked = _start_random_map(command_line_arguments.ai_players, command_line_arguments.human_ai,
seed=command_line_arguments.start_specific_random_map, force_player_id=command_line_arguments.force_player_id)
elif command_line_arguments.start_map is not None:
startup_worked = _start_map(command_line_arguments.start_map, command_line_arguments.ai_players,
command_line_arguments.human_ai, force_player_id=command_line_arguments.force_player_id)
elif command_line_arguments.start_scenario is not None:
startup_worked = _start_map(command_line_arguments.start_scenario, 0, False, True, force_player_id=command_line_arguments.force_player_id)
elif command_line_arguments.start_campaign is not None:
startup_worked = _start_campaign(command_line_arguments.start_campaign, force_player_id=command_line_arguments.force_player_id)
示例10: start
def start(command_line_arguments):
"""Starts the horizons.
@param command_line_arguments: options object from optparse.OptionParser. see run_uh.py.
"""
global fife, db, debug, preloading
# NOTE: globals are designwise the same thing as singletons. they don't look pretty.
# here, we only have globals that are either trivial, or only one instance may ever exist.
from engine import Fife
# handle commandline globals
debug = command_line_arguments.debug
if command_line_arguments.restore_settings:
# just delete the file, Settings ctor will create a new one
os.remove( PATHS.USER_CONFIG_FILE )
if command_line_arguments.mp_master:
try:
mpieces = command_line_arguments.mp_master.partition(':')
NETWORK.SERVER_ADDRESS = mpieces[0]
# only change port if port is specified
if len(mpieces[2]) > 0:
NETWORK.SERVER_PORT = int(mpieces[2])
if NETWORK.SERVER_PORT < 1 or NETWORK.SERVER_PORT > 65535:
raise ValueError
except ValueError:
print _("Error: Invalid syntax in --mp-master commandline option. Port must be a number between 0 and 65535.")
return False
if command_line_arguments.mp_bind:
try:
mpieces = command_line_arguments.mp_bind.partition(':')
NETWORK.CLIENT_ADDRESS = mpieces[0]
NETWORK.CLIENT_PORT = int(mpieces[2])
if NETWORK.CLIENT_PORT < 1 or NETWORK.CLIENT_PORT > 65535:
raise ValueError
except ValueError:
print _("Error: Invalid syntax in --mp-bind commandline option. Port must be a number between 0 and 65535.")
return False
db = _create_db()
# init game parts
fife = Fife()
_init_gettext(fife)
client_id = fife.get_uh_setting("ClientID")
if client_id is None or len(client_id) == 0:
# We need a new client id
client_id = "".join("-" if c in (8, 13, 18, 23) else \
random.choice("0123456789abcdef") for c in xrange(0, 36))
from engine import UH_MODULE
fife.settings.set(UH_MODULE, "ClientID", client_id)
fife.settings.saveSettings()
ExtScheduler.create_instance(fife.pump)
fife.init()
_modules.gui = Gui()
SavegameManager.init()
try:
NetworkInterface.create_instance()
NetworkInterface().add_to_extscheduler()
except RuntimeError, e:
print "Error during network initialization: %s" % (e)
return False
示例11: start
#.........这里部分代码省略.........
res_logo_image = ImageTk.PhotoImage(res_logo)
logo_label = Tkinter.Label(window, image=res_logo_image)
logo_label.pack(side="left")
label = Tkinter.Label(window, padx=10, text="Generating atlases!")
label.pack(side="right")
# wait a second to give the thread time to check if a generation is necessary at all
time.sleep(1.0)
window.deiconify()
while atlas_loading_thread.is_alive():
if not window.state() == "iconic":
window.attributes("-topmost", 0)
window.update()
time.sleep(0.1)
window.destroy()
except Tkinter.TclError:
# catch #2298
atlas_loading_thread.join()
except ImportError:
# tkinter or PIL may be missing
atlas_loading_thread.join()
# init game parts
if not setup_gui_logger(command_line_arguments):
return False
# GUI tests always run with sound disabled and SDL (so they can run under xvfb).
# Needs to be done before engine is initialized.
if command_line_arguments.gui_test:
horizons.globals.fife.engine.getSettings().setRenderBackend("SDL")
horizons.globals.fife.set_fife_setting("PlaySounds", False)
ExtScheduler.create_instance(horizons.globals.fife.pump)
horizons.globals.fife.init()
if not VERSION.IS_DEV_VERSION and horizons.globals.fife.get_uh_setting("AtlasesEnabled"):
GFX.USE_ATLASES = True
PATHS.DB_FILES = PATHS.DB_FILES + (PATHS.ATLAS_DB_PATH,)
horizons.globals.db = _create_main_db()
_modules.gui = Gui()
SavegameManager.init()
horizons.globals.fife.init_animation_loader(GFX.USE_ATLASES)
from horizons.entities import Entities
Entities.load(horizons.globals.db, load_now=False) # create all references
# for preloading game data while in main screen
preload_thread = threading.Thread(target=preload_game_data, args=(preload_lock,))
preloading = (preload_thread, preload_lock)
# Singleplayer seed needs to be changed before startup.
if command_line_arguments.sp_seed:
SINGLEPLAYER.SEED = command_line_arguments.sp_seed
SINGLEPLAYER.FREEZE_PROTECTION = command_line_arguments.freeze_protection
# start something according to commandline parameters
startup_worked = True
if command_line_arguments.start_dev_map:
startup_worked = _start_map(
"development",
command_line_arguments.ai_players,
force_player_id=command_line_arguments.force_player_id,
is_map=True,
示例12: start
def start(_command_line_arguments):
"""Starts the horizons. Will drop you to the main menu.
@param _command_line_arguments: options object from optparse.OptionParser. see run_uh.py.
"""
global debug, preloading, command_line_arguments
command_line_arguments = _command_line_arguments
# NOTE: globals are designwise the same thing as singletons. they don't look pretty.
# here, we only have globals that are either trivial, or only one instance may ever exist.
from engine import Fife
# handle commandline globals
debug = command_line_arguments.debug
if command_line_arguments.restore_settings:
# just delete the file, Settings ctor will create a new one
os.remove( PATHS.USER_CONFIG_FILE )
if command_line_arguments.mp_master:
try:
mpieces = command_line_arguments.mp_master.partition(':')
NETWORK.SERVER_ADDRESS = mpieces[0]
# only change port if port is specified
if mpieces[2]:
NETWORK.SERVER_PORT = parse_port(mpieces[2])
except ValueError:
print "Error: Invalid syntax in --mp-master commandline option. Port must be a number between 1 and 65535."
return False
# init fife before mp_bind is parsed, since it's needed there
horizons.globals.fife = Fife()
if command_line_arguments.generate_minimap: # we've been called as subprocess to generate a map preview
from horizons.gui.modules.singleplayermenu import generate_random_minimap
generate_random_minimap( * json.loads(
command_line_arguments.generate_minimap
) )
sys.exit(0)
if debug: # also True if a specific module is logged (but not 'fife')
setup_debug_mode(command_line_arguments)
if horizons.globals.fife.get_uh_setting("DebugLog"):
set_debug_log(True, startup=True)
if command_line_arguments.mp_bind:
try:
mpieces = command_line_arguments.mp_bind.partition(':')
NETWORK.CLIENT_ADDRESS = mpieces[0]
horizons.globals.fife.set_uh_setting("NetworkPort", parse_port(mpieces[2]))
except ValueError:
print "Error: Invalid syntax in --mp-bind commandline option. Port must be a number between 1 and 65535."
return False
setup_AI_settings(command_line_arguments)
# set MAX_TICKS
if command_line_arguments.max_ticks:
GAME.MAX_TICKS = command_line_arguments.max_ticks
preload_lock = threading.Lock()
atlas_loading_thread = None
atlas_loading_thread = AtlasLoadingThread(preload_lock, command_line_arguments)
atlas_loading_thread.start()
atlas_loading_thread.join()
# init game parts
if not setup_gui_logger(command_line_arguments):
return False
# GUI tests always run with sound disabled and SDL (so they can run under xvfb).
# Needs to be done before engine is initialized.
if command_line_arguments.gui_test:
horizons.globals.fife.engine.getSettings().setRenderBackend('SDL')
horizons.globals.fife.set_fife_setting('PlaySounds', False)
ExtScheduler.create_instance(horizons.globals.fife.pump)
horizons.globals.fife.init()
if not VERSION.IS_DEV_VERSION and horizons.globals.fife.get_uh_setting('AtlasesEnabled'):
GFX.USE_ATLASES = True
PATHS.DB_FILES = PATHS.DB_FILES + (PATHS.ATLAS_DB_PATH, )
horizons.globals.db = _create_main_db()
_modules.gui = Gui()
SavegameManager.init()
horizons.globals.fife.init_animation_loader(GFX.USE_ATLASES)
from horizons.entities import Entities
Entities.load(horizons.globals.db, load_now=False) # create all references
# for preloading game data while in main screen
preload_thread = threading.Thread(target=preload_game_data, args=(preload_lock,))
preloading = (preload_thread, preload_lock)
# Singleplayer seed needs to be changed before startup.
if command_line_arguments.sp_seed:
SINGLEPLAYER.SEED = command_line_arguments.sp_seed
SINGLEPLAYER.FREEZE_PROTECTION = command_line_arguments.freeze_protection
#.........这里部分代码省略.........
示例13: start
def start(command_line_arguments):
"""Starts the horizons.
@param command_line_arguments: options object from optparse.OptionParser. see run_uh.py.
"""
global fife, db, debug, preloading
# NOTE: globals are designwise the same thing as singletons. they don't look pretty.
# here, we only have globals that are either trivial, or only one instance may ever exist.
from engine import Fife
# handle commandline globals
debug = command_line_arguments.debug
if command_line_arguments.restore_settings:
# just delete the file, Settings ctor will create a new one
os.remove( PATHS.USER_CONFIG_FILE )
if command_line_arguments.mp_master:
try:
mpieces = command_line_arguments.mp_master.partition(':')
NETWORK.SERVER_ADDRESS = mpieces[0]
# only change port if port is specified
if len(mpieces[2]) > 0:
NETWORK.SERVER_PORT = parse_port(mpieces[2], allow_zero=True)
except ValueError:
print _("Error: Invalid syntax in --mp-master commandline option. Port must be a number between 1 and 65535.")
return False
# init fife before mp_bind is parsed, since it's needed there
fife = Fife()
if command_line_arguments.mp_bind:
try:
mpieces = command_line_arguments.mp_bind.partition(':')
NETWORK.CLIENT_ADDRESS = mpieces[0]
fife.set_uh_setting("NetworkPort", parse_port(mpieces[2], allow_zero=True))
except ValueError:
print _("Error: Invalid syntax in --mp-bind commandline option. Port must be a number between 1 and 65535.")
return False
AI.AI_PLAYERS = command_line_arguments.ai_players
if command_line_arguments.ai_highlights:
AI.HIGHLIGHT_PLANS = True
if command_line_arguments.human_ai:
AI.HUMAN_AI = True
# set singleplayer natural resource seed
if command_line_arguments.nature_seed:
SINGLEPLAYER.SEED = command_line_arguments.nature_seed
# set MAX_TICKS
if command_line_arguments.max_ticks:
GAME.MAX_TICKS = command_line_arguments.max_ticks
db = _create_db()
# init game parts
_init_gettext(fife)
client_id = fife.get_uh_setting("ClientID")
if client_id is None or len(client_id) == 0:
# We need a new client id
client_id = "".join("-" if c in (8, 13, 18, 23) else \
random.choice("0123456789abcdef") for c in xrange(0, 36))
from engine import UH_MODULE
fife.settings.set(UH_MODULE, "ClientID", client_id)
fife.settings.saveSettings()
ExtScheduler.create_instance(fife.pump)
fife.init()
_modules.gui = Gui()
SavegameManager.init()
# for preloading game data while in main screen
preload_lock = threading.Lock()
preload_thread = threading.Thread(target=preload_game_data, args=(preload_lock,))
preloading = (preload_thread, preload_lock)
# start something according to commandline parameters
startup_worked = True
if command_line_arguments.start_dev_map:
startup_worked = _start_dev_map(command_line_arguments.ai_players, command_line_arguments.human_ai)
elif command_line_arguments.start_random_map:
startup_worked = _start_random_map(command_line_arguments.ai_players, command_line_arguments.human_ai)
elif command_line_arguments.start_specific_random_map is not None:
startup_worked = _start_random_map(command_line_arguments.ai_players, command_line_arguments.human_ai, \
seed=command_line_arguments.start_specific_random_map)
elif command_line_arguments.start_map is not None:
startup_worked = _start_map(command_line_arguments.start_map, command_line_arguments.ai_players, \
command_line_arguments.human_ai)
elif command_line_arguments.start_scenario is not None:
startup_worked = _start_map(command_line_arguments.start_scenario, 0, False, True)
elif command_line_arguments.start_campaign is not None:
startup_worked = _start_campaign(command_line_arguments.start_campaign)
elif command_line_arguments.load_map is not None:
startup_worked = _load_map(command_line_arguments.load_map, command_line_arguments.ai_players, \
command_line_arguments.human_ai)
elif command_line_arguments.load_quicksave is not None:
startup_worked = _load_last_quicksave()
#.........这里部分代码省略.........
示例14: __init__
def __init__(self, rng_seed=None):
ExtScheduler.create_instance(mock.Mock())
super().__init__(horizons.globals.db, rng_seed, ingame_gui_class=Dummy)
self.reset_autosave = mock.Mock()
示例15: start
def start(command_line_arguments):
"""Starts the horizons.
@param command_line_arguments: options object from optparse.OptionParser. see run_uh.py.
"""
global fife, db, debug, preloading
# NOTE: globals are designwise the same thing as singletons. they don't look pretty.
# here, we only have globals that are either trivial, or only one instance may ever exist.
from engine import Fife
# handle commandline globals
debug = command_line_arguments.debug
if command_line_arguments.restore_settings:
# just delete the file, Settings ctor will create a new one
os.remove( PATHS.USER_CONFIG_FILE )
if command_line_arguments.mp_master:
try:
mpieces = command_line_arguments.mp_master.partition(':')
NETWORK.SERVER_ADDRESS = mpieces[0]
# only change port if port is specified
if len(mpieces[2]) > 0:
NETWORK.SERVER_PORT = parse_port(mpieces[2], allow_zero=True)
except ValueError:
print _("Error: Invalid syntax in --mp-master commandline option. Port must be a number between 1 and 65535.")
return False
# init fife before mp_bind is parsed, since it's needed there
fife = Fife()
if command_line_arguments.mp_bind:
try:
mpieces = command_line_arguments.mp_bind.partition(':')
NETWORK.CLIENT_ADDRESS = mpieces[0]
fife.set_uh_setting("NetworkPort", parse_port(mpieces[2], allow_zero=True))
print 'asdf', fife.get_uh_setting("NetworkPort2")
except ValueError:
print _("Error: Invalid syntax in --mp-bind commandline option. Port must be a number between 1 and 65535.")
return False
db = _create_db()
# init game parts
_init_gettext(fife)
client_id = fife.get_uh_setting("ClientID")
if client_id is None or len(client_id) == 0:
# We need a new client id
client_id = "".join("-" if c in (8, 13, 18, 23) else \
random.choice("0123456789abcdef") for c in xrange(0, 36))
from engine import UH_MODULE
fife.settings.set(UH_MODULE, "ClientID", client_id)
fife.settings.saveSettings()
ExtScheduler.create_instance(fife.pump)
fife.init()
_modules.gui = Gui()
SavegameManager.init()
try:
NetworkInterface.create_instance()
except RuntimeError, e:
headline = _(u"Failed to initialize networking.")
descr = _(u"Networking couldn't be initialised with the current configuration.")
advice = _(u"Check the data you entered in the Network section in the settings dialogue.")
_modules.gui.show_error_popup(headline, descr, advice, unicode(e))