Example #1
0
def doTraps(traps):
    if len(traps) == 0:
        return (None, None)
    npcArrivals, npcDepartures, npcs = MovieNPCSOS.doNPCTeleports(traps)
    hasUberTrapConflict = False
    suitTrapsDict = {}
    for trap in traps:
        targets = trap['target']
        if len(targets) == 1:
            suitId = targets[0]['suit'].doId
            if suitTrapsDict.has_key(suitId):
                suitTrapsDict[suitId].append(trap)
            else:
                suitTrapsDict[suitId] = [
                 trap]
        else:
            for target in targets:
                suitId = target['suit'].doId
                if not suitTrapsDict.has_key(suitId):
                    suitTrapsDict[suitId] = [
                     trap]
                    break

            if trap['level'] == UBER_GAG_LEVEL_INDEX:
                if len(traps) > 1:
                    hasUberTrapConflict = True
                for oneTarget in trap['target']:
                    suit = oneTarget['suit']
                    if suit.battleTrap != NO_TRAP:
                        hasUberTrapConflict = True

    suitTrapLists = suitTrapsDict.values()
    mtrack = Parallel()
    for trapList in suitTrapLists:
        trapPropList = []
        for i in range(len(trapList)):
            trap = trapList[i]
            level = trap['level']
            if level == 0:
                banana = globalPropPool.getProp('banana')
                banana2 = MovieUtil.copyProp(banana)
                trapPropList.append([banana, banana2])
            elif level == 1:
                rake = globalPropPool.getProp('rake')
                rake2 = MovieUtil.copyProp(rake)
                rake.pose('rake', 0)
                rake2.pose('rake', 0)
                trapPropList.append([rake, rake2])
            elif level == 2:
                marbles = globalPropPool.getProp('marbles')
                marbles2 = MovieUtil.copyProp(marbles)
                trapPropList.append([marbles, marbles2])
            elif level == 3:
                trapPropList.append([globalPropPool.getProp('quicksand')])
            elif level == 4:
                trapPropList.append([globalPropPool.getProp('trapdoor')])
            elif level == 5:
                tnt = globalPropPool.getProp('tnt')
                tnt2 = MovieUtil.copyProp(tnt)
                trapPropList.append([tnt, tnt2])
            elif level == 6:
                tnt = globalPropPool.getProp('traintrack')
                tnt2 = MovieUtil.copyProp(tnt)
                trapPropList.append([tnt, tnt2])
            else:
                notify.warning('__doTraps() - Incorrect trap level:                 %d' % level)

        if len(trapList) == 1 and not hasUberTrapConflict:
            ival = __doTrapLevel(trapList[0], trapPropList[0])
            if ival:
                mtrack.append(ival)
        else:
            subMtrack = Parallel()
            for i in range(len(trapList)):
                trap = trapList[i]
                trapProps = trapPropList[i]
                ival = __doTrapLevel(trap, trapProps, explode=1)
                if ival:
                    subMtrack.append(ival)

            mtrack.append(subMtrack)

    trapTrack = Sequence(npcArrivals, mtrack, npcDepartures)
    camDuration = mtrack.getDuration()
    enterDuration = npcArrivals.getDuration()
    exitDuration = npcDepartures.getDuration()
    camTrack = MovieCamera.chooseTrapShot(traps, camDuration, enterDuration, exitDuration)
    return (
     trapTrack, camTrack)
