|
1 | 1 | from .processors import * |
2 | 2 | from .readers import * |
3 | | -from .utils import AttributeDict |
| 3 | +from .utils import AttributeDict, RangeMap |
4 | 4 |
|
5 | 5 | ALL_FILES = [ |
6 | 6 | 'replay.initData', |
|
50 | 50 | apply=False |
51 | 51 | ) |
52 | 52 |
|
53 | | -class ReaderMap(dict): |
54 | | - def __init__(self): |
55 | | - self.set1 = { |
56 | | - 'replay.initData': InitDataReader(), |
57 | | - 'replay.details': DetailsReader(), |
58 | | - 'replay.attributes.events': AttributeEventsReader(), |
59 | | - 'replay.message.events': MessageEventsReader(), |
60 | | - 'replay.game.events': GameEventsReader(), |
61 | | - } |
62 | 53 |
|
63 | | - self.set2 = { |
64 | | - 'replay.initData': InitDataReader(), |
65 | | - 'replay.details': DetailsReader(), |
66 | | - 'replay.attributes.events': AttributeEventsReader(), |
67 | | - 'replay.message.events': MessageEventsReader(), |
68 | | - 'replay.game.events': GameEventsReader_16561(), |
69 | | - } |
70 | | - |
71 | | - self.set3 = { |
72 | | - 'replay.initData': InitDataReader(), |
73 | | - 'replay.details': DetailsReader(), |
74 | | - 'replay.attributes.events': AttributeEventsReader_17326(), |
75 | | - 'replay.message.events': MessageEventsReader(), |
76 | | - 'replay.game.events': GameEventsReader_16561(), |
77 | | - } |
78 | | - |
79 | | - self.set4 = { |
80 | | - 'replay.initData': InitDataReader(), |
81 | | - 'replay.details': DetailsReader(), |
82 | | - 'replay.attributes.events': AttributeEventsReader_17326(), |
83 | | - 'replay.message.events': MessageEventsReader(), |
84 | | - 'replay.game.events': GameEventsReader_18574(), |
85 | | - } |
86 | | - |
87 | | - self.set5 = { |
88 | | - 'replay.initData': InitDataReader(), |
89 | | - 'replay.details': DetailsReader(), |
90 | | - 'replay.attributes.events': AttributeEventsReader_17326(), |
91 | | - 'replay.message.events': MessageEventsReader(), |
92 | | - 'replay.game.events': GameEventsReader_19595(), |
93 | | - } |
94 | | - |
95 | | - # 1.0.0-3 |
96 | | - for key in (16117,16195,16223,16291): |
97 | | - self[key] = self.set1 |
98 | | - |
99 | | - # 1.1.0-3 |
100 | | - for key in (16561,16605,16755,16939): |
101 | | - self[key] = self.set2 |
102 | | - |
103 | | - # 1.2.0-1.3.2 |
104 | | - for key in (17326,17682,17811,18092,18221,18317): |
105 | | - self[key] = self.set3 |
106 | | - |
107 | | - # 1.3.3-1.3.6 |
108 | | - for key in (18574,18701,19132,19269): |
109 | | - self[key] = self.set4 |
110 | | - |
111 | | - # 1.4beta, 1.4.0 |
112 | | - for key in (19595,19679): |
113 | | - self[key] = self.set5 |
114 | | - |
115 | | - def __getitem__(self,key): |
116 | | - try: |
117 | | - return super(ReaderMap,self).__getitem__(key) |
118 | | - # Keep using the latest dict for all newer replay versions |
119 | | - except KeyError: |
120 | | - return self.set5 |
121 | | - |
122 | | -readers = ReaderMap() |
| 54 | +readers = RangeMap() |
| 55 | +readers.add_range(0, 16561, { |
| 56 | + 'replay.initData': InitDataReader(), |
| 57 | + 'replay.details': DetailsReader(), |
| 58 | + 'replay.attributes.events': AttributeEventsReader(), |
| 59 | + 'replay.message.events': MessageEventsReader(), |
| 60 | + 'replay.game.events': GameEventsReader(), |
| 61 | + }) |
| 62 | + |
| 63 | +readers.add_range(16561, 17326, { |
| 64 | + 'replay.initData': InitDataReader(), |
| 65 | + 'replay.details': DetailsReader(), |
| 66 | + 'replay.attributes.events': AttributeEventsReader(), |
| 67 | + 'replay.message.events': MessageEventsReader(), |
| 68 | + 'replay.game.events': GameEventsReader_16561(), |
| 69 | + }) |
| 70 | + |
| 71 | +readers.add_range(17326, 18574, { |
| 72 | + 'replay.initData': InitDataReader(), |
| 73 | + 'replay.details': DetailsReader(), |
| 74 | + 'replay.attributes.events': AttributeEventsReader_17326(), |
| 75 | + 'replay.message.events': MessageEventsReader(), |
| 76 | + 'replay.game.events': GameEventsReader_16561(), |
| 77 | + }) |
| 78 | + |
| 79 | +readers.add_range(18574, 19595, { |
| 80 | + 'replay.initData': InitDataReader(), |
| 81 | + 'replay.details': DetailsReader(), |
| 82 | + 'replay.attributes.events': AttributeEventsReader_17326(), |
| 83 | + 'replay.message.events': MessageEventsReader(), |
| 84 | + 'replay.game.events': GameEventsReader_18574(), |
| 85 | + }) |
| 86 | + |
| 87 | +readers.add_range(19595, None, { |
| 88 | + 'replay.initData': InitDataReader(), |
| 89 | + 'replay.details': DetailsReader(), |
| 90 | + 'replay.attributes.events': AttributeEventsReader_17326(), |
| 91 | + 'replay.message.events': MessageEventsReader(), |
| 92 | + 'replay.game.events': GameEventsReader_19595(), |
| 93 | + }) |
0 commit comments