From 666be4547268a2436cfc4992f212c43eab3097d1 Mon Sep 17 00:00:00 2001 From: Yanick Champoux Date: Wed, 3 May 2023 16:39:49 -0400 Subject: [PATCH] torpedo --- misc/SSD Icons/{new3.svg => torpedo.svg} | 0 .../ShipEdit/Weaponry/Weapon/Arc.svelte | 2 +- .../Weaponry/Weapon/Torpedo/index.svelte | 98 +++++++++++++++++++ .../ShipEdit/Weaponry/Weapon/index.svelte | 2 + src/lib/store/ship/weaponry/rules.ts | 48 ++++++++- .../print/PrintShip/Identification.svelte | 5 +- .../Weapons/Torpedo/index.story.svelte | 9 ++ .../PrintShip/Weapons/Torpedo/index.svelte | 49 ++++++++++ .../print/PrintShip/Weapons/printComps.js | 2 + 9 files changed, 209 insertions(+), 6 deletions(-) rename misc/SSD Icons/{new3.svg => torpedo.svg} (100%) create mode 100644 src/lib/components/ShipEdit/Weaponry/Weapon/Torpedo/index.svelte create mode 100644 src/routes/export/print/PrintShip/Weapons/Torpedo/index.story.svelte create mode 100644 src/routes/export/print/PrintShip/Weapons/Torpedo/index.svelte diff --git a/misc/SSD Icons/new3.svg b/misc/SSD Icons/torpedo.svg similarity index 100% rename from misc/SSD Icons/new3.svg rename to misc/SSD Icons/torpedo.svg diff --git a/src/lib/components/ShipEdit/Weaponry/Weapon/Arc.svelte b/src/lib/components/ShipEdit/Weaponry/Weapon/Arc.svelte index 47a73a0..555740d 100644 --- a/src/lib/components/ShipEdit/Weaponry/Weapon/Arc.svelte +++ b/src/lib/components/ShipEdit/Weaponry/Weapon/Arc.svelte @@ -1,5 +1,5 @@ - + + + diff --git a/src/lib/components/ShipEdit/Weaponry/Weapon/index.svelte b/src/lib/components/ShipEdit/Weaponry/Weapon/index.svelte index 77fbb26..ad06add 100644 --- a/src/lib/components/ShipEdit/Weaponry/Weapon/index.svelte +++ b/src/lib/components/ShipEdit/Weaponry/Weapon/index.svelte @@ -18,6 +18,7 @@ import Scattergun from "./Scattergun.svelte"; import Needle from "./Needle.svelte"; import Graser from "./Graser/index.svelte"; + import Torpedo from "./Torpedo/index.svelte"; const component = { beam: Beam, @@ -26,6 +27,7 @@ scattergun: Scattergun, needle: Needle, graser: Graser, + torpedo: Torpedo, }; export let reqs = {}; diff --git a/src/lib/store/ship/weaponry/rules.ts b/src/lib/store/ship/weaponry/rules.ts index 3c3d024..99c4e4d 100644 --- a/src/lib/store/ship/weaponry/rules.ts +++ b/src/lib/store/ship/weaponry/rules.ts @@ -33,7 +33,20 @@ type Graser = { arcs: Arc[]; }; -export type Weapon = Beam | Submunition | PDS | Scattergun | Needle | Graser; +type Torpedo = { + type: "torpedo"; + weaponClass: 1 | 2 | 3 | 4; + arcs: Arc[]; +}; + +export type Weapon = + | Beam + | Submunition + | PDS + | Scattergun + | Needle + | Graser + | Torpedo; export const weaponTypes = [ { @@ -67,6 +80,20 @@ export const weaponTypes = [ }, ], }, + { + type: "torpedo", + name: "torpedo", + reqs: torpedoReqs, + initial: { + type: "torpedo", + weaponClass: 1, + arcs: ["F"], + } as any as Torpedo, + options: { + maxClass: 4, + nbrArcs: [1, 2, 3, "broadside"], + }, + }, { type: "submunition", name: "submunition pack", @@ -153,7 +180,7 @@ function beamReqs({ weaponClass, arcs }: Beam) { }; } -function graserReqs({ weaponClass, arcs }: Beam) { +function graserReqs({ weaponClass, arcs }: Graser) { let mass: number; if (weaponClass === 1) { @@ -185,3 +212,20 @@ function graserReqs({ weaponClass, arcs }: Beam) { cost: 4 * mass, }; } + +function torpedoReqs({ weaponClass, arcs }: Torpedo): Reqs { + let mass: number = 4; + + if (isBroadside(arcs)) { + mass += 2; + } else { + mass += arcs.length - 1; + } + + mass = mass * Math.pow(2, weaponClass - 1); + + return { + mass, + cost: 3 * mass, + }; +} diff --git a/src/routes/export/print/PrintShip/Identification.svelte b/src/routes/export/print/PrintShip/Identification.svelte index c9a7087..0abe34f 100644 --- a/src/routes/export/print/PrintShip/Identification.svelte +++ b/src/routes/export/print/PrintShip/Identification.svelte @@ -10,15 +10,14 @@ {shipType}
- {cost} paid   {mass} weight + {reqs.cost} paid   {reqs.mass} weight
diff --git a/src/routes/export/print/PrintShip/Weapons/printComps.js b/src/routes/export/print/PrintShip/Weapons/printComps.js index af00c95..2f82b89 100644 --- a/src/routes/export/print/PrintShip/Weapons/printComps.js +++ b/src/routes/export/print/PrintShip/Weapons/printComps.js @@ -4,8 +4,10 @@ import PDS from "./PDS.svelte"; import Scattergun from "./Scattergun.svelte"; import Needlebeam from "./Needlebeam.svelte"; import Graser from "./Graser/index.svelte"; +import Torpedo from "./Torpedo/index.svelte"; export default { + torpedo: Torpedo, graser: Graser, beam: Beam, submunition: Submunition,