def LoadLastMission(): global lastMission which = lastMission if which in last_constructor and which in last_args: if last_constructor[which] == None: if type(last_args[which]) == str: VS.LoadNamedMissionScript(which, last_args[which]) else: VS.LoadNamedMissionScript(which, repr(last_args[which]) + "()") else: cons = last_constructor[which] if type(cons) != str: cons = cons.__name__ if type(last_args[which]) == str: VS.LoadNamedMissionScript( which, '#\nimport ' + cons + '\n' + cons + '.' + cons + last_args[which]) else: VS.LoadNamedMissionScript( which, '#\nimport ' + cons + '\n' + cons + '.' + cons + repr(last_args[which])) del last_args[which] del last_constructor[which] else: debug.info('No last mission with name "' + str(which) + '"') if which in last_briefing[0]: del last_briefing[0][which] if which in last_briefing[1]: del last_briefing[1][which] lastMission = None
def LoadLastMission(which=None): """ Makes a mission an active mission. """ print("#given mission argument: ", which) plr = getMissionPlayer() if which is None: which = str(players[plr].lastMission) print("#loading mission: ", which) if VS.networked(): custom.run('mission_lib', ['LoadLastMission', which], None) return last_constructor = players[plr].last_constructor last_args = players[plr].last_args last_briefing_vars = players[plr].last_briefing_vars last_briefing = players[plr].last_briefing ret = True if which in last_constructor and which in last_args: if last_constructor[which] == None: if type(last_args[which]) == str: script = "%(args)s" else: script = "%(args)r()" vars = dict(args=last_args[which]) else: script = '''# import %(constructor)s temp=%(constructor)s.%(constructor)s%(args)s mission_lib.AddMissionHooks(temp) temp=0 ''' cons = last_constructor[which] if type(cons) != str: cons = cons.__name__ if type(last_args[which]) == str: args = last_args[which] else: args = repr(last_args[which]) vars = dict(constructor=cons, args=args) script = script % vars if script[:1] == '#': prescript = '''# import mission_lib mission_lib.SetMissionHookArgs(%(amentry)r) %(postscript)s''' amentry = last_briefing_vars[0].get(which, dict()) try: amentry.update( iter(last_briefing_vars[1].get(which, dict()).items())) amentry.update([ #('MISSION_NAME',which), ('DESCRIPTION', last_briefing[0].get(which, '')), ('ACCEPT_MESSAGE', last_briefing[1].get(which, '')) ]) except: debug.error("TRACING BACK") import sys debug.error(sys.exc_info()[0]) debug.error(sys.exc_info()[1]) debug.error("BACKTRACE done") ret = False vars = dict(amentry=amentry, postscript=script) script = prescript % vars debug.debug("Loading mission:\n%s" % script) VS.LoadNamedMissionScript(which, script) else: debug.debug('No last mission with name "' + str(which) + '"') ret = False RemoveLastMission(which) return ret