From 44fdad6bff1bfbfa62f8c77af6dbc33dcb564ea7 Mon Sep 17 00:00:00 2001 From: Yanick Champoux Date: Thu, 11 May 2023 15:48:21 -0400 Subject: [PATCH 1/3] add heavy missiles to the printShip --- .../Weaponry/Weapon/HeavyMissile/index.svelte | 72 +++++++++++++++++++ .../ShipEdit/Weaponry/Weapon/index.svelte | 2 + src/lib/shipDux/weaponry/weapons.ts | 10 +++ src/lib/store/ship/weaponry/rules.ts | 36 +++++++++- 4 files changed, 119 insertions(+), 1 deletion(-) create mode 100644 src/lib/components/ShipEdit/Weaponry/Weapon/HeavyMissile/index.svelte diff --git a/src/lib/components/ShipEdit/Weaponry/Weapon/HeavyMissile/index.svelte b/src/lib/components/ShipEdit/Weaponry/Weapon/HeavyMissile/index.svelte new file mode 100644 index 0000000..989666f --- /dev/null +++ b/src/lib/components/ShipEdit/Weaponry/Weapon/HeavyMissile/index.svelte @@ -0,0 +1,72 @@ +heavy missile + +
+ setFirstArc(detail)} + /> +
+ + + + + + + + diff --git a/src/lib/components/ShipEdit/Weaponry/Weapon/index.svelte b/src/lib/components/ShipEdit/Weaponry/Weapon/index.svelte index ad06add..c330b45 100644 --- a/src/lib/components/ShipEdit/Weaponry/Weapon/index.svelte +++ b/src/lib/components/ShipEdit/Weaponry/Weapon/index.svelte @@ -19,6 +19,7 @@ import Needle from "./Needle.svelte"; import Graser from "./Graser/index.svelte"; import Torpedo from "./Torpedo/index.svelte"; + import Missile from "./HeavyMissile/index.svelte"; const component = { beam: Beam, @@ -28,6 +29,7 @@ needle: Needle, graser: Graser, torpedo: Torpedo, + heavyMissile: Missile, }; export let reqs = {}; diff --git a/src/lib/shipDux/weaponry/weapons.ts b/src/lib/shipDux/weaponry/weapons.ts index 3a0f98d..bdb974a 100644 --- a/src/lib/shipDux/weaponry/weapons.ts +++ b/src/lib/shipDux/weaponry/weapons.ts @@ -35,6 +35,16 @@ export const weaponTypes = [ reqs: { mass: 2, cost: 6 }, initial: { arc: "F" }, }, + { + name: "heavy missile", + type: "missile", + reqs: missileReqs, + initial: { + arcs: ["FS", "F", "FP"], + extended: false, + multiState: false, + }, + }, ]; const weaponsSlice = createSlice({ diff --git a/src/lib/store/ship/weaponry/rules.ts b/src/lib/store/ship/weaponry/rules.ts index 99c4e4d..001ad74 100644 --- a/src/lib/store/ship/weaponry/rules.ts +++ b/src/lib/store/ship/weaponry/rules.ts @@ -27,6 +27,13 @@ type Scattergun = { type: "scattergun" }; type Needle = { type: "needle"; arc: Arc }; +type HeavyMissile = { + type: "heavyMissile"; + arcs: Arc[]; + extended: boolean; + multiStage: boolean; +}; + type Graser = { type: "graser"; weaponClass: 1 | 2 | 3; @@ -46,7 +53,8 @@ export type Weapon = | Scattergun | Needle | Graser - | Torpedo; + | Torpedo + | HeavyMissile; export const weaponTypes = [ { @@ -120,6 +128,17 @@ export const weaponTypes = [ reqs: { mass: 2, cost: 6 }, initial: { arc: "F", type: "needle" }, }, + { + name: "heavy missile", + type: "heavyMissile", + reqs: missileReqs, + initial: { + arcs: ["FP", "F", "FS"], + extended: false, + multiStage: false, + type: "heavyMissile", + }, + }, ]; export function weaponReqs(weapon): Reqs { @@ -213,6 +232,21 @@ function graserReqs({ weaponClass, arcs }: Graser) { }; } +function missileReqs({ extended, multiStage }: HeavyMissile): Reqs { + let mass = 2; + let cost = 6; + if (extended) { + mass += 1; + cost += 3; + } + if (multiStage) { + mass += 2; + cost *= 2; + } + + return { cost, mass }; +} + function torpedoReqs({ weaponClass, arcs }: Torpedo): Reqs { let mass: number = 4; From 87b93469b291bcdc1d8ed1aeaba9fff8be890db8 Mon Sep 17 00:00:00 2001 From: Yanick Champoux Date: Thu, 11 May 2023 16:18:19 -0400 Subject: [PATCH 2/3] add heavy missiles to the printShip --- .../Weapons/HeavyMissile/index.svelte | 52 ++++++++++++++ .../PrintShip/Weapons/HeavyMissiles.svelte | 18 +++++ .../print/PrintShip/Weapons/printComps.js | 2 + .../export/print/PrintShip/index.svelte | 10 ++- static/icons/heavy-missile.svg | 67 +++++++++++++++++++ 5 files changed, 148 insertions(+), 1 deletion(-) create mode 100644 src/routes/(editor)/export/print/PrintShip/Weapons/HeavyMissile/index.svelte create mode 100644 src/routes/(editor)/export/print/PrintShip/Weapons/HeavyMissiles.svelte create mode 100644 static/icons/heavy-missile.svg diff --git a/src/routes/(editor)/export/print/PrintShip/Weapons/HeavyMissile/index.svelte b/src/routes/(editor)/export/print/PrintShip/Weapons/HeavyMissile/index.svelte new file mode 100644 index 0000000..5729720 --- /dev/null +++ b/src/routes/(editor)/export/print/PrintShip/Weapons/HeavyMissile/index.svelte @@ -0,0 +1,52 @@ +
+ + + +
+ {#if extended} +
extended range
+ {/if} + {#if multiStage} +
multi-stage
+ {/if} +
+
+ + + + diff --git a/src/routes/(editor)/export/print/PrintShip/Weapons/HeavyMissiles.svelte b/src/routes/(editor)/export/print/PrintShip/Weapons/HeavyMissiles.svelte new file mode 100644 index 0000000..3574ce0 --- /dev/null +++ b/src/routes/(editor)/export/print/PrintShip/Weapons/HeavyMissiles.svelte @@ -0,0 +1,18 @@ +
+ {#each heavyMissiles as w} + + {/each} +
+ + + + diff --git a/src/routes/(editor)/export/print/PrintShip/Weapons/printComps.js b/src/routes/(editor)/export/print/PrintShip/Weapons/printComps.js index 2f82b89..24d059c 100644 --- a/src/routes/(editor)/export/print/PrintShip/Weapons/printComps.js +++ b/src/routes/(editor)/export/print/PrintShip/Weapons/printComps.js @@ -5,6 +5,7 @@ import Scattergun from "./Scattergun.svelte"; import Needlebeam from "./Needlebeam.svelte"; import Graser from "./Graser/index.svelte"; import Torpedo from "./Torpedo/index.svelte"; +import HeavyMissile from "./HeavyMissile/index.svelte"; export default { torpedo: Torpedo, @@ -14,4 +15,5 @@ export default { pds: PDS, scattergun: Scattergun, needle: Needlebeam, + heavyMissile: HeavyMissile, }; diff --git a/src/routes/(editor)/export/print/PrintShip/index.svelte b/src/routes/(editor)/export/print/PrintShip/index.svelte index ddf0db6..fdc5f76 100644 --- a/src/routes/(editor)/export/print/PrintShip/index.svelte +++ b/src/routes/(editor)/export/print/PrintShip/index.svelte @@ -5,6 +5,8 @@