Mercurial > code > home > repos > light9
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)