0
|
1 from Subs import *
|
|
2 from Patch import *
|
|
3 from types import TupleType
|
|
4
|
|
5 from Config import patch, subs
|
|
6
|
|
7 import re
|
|
8 import Patch
|
|
9 Patch.reload_data(0)
|
|
10
|
73
|
11 def resolve_name(channelname):
|
|
12 "Insure that we're talking about the primary name of the light"
|
|
13 return Patch.get_channel_name(Patch.get_dmx_channel(channelname))
|
|
14
|
0
|
15 subusage = {}
|
|
16
|
|
17 # colors = 'ROGBVndcihs'
|
|
18 colors = 'ndcihs'
|
|
19
|
|
20 color_chart = {
|
|
21 '1-01' : 'ROYd', # broadway (morning - afternoon)
|
|
22 '1-02' : 'i', # int. mission
|
|
23 '1-03' : 'R', # phone booth
|
|
24 '1-04' : 'RBVh', # hotbox
|
|
25 '1-05' : 'RBd', # off broadway
|
|
26 '1-06' : 'ROYd', # ext. mission
|
|
27 '1-07' : 'ROYn', # gambler intro, off broadway
|
|
28 '1-08' : 'ROBIVc', # havana, clubs
|
|
29 '1-09' : 'ROYBIVc', # havana, outside, night
|
|
30 '1-10' : 'BVn', # ext. mission, night (4am)
|
|
31
|
|
32 '2-01' : 'RBIVh', # hotbox
|
|
33 '2-02' : 'RBn', # more can i wish you
|
|
34 '2-03' : 'GBs', # sewer (crap game)
|
|
35 '2-04' : 'Bn', # sue me
|
|
36 '2-05' : 'i', # int. mission
|
|
37 '2-06' : '', # marry
|
|
38 '2-07' : 'd', # broadway finale
|
|
39 }
|
|
40
|
|
41 scene_names = {
|
|
42 '1-01' : 'broadway (morning to afternoon)',
|
|
43 '1-02' : 'int. mission',
|
|
44 '1-03' : 'phone booth',
|
|
45 '1-04' : 'hotbox',
|
|
46 '1-05' : 'guys and dolls (off broadway)',
|
|
47 '1-06' : 'ext. mission, lunch time',
|
|
48 '1-07' : 'gambler intro, off broadway',
|
|
49 '1-08' : 'havana, clubs',
|
|
50 '1-09' : 'havana, outside, night',
|
|
51 '1-10' : 'ext. mission, night (4am)',
|
|
52
|
|
53 '2-01' : 'hotbox',
|
|
54 '2-02' : 'more can i wish you',
|
|
55 '2-03' : 'sewer (crap game)',
|
|
56 '2-04' : 'sue me',
|
|
57 '2-05' : 'rock the boat (int. mission)',
|
|
58 '2-06' : 'marry (trav)',
|
|
59 '2-07' : 'finale (broadway)',
|
|
60 }
|
|
61
|
|
62 sub_to_scene = {}
|
|
63
|
73
|
64 blacklist = 'god upfill1 upfill2 upfill3 upfill4 red1 red2 red3 red4 blue1 blue2 blue3 blue4 cycleft cycright sidefill1 sidefill2'.split()
|
0
|
65 blacklist.extend(['side l','side r'])
|
|
66
|
|
67 for subname, levdict in subs.items():
|
|
68 if type(subname) == TupleType:
|
|
69 subname = subname[0]
|
|
70 oldname = subname
|
|
71 subname = re.sub(r'\*(\d-\d+)-.*', r'\1', subname)
|
|
72 if oldname == subname: continue
|
|
73 sub_to_scene[oldname] = subname
|
|
74 subname = oldname # restore 'em. restore 'em good.
|
|
75 if not levdict:
|
|
76 print "Warning: %s is useless (empty sub)." % subname
|
|
77 else:
|
|
78 for ch, lev in levdict.items():
|
|
79 if lev:
|
|
80 ch = resolve_name(ch)
|
|
81 subusage.setdefault(ch, [])
|
|
82 subusage[ch].append((lev, subname))
|
|
83
|
|
84 def twist(l):
|
|
85 return [(b,a) for a,b in l]
|
|
86
|
|
87 def format_usage(ch, usage):
|
73
|
88 if ch in blacklist: return
|
0
|
89 usage=twist(usage)
|
|
90 usage.sort()
|
|
91 # usage.reverse()
|
|
92 usage=twist(usage)
|
|
93 print "======= %s ======= (%d uses)" % (ch, len(usage))
|
|
94 if 1:
|
|
95 use_str = ''
|
|
96 for lev, sub in usage:
|
|
97 if lev>30:
|
|
98 if sub_to_scene[sub] in color_chart:
|
|
99 subcolors = color_chart[sub_to_scene[sub]]
|
|
100 col_str = ''
|
|
101 for c in colors:
|
|
102 if c in subcolors: col_str += c
|
|
103 else: col_str += ' '
|
|
104 print col_str,
|
|
105 else:
|
|
106 print ' ' * len(colors),
|
|
107 scenename = scene_names.get(sub_to_scene[sub], '')
|
|
108 levbar="*"*(lev//5)
|
|
109 print ' %3d %-20s\t%-30s %s' % (lev, levbar,sub, scenename)
|
|
110 else:
|
|
111 use_str = '\n '.join(["%d\t%s" % (lev, sub) for lev, sub in usage])
|
|
112 print ' ' + use_str
|
|
113
|
|
114 subitems = subusage.items()
|
|
115 subitems.sort()
|
|
116 for ch, usage in subitems:
|
|
117 if 0:
|
|
118 usedict = {}
|
|
119 for lev, subname in usage: # remove duplicates
|
|
120 usedict[subname] = max(lev, usedict.get(subname, 0))
|
|
121
|
|
122 newusage = [(lev, sub) for sub, lev in usedict.items()]
|
|
123
|
|
124 format_usage(ch, newusage)
|
|
125 else:
|
|
126 format_usage(ch, usage)
|