From e69a6b9efdf4320dd5effbeec4c186931b81a347 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Micha=C3=ABl=20Lemaire?= Date: Tue, 1 Aug 2017 00:49:00 +0200 Subject: [PATCH] Added two engines --- graphics/exported/equipment/ionthruster.png | Bin 0 -> 22490 bytes .../exported/equipment/voidhawkengine.png | Bin 0 -> 22302 bytes graphics/ui/actions.svg | 413 +++++++++++++++++- src/core/LootTemplate.ts | 4 +- src/core/actions/MoveAction.spec.ts | 21 +- src/core/actions/MoveAction.ts | 18 +- src/core/equipments/Engines.spec.ts | 99 +++++ src/core/equipments/Engines.ts | 36 ++ src/core/equipments/RocketEngine.spec.ts | 27 -- src/core/equipments/RocketEngine.ts | 14 - src/ui/battle/ActionTooltip.spec.ts | 2 +- 11 files changed, 578 insertions(+), 56 deletions(-) create mode 100644 graphics/exported/equipment/ionthruster.png create mode 100644 graphics/exported/equipment/voidhawkengine.png create mode 100644 src/core/equipments/Engines.spec.ts create mode 100644 src/core/equipments/Engines.ts delete mode 100644 src/core/equipments/RocketEngine.spec.ts delete mode 100644 src/core/equipments/RocketEngine.ts diff --git a/graphics/exported/equipment/ionthruster.png b/graphics/exported/equipment/ionthruster.png new file mode 100644 index 0000000000000000000000000000000000000000..1f1c1896c5f0c52f6bc1bd682821b1d16f5b78ed GIT binary patch literal 22490 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 MX?6uwY2p_9KhRZ0xc~qF literal 0 HcmV?d00001 diff --git a/graphics/ui/actions.svg b/graphics/ui/actions.svg index b60bb71..1a5411f 100644 --- a/graphics/ui/actions.svg +++ b/graphics/ui/actions.svg @@ -16,13 +16,29 @@ version="1.1" inkscape:version="0.92.1 r15371" sodipodi:docname="actions.svg" - inkscape:export-filename="/home/michael/workspace/perso/spacetac/graphics/exported/equipment/invertershield.png" + inkscape:export-filename="/home/michael/workspace/perso/spacetac/graphics/exported/equipment/voidhawkengine.png" inkscape:export-xdpi="90" inkscape:export-ydpi="90" viewBox="0 0 256 256" enable-background="new"> + + + + + @@ -819,6 +835,244 @@ stdDeviation="1.6714617" id="feGaussianBlur5574" /> + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + style="display:none"> + + + + + + + + + + + + + + + + + { - equipment.action = new MoveAction(equipment, resolveForLevel(distance_per_power, level)); + equipment.action = new MoveAction(equipment, resolveForLevel(distance_per_power, level), resolveForLevel(safety_distance, level)); }); } diff --git a/src/core/actions/MoveAction.spec.ts b/src/core/actions/MoveAction.spec.ts index afec4bc..34e9380 100644 --- a/src/core/actions/MoveAction.spec.ts +++ b/src/core/actions/MoveAction.spec.ts @@ -106,7 +106,7 @@ module TS.SpaceTac { expect(result).toEqual(Target.newFromLocation(12, 5)); }); - it("move exclusion radius is applied correctly over two ships", function () { + it("exclusion radius is applied correctly over two ships", function () { var battle = TestTools.createBattle(1, 2); var ship = battle.fleets[0].ships[0]; var enemy1 = battle.fleets[1].ships[0]; @@ -122,5 +122,24 @@ module TS.SpaceTac { var result = action.checkLocationTarget(ship, Target.newFromLocation(0, 110)); expect(result).toEqual(Target.newFromLocation(0, 65)); }); + + it("exclusion radius does not make the ship go back", function () { + var battle = TestTools.createBattle(1, 2); + var ship = battle.fleets[0].ships[0]; + var enemy1 = battle.fleets[1].ships[0]; + var enemy2 = battle.fleets[1].ships[1]; + TestTools.setShipAP(ship, 100); + enemy1.setArenaPosition(0, 50); + enemy2.setArenaPosition(0, 80); + + var action = new MoveAction(new Equipment()); + action.distance_per_power = 1000; + action.safety_distance = 60; + + let result = action.checkLocationTarget(ship, Target.newFromLocation(0, 100)); + expect(result).toBeNull(); + result = action.checkLocationTarget(ship, Target.newFromLocation(0, 140)); + expect(result).toEqual(Target.newFromLocation(0, 140)); + }); }); } diff --git a/src/core/actions/MoveAction.ts b/src/core/actions/MoveAction.ts index 4b7dd73..50e4dd2 100644 --- a/src/core/actions/MoveAction.ts +++ b/src/core/actions/MoveAction.ts @@ -10,11 +10,11 @@ module TS.SpaceTac { // Equipment cannot be null (engine) equipment: Equipment - constructor(equipment: Equipment, distance_per_power = 0) { + constructor(equipment: Equipment, distance_per_power = 0, safety_distance = 120) { super("move", "Move", true, equipment); this.distance_per_power = distance_per_power; - this.safety_distance = 120; + this.safety_distance = safety_distance; } checkCannotBeApplied(ship: Ship, remaining_ap: number | null = null): string | null { @@ -70,7 +70,13 @@ module TS.SpaceTac { let ships = imaterialize(ifilter(battle.iships(true), s => s !== ship)); ships = ships.sort((a, b) => cmp(a.getDistanceTo(ship), b.getDistanceTo(ship), true)); ships.forEach(s => { - target = target.moveOutOfCircle(s.arena_x, s.arena_y, this.safety_distance, ship.arena_x, ship.arena_y); + let new_target = target.moveOutOfCircle(s.arena_x, s.arena_y, this.safety_distance, ship.arena_x, ship.arena_y); + if (target != new_target && s.getDistanceTo(ship) < this.safety_distance) { + // Already inside the nearest ship's exclusion area + target = Target.newFromLocation(ship.arena_x, ship.arena_y); + } else { + target = new_target; + } }); } return target; @@ -85,10 +91,10 @@ module TS.SpaceTac { return target.constraintInRange(ship.arena_x, ship.arena_y, max_distance); } - checkLocationTarget(ship: Ship, target: Target): Target { + checkLocationTarget(ship: Ship, target: Target): Target | null { target = this.applyReachableRange(ship, target); target = this.applyExclusion(ship, target); - return target; + return target.getDistanceTo(ship.location) > 0 ? target : null; } protected customApply(ship: Ship, target: Target) { @@ -96,7 +102,7 @@ module TS.SpaceTac { } getEffectsDescription(): string { - return `Move: ${this.distance_per_power}km per power point`; + return `Move: ${this.distance_per_power}km per power point (safety: ${this.safety_distance}km)`; } } } diff --git a/src/core/equipments/Engines.spec.ts b/src/core/equipments/Engines.spec.ts new file mode 100644 index 0000000..0ba7bd6 --- /dev/null +++ b/src/core/equipments/Engines.spec.ts @@ -0,0 +1,99 @@ +module TS.SpaceTac.Equipments { + describe("Engines", function () { + it("generates RocketEngine based on level", function () { + let template = new RocketEngine(); + + let equipment = template.generate(1); + expect(equipment.requirements).toEqual({ "skill_materials": 1 }); + expect(equipment.effects).toEqual([new AttributeEffect("maneuvrability", 2)]); + expect(equipment.cooldown).toEqual(new Cooldown(2, 0)); + expect(equipment.action).toEqual(new MoveAction(equipment, 200)); + expect(equipment.price).toEqual(120); + + equipment = template.generate(2); + expect(equipment.requirements).toEqual({ "skill_materials": 2 }); + expect(equipment.effects).toEqual([new AttributeEffect("maneuvrability", 4)]); + expect(equipment.cooldown).toEqual(new Cooldown(2, 0)); + expect(equipment.action).toEqual(new MoveAction(equipment, 220)); + expect(equipment.price).toEqual(320); + + equipment = template.generate(3); + expect(equipment.requirements).toEqual({ "skill_materials": 3 }); + expect(equipment.effects).toEqual([new AttributeEffect("maneuvrability", 6)]); + expect(equipment.cooldown).toEqual(new Cooldown(2, 0)); + expect(equipment.action).toEqual(new MoveAction(equipment, 240)); + expect(equipment.price).toEqual(720); + + equipment = template.generate(10); + expect(equipment.requirements).toEqual({ "skill_materials": 10 }); + expect(equipment.effects).toEqual([new AttributeEffect("maneuvrability", 20)]); + expect(equipment.cooldown).toEqual(new Cooldown(2, 0)); + expect(equipment.action).toEqual(new MoveAction(equipment, 380)); + expect(equipment.price).toEqual(9120); + }); + + it("generates IonEngine based on level", function () { + let template = new IonEngine(); + + let equipment = template.generate(1); + expect(equipment.requirements).toEqual({ "skill_photons": 1 }); + expect(equipment.effects).toEqual([new AttributeEffect("maneuvrability", 1)]); + expect(equipment.cooldown).toEqual(new Cooldown(3, 1)); + expect(equipment.action).toEqual(new MoveAction(equipment, 120)); + expect(equipment.price).toEqual(150); + + equipment = template.generate(2); + expect(equipment.requirements).toEqual({ "skill_photons": 2 }); + expect(equipment.effects).toEqual([new AttributeEffect("maneuvrability", 2)]); + expect(equipment.cooldown).toEqual(new Cooldown(3, 1)); + expect(equipment.action).toEqual(new MoveAction(equipment, 135)); + expect(equipment.price).toEqual(380); + + equipment = template.generate(3); + expect(equipment.requirements).toEqual({ "skill_photons": 3 }); + expect(equipment.effects).toEqual([new AttributeEffect("maneuvrability", 3)]); + expect(equipment.cooldown).toEqual(new Cooldown(3, 1)); + expect(equipment.action).toEqual(new MoveAction(equipment, 150)); + expect(equipment.price).toEqual(840); + + equipment = template.generate(10); + expect(equipment.requirements).toEqual({ "skill_photons": 10 }); + expect(equipment.effects).toEqual([new AttributeEffect("maneuvrability", 10)]); + expect(equipment.cooldown).toEqual(new Cooldown(3, 1)); + expect(equipment.action).toEqual(new MoveAction(equipment, 255)); + expect(equipment.price).toEqual(10500); + }); + + it("generates VoidhawkEngine based on level", function () { + let template = new VoidhawkEngine(); + + let equipment = template.generate(1); + expect(equipment.requirements).toEqual({ "skill_gravity": 2 }); + expect(equipment.effects).toEqual([new AttributeEffect("maneuvrability", -5)]); + expect(equipment.cooldown).toEqual(new Cooldown(1, 0)); + expect(equipment.action).toEqual(new MoveAction(equipment, 2000, 250)); + expect(equipment.price).toEqual(340); + + equipment = template.generate(2); + expect(equipment.requirements).toEqual({ "skill_gravity": 4 }); + expect(equipment.effects).toEqual([new AttributeEffect("maneuvrability", -5)]); + expect(equipment.cooldown).toEqual(new Cooldown(1, 0)); + expect(equipment.action).toEqual(new MoveAction(equipment, 2000, 240)); + expect(equipment.price).toEqual(500); + + equipment = template.generate(3); + expect(equipment.requirements).toEqual({ "skill_gravity": 6 }); + expect(equipment.effects).toEqual([new AttributeEffect("maneuvrability", -4)]); + expect(equipment.cooldown).toEqual(new Cooldown(1, 0)); + expect(equipment.action).toEqual(new MoveAction(equipment, 2000, 230)); + expect(equipment.price).toEqual(820); + + equipment = template.generate(10); + expect(equipment.requirements).toEqual({ "skill_gravity": 20 }); + expect(equipment.effects).toEqual([new AttributeEffect("maneuvrability", 2)]); + expect(equipment.cooldown).toEqual(new Cooldown(1, 0)); + expect(equipment.action).toEqual(new MoveAction(equipment, 2000, 160)); + expect(equipment.price).toEqual(7540); + }); + }); +} diff --git a/src/core/equipments/Engines.ts b/src/core/equipments/Engines.ts new file mode 100644 index 0000000..67bd2cf --- /dev/null +++ b/src/core/equipments/Engines.ts @@ -0,0 +1,36 @@ +/// + +module TS.SpaceTac.Equipments { + export class RocketEngine extends LootTemplate { + constructor() { + super(SlotType.Engine, "Rocket Engine", "First-era conventional deep-space engine, based on gas exhausts pushed through a nozzle", 120); + + this.setSkillsRequirements({ "skill_materials": 1 }); + this.setCooldown(irepeat(2), 0); + this.addAttributeEffect("maneuvrability", 2); + this.addMoveAction(istep(200, irepeat(20))); + } + } + + export class IonEngine extends LootTemplate { + constructor() { + super(SlotType.Engine, "Ion Thruster", "Electric propulsion based on accelerating ions through an electrostatic grid", 150, 230); + + this.setSkillsRequirements({ "skill_photons": 1 }); + this.setCooldown(irepeat(3), irepeat(1)); + this.addAttributeEffect("maneuvrability", 1); + this.addMoveAction(istep(120, irepeat(15))); + } + } + + export class VoidhawkEngine extends LootTemplate { + constructor() { + super(SlotType.Engine, "VoidHawk Engine", "Mid-range gravity field warp generator, allowing to make small jumps", 340, 160); + + this.setSkillsRequirements({ "skill_gravity": 2 }); + this.setCooldown(irepeat(1), 0); + this.addAttributeEffect("maneuvrability", istep(-5, irepeat(0.8))); + this.addMoveAction(irepeat(2000), istep(250, irepeat(-10))); + } + } +} diff --git a/src/core/equipments/RocketEngine.spec.ts b/src/core/equipments/RocketEngine.spec.ts deleted file mode 100644 index fb0937a..0000000 --- a/src/core/equipments/RocketEngine.spec.ts +++ /dev/null @@ -1,27 +0,0 @@ -module TS.SpaceTac.Equipments { - describe("Rocket Engine", function () { - it("generates equipment based on level", function () { - let template = new RocketEngine(); - - let equipment = template.generate(1); - expect(equipment.requirements).toEqual({ "skill_photons": 1 }); - expect(equipment.effects).toEqual([new AttributeEffect("maneuvrability", 1)]); - expect(equipment.action).toEqual(new MoveAction(equipment, 200)); - - equipment = template.generate(2); - expect(equipment.requirements).toEqual({ "skill_photons": 2 }); - expect(equipment.effects).toEqual([new AttributeEffect("maneuvrability", 2)]); - expect(equipment.action).toEqual(new MoveAction(equipment, 220)); - - equipment = template.generate(3); - expect(equipment.requirements).toEqual({ "skill_photons": 3 }); - expect(equipment.effects).toEqual([new AttributeEffect("maneuvrability", 3)]); - expect(equipment.action).toEqual(new MoveAction(equipment, 240)); - - equipment = template.generate(10); - expect(equipment.requirements).toEqual({ "skill_photons": 10 }); - expect(equipment.effects).toEqual([new AttributeEffect("maneuvrability", 10)]); - expect(equipment.action).toEqual(new MoveAction(equipment, 380)); - }); - }); -} diff --git a/src/core/equipments/RocketEngine.ts b/src/core/equipments/RocketEngine.ts deleted file mode 100644 index a7c7d87..0000000 --- a/src/core/equipments/RocketEngine.ts +++ /dev/null @@ -1,14 +0,0 @@ -/// - -module TS.SpaceTac.Equipments { - export class RocketEngine extends LootTemplate { - constructor() { - super(SlotType.Engine, "Rocket Engine", "First-era conventional deep-space engine, based on gas exhausts pushed through a nozzle"); - - this.setSkillsRequirements({ "skill_photons": 1 }); - this.setCooldown(irepeat(2), 0); - this.addAttributeEffect("maneuvrability", 1); - this.addMoveAction(istep(200, irepeat(20))); - } - } -} diff --git a/src/ui/battle/ActionTooltip.spec.ts b/src/ui/battle/ActionTooltip.spec.ts index e366d55..629d094 100644 --- a/src/ui/battle/ActionTooltip.spec.ts +++ b/src/ui/battle/ActionTooltip.spec.ts @@ -21,7 +21,7 @@ module TS.SpaceTac.UI.Specs { ActionTooltip.fill(tooltip.getFiller(), ship, action1, 0); checkText((tooltip).container.content.children[1], "Engine"); checkText((tooltip).container.content.children[2], "Cost: 1 power per 0km"); - checkText((tooltip).container.content.children[3], "Move: 0km per power point"); + checkText((tooltip).container.content.children[3], "Move: 0km per power point (safety: 120km)"); checkText((tooltip).container.content.children[4], "[ 1 ]"); tooltip.hide();