From 1124e62bb79823fcf317ff2cbdf856a4d4cfcc97 Mon Sep 17 00:00:00 2001 From: Sheldan <5037282+Sheldan@users.noreply.github.com> Date: Sat, 30 Aug 2025 20:31:22 +0200 Subject: [PATCH] survivors: homing projectiles now continuously try to find a new target after their initial has died --- absurd-survivors/src/base.ts | 33 +++++++++++++++++++++++++++++- absurd-survivors/src/main.ts | 3 --- absurd-survivors/src/projectile.ts | 6 +++--- 3 files changed, 35 insertions(+), 7 deletions(-) diff --git a/absurd-survivors/src/base.ts b/absurd-survivors/src/base.ts index 496737a..26596f4 100644 --- a/absurd-survivors/src/base.ts +++ b/absurd-survivors/src/base.ts @@ -1,4 +1,4 @@ -import type {Placeable} from "./interfaces.ts"; +import type {Healthy, Placeable} from "./interfaces.ts"; export class Vector { @@ -125,4 +125,35 @@ export class Point implements Placeable { move(any?: any) { } +} + +export class DeadPoint implements Placeable, Healthy { + + private position: Vector; + + + constructor(position: Vector) { + this.position = position; + } + + getPosition(): Vector { + return this.position; + } + + getSize() { + } + + move(any?: any) { + } + + dead() { + return true; + } + + die() { + } + + takeDamage(damage: number) { + } + } \ No newline at end of file diff --git a/absurd-survivors/src/main.ts b/absurd-survivors/src/main.ts index 4d7615c..088d193 100644 --- a/absurd-survivors/src/main.ts +++ b/absurd-survivors/src/main.ts @@ -125,10 +125,7 @@ docReady(function () { player.addWeapon(HomingPistol.generateHomingPistol(world)) hud = new HUD(world); - requestAnimationFrame(updateCanvas); - - }) diff --git a/absurd-survivors/src/projectile.ts b/absurd-survivors/src/projectile.ts index df0eee3..3d143e7 100644 --- a/absurd-survivors/src/projectile.ts +++ b/absurd-survivors/src/projectile.ts @@ -1,7 +1,7 @@ import type {Acting, Placeable, Healthy} from "./interfaces.ts"; import type {Vector} from "./base.ts"; import {World} from "./World.ts"; -import {Cooldown, Point, Vector} from "./base.ts"; +import {Cooldown, DeadPoint, Point, Vector} from "./base.ts"; import { circleLineCollision, drawDot, @@ -162,13 +162,13 @@ export class HomingProjectile extends Projectile { if(pointOnLineWithinLine(this.target.getPosition(), this.lastPosition, this.position)) { justMovedDirection = olderMovedDirection } - this.target = new Point(this.position.add(justMovedDirection.multiply(this.world.maxValue()))) + this.target = new DeadPoint(this.position.add(justMovedDirection.multiply(this.world.maxValue()))) } } else { if(pointOnLineWithinLine(this.target.getPosition(), this.lastPosition, this.position)) { justMovedDirection = olderMovedDirection } - this.target = new Point(this.position.add(justMovedDirection.multiply(Math.max(this.world.size.x, this.world.size.y)))) + this.target = new DeadPoint(this.position.add(justMovedDirection.multiply(Math.max(this.world.size.x, this.world.size.y)))) } } }