def doTraps(traps):
    if len(traps) == 0:
        return None, None
    npcArrivals, npcDepartures, npcs = MovieNPCSOS.doNPCTeleports(traps)
    hasUberTrapConflict = False
    suitTrapsDict = {}
    for trap in traps:
        targets = trap['target']
        if len(targets) == 1:
            suitId = targets[0]['suit'].doId
            if suitId in suitTrapsDict:
                suitTrapsDict[suitId].append(trap)
            else:
                suitTrapsDict[suitId] = [trap]
        else:
            for target in targets:
                suitId = target['suit'].doId
                if suitId not in suitTrapsDict:
                    suitTrapsDict[suitId] = [trap]
                    break

            if trap['level'] == UBER_GAG_LEVEL_INDEX:
                if len(traps) > 1:
                    hasUberTrapConflict = True
                for oneTarget in trap['target']:
                    suit = oneTarget['suit']
                    if suit.battleTrap != NO_TRAP:
                        hasUberTrapConflict = True

    suitTrapLists = suitTrapsDict.values()
    mtrack = Parallel()
    for trapList in suitTrapLists:
        trapPropList = []
        for i in range(len(trapList)):
            trap = trapList[i]
            level = trap['level']
            if level == 0:
                banana = globalPropPool.getProp('banana')
                banana2 = MovieUtil.copyProp(banana)
                trapPropList.append([banana, banana2])
            elif level == 1:
                rake = globalPropPool.getProp('rake')
                rake2 = MovieUtil.copyProp(rake)
                rake.pose('rake', 0)
                rake2.pose('rake', 0)
                trapPropList.append([rake, rake2])
            elif level == 2:
                marbles = globalPropPool.getProp('marbles')
                marbles2 = MovieUtil.copyProp(marbles)
                trapPropList.append([marbles, marbles2])
            elif level == 3:
                trapPropList.append([globalPropPool.getProp('quicksand')])
            elif level == 4:
                trapPropList.append([globalPropPool.getProp('trapdoor')])
            elif level == 5:
                tnt = globalPropPool.getProp('tnt')
                tnt2 = MovieUtil.copyProp(tnt)
                trapPropList.append([tnt, tnt2])
            elif level == 6:
                tnt = globalPropPool.getProp('traintrack')
                tnt2 = MovieUtil.copyProp(tnt)
                trapPropList.append([tnt, tnt2])
            else:
                notify.warning(
                    '__doTraps() - Incorrect trap level:                 %d' %
                    level)

        if len(trapList) == 1 and not hasUberTrapConflict:
            ival = __doTrapLevel(trapList[0], trapPropList[0])
            if ival:
                mtrack.append(ival)
        else:
            subMtrack = Parallel()
            for i in range(len(trapList)):
                trap = trapList[i]
                trapProps = trapPropList[i]
                ival = __doTrapLevel(trap, trapProps, explode=1)
                if ival:
                    subMtrack.append(ival)

            mtrack.append(subMtrack)

    trapTrack = Sequence(npcArrivals, mtrack, npcDepartures)
    camDuration = mtrack.getDuration()
    enterDuration = npcArrivals.getDuration()
    exitDuration = npcDepartures.getDuration()
    camTrack = MovieCamera.chooseTrapShot(
        traps, camDuration, enterDuration, exitDuration)
    return trapTrack, camTrack
