コード例 #1
0
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
コード例 #2
0
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