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