diff --git a/CHANGELOG.yml b/CHANGELOG.yml index e1ee642..754345c 100644 --- a/CHANGELOG.yml +++ b/CHANGELOG.yml @@ -4,6 +4,10 @@ project: with_stats: true ticket_url: null releases: + - version: NEXT + changes: + - desc: add SMRs + type: feat - version: 3.1.0 changes: - desc: add version and changelog to the about section diff --git a/src/lib/components/ShipEdit/Weaponry/Weapon/SalvoMissileRack.svelte b/src/lib/components/ShipEdit/Weaponry/Weapon/SalvoMissileRack.svelte new file mode 100644 index 0000000..08b5b46 --- /dev/null +++ b/src/lib/components/ShipEdit/Weaponry/Weapon/SalvoMissileRack.svelte @@ -0,0 +1,66 @@ +salvo missile rack + +
+ setFirstArc(detail)} + /> +
+ + + + + + diff --git a/src/lib/components/ShipEdit/Weaponry/Weapon/index.svelte b/src/lib/components/ShipEdit/Weaponry/Weapon/index.svelte index c330b45..c1b2815 100644 --- a/src/lib/components/ShipEdit/Weaponry/Weapon/index.svelte +++ b/src/lib/components/ShipEdit/Weaponry/Weapon/index.svelte @@ -20,6 +20,7 @@ import Graser from "./Graser/index.svelte"; import Torpedo from "./Torpedo/index.svelte"; import Missile from "./HeavyMissile/index.svelte"; + import SalvoMissileRack from "./SalvoMissileRack.svelte"; const component = { beam: Beam, @@ -30,6 +31,7 @@ graser: Graser, torpedo: Torpedo, heavyMissile: Missile, + smr: SalvoMissileRack, }; export let reqs = {}; diff --git a/src/lib/store/ship/weaponry/rules.ts b/src/lib/store/ship/weaponry/rules.ts index 001ad74..e4184c4 100644 --- a/src/lib/store/ship/weaponry/rules.ts +++ b/src/lib/store/ship/weaponry/rules.ts @@ -34,6 +34,12 @@ type HeavyMissile = { multiStage: boolean; }; +type SalvoMissileRack = { + type: "salvoMissileRack"; + arcs: Arc[]; + extended: boolean; +}; + type Graser = { type: "graser"; weaponClass: 1 | 2 | 3; @@ -139,6 +145,16 @@ export const weaponTypes = [ type: "heavyMissile", }, }, + { + name: "salvo missile rack", + type: "smr", + reqs: smrReqs, + initial: { + arcs: ["FP", "F", "FS"], + extended: false, + type: "smr", + }, + }, ]; export function weaponReqs(weapon): Reqs { @@ -247,6 +263,15 @@ function missileReqs({ extended, multiStage }: HeavyMissile): Reqs { return { cost, mass }; } +function smrReqs({ extended }: SalvoMissileRack): Reqs { + let mass = 4; + if (extended) mass += 1; + return { + mass, + cost: 3 * mass, + }; +} + function torpedoReqs({ weaponClass, arcs }: Torpedo): Reqs { let mass: number = 4; diff --git a/src/routes/(editor)/export/print/PrintShip/Weapons/SMR/index.svelte b/src/routes/(editor)/export/print/PrintShip/Weapons/SMR/index.svelte new file mode 100644 index 0000000..c6a495f --- /dev/null +++ b/src/routes/(editor)/export/print/PrintShip/Weapons/SMR/index.svelte @@ -0,0 +1,36 @@ +
+ + + +
+ {#if extended} +
extended range
+ {/if} +
+
+ + + + diff --git a/src/routes/(editor)/export/print/PrintShip/Weapons/SMR/index.test.js b/src/routes/(editor)/export/print/PrintShip/Weapons/SMR/index.test.js new file mode 100644 index 0000000..58f7065 --- /dev/null +++ b/src/routes/(editor)/export/print/PrintShip/Weapons/SMR/index.test.js @@ -0,0 +1,12 @@ +import { render } from "@testing-library/svelte"; +import SMR from "./index.svelte"; + +test("basic", () => { + const { queryByText } = render(SMR, { + props: { + extended: true, + }, + }); + + expect(queryByText("extended range")).toBeTruthy(); +}); diff --git a/src/routes/(editor)/export/print/PrintShip/Weapons/printComps.js b/src/routes/(editor)/export/print/PrintShip/Weapons/printComps.js index 24d059c..516a706 100644 --- a/src/routes/(editor)/export/print/PrintShip/Weapons/printComps.js +++ b/src/routes/(editor)/export/print/PrintShip/Weapons/printComps.js @@ -6,6 +6,7 @@ import Needlebeam from "./Needlebeam.svelte"; import Graser from "./Graser/index.svelte"; import Torpedo from "./Torpedo/index.svelte"; import HeavyMissile from "./HeavyMissile/index.svelte"; +import SalvoMissileRack from "./SMR/index.svelte"; export default { torpedo: Torpedo, @@ -16,4 +17,5 @@ export default { scattergun: Scattergun, needle: Needlebeam, heavyMissile: HeavyMissile, + smr: SalvoMissileRack, }; diff --git a/src/routes/(editor)/export/print/PrintShip/index.svelte b/src/routes/(editor)/export/print/PrintShip/index.svelte index fdc5f76..2562d1a 100644 --- a/src/routes/(editor)/export/print/PrintShip/index.svelte +++ b/src/routes/(editor)/export/print/PrintShip/index.svelte @@ -5,7 +5,15 @@