Example #3
0
def doTraps(traps):
    if len(traps) == 0:
        return (None, None)
    suitTrapsDict = {}
    for trap in traps:
        suitId = trap['target']['suit'].doId
        if suitTrapsDict.has_key(suitId):
            suitTrapsDict[suitId].append(trap)
        else:
            suitTrapsDict[suitId] = [trap]

    suitTrapLists = suitTrapsDict.values()
    ivals = []
    for trapList in suitTrapLists:
        trapPropList = []
        for i in range(len(trapList)):
            trap = trapList[i]
            level = trap['level']
            if level == 0:
                banana = globalPropPool.getProp('banana')
                banana2 = MovieUtil.copyProp(banana)
                trapPropList.append([banana, banana2])
            else:
                if level == 1:
                    rake = globalPropPool.getProp('rake')
                    rake2 = MovieUtil.copyProp(rake)
                    rake.pose('rake', 0)
                    rake2.pose('rake', 0)
                    trapPropList.append([rake, rake2])
                else:
                    if level == 2:
                        marbles = globalPropPool.getProp('marbles')
                        marbles2 = MovieUtil.copyProp(marbles)
                        trapPropList.append([marbles, marbles2])
                    else:
                        if level == 3:
                            trapPropList.append(
                                [globalPropPool.getProp('quicksand')])
                        else:
                            if level == 4:
                                trapPropList.append(
                                    [globalPropPool.getProp('trapdoor')])
                            else:
                                if level == 5:
                                    tnt = globalPropPool.getProp('tnt')
                                    tnt2 = MovieUtil.copyProp(tnt)
                                    trapPropList.append([tnt, tnt2])
                                else:
                                    notify.warning(
                                        '__doTraps() - Incorrect trap level:                 %d'
                                        % level)

        if len(trapList) == 1:
            ival = __doTrapLevel(trapList[0], trapPropList[0])
            if ival:
                ivals.append(Track([ival]))
        else:
            subIvals = []
            for i in range(len(trapList)):
                trap = trapList[i]
                trapProps = trapPropList[i]
                ival = __doTrapLevel(trap, trapProps, explode=1)
                if ival:
                    subIvals.append(Track([ival]))

            ivals.append(MultiTrack(subIvals))

    mtrack = MultiTrack(ivals)
    camDuration = mtrack.getDuration()
    camTrack = MovieCamera.chooseTrapShot(traps, camDuration)
    return (mtrack, camTrack)
    return
Example #4
0
def doTraps(traps):
    if len(traps) == 0:
        return (None, None)
    
    suitTrapsDict = { }
    for trap in traps:
        suitId = trap['target']['suit'].doId
        if suitTrapsDict.has_key(suitId):
            suitTrapsDict[suitId].append(trap)
        else:
            suitTrapsDict[suitId] = [
                trap]
    
    suitTrapLists = suitTrapsDict.values()
    ivals = []
    for trapList in suitTrapLists:
        trapPropList = []
        for i in range(len(trapList)):
            trap = trapList[i]
            level = trap['level']
            if level == 0:
                banana = globalPropPool.getProp('banana')
                banana2 = MovieUtil.copyProp(banana)
                trapPropList.append([
                    banana,
                    banana2])
            elif level == 1:
                rake = globalPropPool.getProp('rake')
                rake2 = MovieUtil.copyProp(rake)
                rake.pose('rake', 0)
                rake2.pose('rake', 0)
                trapPropList.append([
                    rake,
                    rake2])
            elif level == 2:
                marbles = globalPropPool.getProp('marbles')
                marbles2 = MovieUtil.copyProp(marbles)
                trapPropList.append([
                    marbles,
                    marbles2])
            elif level == 3:
                trapPropList.append([
                    globalPropPool.getProp('quicksand')])
            elif level == 4:
                trapPropList.append([
                    globalPropPool.getProp('trapdoor')])
            elif level == 5:
                tnt = globalPropPool.getProp('tnt')
                tnt2 = MovieUtil.copyProp(tnt)
                trapPropList.append([
                    tnt,
                    tnt2])
            else:
                notify.warning('__doTraps() - Incorrect trap level:                 %d' % level)
        
        if len(trapList) == 1:
            ival = __doTrapLevel(trapList[0], trapPropList[0])
            if ival:
                ivals.append(Track([
                    ival]))
            
        else:
            subIvals = []
            for i in range(len(trapList)):
                trap = trapList[i]
                trapProps = trapPropList[i]
                ival = __doTrapLevel(trap, trapProps, explode = 1)
                if ival:
                    subIvals.append(Track([
                        ival]))
                
            
            ivals.append(MultiTrack(subIvals))
    
    mtrack = MultiTrack(ivals)
    camDuration = mtrack.getDuration()
    camTrack = MovieCamera.chooseTrapShot(traps, camDuration)
    return (mtrack, camTrack)
