annotate light8/sub_analyzer.py @ 73:c74fe7efabc1

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