view light8/sub_analyzer.py @ 54:3011c1028eb7

Cue math error fixed. Cue math error fixed. Bad cues in ConfigDummy fixed, not fixed in Config yet. Cue fader back in rsn. Oh yeah.
author dmcc
date Mon, 08 Jul 2002 15:50:00 +0000
parents 45b12307c695
children c74fe7efabc1
line wrap: on
line source

#!/usr/bin/python
from Subs import *
from Patch import *
from types import TupleType

from Config import patch, subs

import re
import Patch
Patch.reload_data(0)

subusage = {}

# colors = 'ROGBVndcihs'
colors = 'ndcihs'

color_chart = {
    '1-01' : 'ROYd',   # broadway (morning - afternoon)
    '1-02' : 'i',      # int. mission
    '1-03' : 'R',      # phone booth
    '1-04' : 'RBVh',   # hotbox
    '1-05' : 'RBd',    # off broadway
    '1-06' : 'ROYd',   # ext. mission
    '1-07' : 'ROYn',   # gambler intro, off broadway
    '1-08' : 'ROBIVc',  # havana, clubs
    '1-09' : 'ROYBIVc', # havana, outside, night
    '1-10' : 'BVn',     # ext. mission, night (4am)

    '2-01' : 'RBIVh',  # hotbox
    '2-02' : 'RBn',    # more can i wish you
    '2-03' : 'GBs',    # sewer (crap game)
    '2-04' : 'Bn',     # sue me
    '2-05' : 'i',      # int. mission
    '2-06' : '',       # marry
    '2-07' : 'd',      # broadway finale
}

scene_names = {
    '1-01' : 'broadway (morning to afternoon)',
    '1-02' : 'int. mission',
    '1-03' : 'phone booth',
    '1-04' : 'hotbox',
    '1-05' : 'guys and dolls (off broadway)',
    '1-06' : 'ext. mission, lunch time',
    '1-07' : 'gambler intro, off broadway',
    '1-08' : 'havana, clubs',
    '1-09' : 'havana, outside, night',
    '1-10' : 'ext. mission, night (4am)',

    '2-01' : 'hotbox',
    '2-02' : 'more can i wish you',
    '2-03' : 'sewer (crap game)',
    '2-04' : 'sue me',
    '2-05' : 'rock the boat (int. mission)',
    '2-06' : 'marry (trav)',
    '2-07' : 'finale (broadway)',
}

sub_to_scene = {}

# blacklist is a list of *prefixes* to light names that won't be shown
blacklist = 'god upfill red blue cyc oran sidefill'.split()
blacklist.extend(['side l','side r'])

for subname, levdict in subs.items():
    if type(subname) == TupleType:
        subname = subname[0]
    oldname = subname
    subname = re.sub(r'\*(\d-\d+)-.*', r'\1', subname)
    if oldname == subname: continue
    sub_to_scene[oldname] = subname
    subname = oldname # restore 'em.  restore 'em good.
    if not levdict:
        print "Warning: %s is useless (empty sub)." % subname
    else:
        for ch, lev in levdict.items():
            if lev:
                ch = resolve_name(ch)
                subusage.setdefault(ch, [])
                subusage[ch].append((lev, subname))

def twist(l):
    return [(b,a) for a,b in l]

def format_usage(ch, usage):
    if max([ch.startswith(pre) for pre in blacklist]):
        return
    
    usage=twist(usage)
    usage.sort()
#    usage.reverse()
    usage=twist(usage)
    print "======= %s ======= (%d uses)" % (ch, len(usage))
    if 1:
        use_str = ''
        for lev, sub in usage:
            if lev>30:
                if sub_to_scene[sub] in color_chart:
                    subcolors = color_chart[sub_to_scene[sub]]
                    col_str = ''
                    for c in colors:
                        if c in subcolors: col_str += c
                        else: col_str +=  ' '
                    print col_str,
                else:
                    print ' ' * len(colors),
                scenename = scene_names.get(sub_to_scene[sub], '')
                levbar="*"*(lev//5)
                print '  %3d %-20s\t%-30s %s' % (lev, levbar,sub, scenename)
    else:
        use_str = '\n    '.join(["%d\t%s" % (lev, sub) for lev, sub in usage])
        print '    ' + use_str

subitems = subusage.items()
subitems.sort()
for ch, usage in subitems:
    if 0:
        usedict = {}
        for lev, subname in usage: # remove duplicates
            usedict[subname] = max(lev, usedict.get(subname, 0))

        newusage = [(lev, sub) for sub, lev in usedict.items()]

        format_usage(ch, newusage)
    else:
        format_usage(ch, usage)