Mercurial > touhou
annotate pytouhou/game/bullet.py @ 122:174324a4da51
Add support for launch animations! (Warning: slow :()
author | Thibaut Girka <thib@sitedethib.com> |
---|---|
date | Sat, 10 Sep 2011 01:26:30 +0200 |
parents | 4300a832f033 |
children | d1c82d43bbf3 |
rev | line source |
---|---|
84 | 1 # -*- encoding: utf-8 -*- |
2 ## | |
3 ## Copyright (C) 2011 Thibaut Girka <thib@sitedethib.com> | |
4 ## | |
5 ## This program is free software; you can redistribute it and/or modify | |
6 ## it under the terms of the GNU General Public License as published | |
7 ## by the Free Software Foundation; version 3 only. | |
8 ## | |
9 ## This program is distributed in the hope that it will be useful, | |
10 ## but WITHOUT ANY WARRANTY; without even the implied warranty of | |
11 ## MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the | |
12 ## GNU General Public License for more details. | |
13 ## | |
14 | |
15 from math import cos, sin, atan2, pi | |
16 | |
86
a87a3c080585
Handle a few attack flags
Thibaut Girka <thib@sitedethib.com>
parents:
85
diff
changeset
|
17 from pytouhou.utils.interpolator import Interpolator |
84 | 18 from pytouhou.vm.anmrunner import ANMRunner |
19 from pytouhou.game.sprite import Sprite | |
20 | |
21 | |
22 class Bullet(object): | |
122
174324a4da51
Add support for launch animations! (Warning: slow :()
Thibaut Girka <thib@sitedethib.com>
parents:
120
diff
changeset
|
23 def __init__(self, pos, type_idx, sprite_idx_offset, |
84 | 24 angle, speed, attributes, flags, player, game_state): |
25 self._game_state = game_state | |
26 self._sprite = None | |
27 self._anmrunner = None | |
28 self._removed = False | |
29 self._launched = False | |
122
174324a4da51
Add support for launch animations! (Warning: slow :()
Thibaut Girka <thib@sitedethib.com>
parents:
120
diff
changeset
|
30 self._bullet_type = game_state.bullet_types[type_idx] |
84 | 31 |
86
a87a3c080585
Handle a few attack flags
Thibaut Girka <thib@sitedethib.com>
parents:
85
diff
changeset
|
32 self.speed_interpolator = None |
a87a3c080585
Handle a few attack flags
Thibaut Girka <thib@sitedethib.com>
parents:
85
diff
changeset
|
33 self.frame = 0 |
a87a3c080585
Handle a few attack flags
Thibaut Girka <thib@sitedethib.com>
parents:
85
diff
changeset
|
34 self.grazed = False |
a87a3c080585
Handle a few attack flags
Thibaut Girka <thib@sitedethib.com>
parents:
85
diff
changeset
|
35 |
84 | 36 self.player = player |
37 | |
38 self.sprite_idx_offset = sprite_idx_offset | |
39 | |
40 self.flags = flags | |
41 self.attributes = list(attributes) | |
42 | |
43 self.x, self.y = pos | |
44 self.angle = angle | |
45 self.speed = speed | |
122
174324a4da51
Add support for launch animations! (Warning: slow :()
Thibaut Girka <thib@sitedethib.com>
parents:
120
diff
changeset
|
46 dx, dy = cos(angle) * speed, sin(angle) * speed |
174324a4da51
Add support for launch animations! (Warning: slow :()
Thibaut Girka <thib@sitedethib.com>
parents:
120
diff
changeset
|
47 self.delta = dx, dy |
84 | 48 |
122
174324a4da51
Add support for launch animations! (Warning: slow :()
Thibaut Girka <thib@sitedethib.com>
parents:
120
diff
changeset
|
49 #TODO |
174324a4da51
Add support for launch animations! (Warning: slow :()
Thibaut Girka <thib@sitedethib.com>
parents:
120
diff
changeset
|
50 if flags & 14: |
174324a4da51
Add support for launch animations! (Warning: slow :()
Thibaut Girka <thib@sitedethib.com>
parents:
120
diff
changeset
|
51 bt = self._bullet_type |
174324a4da51
Add support for launch animations! (Warning: slow :()
Thibaut Girka <thib@sitedethib.com>
parents:
120
diff
changeset
|
52 if flags & 2: |
174324a4da51
Add support for launch animations! (Warning: slow :()
Thibaut Girka <thib@sitedethib.com>
parents:
120
diff
changeset
|
53 index = bt.launch_anim2_index |
174324a4da51
Add support for launch animations! (Warning: slow :()
Thibaut Girka <thib@sitedethib.com>
parents:
120
diff
changeset
|
54 launch_mult = bt.launch_anim_penalties[0] |
174324a4da51
Add support for launch animations! (Warning: slow :()
Thibaut Girka <thib@sitedethib.com>
parents:
120
diff
changeset
|
55 elif flags & 4: |
174324a4da51
Add support for launch animations! (Warning: slow :()
Thibaut Girka <thib@sitedethib.com>
parents:
120
diff
changeset
|
56 index = bt.launch_anim4_index |
174324a4da51
Add support for launch animations! (Warning: slow :()
Thibaut Girka <thib@sitedethib.com>
parents:
120
diff
changeset
|
57 launch_mult = bt.launch_anim_penalties[1] |
174324a4da51
Add support for launch animations! (Warning: slow :()
Thibaut Girka <thib@sitedethib.com>
parents:
120
diff
changeset
|
58 else: |
174324a4da51
Add support for launch animations! (Warning: slow :()
Thibaut Girka <thib@sitedethib.com>
parents:
120
diff
changeset
|
59 index = bt.launch_anim8_index |
174324a4da51
Add support for launch animations! (Warning: slow :()
Thibaut Girka <thib@sitedethib.com>
parents:
120
diff
changeset
|
60 launch_mult = bt.launch_anim_penalties[2] |
174324a4da51
Add support for launch animations! (Warning: slow :()
Thibaut Girka <thib@sitedethib.com>
parents:
120
diff
changeset
|
61 self.launch_delta = dx * launch_mult, dy * launch_mult |
174324a4da51
Add support for launch animations! (Warning: slow :()
Thibaut Girka <thib@sitedethib.com>
parents:
120
diff
changeset
|
62 self._sprite = Sprite() |
174324a4da51
Add support for launch animations! (Warning: slow :()
Thibaut Girka <thib@sitedethib.com>
parents:
120
diff
changeset
|
63 self._anmrunner = ANMRunner(bt.anm_wrapper, |
174324a4da51
Add support for launch animations! (Warning: slow :()
Thibaut Girka <thib@sitedethib.com>
parents:
120
diff
changeset
|
64 index, self._sprite, |
174324a4da51
Add support for launch animations! (Warning: slow :()
Thibaut Girka <thib@sitedethib.com>
parents:
120
diff
changeset
|
65 bt.launch_anim_offsets[sprite_idx_offset]) |
174324a4da51
Add support for launch animations! (Warning: slow :()
Thibaut Girka <thib@sitedethib.com>
parents:
120
diff
changeset
|
66 self._anmrunner.run_frame() |
174324a4da51
Add support for launch animations! (Warning: slow :()
Thibaut Girka <thib@sitedethib.com>
parents:
120
diff
changeset
|
67 else: |
174324a4da51
Add support for launch animations! (Warning: slow :()
Thibaut Girka <thib@sitedethib.com>
parents:
120
diff
changeset
|
68 self.launch() |
88
2cc60137d368
Ugly implementation of three new attack flags.
Emmanuel Gil Peyrot <linkmauve@linkmauve.fr>
parents:
86
diff
changeset
|
69 |
122
174324a4da51
Add support for launch animations! (Warning: slow :()
Thibaut Girka <thib@sitedethib.com>
parents:
120
diff
changeset
|
70 self._sprite.angle = angle |
86
a87a3c080585
Handle a few attack flags
Thibaut Girka <thib@sitedethib.com>
parents:
85
diff
changeset
|
71 |
84 | 72 |
73 def is_visible(self, screen_width, screen_height): | |
122
174324a4da51
Add support for launch animations! (Warning: slow :()
Thibaut Girka <thib@sitedethib.com>
parents:
120
diff
changeset
|
74 tx, ty, tw, th = self._sprite.texcoords |
174324a4da51
Add support for launch animations! (Warning: slow :()
Thibaut Girka <thib@sitedethib.com>
parents:
120
diff
changeset
|
75 if self._sprite.corner_relative_placement: |
174324a4da51
Add support for launch animations! (Warning: slow :()
Thibaut Girka <thib@sitedethib.com>
parents:
120
diff
changeset
|
76 raise Exception #TODO |
84 | 77 |
78 max_x = tw / 2. | |
79 max_y = th / 2. | |
80 | |
122
174324a4da51
Add support for launch animations! (Warning: slow :()
Thibaut Girka <thib@sitedethib.com>
parents:
120
diff
changeset
|
81 if any((max_x < self.x - screen_width, |
84 | 82 max_x < -self.x, |
122
174324a4da51
Add support for launch animations! (Warning: slow :()
Thibaut Girka <thib@sitedethib.com>
parents:
120
diff
changeset
|
83 max_y < self.y - screen_height, |
84 | 84 max_y < -self.y)): |
85 return False | |
86 return True | |
87 | |
88 | |
122
174324a4da51
Add support for launch animations! (Warning: slow :()
Thibaut Girka <thib@sitedethib.com>
parents:
120
diff
changeset
|
89 def set_anim(self, sprite_idx_offset=None): |
107
5d9052b9a4e8
(almost) implement Cirno's freezing spellcard
Thibaut Girka <thib@sitedethib.com>
parents:
106
diff
changeset
|
90 if sprite_idx_offset is not None: |
5d9052b9a4e8
(almost) implement Cirno's freezing spellcard
Thibaut Girka <thib@sitedethib.com>
parents:
106
diff
changeset
|
91 self.sprite_idx_offset = sprite_idx_offset |
5d9052b9a4e8
(almost) implement Cirno's freezing spellcard
Thibaut Girka <thib@sitedethib.com>
parents:
106
diff
changeset
|
92 |
122
174324a4da51
Add support for launch animations! (Warning: slow :()
Thibaut Girka <thib@sitedethib.com>
parents:
120
diff
changeset
|
93 bt = self._bullet_type |
107
5d9052b9a4e8
(almost) implement Cirno's freezing spellcard
Thibaut Girka <thib@sitedethib.com>
parents:
106
diff
changeset
|
94 self._sprite = Sprite() |
122
174324a4da51
Add support for launch animations! (Warning: slow :()
Thibaut Girka <thib@sitedethib.com>
parents:
120
diff
changeset
|
95 self._sprite.angle = self.angle |
174324a4da51
Add support for launch animations! (Warning: slow :()
Thibaut Girka <thib@sitedethib.com>
parents:
120
diff
changeset
|
96 self._anmrunner = ANMRunner(bt.anm_wrapper, bt.anim_index, |
107
5d9052b9a4e8
(almost) implement Cirno's freezing spellcard
Thibaut Girka <thib@sitedethib.com>
parents:
106
diff
changeset
|
97 self._sprite, self.sprite_idx_offset) |
122
174324a4da51
Add support for launch animations! (Warning: slow :()
Thibaut Girka <thib@sitedethib.com>
parents:
120
diff
changeset
|
98 self._anmrunner.run_frame() |
174324a4da51
Add support for launch animations! (Warning: slow :()
Thibaut Girka <thib@sitedethib.com>
parents:
120
diff
changeset
|
99 |
174324a4da51
Add support for launch animations! (Warning: slow :()
Thibaut Girka <thib@sitedethib.com>
parents:
120
diff
changeset
|
100 |
174324a4da51
Add support for launch animations! (Warning: slow :()
Thibaut Girka <thib@sitedethib.com>
parents:
120
diff
changeset
|
101 def launch(self): |
174324a4da51
Add support for launch animations! (Warning: slow :()
Thibaut Girka <thib@sitedethib.com>
parents:
120
diff
changeset
|
102 self._launched = True |
174324a4da51
Add support for launch animations! (Warning: slow :()
Thibaut Girka <thib@sitedethib.com>
parents:
120
diff
changeset
|
103 self.update = self.update_full |
174324a4da51
Add support for launch animations! (Warning: slow :()
Thibaut Girka <thib@sitedethib.com>
parents:
120
diff
changeset
|
104 self.set_anim() |
174324a4da51
Add support for launch animations! (Warning: slow :()
Thibaut Girka <thib@sitedethib.com>
parents:
120
diff
changeset
|
105 if self.flags & 1: |
174324a4da51
Add support for launch animations! (Warning: slow :()
Thibaut Girka <thib@sitedethib.com>
parents:
120
diff
changeset
|
106 self.speed_interpolator = Interpolator((self.speed + 5.,), 0, |
174324a4da51
Add support for launch animations! (Warning: slow :()
Thibaut Girka <thib@sitedethib.com>
parents:
120
diff
changeset
|
107 (self.speed,), 16) |
107
5d9052b9a4e8
(almost) implement Cirno's freezing spellcard
Thibaut Girka <thib@sitedethib.com>
parents:
106
diff
changeset
|
108 |
5d9052b9a4e8
(almost) implement Cirno's freezing spellcard
Thibaut Girka <thib@sitedethib.com>
parents:
106
diff
changeset
|
109 |
84 | 110 def update(self): |
122
174324a4da51
Add support for launch animations! (Warning: slow :()
Thibaut Girka <thib@sitedethib.com>
parents:
120
diff
changeset
|
111 dx, dy = self.launch_delta |
174324a4da51
Add support for launch animations! (Warning: slow :()
Thibaut Girka <thib@sitedethib.com>
parents:
120
diff
changeset
|
112 self.x += dx |
174324a4da51
Add support for launch animations! (Warning: slow :()
Thibaut Girka <thib@sitedethib.com>
parents:
120
diff
changeset
|
113 self.y += dy |
174324a4da51
Add support for launch animations! (Warning: slow :()
Thibaut Girka <thib@sitedethib.com>
parents:
120
diff
changeset
|
114 |
174324a4da51
Add support for launch animations! (Warning: slow :()
Thibaut Girka <thib@sitedethib.com>
parents:
120
diff
changeset
|
115 self.frame += 1 |
174324a4da51
Add support for launch animations! (Warning: slow :()
Thibaut Girka <thib@sitedethib.com>
parents:
120
diff
changeset
|
116 |
174324a4da51
Add support for launch animations! (Warning: slow :()
Thibaut Girka <thib@sitedethib.com>
parents:
120
diff
changeset
|
117 if not self._anmrunner.run_frame(): |
174324a4da51
Add support for launch animations! (Warning: slow :()
Thibaut Girka <thib@sitedethib.com>
parents:
120
diff
changeset
|
118 self.launch() |
84 | 119 |
122
174324a4da51
Add support for launch animations! (Warning: slow :()
Thibaut Girka <thib@sitedethib.com>
parents:
120
diff
changeset
|
120 |
174324a4da51
Add support for launch animations! (Warning: slow :()
Thibaut Girka <thib@sitedethib.com>
parents:
120
diff
changeset
|
121 def update_simple(self): |
174324a4da51
Add support for launch animations! (Warning: slow :()
Thibaut Girka <thib@sitedethib.com>
parents:
120
diff
changeset
|
122 dx, dy = self.delta |
174324a4da51
Add support for launch animations! (Warning: slow :()
Thibaut Girka <thib@sitedethib.com>
parents:
120
diff
changeset
|
123 self.x += dx |
174324a4da51
Add support for launch animations! (Warning: slow :()
Thibaut Girka <thib@sitedethib.com>
parents:
120
diff
changeset
|
124 self.y += dy |
174324a4da51
Add support for launch animations! (Warning: slow :()
Thibaut Girka <thib@sitedethib.com>
parents:
120
diff
changeset
|
125 |
174324a4da51
Add support for launch animations! (Warning: slow :()
Thibaut Girka <thib@sitedethib.com>
parents:
120
diff
changeset
|
126 |
174324a4da51
Add support for launch animations! (Warning: slow :()
Thibaut Girka <thib@sitedethib.com>
parents:
120
diff
changeset
|
127 def update_full(self): |
120
4300a832f033
Small refactoring and massive performance improvement
Thibaut Girka <thib@sitedethib.com>
parents:
114
diff
changeset
|
128 sprite = self._sprite |
4300a832f033
Small refactoring and massive performance improvement
Thibaut Girka <thib@sitedethib.com>
parents:
114
diff
changeset
|
129 |
4300a832f033
Small refactoring and massive performance improvement
Thibaut Girka <thib@sitedethib.com>
parents:
114
diff
changeset
|
130 if self._anmrunner is not None and not self._anmrunner.run_frame(): |
4300a832f033
Small refactoring and massive performance improvement
Thibaut Girka <thib@sitedethib.com>
parents:
114
diff
changeset
|
131 self._anmrunner = None |
84 | 132 |
133 #TODO: flags | |
134 x, y = self.x, self.y | |
122
174324a4da51
Add support for launch animations! (Warning: slow :()
Thibaut Girka <thib@sitedethib.com>
parents:
120
diff
changeset
|
135 dx, dy = self.delta |
84 | 136 |
86
a87a3c080585
Handle a few attack flags
Thibaut Girka <thib@sitedethib.com>
parents:
85
diff
changeset
|
137 if self.flags & 16: |
89
1513f5626656
Fix attack flags implementation
Thibaut Girka <thib@sitedethib.com>
parents:
88
diff
changeset
|
138 frame, count = self.attributes[0:2] |
86
a87a3c080585
Handle a few attack flags
Thibaut Girka <thib@sitedethib.com>
parents:
85
diff
changeset
|
139 length, angle = self.attributes[4:6] |
89
1513f5626656
Fix attack flags implementation
Thibaut Girka <thib@sitedethib.com>
parents:
88
diff
changeset
|
140 angle = self.angle if angle < -900.0 else angle #TODO: is that right? |
122
174324a4da51
Add support for launch animations! (Warning: slow :()
Thibaut Girka <thib@sitedethib.com>
parents:
120
diff
changeset
|
141 dx, dy = dx + cos(angle) * length, dy + sin(angle) * length |
174324a4da51
Add support for launch animations! (Warning: slow :()
Thibaut Girka <thib@sitedethib.com>
parents:
120
diff
changeset
|
142 self.delta = dx, dy |
89
1513f5626656
Fix attack flags implementation
Thibaut Girka <thib@sitedethib.com>
parents:
88
diff
changeset
|
143 if self.frame == frame: #TODO: include last frame, or not? |
1513f5626656
Fix attack flags implementation
Thibaut Girka <thib@sitedethib.com>
parents:
88
diff
changeset
|
144 if count > 0: |
1513f5626656
Fix attack flags implementation
Thibaut Girka <thib@sitedethib.com>
parents:
88
diff
changeset
|
145 self.attributes[1] -= 1 |
1513f5626656
Fix attack flags implementation
Thibaut Girka <thib@sitedethib.com>
parents:
88
diff
changeset
|
146 self.frame = 0 |
1513f5626656
Fix attack flags implementation
Thibaut Girka <thib@sitedethib.com>
parents:
88
diff
changeset
|
147 else: |
1513f5626656
Fix attack flags implementation
Thibaut Girka <thib@sitedethib.com>
parents:
88
diff
changeset
|
148 self.flags ^= 16 |
86
a87a3c080585
Handle a few attack flags
Thibaut Girka <thib@sitedethib.com>
parents:
85
diff
changeset
|
149 elif self.flags & 32: |
a87a3c080585
Handle a few attack flags
Thibaut Girka <thib@sitedethib.com>
parents:
85
diff
changeset
|
150 #TODO: check |
89
1513f5626656
Fix attack flags implementation
Thibaut Girka <thib@sitedethib.com>
parents:
88
diff
changeset
|
151 frame, count = self.attributes[0:2] |
86
a87a3c080585
Handle a few attack flags
Thibaut Girka <thib@sitedethib.com>
parents:
85
diff
changeset
|
152 acceleration, angular_speed = self.attributes[4:6] |
89
1513f5626656
Fix attack flags implementation
Thibaut Girka <thib@sitedethib.com>
parents:
88
diff
changeset
|
153 self.speed += acceleration |
1513f5626656
Fix attack flags implementation
Thibaut Girka <thib@sitedethib.com>
parents:
88
diff
changeset
|
154 self.angle += angular_speed |
122
174324a4da51
Add support for launch animations! (Warning: slow :()
Thibaut Girka <thib@sitedethib.com>
parents:
120
diff
changeset
|
155 dx, dy = cos(self.angle) * self.speed, sin(self.angle) * self.speed |
174324a4da51
Add support for launch animations! (Warning: slow :()
Thibaut Girka <thib@sitedethib.com>
parents:
120
diff
changeset
|
156 self.delta = dx, dy |
174324a4da51
Add support for launch animations! (Warning: slow :()
Thibaut Girka <thib@sitedethib.com>
parents:
120
diff
changeset
|
157 sprite.angle = self.angle |
174324a4da51
Add support for launch animations! (Warning: slow :()
Thibaut Girka <thib@sitedethib.com>
parents:
120
diff
changeset
|
158 if sprite.automatic_orientation: |
174324a4da51
Add support for launch animations! (Warning: slow :()
Thibaut Girka <thib@sitedethib.com>
parents:
120
diff
changeset
|
159 sprite._changed = True |
174324a4da51
Add support for launch animations! (Warning: slow :()
Thibaut Girka <thib@sitedethib.com>
parents:
120
diff
changeset
|
160 if self.frame % frame == 0: |
89
1513f5626656
Fix attack flags implementation
Thibaut Girka <thib@sitedethib.com>
parents:
88
diff
changeset
|
161 if count > 0: |
1513f5626656
Fix attack flags implementation
Thibaut Girka <thib@sitedethib.com>
parents:
88
diff
changeset
|
162 self.attributes[1] -= 1 |
1513f5626656
Fix attack flags implementation
Thibaut Girka <thib@sitedethib.com>
parents:
88
diff
changeset
|
163 else: |
1513f5626656
Fix attack flags implementation
Thibaut Girka <thib@sitedethib.com>
parents:
88
diff
changeset
|
164 self.flags ^= 32 |
88
2cc60137d368
Ugly implementation of three new attack flags.
Emmanuel Gil Peyrot <linkmauve@linkmauve.fr>
parents:
86
diff
changeset
|
165 elif self.flags & 448: |
2cc60137d368
Ugly implementation of three new attack flags.
Emmanuel Gil Peyrot <linkmauve@linkmauve.fr>
parents:
86
diff
changeset
|
166 #TODO: check |
2cc60137d368
Ugly implementation of three new attack flags.
Emmanuel Gil Peyrot <linkmauve@linkmauve.fr>
parents:
86
diff
changeset
|
167 frame, count = self.attributes[0:2] |
89
1513f5626656
Fix attack flags implementation
Thibaut Girka <thib@sitedethib.com>
parents:
88
diff
changeset
|
168 angle, speed = self.attributes[4:6] |
122
174324a4da51
Add support for launch animations! (Warning: slow :()
Thibaut Girka <thib@sitedethib.com>
parents:
120
diff
changeset
|
169 if self.frame % frame == 0: |
89
1513f5626656
Fix attack flags implementation
Thibaut Girka <thib@sitedethib.com>
parents:
88
diff
changeset
|
170 count = count - 1 |
88
2cc60137d368
Ugly implementation of three new attack flags.
Emmanuel Gil Peyrot <linkmauve@linkmauve.fr>
parents:
86
diff
changeset
|
171 |
89
1513f5626656
Fix attack flags implementation
Thibaut Girka <thib@sitedethib.com>
parents:
88
diff
changeset
|
172 if self.flags & 64: |
122
174324a4da51
Add support for launch animations! (Warning: slow :()
Thibaut Girka <thib@sitedethib.com>
parents:
120
diff
changeset
|
173 self.angle += angle |
89
1513f5626656
Fix attack flags implementation
Thibaut Girka <thib@sitedethib.com>
parents:
88
diff
changeset
|
174 elif self.flags & 128: |
122
174324a4da51
Add support for launch animations! (Warning: slow :()
Thibaut Girka <thib@sitedethib.com>
parents:
120
diff
changeset
|
175 self.angle = atan2(self.player.y - y, self.player.x - x) + angle |
89
1513f5626656
Fix attack flags implementation
Thibaut Girka <thib@sitedethib.com>
parents:
88
diff
changeset
|
176 elif self.flags & 256: |
1513f5626656
Fix attack flags implementation
Thibaut Girka <thib@sitedethib.com>
parents:
88
diff
changeset
|
177 self.angle = angle |
88
2cc60137d368
Ugly implementation of three new attack flags.
Emmanuel Gil Peyrot <linkmauve@linkmauve.fr>
parents:
86
diff
changeset
|
178 |
122
174324a4da51
Add support for launch animations! (Warning: slow :()
Thibaut Girka <thib@sitedethib.com>
parents:
120
diff
changeset
|
179 dx, dy = cos(self.angle) * speed, sin(self.angle) * speed |
174324a4da51
Add support for launch animations! (Warning: slow :()
Thibaut Girka <thib@sitedethib.com>
parents:
120
diff
changeset
|
180 self.delta = dx, dy |
174324a4da51
Add support for launch animations! (Warning: slow :()
Thibaut Girka <thib@sitedethib.com>
parents:
120
diff
changeset
|
181 sprite.angle = self.angle |
174324a4da51
Add support for launch animations! (Warning: slow :()
Thibaut Girka <thib@sitedethib.com>
parents:
120
diff
changeset
|
182 if sprite.automatic_orientation: |
174324a4da51
Add support for launch animations! (Warning: slow :()
Thibaut Girka <thib@sitedethib.com>
parents:
120
diff
changeset
|
183 sprite._changed = True |
174324a4da51
Add support for launch animations! (Warning: slow :()
Thibaut Girka <thib@sitedethib.com>
parents:
120
diff
changeset
|
184 |
174324a4da51
Add support for launch animations! (Warning: slow :()
Thibaut Girka <thib@sitedethib.com>
parents:
120
diff
changeset
|
185 if count > 0: |
174324a4da51
Add support for launch animations! (Warning: slow :()
Thibaut Girka <thib@sitedethib.com>
parents:
120
diff
changeset
|
186 self.speed_interpolator = Interpolator((speed,), self.frame, |
174324a4da51
Add support for launch animations! (Warning: slow :()
Thibaut Girka <thib@sitedethib.com>
parents:
120
diff
changeset
|
187 (0.,), self.frame + frame - 1) |
89
1513f5626656
Fix attack flags implementation
Thibaut Girka <thib@sitedethib.com>
parents:
88
diff
changeset
|
188 else: |
1513f5626656
Fix attack flags implementation
Thibaut Girka <thib@sitedethib.com>
parents:
88
diff
changeset
|
189 self.flags &= ~448 |
1513f5626656
Fix attack flags implementation
Thibaut Girka <thib@sitedethib.com>
parents:
88
diff
changeset
|
190 self.speed = speed |
88
2cc60137d368
Ugly implementation of three new attack flags.
Emmanuel Gil Peyrot <linkmauve@linkmauve.fr>
parents:
86
diff
changeset
|
191 |
89
1513f5626656
Fix attack flags implementation
Thibaut Girka <thib@sitedethib.com>
parents:
88
diff
changeset
|
192 self.attributes[1] = count |
86
a87a3c080585
Handle a few attack flags
Thibaut Girka <thib@sitedethib.com>
parents:
85
diff
changeset
|
193 #TODO: other flags |
122
174324a4da51
Add support for launch animations! (Warning: slow :()
Thibaut Girka <thib@sitedethib.com>
parents:
120
diff
changeset
|
194 elif not self.speed_interpolator and self._anmrunner is None: |
174324a4da51
Add support for launch animations! (Warning: slow :()
Thibaut Girka <thib@sitedethib.com>
parents:
120
diff
changeset
|
195 self.update = self.update_simple |
86
a87a3c080585
Handle a few attack flags
Thibaut Girka <thib@sitedethib.com>
parents:
85
diff
changeset
|
196 |
a87a3c080585
Handle a few attack flags
Thibaut Girka <thib@sitedethib.com>
parents:
85
diff
changeset
|
197 if self.speed_interpolator: |
a87a3c080585
Handle a few attack flags
Thibaut Girka <thib@sitedethib.com>
parents:
85
diff
changeset
|
198 self.speed_interpolator.update(self.frame) |
a87a3c080585
Handle a few attack flags
Thibaut Girka <thib@sitedethib.com>
parents:
85
diff
changeset
|
199 self.speed, = self.speed_interpolator.values |
a87a3c080585
Handle a few attack flags
Thibaut Girka <thib@sitedethib.com>
parents:
85
diff
changeset
|
200 |
84 | 201 self.x, self.y = x + dx, y + dy |
202 | |
86
a87a3c080585
Handle a few attack flags
Thibaut Girka <thib@sitedethib.com>
parents:
85
diff
changeset
|
203 self.frame += 1 |
a87a3c080585
Handle a few attack flags
Thibaut Girka <thib@sitedethib.com>
parents:
85
diff
changeset
|
204 |