Files @ ecce4c329b01
Branch filter:

Location: light9/light8/sub_analyzer.py - annotation

David McClosky
config: no more subgroup for songs
Ignore-this: c93fb7f2773f809f836aa4a47ac7f11f
a995fd1a8f03
45b12307c695
45b12307c695
45b12307c695
45b12307c695
45b12307c695
45b12307c695
45b12307c695
45b12307c695
45b12307c695
45b12307c695
45b12307c695
45b12307c695
45b12307c695
45b12307c695
45b12307c695
45b12307c695
45b12307c695
45b12307c695
45b12307c695
45b12307c695
45b12307c695
45b12307c695
45b12307c695
45b12307c695
45b12307c695
45b12307c695
45b12307c695
45b12307c695
45b12307c695
45b12307c695
45b12307c695
45b12307c695
45b12307c695
45b12307c695
45b12307c695
45b12307c695
45b12307c695
45b12307c695
45b12307c695
45b12307c695
45b12307c695
45b12307c695
45b12307c695
45b12307c695
45b12307c695
45b12307c695
45b12307c695
45b12307c695
45b12307c695
45b12307c695
45b12307c695
45b12307c695
45b12307c695
45b12307c695
45b12307c695
45b12307c695
45b12307c695
45b12307c695
45b12307c695
174b35926067
174b35926067
45b12307c695
45b12307c695
45b12307c695
45b12307c695
45b12307c695
45b12307c695
45b12307c695
45b12307c695
45b12307c695
45b12307c695
45b12307c695
45b12307c695
45b12307c695
45b12307c695
45b12307c695
45b12307c695
45b12307c695
45b12307c695
45b12307c695
45b12307c695
45b12307c695
45b12307c695
45b12307c695
174b35926067
174b35926067
174b35926067
45b12307c695
45b12307c695
45b12307c695
45b12307c695
45b12307c695
45b12307c695
45b12307c695
45b12307c695
45b12307c695
45b12307c695
45b12307c695
45b12307c695
45b12307c695
45b12307c695
45b12307c695
45b12307c695
45b12307c695
45b12307c695
45b12307c695
45b12307c695
45b12307c695
45b12307c695
45b12307c695
45b12307c695
45b12307c695
45b12307c695
45b12307c695
45b12307c695
45b12307c695
45b12307c695
45b12307c695
45b12307c695
45b12307c695
45b12307c695
45b12307c695
45b12307c695
45b12307c695
45b12307c695
#!/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)