Mercurial > touhou
comparison pytouhou/game/enemy.pyx @ 494:6be9c99a3a24
Merge PlayerState into Player, fix player respawn position.
| author | Emmanuel Gil Peyrot <linkmauve@linkmauve.fr> |
|---|---|
| date | Mon, 14 Oct 2013 12:11:01 +0200 |
| parents | 887de1309491 |
| children | 3da7395f39e3 |
comparison
equal
deleted
inserted
replaced
| 493:26c082870dcf | 494:6be9c99a3a24 |
|---|---|
| 219 cpdef double get_player_angle(self, tuple pos=None, Player player=None): | 219 cpdef double get_player_angle(self, tuple pos=None, Player player=None): |
| 220 cdef double x, y | 220 cdef double x, y |
| 221 if player is None: | 221 if player is None: |
| 222 player = self.select_player() | 222 player = self.select_player() |
| 223 x, y = pos or (self.x, self.y) | 223 x, y = pos or (self.x, self.y) |
| 224 return atan2(player.state.y - y, player.state.x - x) | 224 return atan2(player.y - y, player.x - x) |
| 225 | 225 |
| 226 | 226 |
| 227 cpdef set_anim(self, index): | 227 cpdef set_anim(self, index): |
| 228 entry = 0 if index in self._anms[0].scripts else 1 | 228 entry = 0 if index in self._anms[0].scripts else 1 |
| 229 self.sprite = Sprite() | 229 self.sprite = Sprite() |
| 348 # Check for enemy-player collisions | 348 # Check for enemy-player collisions |
| 349 ex1, ex2 = ex - ehalf_size_x * 2. / 3., ex + ehalf_size_x * 2. / 3. | 349 ex1, ex2 = ex - ehalf_size_x * 2. / 3., ex + ehalf_size_x * 2. / 3. |
| 350 ey1, ey2 = ey - ehalf_size_y * 2. / 3., ey + ehalf_size_y * 2. / 3. | 350 ey1, ey2 = ey - ehalf_size_y * 2. / 3., ey + ehalf_size_y * 2. / 3. |
| 351 if self.collidable: | 351 if self.collidable: |
| 352 for player in self._game.players: | 352 for player in self._game.players: |
| 353 px, py = player.state.x, player.state.y | 353 px, py = player.x, player.y |
| 354 phalf_size = player.sht.hitbox | 354 phalf_size = player.sht.hitbox |
| 355 px1, px2 = px - phalf_size, px + phalf_size | 355 px1, px2 = px - phalf_size, px + phalf_size |
| 356 py1, py2 = py - phalf_size, py + phalf_size | 356 py1, py2 = py - phalf_size, py + phalf_size |
| 357 | 357 |
| 358 #TODO: box-box or point-in-box? | 358 #TODO: box-box or point-in-box? |
| 362 player.collide() | 362 player.collide() |
| 363 | 363 |
| 364 # Adjust damages | 364 # Adjust damages |
| 365 damages = min(70, damages) | 365 damages = min(70, damages) |
| 366 score = (damages // 5) * 10 | 366 score = (damages // 5) * 10 |
| 367 self._game.players[0].state.score += score #TODO: better distribution amongst the players. | 367 self._game.players[0].score += score #TODO: better distribution amongst the players. |
| 368 | 368 |
| 369 if self.damageable: | 369 if self.damageable: |
| 370 if self._game.spellcard is not None: | 370 if self._game.spellcard is not None: |
| 371 #TODO: there is a division by 3, somewhere... where is it? | 371 #TODO: there is a division by 3, somewhere... where is it? |
| 372 if damages <= 7: | 372 if damages <= 7: |
| 386 death_flags = self.death_flags & 7 | 386 death_flags = self.death_flags & 7 |
| 387 | 387 |
| 388 self.die_anim() | 388 self.die_anim() |
| 389 | 389 |
| 390 #TODO: verify if the score is added with all the different flags. | 390 #TODO: verify if the score is added with all the different flags. |
| 391 self._game.players[0].state.score += self.die_score #TODO: better distribution amongst the players. | 391 self._game.players[0].score += self.die_score #TODO: better distribution amongst the players. |
| 392 | 392 |
| 393 #TODO: verify if that should really be there. | 393 #TODO: verify if that should really be there. |
| 394 if self.boss: | 394 if self.boss: |
| 395 self._game.change_bullets_into_bonus() | 395 self._game.change_bullets_into_bonus() |
| 396 | 396 |
| 538 self.handle_callbacks() | 538 self.handle_callbacks() |
| 539 | 539 |
| 540 self.frame += 1 | 540 self.frame += 1 |
| 541 | 541 |
| 542 | 542 |
| 543 def select_player_key(self, p): | 543 def select_player_key(self, player): |
| 544 return ((p.x - self.x) ** 2 + (p.y - self.y) ** 2, p.state.character) | 544 return ((player.x - self.x) ** 2 + (player.y - self.y) ** 2, player.character) |