Example #5
0
def doTraps(traps):
    """ Traps occur simultaneously - if more than one trap is
        thrown at the same suit, they explode
    """
    if (len(traps) == 0):
        return (None, None)

    npcArrivals, npcDepartures, npcs = MovieNPCSOS.doNPCTeleports(traps)

    hasUberTrapConflict = False

    # Group the traps by targeted suit
    suitTrapsDict = {}
    for trap in traps:
        targets = trap['target']
        if (len(targets) == 1):
            suitId = targets[0]['suit'].doId
            if (suitTrapsDict.has_key(suitId)):
                suitTrapsDict[suitId].append(trap)
            else:
                suitTrapsDict[suitId] = [trap]
        else:
            # We're dealing with an NPC trap, which can have multiple
            # targets - we only want to use the first valid target,
            # however, to avoid tossing too many traps
            for target in targets:
                suitId = target['suit'].doId
                if (not suitTrapsDict.has_key(suitId)):
                    suitTrapsDict[suitId] = [trap]
                    break
            if trap['level'] == UBER_GAG_LEVEL_INDEX:
                if len(traps) > 1:
                    hasUberTrapConflict = True
                for oneTarget in trap['target']:
                    suit = oneTarget['suit']
                    if suit.battleTrap != NO_TRAP:
                        #we can get here in a 3 suit battle, by placing quicksand then doing train
                        hasUberTrapConflict = True

    suitTrapLists = suitTrapsDict.values()

    mtrack = Parallel()
    for trapList in suitTrapLists:
        # Set the appropriate trapProps for use with this trap
        trapPropList = []
        for i in range(len(trapList)):
            trap = trapList[i]
            level = trap['level']
            if (level == 0):  # banana
                banana = globalPropPool.getProp('banana')
                banana2 = MovieUtil.copyProp(banana)
                trapPropList.append([banana, banana2])
            elif (level == 1):  # rake
                rake = globalPropPool.getProp('rake')
                rake2 = MovieUtil.copyProp(rake)
                rake.pose('rake', 0)
                rake2.pose('rake', 0)
                trapPropList.append([rake, rake2])
            elif (level == 2):  # marbles
                marbles = globalPropPool.getProp('marbles')
                marbles2 = MovieUtil.copyProp(marbles)
                trapPropList.append([marbles, marbles2])
            elif (level == 3):  # quicksand
                trapPropList.append([globalPropPool.getProp('quicksand')])
            elif (level == 4):  # trapdoor
                trapPropList.append([globalPropPool.getProp('trapdoor')])
            elif (level == 5):  # tnt
                tnt = globalPropPool.getProp('tnt')
                tnt2 = MovieUtil.copyProp(tnt)
                trapPropList.append([tnt, tnt2])
            elif (level == 6):  # tnt #UBER
                tnt = globalPropPool.getProp('traintrack')  #('trapdoor')
                tnt2 = MovieUtil.copyProp(tnt)
                trapPropList.append([tnt, tnt2])
            else:
                notify.warning('__doTraps() - Incorrect trap level: \
                %d' % level)

        if (len(trapList) == 1) and not hasUberTrapConflict:
            # Trap is successfully placed
            ival = __doTrapLevel(trapList[0], trapPropList[0])
            if (ival):
                mtrack.append(ival)
        else:
            assert (len(trapList) > 1 or hasUberTrapConflict)
            subMtrack = Parallel()
            for i in range(len(trapList)):
                trap = trapList[i]
                trapProps = trapPropList[i]
                ival = __doTrapLevel(trap, trapProps, explode=1)
                if (ival):
                    subMtrack.append(ival)
            mtrack.append(subMtrack)

    trapTrack = Sequence(npcArrivals, mtrack, npcDepartures)

    camDuration = mtrack.getDuration()
    enterDuration = npcArrivals.getDuration()
    exitDuration = npcDepartures.getDuration()
    camTrack = MovieCamera.chooseTrapShot(traps, camDuration, enterDuration,
                                          exitDuration)
    return (trapTrack, camTrack)