PL

Slave Rift

autor: tueb2024 · Strzelanki
5,0 (1)
▶ Graj 💬 Opinie Kod źródłowy 🕘 Wersje Edytuj GitHub
games/slave-rift / tests / WeaponRendererTest.php · commit 9ea6094
<?phpnamespace App\Tests;use App\Gfx\WeaponRenderer;use PHPUnit\Framework\TestCase;final class WeaponRendererTest extends TestCase{    public function testCurrentLogicalResolutionKeepsWeaponFullyOnScreen(): void    {        $renderer = new WeaponRenderer();        $pistol = $renderer->layout(320, 180, 0, 0.0);        self::assertSame(97, $pistol['drawH']);        self::assertSame(146, $pistol['drawW']);        self::assertSame(1, $pistol['copies']);        self::assertGreaterThanOrEqual(0, $pistol['x']);        self::assertGreaterThanOrEqual(0, $pistol['y']);        self::assertLessThanOrEqual(320, $pistol['x'] + $pistol['drawW']);        self::assertLessThanOrEqual(180, $pistol['y'] + $pistol['drawH']);        foreach ([1, 3, 6] as $stage) {            $dual = $renderer->layout(320, 180, $stage, 0.0);            self::assertSame(2, $dual['copies']);            self::assertGreaterThan(0, $dual['spread']);            self::assertGreaterThanOrEqual(0, $dual['x']);            self::assertLessThanOrEqual(320, $dual['x'] + $dual['spread'] + $dual['drawW']);            self::assertLessThanOrEqual(180, $dual['y'] + $dual['drawH']);        }    }    public function testOnlyDualStagesRequestTwoWeaponCopies(): void    {        $renderer = new WeaponRenderer();        foreach ([0, 2, 4, 5] as $stage) {            self::assertSame(1, $renderer->layout(320, 180, $stage, 0.0)['copies']);        }        foreach ([1, 3, 6] as $stage) {            self::assertSame(2, $renderer->layout(320, 180, $stage, 0.0)['copies']);        }    }    public function testLayoutScalesWithLogicalResolution(): void    {        $renderer = new WeaponRenderer();        $small = $renderer->layout(320, 180, 4, 0.0);        $large = $renderer->layout(640, 360, 4, 0.0);        self::assertSame($small['drawH'] * 2, $large['drawH']);        self::assertSame($small['drawW'] * 2, $large['drawW']);    }    public function testShotPulseWalksThroughVisualCooldownStates(): void    {        $renderer = new WeaponRenderer();        $renderer->reset(1.0);        self::assertSame(WeaponRenderer::FIRE, $renderer->update(1.0, 0.12));        self::assertSame(WeaponRenderer::RECOIL, $renderer->update(1.04, 0.08));        self::assertSame(WeaponRenderer::COOLDOWN, $renderer->update(1.09, 0.03));        self::assertSame(WeaponRenderer::READY, $renderer->update(1.14, 0.0));    }    public function testAtlasContractAndFourWeaponProgression(): void    {        $renderer = new WeaponRenderer();        self::assertSame(0, $renderer->frameForState(WeaponRenderer::READY));        self::assertSame(2, $renderer->frameForState(WeaponRenderer::FIRE));        self::assertSame(3, $renderer->frameForState(WeaponRenderer::RECOIL));        self::assertSame(1, $renderer->frameForState(WeaponRenderer::COOLDOWN));        self::assertSame(144, WeaponRenderer::FRAME_W);        self::assertSame(96, WeaponRenderer::FRAME_H);        self::assertSame(0, $renderer->rowForStage(0));        self::assertSame('weapon_colt', $renderer->textureKey(0));        self::assertSame('weapon_mp44', $renderer->textureKey(2));        self::assertSame('weapon_bar', $renderer->textureKey(4));        self::assertSame('weapon_gatling', $renderer->textureKey(6));    }}