aotds-docks/src/lib/components/ShipEdit/Weaponry/Weapon/index.svelte

133 lines
2.4 KiB
Svelte
Raw Normal View History

2022-03-07 04:11:17 +00:00
<ShipItem {...reqs}>
<div class="weapon_row">
2023-04-20 15:54:18 +00:00
<a on:click={remove}><i>Delete</i> </a>
2023-04-08 17:47:00 +00:00
2023-05-14 21:51:26 +00:00
<svelte:component
this={component[type]}
{...specs}
{nbrMissileMagazines}
on:change={update}
/>
2022-03-07 04:11:17 +00:00
</div>
</ShipItem>
<script>
import { getContext } from "svelte";
import Arc from "./Arc.svelte";
2023-03-27 17:19:46 +00:00
import ShipItem from "$lib/components/ShipItem.svelte";
import Field from "$lib/components/Field.svelte";
2023-04-08 17:47:00 +00:00
import Beam from "./Beam/index.svelte";
import Submunition from "./Submunition.svelte";
import PointDefenceSystem from "./PDS.svelte";
import Scattergun from "./Scattergun.svelte";
2022-03-07 04:11:17 +00:00
import Needle from "./Needle.svelte";
2023-05-02 17:29:57 +00:00
import Graser from "./Graser/index.svelte";
2023-05-03 20:39:49 +00:00
import Torpedo from "./Torpedo/index.svelte";
2023-05-11 19:48:21 +00:00
import Missile from "./HeavyMissile/index.svelte";
2023-05-12 14:48:53 +00:00
import SalvoMissileRack from "./SalvoMissileRack.svelte";
2023-05-14 21:51:26 +00:00
import SalvoMissileLauncher from "./SML/index.svelte";
2022-03-07 04:11:17 +00:00
const component = {
2023-04-08 17:47:00 +00:00
beam: Beam,
submunition: Submunition,
pds: PointDefenceSystem,
scattergun: Scattergun,
needle: Needle,
2023-05-02 17:29:57 +00:00
graser: Graser,
2023-05-03 20:39:49 +00:00
torpedo: Torpedo,
2023-05-11 19:48:21 +00:00
heavyMissile: Missile,
2023-05-12 14:48:53 +00:00
smr: SalvoMissileRack,
2023-05-14 21:51:26 +00:00
sml: SalvoMissileLauncher,
2022-03-07 04:11:17 +00:00
};
2023-04-08 17:47:00 +00:00
export let reqs = {};
export let specs = {};
2022-03-07 04:11:17 +00:00
export let id;
2023-05-14 21:51:26 +00:00
export let nbrMissileMagazines = 0;
2022-03-07 04:11:17 +00:00
2023-04-08 17:47:00 +00:00
const api = getContext("api");
2022-03-07 04:11:17 +00:00
2023-04-08 17:47:00 +00:00
$: type = specs.type;
2022-03-07 04:11:17 +00:00
2023-04-08 17:47:00 +00:00
const remove = () => api?.dispatch?.removeWeapon?.(id);
2022-03-07 04:11:17 +00:00
const update = ({ detail }) => {
2023-04-08 17:47:00 +00:00
console.log({ id, type });
api?.dispatch?.setWeapon?.(id, {
2022-03-07 04:11:17 +00:00
type,
...detail,
});
};
</script>
<style>
2023-04-08 17:47:00 +00:00
button {
width: inherit;
}
2022-03-07 04:11:17 +00:00
.weapon {
display: flex;
align-items: center;
}
.weapon > * {
margin-right: 2em;
}
.arcs {
display: grid;
grid-template-rows: 1fr 1fr 1fr 1fr;
grid-template-columns: 1fr 1fr 1fr 1fr;
align-items: center;
justify-items: center;
width: 6em;
}
.arc input {
margin: 0px;
}
.arc.F {
grid-column: 2 / span 2;
grid-row: 1;
}
.arc.FS {
grid-column: 1;
grid-row: 1 / span 2;
}
.arc.FP {
grid-column: 4;
grid-row: 1 / span 2;
}
.arc.AS {
grid-column: 1;
grid-row: 3 / span 2;
}
.arc.AP {
grid-column: 4;
grid-row: 3 / span 2;
}
.arc.A {
grid-column: 2 / span 2;
grid-row: 4;
}
.add-weapon {
display: block;
}
.weapon_row {
display: flex;
align-items: center;
}
.weapon_row > :global(*) {
margin-right: 2em;
}
</style>