diff --git a/client/main.ts b/client/main.ts index 1ca93fc..999bcc1 100755 --- a/client/main.ts +++ b/client/main.ts @@ -14,27 +14,18 @@ import { const log = log_from(import.meta); async function main() { - const args = parse_args(Deno.args); - log("Client starting."); - const interface_ = await ServerInterface.connect(args.port); - const display = new DisplayHandler(interface_.outputs); - new MsgHandler(interface_.inputs, display).spin(); + const interface_ = await ServerInterface.connect(9999); new InputHandler(interface_.outputs).spin(); + const display = new DisplayHandler(interface_.outputs); display.spin(); + new MsgHandler(interface_.inputs, display).spin(); log("Connected."); interface_.outputs.send({ kind: "ping", content: { message: "Machin." } }); log("Sent ping."); } -function parse_args(args: string[]) { - const [port_] = args; - let port = 9999; - if (port_ !== undefined) port = parseInt(port_); - return { port }; -} - class MsgHandler { receiver; display; diff --git a/server/entities/enemy.ts b/server/entities/enemy.ts index a1decc7..494826d 100644 --- a/server/entities/enemy.ts +++ b/server/entities/enemy.ts @@ -17,27 +17,21 @@ export class CompEnemy { this.life = 10; } - find_target_from(engine: Engine, pos: Vec2, range: number) { - const radius = v2(range, range); - const found = engine.one(Query.with(CompPlayer).with(CompId).and(query_in_rect(pos.sub(radius), pos.add(radius)))); - if (found === null) { - this.target = null; - return; - } - const [_, id, __] = found; - this.target = id.id; - } - get_target_pos(engine: Engine) { if (this.target === null) return null; const result = engine.one(Query.with(CompId).filter(([c]) => c.id === this.target).with(CompPos)); - if (result === null) { - this.target = null; - return null; - } + if (result === null) return null; const [_, pos] = result; return pos.pos; } + + find_target_from(engine: Engine, pos: Vec2, range: number) { + const radius = v2(range, range); + const found = engine.one(Query.with(CompPlayer).with(CompId).and(query_in_rect(pos.sub(radius), pos.add(radius)))); + if (found === null) return this.target = null; + const [_, id, __] = found; + return this.target = id.id; + } } export function sys_spawn_enemy(pos: Vec2) { @@ -53,15 +47,14 @@ export function sys_spawn_enemy(pos: Vec2) { } export function sys_update_enemy() { - const trigger_range = 5; - const forget_range = 10; return (engine: Engine) => { for (const [enemy, enemy_pos] of engine.all(Query.with(CompEnemy).with(CompPos))) { - if (enemy.target === null) enemy.find_target_from(engine, enemy_pos.pos, trigger_range); + if (enemy.target === null) enemy.find_target_from(engine, enemy_pos.pos, 3); + if (enemy.target === null) continue; const pos = enemy.get_target_pos(engine); - if (pos === null) continue; + assert(pos !== null); const direction = pos.sub(enemy_pos.pos); - if (direction.len() <= forget_range) { + if (direction.len() <= 5) { const displacement = direction.normalize(); const moved = enemy_pos.move_collide(engine, displacement); if (!moved) { diff --git a/server/main.ts b/server/main.ts index 5e88b52..1a67098 100755 --- a/server/main.ts +++ b/server/main.ts @@ -10,8 +10,6 @@ import { enemy_plugin } from "./entities/enemy.ts"; const log = log_from(import.meta); async function main() { - const args = parse_args(Deno.args); - log("Starting."); const engine = new Engine(); enemy_plugin(engine); @@ -20,18 +18,12 @@ async function main() { engine.run(await sys_spawn_structure("../data/structures/houses.txt", v2(2, 2))); engine.run(sys_spawn_enemy(v2(1, 1))); - const gateway = new Gateway(args.port); + const port = 9999; + const gateway = new Gateway(port); log("Awaiting connection."); for await (const client of gateway.accept()) { Session.init(client, engine).start(); } } -function parse_args(args: string[]) { - const [port_] = args; - let port = 9999; - if (port_ !== undefined) port = parseInt(port_); - return { port }; -} - if (import.meta.main) await main();