diff light8/sub_analyzer.py @ 0:45b12307c695

Initial revision
author drewp
date Wed, 03 Jul 2002 09:37:57 +0000
parents
children c74fe7efabc1
line wrap: on
line diff
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/light8/sub_analyzer.py	Wed Jul 03 09:37:57 2002 +0000
@@ -0,0 +1,126 @@
+#!/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)