annotate pytouhou/resource/anmwrapper.py @ 374:6a63fd3deb76

Use an iterator to get the keystates from a replay.
author Emmanuel Gil Peyrot <linkmauve@linkmauve.fr>
date Sun, 05 Aug 2012 18:19:42 +0200
parents 2100276c289d
children 40d5f3083ebc
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
285
2100276c289d Document some AnmWrapper related functions.
Thibaut Girka <thib@sitedethib.com>
parents: 282
diff changeset
1 # -*- encoding: utf-8 -*-
2100276c289d Document some AnmWrapper related functions.
Thibaut Girka <thib@sitedethib.com>
parents: 282
diff changeset
2 ##
2100276c289d Document some AnmWrapper related functions.
Thibaut Girka <thib@sitedethib.com>
parents: 282
diff changeset
3 ## Copyright (C) 2012 Thibaut Girka <thib@sitedethib.com>
2100276c289d Document some AnmWrapper related functions.
Thibaut Girka <thib@sitedethib.com>
parents: 282
diff changeset
4 ##
2100276c289d Document some AnmWrapper related functions.
Thibaut Girka <thib@sitedethib.com>
parents: 282
diff changeset
5 ## This program is free software; you can redistribute it and/or modify
2100276c289d Document some AnmWrapper related functions.
Thibaut Girka <thib@sitedethib.com>
parents: 282
diff changeset
6 ## it under the terms of the GNU General Public License as published
2100276c289d Document some AnmWrapper related functions.
Thibaut Girka <thib@sitedethib.com>
parents: 282
diff changeset
7 ## by the Free Software Foundation; version 3 only.
2100276c289d Document some AnmWrapper related functions.
Thibaut Girka <thib@sitedethib.com>
parents: 282
diff changeset
8 ##
2100276c289d Document some AnmWrapper related functions.
Thibaut Girka <thib@sitedethib.com>
parents: 282
diff changeset
9 ## This program is distributed in the hope that it will be useful,
2100276c289d Document some AnmWrapper related functions.
Thibaut Girka <thib@sitedethib.com>
parents: 282
diff changeset
10 ## but WITHOUT ANY WARRANTY; without even the implied warranty of
2100276c289d Document some AnmWrapper related functions.
Thibaut Girka <thib@sitedethib.com>
parents: 282
diff changeset
11 ## MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
2100276c289d Document some AnmWrapper related functions.
Thibaut Girka <thib@sitedethib.com>
parents: 282
diff changeset
12 ## GNU General Public License for more details.
2100276c289d Document some AnmWrapper related functions.
Thibaut Girka <thib@sitedethib.com>
parents: 282
diff changeset
13 ##
2100276c289d Document some AnmWrapper related functions.
Thibaut Girka <thib@sitedethib.com>
parents: 282
diff changeset
14
2100276c289d Document some AnmWrapper related functions.
Thibaut Girka <thib@sitedethib.com>
parents: 282
diff changeset
15 from itertools import repeat
282
dbb1a86c0235 Rename Animations to ANM0 and prepare AnmWrapper for dialogs and interface.
Thibaut Girka <thib@sitedethib.com>
parents: 97
diff changeset
16
dbb1a86c0235 Rename Animations to ANM0 and prepare AnmWrapper for dialogs and interface.
Thibaut Girka <thib@sitedethib.com>
parents: 97
diff changeset
17
97
ac2e5e1c2c3c Refactor \o/
Thibaut Girka <thib@sitedethib.com>
parents:
diff changeset
18 class AnmWrapper(object):
285
2100276c289d Document some AnmWrapper related functions.
Thibaut Girka <thib@sitedethib.com>
parents: 282
diff changeset
19 def __init__(self, anm_files, offsets=None):
2100276c289d Document some AnmWrapper related functions.
Thibaut Girka <thib@sitedethib.com>
parents: 282
diff changeset
20 """Wrapper for scripts and sprites described in “anm_files”.
2100276c289d Document some AnmWrapper related functions.
Thibaut Girka <thib@sitedethib.com>
parents: 282
diff changeset
21
2100276c289d Document some AnmWrapper related functions.
Thibaut Girka <thib@sitedethib.com>
parents: 282
diff changeset
22 The optional “offsets” argument specifies a list of offsets to be added
2100276c289d Document some AnmWrapper related functions.
Thibaut Girka <thib@sitedethib.com>
parents: 282
diff changeset
23 to script and sprite numbers of each file described in “anm_files”.
2100276c289d Document some AnmWrapper related functions.
Thibaut Girka <thib@sitedethib.com>
parents: 282
diff changeset
24
2100276c289d Document some AnmWrapper related functions.
Thibaut Girka <thib@sitedethib.com>
parents: 282
diff changeset
25 That is, if anm_files[0] and anm_files[1] each have only one sprite,
2100276c289d Document some AnmWrapper related functions.
Thibaut Girka <thib@sitedethib.com>
parents: 282
diff changeset
26 numbered 0 in both cases, and offsets=(0, 1), the first file's sprite
2100276c289d Document some AnmWrapper related functions.
Thibaut Girka <thib@sitedethib.com>
parents: 282
diff changeset
27 will be numbered 0 and the second file's will be numbered 1.
2100276c289d Document some AnmWrapper related functions.
Thibaut Girka <thib@sitedethib.com>
parents: 282
diff changeset
28 """
282
dbb1a86c0235 Rename Animations to ANM0 and prepare AnmWrapper for dialogs and interface.
Thibaut Girka <thib@sitedethib.com>
parents: 97
diff changeset
29 self.scripts = {}
dbb1a86c0235 Rename Animations to ANM0 and prepare AnmWrapper for dialogs and interface.
Thibaut Girka <thib@sitedethib.com>
parents: 97
diff changeset
30 self.sprites = {}
dbb1a86c0235 Rename Animations to ANM0 and prepare AnmWrapper for dialogs and interface.
Thibaut Girka <thib@sitedethib.com>
parents: 97
diff changeset
31
285
2100276c289d Document some AnmWrapper related functions.
Thibaut Girka <thib@sitedethib.com>
parents: 282
diff changeset
32 if not offsets:
2100276c289d Document some AnmWrapper related functions.
Thibaut Girka <thib@sitedethib.com>
parents: 282
diff changeset
33 offsets = repeat(0) # “offsets” defaults to zeroes
2100276c289d Document some AnmWrapper related functions.
Thibaut Girka <thib@sitedethib.com>
parents: 282
diff changeset
34
2100276c289d Document some AnmWrapper related functions.
Thibaut Girka <thib@sitedethib.com>
parents: 282
diff changeset
35 for anm, offset in zip(anm_files, offsets):
282
dbb1a86c0235 Rename Animations to ANM0 and prepare AnmWrapper for dialogs and interface.
Thibaut Girka <thib@sitedethib.com>
parents: 97
diff changeset
36 for script_id, script in anm.scripts.iteritems():
dbb1a86c0235 Rename Animations to ANM0 and prepare AnmWrapper for dialogs and interface.
Thibaut Girka <thib@sitedethib.com>
parents: 97
diff changeset
37 self.scripts[script_id + offset] = (anm, script) #TODO: check
dbb1a86c0235 Rename Animations to ANM0 and prepare AnmWrapper for dialogs and interface.
Thibaut Girka <thib@sitedethib.com>
parents: 97
diff changeset
38 for sprite_id, sprite in anm.sprites.iteritems():
dbb1a86c0235 Rename Animations to ANM0 and prepare AnmWrapper for dialogs and interface.
Thibaut Girka <thib@sitedethib.com>
parents: 97
diff changeset
39 self.sprites[sprite_id + offset] = (anm, sprite)
97
ac2e5e1c2c3c Refactor \o/
Thibaut Girka <thib@sitedethib.com>
parents:
diff changeset
40
ac2e5e1c2c3c Refactor \o/
Thibaut Girka <thib@sitedethib.com>
parents:
diff changeset
41
ac2e5e1c2c3c Refactor \o/
Thibaut Girka <thib@sitedethib.com>
parents:
diff changeset
42 def get_sprite(self, sprite_index):
282
dbb1a86c0235 Rename Animations to ANM0 and prepare AnmWrapper for dialogs and interface.
Thibaut Girka <thib@sitedethib.com>
parents: 97
diff changeset
43 return self.sprites[sprite_index]
97
ac2e5e1c2c3c Refactor \o/
Thibaut Girka <thib@sitedethib.com>
parents:
diff changeset
44
ac2e5e1c2c3c Refactor \o/
Thibaut Girka <thib@sitedethib.com>
parents:
diff changeset
45
ac2e5e1c2c3c Refactor \o/
Thibaut Girka <thib@sitedethib.com>
parents:
diff changeset
46 def get_script(self, script_index):
282
dbb1a86c0235 Rename Animations to ANM0 and prepare AnmWrapper for dialogs and interface.
Thibaut Girka <thib@sitedethib.com>
parents: 97
diff changeset
47 return self.scripts[script_index]
dbb1a86c0235 Rename Animations to ANM0 and prepare AnmWrapper for dialogs and interface.
Thibaut Girka <thib@sitedethib.com>
parents: 97
diff changeset
48