Mercurial > touhou
comparison pytouhou/game/eclrunner.py @ 59:4fe37a620b22
Handle set_random_angle properly! At last!
author | Thibaut Girka <thib@sitedethib.com> |
---|---|
date | Wed, 24 Aug 2011 01:34:11 +0200 |
parents | 3da4de9decd0 |
children | 1f591adcea04 |
comparison
equal
deleted
inserted
replaced
58:3da4de9decd0 | 59:4fe37a620b22 |
---|---|
216 """Set the specified variable to a random float in [0, maxval) range. | 216 """Set the specified variable to a random float in [0, maxval) range. |
217 """ | 217 """ |
218 self._setval(variable_id, self._getval(maxval) * self._game_state.prng.rand_double()) | 218 self._setval(variable_id, self._getval(maxval) * self._game_state.prng.rand_double()) |
219 | 219 |
220 | 220 |
221 @instruction(9) | |
222 def set_random_float2(self, variable_id, minval, amp): | |
223 self._setval(variable_id, self._getval(minval) + self._getval(amp) * self._game_state.prng.rand_double()) | |
224 | |
225 | |
221 @instruction(20) | 226 @instruction(20) |
222 def add(self, variable_id, a, b): | 227 def add(self, variable_id, a, b): |
223 #TODO: int vs float thing | 228 #TODO: int vs float thing |
224 self._setval(variable_id, self._getval(a) + self._getval(b)) | 229 self._setval(variable_id, self._getval(a) + self._getval(b)) |
225 | 230 |
295 self._enemy.acceleration = acceleration | 300 self._enemy.acceleration = acceleration |
296 | 301 |
297 | 302 |
298 @instruction(50) | 303 @instruction(50) |
299 def set_random_angle(self, min_angle, max_angle): | 304 def set_random_angle(self, min_angle, max_angle): |
300 #TODO: This thing is really odd, check, double check, triple check, disassemble... | 305 if self._enemy.screen_box: |
306 minx, miny, maxx, maxy = self._enemy.screen_box | |
307 else: | |
308 minx, miny, maxx, maxy = (0., 0., 0., 0.) | |
309 | |
301 angle = self._game_state.prng.rand_double() * (max_angle - min_angle) + min_angle | 310 angle = self._game_state.prng.rand_double() * (max_angle - min_angle) + min_angle |
302 self._enemy.angle = atan2(-abs(sin(angle)), -abs(cos(angle))) | 311 sa, ca = sin(angle), cos(angle) |
312 | |
313 distx = min(96.0, (maxx - minx) / 2.) | |
314 disty = min(96.0, (maxy - miny) / 2.) | |
315 | |
316 if self._enemy.x > maxx - 96.0: | |
317 ca = -abs(ca) | |
318 elif self._enemy.x < minx + 96.0: | |
319 ca = abs(ca) | |
320 | |
321 if self._enemy.y > maxy - 48.0: | |
322 sa = -abs(sa) | |
323 elif self._enemy.y < miny + 48.0: | |
324 sa = abs(sa) | |
325 self._enemy.angle = atan2(sa, ca) | |
303 | 326 |
304 | 327 |
305 @instruction(51) | 328 @instruction(51) |
306 def target_player(self, unknown, speed): | 329 def target_player(self, unknown, speed): |
307 #TODO: unknown | 330 #TODO: unknown |