diff --git a/combat.c b/combat.c index 0b70c63..2d9c0e8 100644 --- a/combat.c +++ b/combat.c @@ -39,13 +39,33 @@ void setupBullet( bullet->velocityStep = 0; } +int maybeFireShotCount( + struct BulletPosition rabbitBulletPosition[], + int availableBullets[], + int count +) { + int i, remaining = count; + + for (i = 0; i < RABBIT_BULLET_LIMIT; ++i) { + if (rabbitBulletPosition[i].isActive == 0) { + availableBullets[count - remaining] = i; + + remaining--; + if (remaining == 0) break; + } + } + + return remaining == 0; +} + int attemptToFireRabbitBullet( struct RabbitPosition *rabbitPosition, struct RabbitWeaponry *rabbitWeaponry, struct BulletPosition rabbitBulletPosition[] ) { int okToFire = 0, i, mouseAngle; - int availableBullets[3]; + int availableBullets[4]; + float beamOffsetX, beamOffsetY; if (rabbitWeaponry->cooldown > 0) return 0; mouseAngle = rabbitPosition->mouseAngle; @@ -53,15 +73,11 @@ int attemptToFireRabbitBullet( rabbitWeaponry->cooldown = RABBIT_BULLET_COOLDOWN; if (rabbitWeaponry->currentWeapon == WEAPON_TYPE_SINGLE_SHOT_GUN) { - for (i = 0; i < RABBIT_BULLET_LIMIT; ++i) { - if (rabbitBulletPosition[i].isActive == 0) { - okToFire = 1; - availableBullets[0] = i; - break; - } - } - - if (!okToFire) return 0; + if (!maybeFireShotCount( + rabbitBulletPosition, + availableBullets, + 1 + )) return 0; setupBullet( &rabbitBulletPosition[availableBullets[0]], @@ -72,14 +88,11 @@ int attemptToFireRabbitBullet( ); } else if (rabbitWeaponry->currentWeapon == WEAPON_TYPE_SPREAD_SHOT_GUN) { // make sure three bullets are available - for (i = 0; i < RABBIT_BULLET_LIMIT; ++i) { - if (rabbitBulletPosition[i].isActive == 0) { - availableBullets[okToFire++] = i; - if (okToFire == 3) break; - } - } - - if (okToFire < 3) return 0; + if (!maybeFireShotCount( + rabbitBulletPosition, + availableBullets, + 3 + )) return 0; // if so, fire away for (i = 0; i < 3; ++i) { @@ -91,6 +104,27 @@ int attemptToFireRabbitBullet( RABBIT_BULLET_VELOCITY ); } + } else if (rabbitWeaponry->currentWeapon == WEAPON_TYPE_BEAM_SHOT_GUN) { + // make sure three bullets are available + if (!maybeFireShotCount( + rabbitBulletPosition, + availableBullets, + 4 + )) return 0; + + // if so, fire away + for (i = 0; i < 4; ++i) { + beamOffsetX = sin(mouseAngle * DEG2RAD) * i * 2; + beamOffsetY = -cos(mouseAngle * DEG2RAD) * i * 2; + + setupBullet( + &rabbitBulletPosition[availableBullets[i]], + rabbitPosition->rabbitPosition[0] + beamOffsetX, + rabbitPosition->rabbitPosition[1] + beamOffsetY, + mouseAngle, + RABBIT_BULLET_VELOCITY + ); + } } return 1; @@ -262,6 +296,7 @@ void buildCollisionGrids( struct PlayerPowerup *playerPowerup ) { int grid, i; + struct CompiledSpriteRender *which; for (grid = 0; grid < 4; ++grid) { rabbitBulletGridIndex[grid] = 0; @@ -279,17 +314,17 @@ void buildCollisionGrids( switch (playerPowerup->type) { case POWERUP_TYPE_SHOTGUN: - shotgun.x = playerPowerup->x; - shotgun.y = playerPowerup->y; - determineGridPositionsForSprite(&shotgun); + which = &shotgun; break; - case POWERUP_TYPE_SHIELD_KILLER: - shieldKiller.x = playerPowerup->x; - shieldKiller.y = playerPowerup->y; - determineGridPositionsForSprite(&shieldKiller); + case POWERUP_TYPE_BEAM_WEAPON: + which = &beam; break; } + which->x = playerPowerup->x; + which->y = playerPowerup->y; + determineGridPositionsForSprite(which); + for (grid = 0; grid < 4; ++grid) { powerupGrid[grid] = gridPosition[grid]; } @@ -474,8 +509,8 @@ int handleRabbitToPowerupCollision( case POWERUP_TYPE_SHOTGUN: which = &shotgun; break; - case POWERUP_TYPE_SHIELD_KILLER: - which = &shieldKiller; + case POWERUP_TYPE_BEAM_WEAPON: + which = &beam; break; } diff --git a/combat.h b/combat.h index 083b237..1c90ca2 100644 --- a/combat.h +++ b/combat.h @@ -57,3 +57,9 @@ void handleEnemyKills( ); void fireCurrentWeaponOnce(struct RabbitWeaponry*); + +int maybeFireShotCount( + struct BulletPosition rabbitBulletPosition[], + int availableBullets[], + int count +); diff --git a/combat_test.c b/combat_test.c index 46f3f95..8dbcbdb 100644 --- a/combat_test.c +++ b/combat_test.c @@ -60,6 +60,90 @@ void TestFireCurrentWeaponOnce_TwoRoundsRemaining(CuTest *tc) { CuAssertIntEquals(tc, 1, rabbitWeaponry.currentWeaponRemainingRounds); } +void TestMaybeFireShotCount_NotOK(CuTest *tc) { + struct BulletPosition rabbitBulletPosition[RABBIT_BULLET_LIMIT]; + int availableBullets[1] = { -1 }; + int i, result; + + for (i = 0; i < RABBIT_BULLET_LIMIT; ++i) { + rabbitBulletPosition[i].isActive = 1; + } + + result = maybeFireShotCount( + rabbitBulletPosition, + availableBullets, + 1 + ); + + CuAssertIntEquals(tc, 0, result); + CuAssertIntEquals(tc, availableBullets[0], -1); +} + +void TestMaybeFireShotCount_OK(CuTest *tc) { + struct BulletPosition rabbitBulletPosition[RABBIT_BULLET_LIMIT]; + int availableBullets[1] = { -1 }; + int i, result; + + for (i = 0; i < RABBIT_BULLET_LIMIT; ++i) { + rabbitBulletPosition[i].isActive = 1; + } + + rabbitBulletPosition[4].isActive = 0; + + result = maybeFireShotCount( + rabbitBulletPosition, + availableBullets, + 1 + ); + + CuAssertIntEquals(tc, 1, result); + CuAssertIntEquals(tc, availableBullets[0], 4); +} + +void TestMaybeFireShotCount_NotEnoughAvailable(CuTest *tc) { + struct BulletPosition rabbitBulletPosition[RABBIT_BULLET_LIMIT]; + int availableBullets[2] = { -1, -1 }; + int i, result; + + for (i = 0; i < RABBIT_BULLET_LIMIT; ++i) { + rabbitBulletPosition[i].isActive = 1; + } + + rabbitBulletPosition[4].isActive = 0; + + result = maybeFireShotCount( + rabbitBulletPosition, + availableBullets, + 2 + ); + + CuAssertIntEquals(tc, 0, result); + CuAssertIntEquals(tc, 4, availableBullets[0]); + CuAssertIntEquals(tc, -1, availableBullets[1]); +} + +void TestMaybeFireShotCount_EnoughAvailable(CuTest *tc) { + struct BulletPosition rabbitBulletPosition[RABBIT_BULLET_LIMIT]; + int availableBullets[2] = { -1, -1 }; + int i, result; + + for (i = 0; i < RABBIT_BULLET_LIMIT; ++i) { + rabbitBulletPosition[i].isActive = 1; + } + + rabbitBulletPosition[4].isActive = 0; + rabbitBulletPosition[6].isActive = 0; + + result = maybeFireShotCount( + rabbitBulletPosition, + availableBullets, + 2 + ); + + CuAssertIntEquals(tc, 1, result); + CuAssertIntEquals(tc, 4, availableBullets[0]); + CuAssertIntEquals(tc, 6, availableBullets[1]); +} CuSuite *CombatGetSuite() { CuSuite *suite = CuSuiteNew(); @@ -67,5 +151,9 @@ CuSuite *CombatGetSuite() { SUITE_ADD_TEST(suite, TestFireCurrentWeaponOnce_NoRoundsRemaining); SUITE_ADD_TEST(suite, TestFireCurrentWeaponOnce_OneRoundRemaining); SUITE_ADD_TEST(suite, TestFireCurrentWeaponOnce_TwoRoundsRemaining); + SUITE_ADD_TEST(suite, TestMaybeFireShotCount_NotOK); + SUITE_ADD_TEST(suite, TestMaybeFireShotCount_OK); + SUITE_ADD_TEST(suite, TestMaybeFireShotCount_NotEnoughAvailable); + SUITE_ADD_TEST(suite, TestMaybeFireShotCount_EnoughAvailable); return suite; } diff --git a/const.c b/const.c index 3f87dfd..c0312d1 100644 --- a/const.c +++ b/const.c @@ -2,28 +2,7 @@ #include "const.h" int difficultyBands[MAX_DIFFICULTY]; -int hitPointRanges[MAX_DIFFICULTY][4] = { - { 1, 1, 1, 1 }, - { 1, 1, 1, 1 }, - { 1, 1, 1, 2 }, - { 1, 1, 1, 2 }, - { 1, 1, 2, 2 }, - { 1, 2, 2, 2 }, - { 1, 2, 2, 2 }, - { 1, 2, 2, 3 }, - { 1, 2, 2, 3 }, - { 1, 2, 3, 3 }, - { 1, 2, 3, 3 }, - { 1, 2, 3, 3 }, - { 1, 2, 3, 3 }, - { 1, 2, 3, 3 }, - { 1, 2, 3, 3 }, - { 1, 2, 3, 3 }, - { 1, 2, 3, 3 }, - { 1, 2, 3, 3 }, - { 1, 2, 3, 3 }, - { 1, 2, 3, 3 } -}; +int hitPointRanges[MAX_DIFFICULTY][4]; struct SpriteBounds bounds; @@ -34,7 +13,7 @@ struct CompiledSpriteRender rabbit, enemy, enemyBullet, shotgun, - shieldKiller; + beam; void buildDifficultyBands() { int i; @@ -56,7 +35,7 @@ void buildHitPointRages() { } countOfCurrent++; - if (countOfCurrent == 2) { + if (countOfCurrent == HIT_POINT_DIFFICULTY_INCREASE_DELAY) { countOfCurrent = 0; currentRange[3]++; diff --git a/const.h b/const.h index c3a9741..9839544 100644 --- a/const.h +++ b/const.h @@ -55,15 +55,17 @@ #define POWERUP_RESPAWN_COOLDOWN_PER_LEVEL (10) #define SHOTGUN_ROUNDS_PER_LEVEL (25) -#define MAX_DIFFICULTY (20) -#define BASE_KILLS (10) -#define KILLS_NEEDED_FOR_NEXT_LEVEL_MULTIPLIER (2.1) +#define MAX_DIFFICULTY (40) +#define BASE_KILLS (30) +#define KILLS_NEEDED_FOR_NEXT_LEVEL_MULTIPLIER (1.25) +#define HIT_POINT_DIFFICULTY_INCREASE_DELAY (4) #define WEAPON_TYPE_SINGLE_SHOT_GUN (0) #define WEAPON_TYPE_SPREAD_SHOT_GUN (1) +#define WEAPON_TYPE_BEAM_SHOT_GUN (2) -#define POWERUP_TYPE_SHOTGUN (0) -#define POWERUP_TYPE_SHIELD_KILLER (1) +#define POWERUP_TYPE_SHOTGUN (1) +#define POWERUP_TYPE_BEAM_WEAPON (2) #define KNOCKBACK_DISTANCE (3) @@ -77,7 +79,7 @@ extern struct CompiledSpriteRender rabbit, enemy, enemyBullet, shotgun, - shieldKiller; + beam; void buildDifficultyBands(); void buildHitPointRages(); diff --git a/game.c b/game.c index a453a60..a0712e6 100644 --- a/game.c +++ b/game.c @@ -147,12 +147,12 @@ void setupPowerupSprites() { ); buildCompiledSprite( - &sprite_shieldKiller, - &shieldKiller, - SPRITE_SHIELDKILLER_WIDTH, - SPRITE_SHIELDKILLER_HEIGHT, - SPRITE_SHIELDKILLER_OFFSET_X, - SPRITE_SHIELDKILLER_OFFSET_Y + &sprite_beam, + &beam, + SPRITE_BEAM_WIDTH, + SPRITE_BEAM_HEIGHT, + SPRITE_BEAM_OFFSET_X, + SPRITE_BEAM_OFFSET_Y ); } @@ -206,20 +206,22 @@ void renderEnemyBullets() { } void renderPowerup() { + struct CompiledSpriteRender *which; + if (!playerPowerup.isActive) return; switch (playerPowerup.type) { case POWERUP_TYPE_SHOTGUN: - shotgun.x = playerPowerup.x; - shotgun.y = playerPowerup.y; - drawCompiledSprite(&shotgun); + which = &shotgun; break; - case POWERUP_TYPE_SHIELD_KILLER: - shieldKiller.x = playerPowerup.x; - shieldKiller.y = playerPowerup.y; - drawCompiledSprite(&shieldKiller); + case POWERUP_TYPE_BEAM_WEAPON: + which = &beam; break; } + + which->x = playerPowerup.x; + which->y = playerPowerup.y; + drawCompiledSprite(which); } void drawOnlyArenaForSprite(struct CompiledSpriteRender *sprite) { @@ -246,21 +248,23 @@ void drawOnlyRabbitArena() { } void drawOnlyPowerupArena() { + struct CompiledSpriteRender *which; + if (!playerPowerup.isActive) return; switch (playerPowerup.type) { case POWERUP_TYPE_SHOTGUN: - shotgun.x = playerPowerup.x; - shotgun.y = playerPowerup.y; - drawOnlyArenaForSprite(&shotgun); + which = &shotgun; break; - case POWERUP_TYPE_SHIELD_KILLER: - shieldKiller.x = playerPowerup.x; - shieldKiller.y = playerPowerup.y; - drawOnlyArenaForSprite(&shieldKiller); + case POWERUP_TYPE_BEAM_WEAPON: + which = &beam; break; } + which->x = playerPowerup.x; + which->y = playerPowerup.y; + drawOnlyArenaForSprite(which); + if (playerPowerup.willBeInactive) { playerPowerup.isActive = 0; } @@ -427,8 +431,8 @@ void handleCombat() { if (handleRabbitToPowerupCollision(&rabbitPosition, &playerPowerup)) { playerPowerup.willBeInactive = 1; - rabbitWeaponry.currentWeapon = WEAPON_TYPE_SPREAD_SHOT_GUN; - rabbitWeaponry.currentWeaponRemainingRounds = determineShotgunRounds(globalGameState.difficulty); + rabbitWeaponry.currentWeapon = playerPowerup.type; + rabbitWeaponry.currentWeaponRemainingRounds = determineWeaponRounds(globalGameState.difficulty); } } @@ -496,7 +500,7 @@ int main(void) { renderStringToDrawBuffer(buffer, 1, 0, 210, 40); sprintf(buffer, "Cool: %d ", playerPowerup.cooldown); renderStringToDrawBuffer(buffer, 1, 0, 210, 50); - sprintf(buffer, "Wpn: %d ", rabbitWeaponry.currentWeapon); + sprintf(buffer, "Lvl: %d ", globalGameState.difficulty); renderStringToDrawBuffer(buffer, 1, 0, 210, 60); waitStartVbl(); diff --git a/powerup.c b/powerup.c index a690b55..f88e876 100644 --- a/powerup.c +++ b/powerup.c @@ -17,7 +17,7 @@ int determinePowerupCooldownTime(int difficulty) { // if every shot lands, you should run out slightly before the next powerup // should be available // so for the first rounds should be difficulty(1) + difficulty(2) % rand() or so -int determineShotgunRounds(int difficulty) { +int determineWeaponRounds(int difficulty) { if (difficulty > MAX_DIFFICULTY) exit(1); return difficultyBands[difficulty] + @@ -40,6 +40,7 @@ void processPowerupCooldown( playerPowerup->y = TILE_SIZE + rand() % ((ARENA_HEIGHT_TILES - 2) * TILE_SIZE); playerPowerup->isActive = 1; playerPowerup->willBeInactive = 0; + playerPowerup->type = 2; playerPowerup->cooldown = determinePowerupCooldownTime(globalGameState->difficulty); } diff --git a/powerup.h b/powerup.h index e52c173..3540f2e 100644 --- a/powerup.h +++ b/powerup.h @@ -5,7 +5,7 @@ #include "movement.h" int determinePowerupCooldownTime(int difficulty); -int determineShotgunRounds(int difficulty); +int determineWeaponRounds(int difficulty); void processPowerupCooldown( struct PlayerPowerup*, struct GlobalGameState*, diff --git a/powerup_test.c b/powerup_test.c index e6e1563..0a0ea77 100644 --- a/powerup_test.c +++ b/powerup_test.c @@ -15,12 +15,12 @@ void TestDeterminePowerupCooldownTime(CuTest *tc) { CuAssertIntEquals(tc, 81, determinePowerupCooldownTime(2)); } -void TestDetermineShotgunRounds(CuTest *tc) { +void TestDetermineWeaponRounds(CuTest *tc) { srand(1); - CuAssertIntEquals(tc, 18, determineShotgunRounds(0)); - CuAssertIntEquals(tc, 39, determineShotgunRounds(1)); - CuAssertIntEquals(tc, 81, determineShotgunRounds(2)); + CuAssertIntEquals(tc, 18, determineWeaponRounds(0)); + CuAssertIntEquals(tc, 39, determineWeaponRounds(1)); + CuAssertIntEquals(tc, 81, determineWeaponRounds(2)); } @@ -116,7 +116,7 @@ void TestProcessPowerupCooldown_Triggered(CuTest *tc) { CuSuite *PowerupGetSuite() { CuSuite *suite = CuSuiteNew(); SUITE_ADD_TEST(suite, TestDeterminePowerupCooldownTime); - SUITE_ADD_TEST(suite, TestDetermineShotgunRounds); + SUITE_ADD_TEST(suite, TestDetermineWeaponRounds); SUITE_ADD_TEST(suite, TestProcessPowerupCooldown_PowerupActive); SUITE_ADD_TEST(suite, TestProcessPowerupCooldown_WeaponActive); SUITE_ADD_TEST(suite, TestProcessPowerupCooldown_NotTriggered); diff --git a/sprites.asm b/sprites.asm index 847cd86..9572287 100644 --- a/sprites.asm +++ b/sprites.asm @@ -7,7 +7,7 @@ PUBLIC sprite_mouse_ PUBLIC sprite_bullet_ PUBLIC sprite_enemy_ PUBLIC sprite_shotgun_ -PUBLIC sprite_shieldKiller_ +PUBLIC sprite_beam_ PUBLIC _palette .386 @@ -36,7 +36,7 @@ _palette: BYTE 38 BYTE 31 BYTE 12 - BYTE 0 + BYTE 63 BYTE 0 BYTE 0 BYTE 0 @@ -1614,11 +1614,155 @@ sprite_shotgun_: ret -sprite_shieldKiller_: +sprite_beam_: push ebp mov ebp, esp + mov BYTE PTR [eax + -1926], 7 + mov BYTE PTR [eax + -1925], 7 + mov BYTE PTR [eax + -1924], 7 + mov BYTE PTR [eax + -1923], 7 + mov BYTE PTR [eax + -1922], 7 + mov BYTE PTR [eax + -1921], 7 + mov BYTE PTR [eax + -1920], 7 + mov BYTE PTR [eax + -1919], 7 + mov BYTE PTR [eax + -1918], 7 + mov BYTE PTR [eax + -1917], 7 + mov BYTE PTR [eax + -1916], 7 + mov BYTE PTR [eax + -1915], 7 + mov BYTE PTR [eax + -1606], 7 + mov BYTE PTR [eax + -1605], 7 + mov BYTE PTR [eax + -1604], 7 + mov BYTE PTR [eax + -1603], 7 + mov BYTE PTR [eax + -1602], 7 + mov BYTE PTR [eax + -1601], 7 + mov BYTE PTR [eax + -1600], 7 + mov BYTE PTR [eax + -1599], 7 + mov BYTE PTR [eax + -1598], 7 + mov BYTE PTR [eax + -1597], 7 + mov BYTE PTR [eax + -1596], 7 + mov BYTE PTR [eax + -1595], 7 + mov BYTE PTR [eax + -1286], 7 + mov BYTE PTR [eax + -1285], 7 + mov BYTE PTR [eax + -1284], 7 + mov BYTE PTR [eax + -1283], 7 + mov BYTE PTR [eax + -1282], 7 + mov BYTE PTR [eax + -1281], 7 + mov BYTE PTR [eax + -1280], 7 + mov BYTE PTR [eax + -1279], 7 + mov BYTE PTR [eax + -1278], 7 + mov BYTE PTR [eax + -1277], 7 + mov BYTE PTR [eax + -1276], 7 + mov BYTE PTR [eax + -1275], 7 + mov BYTE PTR [eax + -966], 7 + mov BYTE PTR [eax + -965], 7 + mov BYTE PTR [eax + -964], 7 + mov BYTE PTR [eax + -963], 7 + mov BYTE PTR [eax + -962], 7 + mov BYTE PTR [eax + -961], 7 + mov BYTE PTR [eax + -960], 7 + mov BYTE PTR [eax + -959], 7 + mov BYTE PTR [eax + -958], 7 + mov BYTE PTR [eax + -957], 7 + mov BYTE PTR [eax + -956], 7 + mov BYTE PTR [eax + -955], 7 + mov BYTE PTR [eax + -646], 7 + mov BYTE PTR [eax + -645], 7 + mov BYTE PTR [eax + -644], 7 + mov BYTE PTR [eax + -643], 7 + mov BYTE PTR [eax + -642], 7 + mov BYTE PTR [eax + -641], 7 + mov BYTE PTR [eax + -640], 7 + mov BYTE PTR [eax + -639], 7 + mov BYTE PTR [eax + -638], 7 + mov BYTE PTR [eax + -637], 7 + mov BYTE PTR [eax + -636], 7 + mov BYTE PTR [eax + -635], 7 + mov BYTE PTR [eax + -326], 7 + mov BYTE PTR [eax + -325], 7 + mov BYTE PTR [eax + -324], 7 + mov BYTE PTR [eax + -323], 7 + mov BYTE PTR [eax + -322], 7 + mov BYTE PTR [eax + -321], 7 + mov BYTE PTR [eax + -320], 7 + mov BYTE PTR [eax + -319], 7 + mov BYTE PTR [eax + -318], 7 + mov BYTE PTR [eax + -317], 7 + mov BYTE PTR [eax + -316], 7 + mov BYTE PTR [eax + -315], 7 + mov BYTE PTR [eax + -6], 7 + mov BYTE PTR [eax + -5], 7 + mov BYTE PTR [eax + -4], 7 + mov BYTE PTR [eax + -3], 7 + mov BYTE PTR [eax + -2], 7 + mov BYTE PTR [eax + -1], 7 + mov BYTE PTR [eax + 0], 7 + mov BYTE PTR [eax + 1], 7 + mov BYTE PTR [eax + 2], 7 + mov BYTE PTR [eax + 3], 7 + mov BYTE PTR [eax + 4], 7 + mov BYTE PTR [eax + 5], 7 + mov BYTE PTR [eax + 314], 7 + mov BYTE PTR [eax + 315], 7 + mov BYTE PTR [eax + 316], 7 + mov BYTE PTR [eax + 317], 7 + mov BYTE PTR [eax + 318], 7 + mov BYTE PTR [eax + 319], 7 + mov BYTE PTR [eax + 320], 7 + mov BYTE PTR [eax + 321], 7 + mov BYTE PTR [eax + 322], 7 + mov BYTE PTR [eax + 323], 7 + mov BYTE PTR [eax + 324], 7 + mov BYTE PTR [eax + 325], 7 + mov BYTE PTR [eax + 634], 7 + mov BYTE PTR [eax + 635], 7 + mov BYTE PTR [eax + 636], 7 + mov BYTE PTR [eax + 637], 7 + mov BYTE PTR [eax + 638], 7 + mov BYTE PTR [eax + 639], 7 + mov BYTE PTR [eax + 640], 7 + mov BYTE PTR [eax + 641], 7 + mov BYTE PTR [eax + 642], 7 + mov BYTE PTR [eax + 643], 7 + mov BYTE PTR [eax + 644], 7 + mov BYTE PTR [eax + 645], 7 + mov BYTE PTR [eax + 954], 7 + mov BYTE PTR [eax + 955], 7 + mov BYTE PTR [eax + 956], 7 + mov BYTE PTR [eax + 957], 7 + mov BYTE PTR [eax + 958], 7 + mov BYTE PTR [eax + 959], 7 + mov BYTE PTR [eax + 960], 7 + mov BYTE PTR [eax + 961], 7 + mov BYTE PTR [eax + 962], 7 + mov BYTE PTR [eax + 963], 7 + mov BYTE PTR [eax + 964], 7 + mov BYTE PTR [eax + 965], 7 + mov BYTE PTR [eax + 1274], 7 + mov BYTE PTR [eax + 1275], 7 + mov BYTE PTR [eax + 1276], 7 + mov BYTE PTR [eax + 1277], 7 + mov BYTE PTR [eax + 1278], 7 + mov BYTE PTR [eax + 1279], 7 + mov BYTE PTR [eax + 1280], 7 + mov BYTE PTR [eax + 1281], 7 + mov BYTE PTR [eax + 1282], 7 + mov BYTE PTR [eax + 1283], 7 + mov BYTE PTR [eax + 1284], 7 + mov BYTE PTR [eax + 1285], 7 + mov BYTE PTR [eax + 1594], 7 + mov BYTE PTR [eax + 1595], 7 + mov BYTE PTR [eax + 1596], 7 + mov BYTE PTR [eax + 1597], 7 + mov BYTE PTR [eax + 1598], 7 + mov BYTE PTR [eax + 1599], 7 + mov BYTE PTR [eax + 1600], 7 + mov BYTE PTR [eax + 1601], 7 + mov BYTE PTR [eax + 1602], 7 + mov BYTE PTR [eax + 1603], 7 + mov BYTE PTR [eax + 1604], 7 + mov BYTE PTR [eax + 1605], 7 pop ebp ret diff --git a/sprites.h b/sprites.h index 0b25060..e55f026 100644 --- a/sprites.h +++ b/sprites.h @@ -97,15 +97,15 @@ extern void sprite_shotgun(byte *); #define SPRITE_SHOTGUN_OFFSET_Y (6) -extern void sprite_shieldKiller(byte *); +extern void sprite_beam(byte *); -#define SPRITE_SHIELDKILLER_WIDTH (12) +#define SPRITE_BEAM_WIDTH (12) -#define SPRITE_SHIELDKILLER_HEIGHT (12) +#define SPRITE_BEAM_HEIGHT (12) -#define SPRITE_SHIELDKILLER_OFFSET_X (6) +#define SPRITE_BEAM_OFFSET_X (6) -#define SPRITE_SHIELDKILLER_OFFSET_Y (6) +#define SPRITE_BEAM_OFFSET_Y (6) diff --git a/spritesheet.yml b/spritesheet.yml index 8728fd3..5c6dc23 100644 --- a/spritesheet.yml +++ b/spritesheet.yml @@ -37,7 +37,7 @@ files: position: [32, 20] dimensions: [12, 12] offset: [6, 6] - shieldKiller: + beam: position: [44, 20] dimensions: [12, 12] offset: [6, 6] diff --git a/sprtsht.bmp b/sprtsht.bmp index fce27d8..2df6efe 100644 Binary files a/sprtsht.bmp and b/sprtsht.bmp differ