# HG changeset patch # User Emmanuel Gil Peyrot # Date 1352741664 -3600 # Node ID b11953cf1d3bd7ca1b47b38ab945193ac2706f40 # Parent eef492100f4cec526db54d41ca9fbe440d2a7fd4 Use only half-size hitboxes for player. diff --git a/pytouhou/formats/exe.py b/pytouhou/formats/exe.py --- a/pytouhou/formats/exe.py +++ b/pytouhou/formats/exe.py @@ -50,10 +50,10 @@ class SHT(object): #self.unknown1 = None #self.bombs = 0. #self.unknown2 = None - self.hitbox = 4. - self.graze_hitbox = 42. + self.hitbox = 2. + self.graze_hitbox = 21. self.autocollection_speed = 8. - self.item_hitbox = 38. + self.item_hitbox = 19. # No percentage_of_cherry_loss_on_die self.point_of_collection = 128 #TODO: find the real default. self.horizontal_vertical_speed = 0. diff --git a/pytouhou/game/bullet.pyx b/pytouhou/game/bullet.pyx --- a/pytouhou/game/bullet.pyx +++ b/pytouhou/game/bullet.pyx @@ -27,7 +27,7 @@ cdef class Bullet(object): cdef public object player_bullet, target cdef public object _game, _bullet_type cdef public object sprite, anmrunner, removed, was_visible, objects - cdef public object attributes, damage, hitbox_half_size, speed_interpolator, grazed + cdef public object attributes, damage, hitbox, speed_interpolator, grazed cdef public object x, y #TODO def __init__(self, pos, bullet_type, sprite_idx_offset, @@ -43,9 +43,9 @@ cdef class Bullet(object): self.objects = [self] if hitbox: - self.hitbox_half_size = (hitbox[0] / 2., hitbox[1] / 2.) + self.hitbox = (hitbox[0], hitbox[1]) else: - self.hitbox_half_size = (bullet_type.hitbox_size / 2., bullet_type.hitbox_size / 2.) + self.hitbox = (bullet_type.hitbox_size, bullet_type.hitbox_size) self.speed_interpolator = None self.frame = 0 diff --git a/pytouhou/game/enemy.py b/pytouhou/game/enemy.py --- a/pytouhou/game/enemy.py +++ b/pytouhou/game/enemy.py @@ -305,7 +305,7 @@ class Enemy(object): for bullet in self._game.players_bullets: if bullet.state != LAUNCHED: continue - half_size = bullet.hitbox_half_size + half_size = bullet.hitbox bx, by = bullet.x, bullet.y bx1, bx2 = bx - half_size[0], bx + half_size[0] by1, by2 = by - half_size[1], by + half_size[1] @@ -322,7 +322,7 @@ class Enemy(object): if not laser: continue - half_size = laser.hitbox_half_size + half_size = laser.hitbox lx, ly = laser.x, laser.y * 2. lx1, lx2 = lx - half_size[0], lx + half_size[0] @@ -339,7 +339,7 @@ class Enemy(object): if self.collidable: for player in self._game.players: px, py = player.x, player.y - phalf_size = player.hitbox_half_size + phalf_size = player.sht.hitbox px1, px2 = px - phalf_size, px + phalf_size py1, py2 = py - phalf_size, py + phalf_size diff --git a/pytouhou/game/game.py b/pytouhou/game/game.py --- a/pytouhou/game/game.py +++ b/pytouhou/game/game.py @@ -319,11 +319,11 @@ class Game(object): continue px, py = player.x, player.y - phalf_size = player.hitbox_half_size + phalf_size = player.sht.hitbox px1, px2 = px - phalf_size, px + phalf_size py1, py2 = py - phalf_size, py + phalf_size - ghalf_size = player.graze_hitbox_half_size + ghalf_size = player.sht.graze_hitbox gx1, gx2 = px - ghalf_size, px + ghalf_size gy1, gy2 = py - ghalf_size, py + ghalf_size @@ -342,10 +342,10 @@ class Game(object): if bullet.state != LAUNCHED: continue - half_size = bullet.hitbox_half_size + bhalf_width, bhalf_height = bullet.hitbox bx, by = bullet.x, bullet.y - bx1, bx2 = bx - half_size[0], bx + half_size[0] - by1, by2 = by - half_size[1], by + half_size[1] + bx1, bx2 = bx - bhalf_width, bx + bhalf_width + by1, by2 = by - bhalf_height, by + bhalf_height if not (bx2 < px1 or bx1 > px2 or by2 < py1 or by1 > py2): @@ -368,11 +368,11 @@ class Game(object): if py < 128 and player.state.power >= 128: #TODO: check py. self.autocollect(player) - half_size = player.sht.item_hitbox / 2. + ihalf_size = player.sht.item_hitbox for item in self.items: bx, by = item.x, item.y - bx1, bx2 = bx - half_size, bx + half_size - by1, by2 = by - half_size, by + half_size + bx1, bx2 = bx - ihalf_size, bx + ihalf_size + by1, by2 = by - ihalf_size, by + ihalf_size if not (bx2 < px1 or bx1 > px2 or by2 < py1 or by1 > py2): diff --git a/pytouhou/game/laser.py b/pytouhou/game/laser.py --- a/pytouhou/game/laser.py +++ b/pytouhou/game/laser.py @@ -205,7 +205,7 @@ class PlayerLaser(object): self.origin = origin self.objects = [self] - self.hitbox_half_size = hitbox[0] / 2., hitbox[1] / 2. + self.hitbox = hitbox[0], hitbox[1] self.frame = 0 self.duration = duration diff --git a/pytouhou/game/player.py b/pytouhou/game/player.py --- a/pytouhou/game/player.py +++ b/pytouhou/game/player.py @@ -64,9 +64,6 @@ class Player(object): self.sht.horizontal_vertical_focused_speed, self.sht.diagonal_focused_speed) - self.hitbox_half_size = self.sht.hitbox / 2. - self.graze_hitbox_half_size = self.sht.graze_hitbox / 2. - self.fire_time = 0 self.state = state diff --git a/pytouhou/games/eosd.py b/pytouhou/games/eosd.py --- a/pytouhou/games/eosd.py +++ b/pytouhou/games/eosd.py @@ -35,28 +35,28 @@ class EoSDGame(Game): if not bullet_types: etama3 = resource_loader.get_anm_wrapper(('etama3.anm',)) etama4 = resource_loader.get_anm_wrapper(('etama4.anm',)) - bullet_types = [BulletType(etama3, 0, 11, 14, 15, 16, hitbox_size=4, + bullet_types = [BulletType(etama3, 0, 11, 14, 15, 16, hitbox_size=2, type_id=0), - BulletType(etama3, 1, 12, 17, 18, 19, hitbox_size=6, + BulletType(etama3, 1, 12, 17, 18, 19, hitbox_size=3, type_id=1), - BulletType(etama3, 2, 12, 17, 18, 19, hitbox_size=4, + BulletType(etama3, 2, 12, 17, 18, 19, hitbox_size=2, type_id=2), - BulletType(etama3, 3, 12, 17, 18, 19, hitbox_size=6, + BulletType(etama3, 3, 12, 17, 18, 19, hitbox_size=3, type_id=3), - BulletType(etama3, 4, 12, 17, 18, 19, hitbox_size=5, + BulletType(etama3, 4, 12, 17, 18, 19, hitbox_size=2.5, type_id=4), - BulletType(etama3, 5, 12, 17, 18, 19, hitbox_size=4, + BulletType(etama3, 5, 12, 17, 18, 19, hitbox_size=2, type_id=5), - BulletType(etama3, 6, 13, 20, 20, 20, hitbox_size=16, + BulletType(etama3, 6, 13, 20, 20, 20, hitbox_size=8, launch_anim_offsets=(0, 1, 1, 2, 2, 3, 4, 0), type_id=6), - BulletType(etama3, 7, 13, 20, 20, 20, hitbox_size=11, + BulletType(etama3, 7, 13, 20, 20, 20, hitbox_size=5.5, launch_anim_offsets=(1,)*28, type_id=7), - BulletType(etama3, 8, 13, 20, 20, 20, hitbox_size=9, + BulletType(etama3, 8, 13, 20, 20, 20, hitbox_size=4.5, launch_anim_offsets=(0, 1, 1, 2, 2, 3, 4, 0), type_id=8), - BulletType(etama4, 0, 1, 2, 2, 2, hitbox_size=32, + BulletType(etama4, 0, 1, 2, 2, 2, hitbox_size=16, launch_anim_offsets=(0, 1, 2, 3, 4, 5, 6, 7, 8), type_id=9)]