diff --git a/src/dux/weapons/rules.js b/src/dux/weapons/rules.js
deleted file mode 100644
index 52d0633..0000000
--- a/src/dux/weapons/rules.js
+++ /dev/null
@@ -1,9 +0,0 @@
-
-
-const is_broadside = arcs => {
- if( arcs.length !== 4 ) return false;
-
- // that'd be A or F
- return !arcs.some( a => a.length === 1 );
-}
-
diff --git a/src/lib/components/ShipEdit/Weaponry/Weapon/Beam/index.svelte b/src/lib/components/ShipEdit/Weaponry/Weapon/Beam/index.svelte
new file mode 100644
index 0000000..8e031d3
--- /dev/null
+++ b/src/lib/components/ShipEdit/Weaponry/Weapon/Beam/index.svelte
@@ -0,0 +1,83 @@
+
+
+
+
+
+
+
+
+
+
+ setArcs(detail)} />
+
+
diff --git a/src/lib/components/ShipEdit/Weaponry/Weapon/index.svelte b/src/lib/components/ShipEdit/Weaponry/Weapon/index.svelte
index 17081d3..dc8965a 100644
--- a/src/lib/components/ShipEdit/Weaponry/Weapon/index.svelte
+++ b/src/lib/components/ShipEdit/Weaponry/Weapon/index.svelte
@@ -19,14 +19,14 @@
import Arc from "./Arc.svelte";
import ShipItem from "$lib/components/ShipItem/index.svelte";
import Field from "$lib/components/Field/index.svelte";
- /* import Beam from "./Beam/index.svelte"; */
+ import Beam from "./Beam/index.svelte";
import Submunition from "./Submunition.svelte";
import PointDefenceSystem from "./PDS.svelte";
import Scattergun from "./Scattergun.svelte";
import Needle from "./Needle.svelte";
const component = {
- /* beam: Beam, */
+ beam: Beam,
submunition: Submunition,
pds: PointDefenceSystem,
scattergun: Scattergun,
@@ -41,10 +41,10 @@
$: type = weapon.type;
- $: console.log(weapon);
const remove = () => ship.dispatch.removeWeapon(id);
const update = ({ detail }) => {
+ console.log({id,type})
ship.dispatch.setWeapon({
id,
type,
diff --git a/src/lib/components/ShipEdit/Weaponry/Weaponry.stories.svelte b/src/lib/components/ShipEdit/Weaponry/Weaponry.stories.svelte
index 35be883..4072200 100644
--- a/src/lib/components/ShipEdit/Weaponry/Weaponry.stories.svelte
+++ b/src/lib/components/ShipEdit/Weaponry/Weaponry.stories.svelte
@@ -21,6 +21,7 @@ import { readable, get, derived } from "svelte/store";
const store = weaponryDux.createStore();
const state = readable(store.getState(), (set) => {
store.subscribe(() => {
+ console.log(store.getState());
set(store.getState());
});
});
diff --git a/src/lib/shipDux/weaponry/weapons.js b/src/lib/shipDux/weaponry/weapons.js
index 2ecb71b..6aa6167 100644
--- a/src/lib/shipDux/weaponry/weapons.js
+++ b/src/lib/shipDux/weaponry/weapons.js
@@ -4,7 +4,9 @@ import u from "updeep";
const reqs = { cost: 0, mass: 0 };
export const weaponTypes = [
- { name: 'beam', type: 'beam', reqs: beam_cost_mass },
+ { name: 'beam', type: 'beam', reqs: beam_cost_mass, initial: {
+ weaponClass: 1
+ }},
{ name: 'submunition pack', type: 'submunition', reqs: { mass:1, cost:3 },
initial: { arc: 'F' }
},
@@ -23,8 +25,20 @@ const dux = new Updux({
},
});
-dux.setMutation('setWeapon', ({id,...rest}) =>
- u.map( u.if( (w) => w.id === id, { ...rest }))
+dux.setMutation('setWeapon', ({id,...rest}) => state => {
+console.log(id,rest,state);
+ state = u.map( u.if( (w) => w.id === id,
+ weapon => {
+ return {
+ id,
+ ...rest,
+ reqs: weaponReqs(rest),
+ }
+ } ), state );
+ console.log(state);
+ return state;
+
+}
);
dux.setMutation('removeWeapon', id => state => [
@@ -32,13 +46,14 @@ dux.setMutation('removeWeapon', id => state => [
]);
dux.setMutation('addWeapon', type => state => {
+ const initial = weaponTypes.find(w => w.type === type ).initial;
return [
...state,
{
id: state.length === 0 ? 1 : state[state.length -1]+1,
type,
- reqs: weaponReqs({type}),
- ...weaponTypes.find(w => w.type === type ).initial,
+ reqs: weaponReqs({type,...initial}),
+ ...initial,
}
]
});
@@ -54,21 +69,30 @@ function weaponReqs(weapon) {
return reqs;
}
-function beam_cost_mass({weapon_class, arcs}) {
+const isBroadside = arcs => {
+ if( arcs.length !== 4 ) return false;
+
+ // that'd be A or F
+ return !arcs.some( a => a.length === 1 );
+}
+
+function beam_cost_mass({weaponClass, arcs}) {
+ console.log({weaponClass,arcs})
let mass;
- if( weapon_class === 1 ) {
+
+ if( weaponClass === 1 ) {
mass = 1;
}
- if( weapon_class == 2 ) {
+ if( weaponClass === 2 ) {
mass = 2 + (arcs.length > 3 ? 1 : 0);
}
- if( weapon_class == 3 ) {
+ if( weaponClass == 3 ) {
mass = 4;
- if( is_broadside(arcs) ) {
+ if( isBroadside(arcs) ) {
mass += 2;
}
else {
@@ -76,10 +100,10 @@ function beam_cost_mass({weapon_class, arcs}) {
}
}
- if( weapon_class == 4 ) {
+ if( weaponClass == 4 ) {
mass = 8;
- if( is_broadside(arcs) ) {
+ if( isBroadside(arcs) ) {
mass += 4;
}
else {