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 {