diff --git a/.gitignore b/.gitignore
index 7e3be73..7d5a785 100644
--- a/.gitignore
+++ b/.gitignore
@@ -7,3 +7,9 @@ node_modules
.vercel_build_output/
package-lock.json
.svench
+
+.DS_STORE
+.cache
+.temp
+node_modules/
+dist/yarn-error.log
diff --git a/.storybook/main.js b/.storybook/main.js
index 444611d..cbe87f7 100644
--- a/.storybook/main.js
+++ b/.storybook/main.js
@@ -1,12 +1,47 @@
-const path = require('path');
+const path = require("path");
+const preprocess = require("svelte-preprocess");
module.exports = {
- addons: ['@storybook/addon-actions/register'],
- stories: [ '../src/**/*stories.js' ],
- webpackFinal: (config) => {
- config.resolve.alias['~'] = path.resolve(__dirname, '../src/');
- config.resolve.alias['~C'] = path.resolve(__dirname, '../src/components/');
+ core: { builder: "storybook-builder-vite" },
+ staticDirs: ["../static", "../pictures"],
+ stories: [
+ "../src/**/*.stories.mdx",
+ "../src/**/*.stories.svelte",
+ "../src/**/stories.svelte",
+ ],
+ addons: [
+ "@storybook/addon-essentials",
+ "@storybook/addon-svelte-csf",
+ ],
+ framework: "@storybook/svelte",
+ svelteOptions: {
+ preprocess: preprocess(),
+ },
+ async viteFinal(config, { configType }) {
- return config;
- }
+ if(!config.resolve.alias) config.resolve.alias = {};
+ // customize the Vite config here
+ config.resolve.alias.$lib = path.resolve(__dirname, "../src/lib/");
+ config.resolve.alias.$app = path.resolve(__dirname, "../fake/app/");
+
+ config.resolve.dedupe = ["@storybook/client-api"];
+
+ // return the customized config
+ return config;
+ },
+ webpackFinal: async (config) => {
+ return {
+ ...config,
+ resolve: {
+ ...config.resolve,
+ alias: {
+ ...config.resolve?.alias,
+ $app: path.resolve("./fake/app"),
+ "\\$lib": path.resolve(__dirname, "../src/lib/"),
+ $lib: path.resolve(__dirname, "../src/lib/"),
+ "\\$app/env": path.resolve(__dirname, "../fake/app/env.js"),
+ },
+ },
+ };
+ },
};
diff --git a/.storybook/package.json b/.storybook/package.json
new file mode 100644
index 0000000..5bbefff
--- /dev/null
+++ b/.storybook/package.json
@@ -0,0 +1,3 @@
+{
+ "type": "commonjs"
+}
diff --git a/.storybook/preview.js b/.storybook/preview.js
new file mode 100644
index 0000000..fe480ff
--- /dev/null
+++ b/.storybook/preview.js
@@ -0,0 +1,11 @@
+import "$lib/style/index.js";
+
+export const parameters = {
+ actions: { argTypesRegex: "^on[A-Z].*" },
+ controls: {
+ matchers: {
+ color: /(background|color)$/i,
+ date: /Date$/,
+ },
+ },
+};
diff --git a/.vitebook/App.svelte b/.vitebook/App.svelte
new file mode 100644
index 0000000..ae1b2b7
--- /dev/null
+++ b/.vitebook/App.svelte
@@ -0,0 +1,6 @@
+
+
+
diff --git a/.vitebook/config.js b/.vitebook/config.js
new file mode 100644
index 0000000..7bc7675
--- /dev/null
+++ b/.vitebook/config.js
@@ -0,0 +1,31 @@
+import { svelte } from "@sveltejs/vite-plugin-svelte";
+import { clientPlugin, defineConfig } from "@vitebook/client/node";
+import { defaultThemePlugin } from "@vitebook/theme-default/node";
+import preprocess from "svelte-preprocess";
+
+export default defineConfig({
+ include: ["src/**/*.story.svelte"],
+ alias: {
+ $app: "/node_modules/@sveltejs/kit/assets/app",
+ $lib: "/src/lib",
+ },
+ plugins: [
+ clientPlugin({ appFile: "App.svelte" }),
+ defaultThemePlugin(),
+ svelte({
+ compilerOptions: {
+ hydratable: true,
+ },
+ extensions: [".svelte"],
+ // Consult https://github.com/sveltejs/svelte-preprocess for more information
+ // about preprocessors.
+ preprocess: preprocess(),
+ }),
+ ],
+ site: {
+ title: "",
+ description: "",
+ /** @type {(import('@vitebook/theme-default/node').DefaultThemeConfig} */
+ theme: {},
+ },
+});
diff --git a/.vitebook/index.html b/.vitebook/index.html
new file mode 100644
index 0000000..a027c25
--- /dev/null
+++ b/.vitebook/index.html
@@ -0,0 +1,18 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/.vitebook/public/404.svg b/.vitebook/public/404.svg
new file mode 100644
index 0000000..7f86508
--- /dev/null
+++ b/.vitebook/public/404.svg
@@ -0,0 +1,5 @@
+
diff --git a/.vitebook/public/apple-touch-icon.png b/.vitebook/public/apple-touch-icon.png
new file mode 100644
index 0000000..60128d8
Binary files /dev/null and b/.vitebook/public/apple-touch-icon.png differ
diff --git a/.vitebook/public/favicon-16x16.png b/.vitebook/public/favicon-16x16.png
new file mode 100644
index 0000000..1ff4ea4
Binary files /dev/null and b/.vitebook/public/favicon-16x16.png differ
diff --git a/.vitebook/public/favicon-32x32.png b/.vitebook/public/favicon-32x32.png
new file mode 100644
index 0000000..852b0ad
Binary files /dev/null and b/.vitebook/public/favicon-32x32.png differ
diff --git a/.vitebook/public/favicon.ico b/.vitebook/public/favicon.ico
new file mode 100644
index 0000000..63f6e3f
Binary files /dev/null and b/.vitebook/public/favicon.ico differ
diff --git a/.vitebook/public/logo-192x192.png b/.vitebook/public/logo-192x192.png
new file mode 100644
index 0000000..eec91f2
Binary files /dev/null and b/.vitebook/public/logo-192x192.png differ
diff --git a/.vitebook/public/logo-512x512.png b/.vitebook/public/logo-512x512.png
new file mode 100644
index 0000000..50ef1dd
Binary files /dev/null and b/.vitebook/public/logo-512x512.png differ
diff --git a/.vitebook/public/logo.svg b/.vitebook/public/logo.svg
new file mode 100644
index 0000000..2fd73d6
--- /dev/null
+++ b/.vitebook/public/logo.svg
@@ -0,0 +1,4 @@
+
diff --git a/.vitebook/public/manifest.json b/.vitebook/public/manifest.json
new file mode 100644
index 0000000..457791e
--- /dev/null
+++ b/.vitebook/public/manifest.json
@@ -0,0 +1,20 @@
+{
+ "short_name": "",
+ "name": " Site",
+ "icons": [
+ {
+ "src": "logo-192x192.png",
+ "type": "image/png",
+ "sizes": "192x192"
+ },
+ {
+ "src": "logo-512x512.png",
+ "type": "image/png",
+ "sizes": "512x512"
+ }
+ ],
+ "start_url": ".",
+ "display": "standalone",
+ "theme_color": "#ffc107",
+ "background_color": "#212121"
+}
diff --git a/.vitebook/public/robots.txt b/.vitebook/public/robots.txt
new file mode 100644
index 0000000..e9e57dc
--- /dev/null
+++ b/.vitebook/public/robots.txt
@@ -0,0 +1,3 @@
+# https://www.robotstxt.org/robotstxt.html
+User-agent: *
+Disallow:
diff --git a/.vitebook/theme/index.js b/.vitebook/theme/index.js
new file mode 100644
index 0000000..3986997
--- /dev/null
+++ b/.vitebook/theme/index.js
@@ -0,0 +1,3 @@
+import Theme from "@vitebook/theme-default";
+
+export default Theme;
diff --git a/_templates/generator/help/index.ejs.t b/_templates/generator/help/index.ejs.t
new file mode 100644
index 0000000..90a29af
--- /dev/null
+++ b/_templates/generator/help/index.ejs.t
@@ -0,0 +1,5 @@
+---
+message: |
+ hygen {bold generator new} --name [NAME] --action [ACTION]
+ hygen {bold generator with-prompt} --name [NAME] --action [ACTION]
+---
\ No newline at end of file
diff --git a/_templates/generator/new/hello.ejs.t b/_templates/generator/new/hello.ejs.t
new file mode 100644
index 0000000..5680d96
--- /dev/null
+++ b/_templates/generator/new/hello.ejs.t
@@ -0,0 +1,18 @@
+---
+to: _templates/<%= name %>/<%= action || 'new' %>/hello.ejs.t
+---
+---
+to: app/hello.js
+---
+const hello = ```
+Hello!
+This is your first hygen template.
+
+Learn what it can do here:
+
+https://github.com/jondot/hygen
+```
+
+console.log(hello)
+
+
diff --git a/_templates/generator/with-prompt/hello.ejs.t b/_templates/generator/with-prompt/hello.ejs.t
new file mode 100644
index 0000000..ba6abc5
--- /dev/null
+++ b/_templates/generator/with-prompt/hello.ejs.t
@@ -0,0 +1,18 @@
+---
+to: _templates/<%= name %>/<%= action || 'new' %>/hello.ejs.t
+---
+---
+to: app/hello.js
+---
+const hello = ```
+Hello!
+This is your first prompt based hygen template.
+
+Learn what it can do here:
+
+https://github.com/jondot/hygen
+```
+
+console.log(hello)
+
+
diff --git a/_templates/generator/with-prompt/prompt.js b/_templates/generator/with-prompt/prompt.js
new file mode 100644
index 0000000..76ea532
--- /dev/null
+++ b/_templates/generator/with-prompt/prompt.js
@@ -0,0 +1,14 @@
+---
+to: _templates/<%= name %>/<%= action || 'new' %>/prompt.js
+---
+
+// see types of prompts:
+// https://github.com/enquirer/enquirer/tree/master/examples
+//
+module.exports = [
+ {
+ type: 'input',
+ name: 'message',
+ message: "What's your message?"
+ }
+]
diff --git a/_templates/package.json b/_templates/package.json
new file mode 100644
index 0000000..5bbefff
--- /dev/null
+++ b/_templates/package.json
@@ -0,0 +1,3 @@
+{
+ "type": "commonjs"
+}
diff --git a/_templates/story/new/index.js b/_templates/story/new/index.js
new file mode 100644
index 0000000..5a3f060
--- /dev/null
+++ b/_templates/story/new/index.js
@@ -0,0 +1,13 @@
+const path = require('path');
+
+module.exports = {
+ params: ({ args }) => {
+
+ const storypath = args.path.replace( '.svelte', '.stories.svelte' );
+
+ const component = path.basename(args.path.replace('/index.svelte','')).replace('.svelte','');
+
+ const to = path.join(path.dirname(args.path), component + '.stories.svelte' );
+ return { storypath, component, to}
+ }
+}
diff --git a/_templates/story/new/stories.svelte.temp b/_templates/story/new/stories.svelte.temp
new file mode 100644
index 0000000..25911ce
--- /dev/null
+++ b/_templates/story/new/stories.svelte.temp
@@ -0,0 +1,21 @@
+---
+to: <%= to %>
+---
+} argTypes={{}} />
+
+
+
+
+
+ <<%= component %> />
+
+
+
+
diff --git a/fake/app/env.js b/fake/app/env.js
new file mode 100644
index 0000000..43dac6b
--- /dev/null
+++ b/fake/app/env.js
@@ -0,0 +1 @@
+export const browser = true;
diff --git a/package.json b/package.json
index 2f4b0e3..bf57761 100644
--- a/package.json
+++ b/package.json
@@ -6,32 +6,44 @@
"build": "svelte-kit build",
"preview": "svelte-kit preview",
"lint": "prettier --check . && eslint --ignore-path .gitignore .",
- "format": "prettier --write ."
+ "format": "prettier --write .",
+ "storybook": "storybook-server",
+ "vitebook:dev": "vitebook dev",
+ "vitebook:build": "vitebook build",
+ "vitebook:preview": "vitebook preview"
},
"devDependencies": {
- "@sveltejs/kit": "^1.0.0-next.115",
- "@sveltejs/vite-plugin-svelte": "^1.0.0-next.10",
- "eslint": "^7.22.0",
- "eslint-config-prettier": "^8.1.0",
- "eslint-plugin-svelte3": "^3.2.0",
- "prettier": "~2.2.1",
- "prettier-plugin-svelte": "^2.2.0",
- "svelte": "^3.34.0",
- "svench": "^0.2.0-14",
- "vite": "^2.3.2"
+ "@sveltejs/adapter-static": "^1.0.0-next.28",
+ "@sveltejs/kit": "^1.0.0-next.288",
+ "@sveltejs/vite-plugin-svelte": "^1.0.0-next.38",
+ "@vitebook/client": "^0.23.2",
+ "@vitebook/core": "^0.23.2",
+ "@vitebook/theme-default": "^0.23.2",
+ "eslint": "^8.10.0",
+ "eslint-config-prettier": "^8.4.0",
+ "eslint-plugin-svelte3": "^3.4.1",
+ "prettier": "~2.5.1",
+ "prettier-plugin-svelte": "^2.6.0",
+ "storybook-builder-vite": "0.1.21",
+ "svelte": "^3.46.4",
+ "vite": "^2.7.0"
},
"type": "module",
"dependencies": {
- "@sveltejs/adapter-node": "^1.0.0-next.18",
- "@sveltejs/adapter-static": "^1.0.0-next.13",
- "@yanick/updeep": "link:/home/yanick/work/javascript/updeep",
- "bulma": "^0.9.2",
+ "@storybook/addon-essentials": "^6.4.19",
+ "@storybook/addon-svelte-csf": "^1.1.0",
+ "@storybook/svelte": "^6.4.19",
+ "@sveltejs/adapter-node": "^1.0.0-next.0",
+ "chota": "^0.8.0",
"lodash": "^4.17.21",
- "redux": "^4.1.0",
- "reselect": "^4.0.0",
+ "redux": "^4.1.2",
+ "reselect": "^4.1.5",
"rollup-plugin-analyzer": "^4.0.0",
+ "svelte-chota": "^1.8.6",
+ "svelte-knobby": "^0.3.4",
"ts-action": "^11.0.0",
- "updux": "link:/home/yanick/work/javascript/updux/"
+ "updux": "link:/home/yanick/work/javascript/updux-js/",
+ "webpack": "5"
},
"prettier": {
"svelteSortOrder": "options-markup-scripts-styles",
diff --git a/src/components/Carrier/Squadron/index.svelte b/src/components/Carrier/Squadron/index.svelte
deleted file mode 100644
index d4aebde..0000000
--- a/src/components/Carrier/Squadron/index.svelte
+++ /dev/null
@@ -1,38 +0,0 @@
-
-
-
-
-
-
-
-
-
diff --git a/src/components/Carrier/stories.js b/src/components/Carrier/stories.js
deleted file mode 100644
index db72155..0000000
--- a/src/components/Carrier/stories.js
+++ /dev/null
@@ -1,20 +0,0 @@
-import { action } from '@storybook/addon-actions';
-
-import Carrier from './index.svelte';
-
-export default {
- title: 'Carrier',
-};
-
-export const basic = () => ({
- Component: Carrier,
- props: {
- bays: 3,
- squadrons: [
- { id: 1, type: "standard", ftl: false, nbr_fighters: 6 },
- { id: 2, type: "fast", ftl: false, nbr_fighters: 6 },
- { id: 3, type: "none", ftl: false, nbr_fighters: 6 },
- ],
- ship_change: action('ship_change'),
- },
-})
diff --git a/src/components/CostMass.svelte b/src/components/CostMass.svelte
deleted file mode 100644
index 425263a..0000000
--- a/src/components/CostMass.svelte
+++ /dev/null
@@ -1,21 +0,0 @@
-{ mass }
-{ cost }
-
-
-
-
diff --git a/src/components/Engine/index.svelte b/src/components/Engine/index.svelte
deleted file mode 100644
index eb02c32..0000000
--- a/src/components/Engine/index.svelte
+++ /dev/null
@@ -1,40 +0,0 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
diff --git a/src/components/Field/index.svelte b/src/components/Field/index.svelte
deleted file mode 100644
index 0a36d19..0000000
--- a/src/components/Field/index.svelte
+++ /dev/null
@@ -1,29 +0,0 @@
-
-{#if label}
-
-{/if}
-
-
-
-
-
-
-
-
diff --git a/src/components/Field/stories.js b/src/components/Field/stories.js
deleted file mode 100644
index 313c746..0000000
--- a/src/components/Field/stories.js
+++ /dev/null
@@ -1,12 +0,0 @@
-import Component from './index.svelte';
-import BasicStory from './BasicStory.svelte';
-
-import '../../../public/global.css';
-
-export default {
- title: 'Field'
-};
-
-export const basic = () => ({
- Component: BasicStory,
-});
diff --git a/src/components/Firecons.svelte b/src/components/Firecons.svelte
deleted file mode 100644
index 3c6ef71..0000000
--- a/src/components/Firecons.svelte
+++ /dev/null
@@ -1,20 +0,0 @@
-
-
-
-
-
-
-
-
-
diff --git a/src/components/Ftl/index.svelte b/src/components/Ftl/index.svelte
deleted file mode 100644
index c84f6e2..0000000
--- a/src/components/Ftl/index.svelte
+++ /dev/null
@@ -1,35 +0,0 @@
-
-
-
-
-
- {#each types as t (t)}
-
- {/each}
-
-
-
-
diff --git a/src/components/Ftl/stories.js b/src/components/Ftl/stories.js
deleted file mode 100644
index 72af859..0000000
--- a/src/components/Ftl/stories.js
+++ /dev/null
@@ -1,13 +0,0 @@
-export default {
- title: 'FTL Drive'
-};
-
-import Component from '.';
-import shipStore from '../../stores/ship.js';
-
-export const basic = () => ({
- Component,
- props: {
- ship: shipStore()
- }
-});
diff --git a/src/components/Header.svelte b/src/components/Header.svelte
deleted file mode 100644
index 657fc5c..0000000
--- a/src/components/Header.svelte
+++ /dev/null
@@ -1,28 +0,0 @@
-
-
-
diff --git a/src/components/Hull/Armour/Layer/index.svelte b/src/components/Hull/Armour/Layer/index.svelte
deleted file mode 100644
index 1d30b50..0000000
--- a/src/components/Hull/Armour/Layer/index.svelte
+++ /dev/null
@@ -1,24 +0,0 @@
-
-
-
-
-
-
-
-
diff --git a/src/components/Hull/Armour/index.svelte b/src/components/Hull/Armour/index.svelte
deleted file mode 100644
index 11b9228..0000000
--- a/src/components/Hull/Armour/index.svelte
+++ /dev/null
@@ -1,56 +0,0 @@
-
-
-
-
-
-
-
-
-
-
-
- {#each armour as layer ( layer.layer )}
-
- {/each}
-
-
-
-
-
-
-
-
-
-
diff --git a/src/components/Hull/Armour/stories.js b/src/components/Hull/Armour/stories.js
deleted file mode 100644
index e5f1a41..0000000
--- a/src/components/Hull/Armour/stories.js
+++ /dev/null
@@ -1,18 +0,0 @@
-import Armour from './index.svelte';
-
-export default {
- title: "Armour",
-};
-
-export const basic = () => ({
- Component: Armour,
- props: {
- armour: [
- { layer: 1, rating: 12, cost: 1, mass: 2 },
- { layer: 2, rating: 12, cost: 1, mass: 2 },
- ]
- },
- on: {
- ship_change: ({detail}) => console.log(detail)
- }
-});
diff --git a/src/components/Hull/Screens/index.svelte b/src/components/Hull/Screens/index.svelte
deleted file mode 100644
index ef3c905..0000000
--- a/src/components/Hull/Screens/index.svelte
+++ /dev/null
@@ -1,42 +0,0 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
diff --git a/src/components/Hull/Streamlining/index.svelte b/src/components/Hull/Streamlining/index.svelte
deleted file mode 100644
index 3dcb9e8..0000000
--- a/src/components/Hull/Streamlining/index.svelte
+++ /dev/null
@@ -1,38 +0,0 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
diff --git a/src/components/Hull/index.svelte b/src/components/Hull/index.svelte
deleted file mode 100644
index 20d34d4..0000000
--- a/src/components/Hull/index.svelte
+++ /dev/null
@@ -1,51 +0,0 @@
-
-
-
-
-
diff --git a/src/components/Output/Json.svelte b/src/components/Output/Json.svelte
deleted file mode 100644
index b7d86c1..0000000
--- a/src/components/Output/Json.svelte
+++ /dev/null
@@ -1,35 +0,0 @@
-
-
-
-
-
diff --git a/src/components/Output/Print/Hull/Armour/index.svelte b/src/components/Output/Print/Hull/Armour/index.svelte
deleted file mode 100644
index f0be2fa..0000000
--- a/src/components/Output/Print/Hull/Armour/index.svelte
+++ /dev/null
@@ -1,34 +0,0 @@
-
- {#each armour as layer (layer)}
-
- {#each _.range(layer.rating) as i (i) }
-
-
- {/each}
-
- {/each}
-
-
-
-
-
-
diff --git a/src/components/Output/Print/Hull/Integrity/index.svelte b/src/components/Output/Print/Hull/Integrity/index.svelte
deleted file mode 100644
index 830952a..0000000
--- a/src/components/Output/Print/Hull/Integrity/index.svelte
+++ /dev/null
@@ -1,72 +0,0 @@
-
- {#each rows as row,i (i)}
-
- {#each row as item,j (j)}
-
- {#if item}
-
- {/if}
-
- {/each}
-
- {/each}
-
-
-
-
-
-
diff --git a/src/components/Output/Print/Hull/Integrity/stories.js b/src/components/Output/Print/Hull/Integrity/stories.js
deleted file mode 100644
index 3d1d9a9..0000000
--- a/src/components/Output/Print/Hull/Integrity/stories.js
+++ /dev/null
@@ -1,23 +0,0 @@
-import Component from '.';
-
-export default {
- title: "printouts/hull/integrity"
-};
-
-export const basic = () => ({
- Component,
- props: {
- ship_mass: 50,
- rating: 14,
- advanced: false,
- }
-});
-
-export const advanced = () => ({
- Component,
- props: {
- ship_mass: 50,
- rating: 14,
- advanced: true,
- }
-});
diff --git a/src/components/Output/Print/Identification/index.svelte b/src/components/Output/Print/Identification/index.svelte
deleted file mode 100644
index ddb05b7..0000000
--- a/src/components/Output/Print/Identification/index.svelte
+++ /dev/null
@@ -1,44 +0,0 @@
-ship name:
-
-
-
{ship_class}-class, {ship_type}
-
-
-
-
-
-
-
-
-
-
diff --git a/src/components/Output/Print/MainSystems/stories.js b/src/components/Output/Print/MainSystems/stories.js
deleted file mode 100644
index 2b96e67..0000000
--- a/src/components/Output/Print/MainSystems/stories.js
+++ /dev/null
@@ -1,13 +0,0 @@
-import Component from '.';
-
-export default {
- title: "printouts/main_systems"
-};
-
-export const basic = () => ({
- Component,
- props: {
- ftl: 'standard',
- engine: 4,
- }
-})
diff --git a/src/components/Output/Print/Weapons/stories.js b/src/components/Output/Print/Weapons/stories.js
deleted file mode 100644
index c7778df..0000000
--- a/src/components/Output/Print/Weapons/stories.js
+++ /dev/null
@@ -1,33 +0,0 @@
-import Component from '.';
-
-export default {
- title: "printouts/weapons"
-};
-
-export const basic = () => ({
- Component,
- props: {
- "weapons": [
- {
- "weapon_type": "submunition",
- "arcs": [
- "F"
- ],
- "mass": 1,
- "cost": 3,
- "id": 1
- },
- {
- "weapon_type": "beam",
- "weapon_class": "2",
- "arcs": [
- "A",
- "AS",
- "FS"
- ],
- "mass": 2,
- "cost": 6,
- "id": 2
- }, ]
- }
-})
diff --git a/src/components/Output/Print/index.svelte b/src/components/Output/Print/index.svelte
deleted file mode 100644
index 8b47ed8..0000000
--- a/src/components/Output/Print/index.svelte
+++ /dev/null
@@ -1,53 +0,0 @@
-
-
-
-
-
diff --git a/src/components/Output/Print/sample.js b/src/components/Output/Print/sample.js
deleted file mode 100644
index 2ecdbf9..0000000
--- a/src/components/Output/Print/sample.js
+++ /dev/null
@@ -1,114 +0,0 @@
-export default {
- "ftl": {
- "mass": 0,
- "cost": 0,
- "type": "standard"
- },
- "engine": {
- "mass": 40,
- "cost": 80,
- "rating": 6,
- "advanced": false
- },
- "general": {
- "ship_class": "Deviant",
- "name": "",
- "ship_type": "Battleship",
- "mass": 132,
- "used_mass": 131,
- "cost": 415
- },
- "weaponry": {
- "firecons": {
- "nbr": 5,
- "mass": 5,
- "cost": 20
- },
- "weapons": [
- {
- "weapon_type": "submunition",
- "arcs": [
- "F"
- ],
- "mass": 1,
- "cost": 3,
- "id": 1
- },
- {
- "weapon_type": "beam",
- "weapon_class": "2",
- "arcs": [
- "A",
- "AS",
- "FS"
- ],
- "mass": 2,
- "cost": 6,
- "id": 2
- },
- {
- "weapon_type": "pds",
- "mass": 1,
- "cost": 3,
- "id": 3
- }
- ],
- "adfc": {
- "rating": 0,
- "cost": 0,
- "mass": 0
- }
- },
- "structure": {
- "mass": 0,
- "cost": 0,
- "hull": {
- "rating": 22,
- "advanced": false,
- "cost": 44,
- "mass": 22
- },
- "screens": {
- "standard": 2,
- "advanced": 1,
- "cost": 105,
- "mass": 35
- },
- "armour": [
- {
- "layer": 1,
- "rating": 7,
- "cost": 14,
- "mass": 14
- },
- {
- "layer": 2,
- "rating": 2,
- "cost": 8,
- "mass": 4
- },
- {
- "layer": 3,
- "rating": 0,
- "cost": 0,
- "mass": 0
- }
- ]
- },
- "cargo": {
- "space": 7,
- "cost": 0,
- "mass": 7
- },
- "streamlining": {
- "type": "none",
- "cost": 0,
- "mass": 0
- },
- "carrier": {
- "bays": 0,
- "cost": 0,
- "mass": 0,
- "squadrons": []
- }
-}
diff --git a/src/components/Output/Print/stories.js b/src/components/Output/Print/stories.js
deleted file mode 100644
index e494b3b..0000000
--- a/src/components/Output/Print/stories.js
+++ /dev/null
@@ -1,13 +0,0 @@
-import Print from './index.svelte';
-import sample from './sample';
-
-export default {
- title: "printouts"
-};
-
-export const basic = () => ({
- Component: Print,
- props: {
- ship: sample
- }
-});
diff --git a/src/components/Propulsion/index.svelte b/src/components/Propulsion/index.svelte
deleted file mode 100644
index 20a2a08..0000000
--- a/src/components/Propulsion/index.svelte
+++ /dev/null
@@ -1,18 +0,0 @@
-
-
-
-
diff --git a/src/components/ShipSpecs/Identification.svelte b/src/components/ShipSpecs/Identification.svelte
deleted file mode 100644
index 0cc0bbc..0000000
--- a/src/components/ShipSpecs/Identification.svelte
+++ /dev/null
@@ -1,47 +0,0 @@
-
-
-
-
-
-
-
-
-
-
-
diff --git a/src/components/Weapon/Arcs/index.svelte b/src/components/Weapon/Arcs/index.svelte
deleted file mode 100644
index 8600deb..0000000
--- a/src/components/Weapon/Arcs/index.svelte
+++ /dev/null
@@ -1,32 +0,0 @@
-
-
-
-
-
-
diff --git a/src/components/Weapon/Needle/index.svelte b/src/components/Weapon/Needle/index.svelte
deleted file mode 100644
index c0d658a..0000000
--- a/src/components/Weapon/Needle/index.svelte
+++ /dev/null
@@ -1,37 +0,0 @@
-
- click_arc(detail)} />
-
-
-
-
-
diff --git a/src/components/Weapon/Submunition/index.svelte b/src/components/Weapon/Submunition/index.svelte
deleted file mode 100644
index e8ceb4b..0000000
--- a/src/components/Weapon/Submunition/index.svelte
+++ /dev/null
@@ -1,37 +0,0 @@
-
- click_arc(detail)} />
-
-
-
-
-
diff --git a/src/components/Weapons/Add.svelte b/src/components/Weapons/Add.svelte
deleted file mode 100644
index 6bf67b6..0000000
--- a/src/components/Weapons/Add.svelte
+++ /dev/null
@@ -1,202 +0,0 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
{weapon.cost}
-
{weapon.mass}
-
-
-
-
-
-
diff --git a/src/components/Weapons/Arc.svelte b/src/components/Weapons/Arc.svelte
deleted file mode 100644
index 792a068..0000000
--- a/src/components/Weapons/Arc.svelte
+++ /dev/null
@@ -1,50 +0,0 @@
-
-
-
-
-
-
-
-
diff --git a/src/components/Weapons/stories.js b/src/components/Weapons/stories.js
deleted file mode 100644
index 4f49d42..0000000
--- a/src/components/Weapons/stories.js
+++ /dev/null
@@ -1,10 +0,0 @@
-import AddWeapon from './Add.svelte';
-
-export default {
- title: "add weapon",
-};
-
-export const beam = () => ({
- Component: AddWeapon,
-});
-
diff --git a/src/dux/index.js b/src/dux/index.js
index 3565298..2c234ca 100644
--- a/src/dux/index.js
+++ b/src/dux/index.js
@@ -5,15 +5,15 @@ import { createSelector } from "reselect";
import ftl from "./ftl";
import engine, { calc_drive_reqs } from "./engine";
-import weaponry from './weaponry';
+import weaponry from "./weaponry";
import { calc_ftl_reqs } from "./ftl/rules";
import { calc_ship_req } from "./utils";
-import { candidate_ship_types } from './ship_types';
-import structure from './structure';
-import cargo from './cargo';
-import streamlining from './streamlining';
-import carrier from './carrier';
-import { ceil } from './utils';
+import { candidate_ship_types } from "./ship_types";
+import structure from "./structure";
+import cargo from "./cargo";
+import streamlining from "./streamlining";
+import carrier from "./carrier";
+import { ceil } from "./utils";
const set_ship_mass = action("set_ship_mass", payload());
const set_name = action("set_name", payload());
@@ -21,31 +21,29 @@ const set_name = action("set_name", payload());
const set_ship_reqs = action("set_ship_reqs", payload());
const set_hull = action("set_hull", payload());
-const set_ship_type = action('set_ship_type',payload());
+const set_ship_type = action("set_ship_type", payload());
-const reset = action('reset' );
+const reset = action("reset");
const initial = {
- general: {
- ship_class: "",
- name: "",
- ship_type: "",
- mass: 10,
- used_mass: 0,
- cost: 10,
- },
- };
-
-console.log(Updux);
+ general: {
+ ship_class: "",
+ name: "",
+ ship_type: "",
+ mass: 10,
+ used_mass: 0,
+ cost: 10,
+ },
+};
const dux = new Updux({
subduxes: { ftl, engine, weaponry, structure, cargo, streamlining, carrier },
- initial
+ initial,
});
-dux.addMutation( reset, () => () => initial );
+dux.addMutation(reset, () => () => initial);
-dux.addMutation(set_hull, ({rating}) => (state) => {
+dux.addMutation(set_hull, ({ rating }) => (state) => {
return u.updateIn("structure.hull", {
cost: 2 * rating,
rating,
@@ -55,8 +53,8 @@ dux.addMutation(set_hull, ({rating}) => (state) => {
dux.addMutation(set_ship_mass, (mass) => u.updateIn("general", { mass }));
dux.addMutation(set_name, (name) => u.updateIn("general", { name }));
-dux.addMutation( action('set_ship_class',payload() ),
- ship_class => u.updateIn('general',{ship_class})
+dux.addMutation(action("set_ship_class", payload()), (ship_class) =>
+ u.updateIn("general", { ship_class })
);
dux.addMutation(set_ship_reqs, ({ cost, mass: used_mass }) =>
@@ -68,73 +66,54 @@ dux.addSubscription((store) =>
createSelector(calc_ship_req, (reqs) => store.dispatch(set_ship_reqs(reqs)))
);
+
dux.addSubscription((store) =>
createSelector(
- store => store.general.mass,
- store => store.streamlining.type,
- (ship_mass, streamlining ) => {
- const mass = ceil( ship_mass * (
- streamlining === 'none' ? 0
- : streamlining === 'partial' ? 5 : 10
- ) / 100 );
- const cost = 2 * mass;
+ (store) => store.general.mass,
+ (store) => store.general.ship_type,
+ (store) => store.carrier.bays,
+ (mass, type, bays) => {
+ console.log({ bays });
+ const candidates = candidate_ship_types(mass, bays > 0);
- store.dispatch( dux.actions.set_streamlining_cost_mass({cost,mass}) );
- }
+ console.log({ candidates });
+ if (candidates.length === 0) return;
+
+ if (candidates.find(({ name }) => name === type)) return;
+
+ store.dispatch(store.actions.set_ship_type(candidates[0].name));
+ }
)
);
-dux.addSubscription((store) =>
- createSelector(
- store => store.general.mass,
- store => store.general.ship_type,
- store => store.carrier.bays,
- (mass,type,bays) => {
- console.log({bays});
- const candidates = candidate_ship_types(mass,bays > 0);
-
- console.log({candidates});
- if( candidates.length === 0 ) return;
-
- if( candidates.find( ({name}) => name === type ) ) return;
-
- store.dispatch(
- store.actions.set_ship_type(
- candidates[0].name
- )
- )
-
- }
- )
-);
-
-dux.addMutation(set_ship_type, type => u.updateIn('general.ship_type',type) );
+dux.addMutation(set_ship_type, (type) => u.updateIn("general.ship_type", type));
dux.addSubscription((store) =>
createSelector(
[(ship) => ship.general.mass, (ship) => ship.ftl.type],
(ship_mass, type) =>
- store.dispatch(ftl.actions.set_ftl_reqs(calc_ftl_reqs(type,ship_mass)))
+ store.dispatch(ftl.actions.set_ftl_reqs(calc_ftl_reqs(type, ship_mass)))
)
);
-dux.addSubscription( store => createSelector(
- ship => ship.general.mass,
- ship => ship.structure.screens.standard,
- ship => ship.structure.screens.advanced,
- (mass,standard,advanced) => {
- console.log({
- mass, standard, advanced
- })
- const standard_mass = standard * Math.max(3,ceil( 0.05 * mass ));
- const advanced_mass = advanced * Math.max(4,ceil( 0.075 * mass ));
+dux.addSubscription((store) =>
+ createSelector(
+ (ship) => ship.general.mass,
+ (ship) => ship.structure.screens.standard,
+ (ship) => ship.structure.screens.advanced,
+ (mass, standard, advanced) => {
+ const standard_mass = standard * Math.max(3, ceil(0.05 * mass));
+ const advanced_mass = advanced * Math.max(4, ceil(0.075 * mass));
- store.dispatch( dux.actions.set_screens_reqs({
- mass: standard_mass + advanced_mass,
- cost: 3 * standard_mass + 4 * advanced_mass
- }));
+ store.dispatch(
+ dux.actions.set_screens_reqs({
+ mass: standard_mass + advanced_mass,
+ cost: 3 * standard_mass + 4 * advanced_mass,
+ })
+ );
}
-));
+ )
+);
dux.addSubscription((store) =>
createSelector(
@@ -150,18 +129,6 @@ dux.addSubscription((store) =>
)
);
-const calc_firecons_reqs = (nbr) => ({
- cost: 4 * nbr,
- mass: nbr,
-});
-
-const set_firecons = action("set_firecons", payload());
-dux.addMutation(set_firecons, (nbr) =>
- u.updateIn("weaponry.firecons", {
- nbr,
- ...calc_firecons_reqs(nbr),
- })
-);
export default dux.asDux;
diff --git a/src/dux/structure/screens/index.js b/src/dux/structure/screens/index.js
deleted file mode 100644
index 73a4a4e..0000000
--- a/src/dux/structure/screens/index.js
+++ /dev/null
@@ -1,18 +0,0 @@
-import Updux from "updux";
-import { action, payload } from "ts-action";
-import u from "@yanick/updeep";
-import { createSelector } from "reselect";
-
-const dux = new Updux({
- initial: {
- standard: 0, advanced: 0, cost: 0, mass: 0,
- }
-});
-
-const set_screens = action('set_screens', payload() );
-dux.addMutation(set_screens, payload => u.update(payload) );
-
-const set_screens_reqs = action('set_screens_reqs', payload() );
-dux.addMutation(set_screens_reqs, payload => u.update(payload) );
-
-export default dux.asDux;
diff --git a/src/dux/weaponry/adfc/index.js b/src/dux/weaponry/adfc/index.js
deleted file mode 100644
index 485557a..0000000
--- a/src/dux/weaponry/adfc/index.js
+++ /dev/null
@@ -1,17 +0,0 @@
-import Updux from "updux";
-import { action, payload } from "ts-action";
-import u from "@yanick/updeep";
-
-const dux = new Updux({
- initial: {
- rating: 0,
- cost: 0,
- mass: 0,
- },
-})
-
-dux.addMutation( action( 'set_adfc', payload() ), rating =>
- u.update({ rating, mass: 2 * rating, cost: 8 * rating })
-);
-
-export default dux.asDux;
diff --git a/src/dux/weapons/rules.js b/src/dux/weapons/rules.js
deleted file mode 100644
index 77d5c4d..0000000
--- a/src/dux/weapons/rules.js
+++ /dev/null
@@ -1,74 +0,0 @@
-
-export function weapon_cost_mass(weapon){
- let cost = 0;
- let mass = 0;
-
- if( weapon.weapon_type === 'beam' ) {
- return beam_cost_mass(weapon);
- }
-
- if( weapon.weapon_type == 'submunition' ) {
- return { mass: 1, cost: 3 };
- }
-
- if( weapon.weapon_type === 'pds' ) {
- return { mass: 1, cost: 3 };
- }
-
- if( weapon.weapon_type === 'scattergun' ) {
- return { mass: 1, cost: 4 };
- }
-
- if( weapon.weapon_type === 'needle' ) {
- return { mass: 2, cost: 6 };
- }
-
- return { cost, mass };
-}
-
-const is_broadside = arcs => {
- if( arcs.length !== 4 ) return false;
-
- // that'd be A or F
- return !arcs.some( a => a.length === 1 );
-}
-
-function beam_cost_mass({weapon_class, arcs}) {
- let mass;
- if( weapon_class === 1 ) {
- mass = 1;
- }
-
- if( weapon_class == 2 ) {
- mass = 2 + (arcs.length > 3 ? 1 : 0);
- }
-
-
- if( weapon_class == 3 ) {
- mass = 4;
-
- if( is_broadside(arcs) ) {
- mass += 2;
- }
- else {
- mass += arcs.length - 1;
- }
- }
-
- if( weapon_class == 4 ) {
- mass = 8;
-
- if( is_broadside(arcs) ) {
- mass += 4;
- }
- else {
- mass += 2*(arcs.length - 1);
- }
- }
-
- return {
- mass, cost: 3 * mass
- }
-
-
-}
diff --git a/src/global.d.ts b/src/global.d.ts
deleted file mode 100644
index 79d7d7f..0000000
--- a/src/global.d.ts
+++ /dev/null
@@ -1,3 +0,0 @@
-///
-///
-///
diff --git a/src/components/Notes.svelte b/src/lib/components/About.svelte
similarity index 62%
rename from src/components/Notes.svelte
rename to src/lib/components/About.svelte
index 5eb79ff..74a4977 100644
--- a/src/components/Notes.svelte
+++ b/src/lib/components/About.svelte
@@ -1,13 +1,5 @@
-
+
+
diff --git a/src/components/App.svelte b/src/lib/components/App-original.svelte
similarity index 94%
rename from src/components/App.svelte
rename to src/lib/components/App-original.svelte
index 9de857f..0493fba 100644
--- a/src/components/App.svelte
+++ b/src/lib/components/App-original.svelte
@@ -1,10 +1,5 @@
-
-
-
@@ -68,12 +61,7 @@
{#each weapons as weapon (weapon.id)}
-
+
{/each}
@@ -89,7 +77,6 @@
+
+
diff --git a/src/lib/components/Carrier/Carrier.story.svelte b/src/lib/components/Carrier/Carrier.story.svelte
new file mode 100644
index 0000000..446467c
--- /dev/null
+++ b/src/lib/components/Carrier/Carrier.story.svelte
@@ -0,0 +1,14 @@
+
+
+
diff --git a/src/components/Carrier/index.svelte b/src/lib/components/Carrier/index.svelte
similarity index 58%
rename from src/components/Carrier/index.svelte
rename to src/lib/components/Carrier/index.svelte
index cbdf0cd..e7321c9 100644
--- a/src/components/Carrier/index.svelte
+++ b/src/lib/components/Carrier/index.svelte
@@ -1,3 +1,4 @@
+
+
+Hey!
diff --git a/src/lib/components/Carrier/stories.js b/src/lib/components/Carrier/stories.js
new file mode 100644
index 0000000..e245b7b
--- /dev/null
+++ b/src/lib/components/Carrier/stories.js
@@ -0,0 +1,20 @@
+import { action } from "@storybook/addon-actions";
+
+import Carrier from "./index.svelte";
+
+export default {
+ title: "Carrier",
+};
+
+export const basic = () => ({
+ Component: Carrier,
+ props: {
+ bays: 3,
+ squadrons: [
+ { id: 1, type: "standard", ftl: false, nbr_fighters: 6 },
+ { id: 2, type: "fast", ftl: false, nbr_fighters: 6 },
+ { id: 3, type: "none", ftl: false, nbr_fighters: 6 },
+ ],
+ ship_change: action("ship_change"),
+ },
+});
diff --git a/src/lib/components/Cost.story.svelte b/src/lib/components/Cost.story.svelte
new file mode 100644
index 0000000..29d5557
--- /dev/null
+++ b/src/lib/components/Cost.story.svelte
@@ -0,0 +1,5 @@
+
+
+
diff --git a/src/components/Cost.svelte b/src/lib/components/Cost.svelte
similarity index 55%
rename from src/components/Cost.svelte
rename to src/lib/components/Cost.svelte
index dbdce51..cc3d237 100644
--- a/src/components/Cost.svelte
+++ b/src/lib/components/Cost.svelte
@@ -5,5 +5,8 @@
diff --git a/src/lib/components/CostMass.svelte b/src/lib/components/CostMass.svelte
new file mode 100644
index 0000000..d463387
--- /dev/null
+++ b/src/lib/components/CostMass.svelte
@@ -0,0 +1,29 @@
+{mass}
+{cost}
+
+
+
+
diff --git a/src/components/Field/BasicStory.svelte b/src/lib/components/Field/BasicStory.svelte
similarity index 55%
rename from src/components/Field/BasicStory.svelte
rename to src/lib/components/Field/BasicStory.svelte
index e20b928..e1ee11e 100644
--- a/src/components/Field/BasicStory.svelte
+++ b/src/lib/components/Field/BasicStory.svelte
@@ -1,5 +1,5 @@
diff --git a/src/lib/components/Field/index.svelte b/src/lib/components/Field/index.svelte
new file mode 100644
index 0000000..764bd93
--- /dev/null
+++ b/src/lib/components/Field/index.svelte
@@ -0,0 +1,32 @@
+
+ {#if label}
+
+ {/if}
+
+
+
+
+
+
+
+
diff --git a/src/lib/components/Field/stories.js b/src/lib/components/Field/stories.js
new file mode 100644
index 0000000..941369f
--- /dev/null
+++ b/src/lib/components/Field/stories.js
@@ -0,0 +1,12 @@
+import Component from "./index.svelte";
+import BasicStory from "./BasicStory.svelte";
+
+import "../../../public/global.css";
+
+export default {
+ title: "Field",
+};
+
+export const basic = () => ({
+ Component: BasicStory,
+});
diff --git a/src/lib/components/Firecons.svelte b/src/lib/components/Firecons.svelte
new file mode 100644
index 0000000..416659d
--- /dev/null
+++ b/src/lib/components/Firecons.svelte
@@ -0,0 +1,21 @@
+
+
+
+
+
+
+
+
+
diff --git a/src/lib/components/Ftl/index.svelte b/src/lib/components/Ftl/index.svelte
new file mode 100644
index 0000000..2f7bda2
--- /dev/null
+++ b/src/lib/components/Ftl/index.svelte
@@ -0,0 +1,34 @@
+
+
+ {#each types as t (t)}
+
+ {/each}
+
+
+
+
+
+
diff --git a/src/lib/components/Ftl/stories.js b/src/lib/components/Ftl/stories.js
new file mode 100644
index 0000000..d49e876
--- /dev/null
+++ b/src/lib/components/Ftl/stories.js
@@ -0,0 +1,13 @@
+export default {
+ title: "FTL Drive",
+};
+
+import Component from ".";
+import shipStore from "../../stores/ship.js";
+
+export const basic = () => ({
+ Component,
+ props: {
+ ship: shipStore(),
+ },
+});
diff --git a/src/lib/components/Header.svelte b/src/lib/components/Header.svelte
new file mode 100644
index 0000000..26ecf9b
--- /dev/null
+++ b/src/lib/components/Header.svelte
@@ -0,0 +1,76 @@
+
+
+
+
+ editor
+ json view
+ print view
+
+
+
+
+
+
+
+
+
+
diff --git a/src/components/Mass.svelte b/src/lib/components/Mass.svelte
similarity index 100%
rename from src/components/Mass.svelte
rename to src/lib/components/Mass.svelte
diff --git a/src/lib/components/Output/Json.svelte b/src/lib/components/Output/Json.svelte
new file mode 100644
index 0000000..e17d9dc
--- /dev/null
+++ b/src/lib/components/Output/Json.svelte
@@ -0,0 +1,49 @@
+
+
+
+
+
+
+
diff --git a/src/components/Output/Json.svench b/src/lib/components/Output/Json.svench
similarity index 100%
rename from src/components/Output/Json.svench
rename to src/lib/components/Output/Json.svench
diff --git a/src/lib/components/Output/Print/Hull/Armor.svelte b/src/lib/components/Output/Print/Hull/Armor.svelte
new file mode 100644
index 0000000..e2b4c63
--- /dev/null
+++ b/src/lib/components/Output/Print/Hull/Armor.svelte
@@ -0,0 +1,32 @@
+
+ {#each armor as layer,i (i)}
+
+ {#each Array.from({length: layer}) as j}
+
+ {/each}
+
+ {/each}
+
+
+
+
+
diff --git a/src/lib/components/Output/Print/Hull/Armour.stories.svelte b/src/lib/components/Output/Print/Hull/Armour.stories.svelte
new file mode 100644
index 0000000..a4fe341
--- /dev/null
+++ b/src/lib/components/Output/Print/Hull/Armour.stories.svelte
@@ -0,0 +1,22 @@
+
+
+
+
+
+
+
+
+
diff --git a/src/lib/components/Output/Print/Hull/Integrity/Integrity.stories.svelte b/src/lib/components/Output/Print/Hull/Integrity/Integrity.stories.svelte
new file mode 100644
index 0000000..c855685
--- /dev/null
+++ b/src/lib/components/Output/Print/Hull/Integrity/Integrity.stories.svelte
@@ -0,0 +1,20 @@
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/src/lib/components/Output/Print/Hull/Integrity/index.svelte b/src/lib/components/Output/Print/Hull/Integrity/index.svelte
new file mode 100644
index 0000000..7bd339d
--- /dev/null
+++ b/src/lib/components/Output/Print/Hull/Integrity/index.svelte
@@ -0,0 +1,66 @@
+
+ {#each rows as row, i (i)}
+
+ {#each row as threshold, j (j)}
+
+ {#if threshold}
+
+ {/if}
+
+ {/each}
+
+ {/each}
+
+
+
+
+
diff --git a/src/lib/components/Output/Print/Hull/Integrity/stories.js b/src/lib/components/Output/Print/Hull/Integrity/stories.js
new file mode 100644
index 0000000..bef2dab
--- /dev/null
+++ b/src/lib/components/Output/Print/Hull/Integrity/stories.js
@@ -0,0 +1,23 @@
+import Component from ".";
+
+export default {
+ title: "printouts/hull/integrity",
+};
+
+export const basic = () => ({
+ Component,
+ props: {
+ ship_mass: 50,
+ rating: 14,
+ advanced: false,
+ },
+});
+
+export const advanced = () => ({
+ Component,
+ props: {
+ ship_mass: 50,
+ rating: 14,
+ advanced: true,
+ },
+});
diff --git a/src/components/Output/Print/Hull/index.svelte b/src/lib/components/Output/Print/Hull/index.svelte
similarity index 70%
rename from src/components/Output/Print/Hull/index.svelte
rename to src/lib/components/Output/Print/Hull/index.svelte
index d0506ea..52b32c5 100644
--- a/src/components/Output/Print/Hull/index.svelte
+++ b/src/lib/components/Output/Print/Hull/index.svelte
@@ -8,8 +8,8 @@
+
+
diff --git a/src/components/Output/Print/MainSystems/index.svelte b/src/lib/components/Output/Print/MainSystems/index.svelte
similarity index 59%
rename from src/components/Output/Print/MainSystems/index.svelte
rename to src/lib/components/Output/Print/MainSystems/index.svelte
index c08e1bc..209cb39 100644
--- a/src/components/Output/Print/MainSystems/index.svelte
+++ b/src/lib/components/Output/Print/MainSystems/index.svelte
@@ -1,6 +1,5 @@
-
- {#if ftl !== "none" }
+ {#if ftl !== "none"}
{/if}
@@ -8,13 +7,16 @@
{engine}
{/if}
-
-
+
+
+
diff --git a/src/components/Output/Print/Weapons/Beam/index.svelte b/src/lib/components/Output/Print/Weapons/Beam/index.svelte
similarity index 70%
rename from src/components/Output/Print/Weapons/Beam/index.svelte
rename to src/lib/components/Output/Print/Weapons/Beam/index.svelte
index 1ffdc98..b42a6ec 100644
--- a/src/components/Output/Print/Weapons/Beam/index.svelte
+++ b/src/lib/components/Output/Print/Weapons/Beam/index.svelte
@@ -1,14 +1,14 @@
-
- {weapon_class}
+
+ {weaponClass}
diff --git a/src/components/Output/Print/Weapons/index.svelte b/src/lib/components/Output/Print/Weapons/index.svelte
similarity index 58%
rename from src/components/Output/Print/Weapons/index.svelte
rename to src/lib/components/Output/Print/Weapons/index.svelte
index b8e1e85..307318d 100644
--- a/src/components/Output/Print/Weapons/index.svelte
+++ b/src/lib/components/Output/Print/Weapons/index.svelte
@@ -1,21 +1,17 @@
-
- {#each beams as beam}
-
- {/each}
+ {#each beams as beam}
+
+ {/each}
-
-
diff --git a/src/lib/components/Output/Print/sample.js b/src/lib/components/Output/Print/sample.js
new file mode 100644
index 0000000..bd9352c
--- /dev/null
+++ b/src/lib/components/Output/Print/sample.js
@@ -0,0 +1,105 @@
+export default {
+ "identification": {
+ "shipType": "Scout",
+ "shipClass": "Blah",
+ "isCarrier": false,
+ "mass": 10
+ },
+ "propulsion": {
+ "drive": {
+ "reqs": {
+ "cost": 2,
+ "mass": 1
+ },
+ "rating": 3,
+ "advanced": true
+ },
+ "ftl": {
+ "reqs": {
+ "cost": 0,
+ "mass": 0
+ },
+ "type": "none"
+ }
+ },
+ "structure": {
+ "hull": {
+ "reqs": {
+ "cost": 2,
+ "mass": 1
+ },
+ "rating": 10,
+ "min": 1,
+ "max": 10
+ },
+ "screens": {
+ "reqs": {
+ "cost": 0,
+ "mass": 0
+ },
+ "standard": 3,
+ "advanced": 2
+ },
+ "cargo": {
+ "reqs": {
+ "cost": 0,
+ "mass": 0
+ },
+ "space": 0
+ },
+ "streamlining": {
+ "reqs": {
+ "cost": 0,
+ "mass": 0
+ },
+ "type": "none"
+ },
+ "armor": {
+ "layers": [],
+ "reqs": {
+ "mass": 0,
+ "cost": 0
+ }
+ }
+ },
+ "carrier": {
+ "reqs": {
+ "cost": 0,
+ "mass": 0
+ },
+ "bays": 0,
+ "squadrons": []
+ },
+ "weaponry": {
+ "weapons": [
+ {
+ "id": 1,
+ "type": "beam",
+ "reqs": {
+ "mass": 1,
+ "cost": 3
+ },
+ "weaponClass": 1
+ }
+ ],
+ "firecons": {
+ "stations": 1,
+ "reqs": {
+ "cost": 4,
+ "mass": 1
+ }
+ },
+ "adfc": {
+ "rating": 1,
+ "reqs": {
+ "cost": 8,
+ "mass": 2
+ }
+ }
+ },
+ "reqs": {
+ "cost": 19,
+ "mass": 10,
+ "usedMass": 6
+ }
+}
diff --git a/src/lib/components/Propulsion/index.svelte b/src/lib/components/Propulsion/index.svelte
new file mode 100644
index 0000000..26276dc
--- /dev/null
+++ b/src/lib/components/Propulsion/index.svelte
@@ -0,0 +1,14 @@
+
+
+
diff --git a/src/components/Ribbon.svelte b/src/lib/components/Ribbon.svelte
similarity index 100%
rename from src/components/Ribbon.svelte
rename to src/lib/components/Ribbon.svelte
diff --git a/src/components/Section/index.svelte b/src/lib/components/Section/index.svelte
similarity index 99%
rename from src/components/Section/index.svelte
rename to src/lib/components/Section/index.svelte
index 19f58d5..caf4f94 100644
--- a/src/components/Section/index.svelte
+++ b/src/lib/components/Section/index.svelte
@@ -7,7 +7,6 @@
diff --git a/src/lib/components/ShipEdit/Carrier/Carrier.stories.svelte b/src/lib/components/ShipEdit/Carrier/Carrier.stories.svelte
new file mode 100644
index 0000000..b17359f
--- /dev/null
+++ b/src/lib/components/ShipEdit/Carrier/Carrier.stories.svelte
@@ -0,0 +1,33 @@
+
+
+
+
+
+
+
+
+
+
+
diff --git a/src/lib/components/ShipEdit/Carrier/Squadron.svelte b/src/lib/components/ShipEdit/Carrier/Squadron.svelte
new file mode 100644
index 0000000..4b17645
--- /dev/null
+++ b/src/lib/components/ShipEdit/Carrier/Squadron.svelte
@@ -0,0 +1,36 @@
+
+
+
+
+
+
+
+
+
diff --git a/src/lib/components/ShipEdit/Carrier/index.svelte b/src/lib/components/ShipEdit/Carrier/index.svelte
new file mode 100644
index 0000000..53b8907
--- /dev/null
+++ b/src/lib/components/ShipEdit/Carrier/index.svelte
@@ -0,0 +1,34 @@
+
+
+
+
+
diff --git a/src/lib/components/ShipEdit/Identification/Identification.stories.svelte b/src/lib/components/ShipEdit/Identification/Identification.stories.svelte
new file mode 100644
index 0000000..a3d01ab
--- /dev/null
+++ b/src/lib/components/ShipEdit/Identification/Identification.stories.svelte
@@ -0,0 +1,22 @@
+
+
+
+
+
+
+
+
+
+
+
diff --git a/src/lib/components/ShipEdit/Identification/index.svelte b/src/lib/components/ShipEdit/Identification/index.svelte
new file mode 100644
index 0000000..6d79133
--- /dev/null
+++ b/src/lib/components/ShipEdit/Identification/index.svelte
@@ -0,0 +1,40 @@
+
+
+
+
+
+
+
+
+
+
diff --git a/src/dux/ship_types.js b/src/lib/components/ShipEdit/Identification/shipTypes.js
similarity index 75%
rename from src/dux/ship_types.js
rename to src/lib/components/ShipEdit/Identification/shipTypes.js
index f37b43b..19ad819 100644
--- a/src/dux/ship_types.js
+++ b/src/lib/components/ShipEdit/Identification/shipTypes.js
@@ -1,5 +1,5 @@
const ship_types = [
- { name: "Scout", mass: [4, 10], abbrev: "SC" },
+ { name: "Scout", mass: [0, 10], abbrev: "SC" },
{ name: "Courier", mass: [4, 10], abbrev: "SC" },
{ name: "Corvette", mass: [8, 16], abbrev: "CT" },
{ name: "Frigate", mass: [14, 28], abbrev: "FF" },
@@ -14,13 +14,15 @@ const ship_types = [
{ name: "Heavy Battleship", mass: [120, 160], abbrev: "BDN" },
{ name: "Dreadnought", mass: [140, 180], abbrev: "DN" },
{ name: "Superdreadnought", mass: [160, 300], abbrev: "SDN" },
- { name: "Escort Carrier", mass: [60, 140], abbrev: "CVE", carrier: true },
+ { name: "Escort Carrier", mass: [0, 140], abbrev: "CVE", carrier: true },
{ name: "Light Carrier", mass: [120, 180], abbrev: "CVL", carrier: true },
{ name: "Heavy Carrier", mass: [160, 300], abbrev: "CVH", carrier: true },
{ name: "Attack Carrier", mass: [150, 300], abbrev: "CVA", carrier: true },
];
-export function candidate_ship_types(mass = 0, carrier = false) {
- console.log({carrier});
- return ship_types.filter((c) => carrier == !!c.carrier).filter((c) => c.mass[0] <= mass).filter((c) => c.mass[1] >= mass);
+export function candidateShipTypes(mass = 0, carrier = false) {
+ return ship_types
+ .filter((c) => carrier == !!c.carrier)
+ .filter((c) => c.mass[0] <= mass)
+ .filter((c) => c.mass[1] >= mass);
}
diff --git a/src/lib/components/ShipEdit/Propulsion/Drive/Engine.stories.svelte b/src/lib/components/ShipEdit/Propulsion/Drive/Engine.stories.svelte
new file mode 100644
index 0000000..3e3fa70
--- /dev/null
+++ b/src/lib/components/ShipEdit/Propulsion/Drive/Engine.stories.svelte
@@ -0,0 +1,35 @@
+
+
+
+
+
+
+
+
+
+
+
diff --git a/src/lib/components/ShipEdit/Propulsion/Drive/index.svelte b/src/lib/components/ShipEdit/Propulsion/Drive/index.svelte
new file mode 100644
index 0000000..75d8eef
--- /dev/null
+++ b/src/lib/components/ShipEdit/Propulsion/Drive/index.svelte
@@ -0,0 +1,37 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/src/lib/components/ShipEdit/Propulsion/Ftl.svelte b/src/lib/components/ShipEdit/Propulsion/Ftl.svelte
new file mode 100644
index 0000000..cce4738
--- /dev/null
+++ b/src/lib/components/ShipEdit/Propulsion/Ftl.svelte
@@ -0,0 +1,32 @@
+
+
+ {#each types as t (t)}
+
+ {/each}
+
+
+
+
+
+
diff --git a/src/lib/components/ShipEdit/Propulsion/index.svelte b/src/lib/components/ShipEdit/Propulsion/index.svelte
new file mode 100644
index 0000000..b0077ef
--- /dev/null
+++ b/src/lib/components/ShipEdit/Propulsion/index.svelte
@@ -0,0 +1,12 @@
+
+
+
diff --git a/src/lib/components/ShipEdit/ShipCost.svelte b/src/lib/components/ShipEdit/ShipCost.svelte
new file mode 100644
index 0000000..5589309
--- /dev/null
+++ b/src/lib/components/ShipEdit/ShipCost.svelte
@@ -0,0 +1,87 @@
+
+
+
+
+
+
+ {#if withinBudget}
+ mass unused: {massUnused}
+ {:else}
+ excessive mass: {-massUnused}
+ {/if}
+
+
+
+
+
+
+ {cost}
+
+
+
+
+
+
diff --git a/src/lib/components/ShipEdit/ShipEdit.stories.svelte b/src/lib/components/ShipEdit/ShipEdit.stories.svelte
new file mode 100644
index 0000000..c1e743b
--- /dev/null
+++ b/src/lib/components/ShipEdit/ShipEdit.stories.svelte
@@ -0,0 +1,21 @@
+
+
+
+
+
+
+
+
+
+
+
diff --git a/src/lib/components/ShipEdit/Structure/Armor.svelte b/src/lib/components/ShipEdit/Structure/Armor.svelte
new file mode 100644
index 0000000..b4a3a45
--- /dev/null
+++ b/src/lib/components/ShipEdit/Structure/Armor.svelte
@@ -0,0 +1,41 @@
+
+
+
+
+
+
+
+
+
+ {#each layers as rating,i (i)}
+
+ {/each}
+
+
+
+
+
+
+
diff --git a/src/lib/components/ShipEdit/Structure/Armor/Layer.svelte b/src/lib/components/ShipEdit/Structure/Armor/Layer.svelte
new file mode 100644
index 0000000..ec80415
--- /dev/null
+++ b/src/lib/components/ShipEdit/Structure/Armor/Layer.svelte
@@ -0,0 +1,22 @@
+
+
+
+
+
+
+
diff --git a/src/lib/components/ShipEdit/Structure/Cargo.svelte b/src/lib/components/ShipEdit/Structure/Cargo.svelte
new file mode 100644
index 0000000..88f00cc
--- /dev/null
+++ b/src/lib/components/ShipEdit/Structure/Cargo.svelte
@@ -0,0 +1,25 @@
+
+
+
+
+
+
+
+
+
diff --git a/src/lib/components/ShipEdit/Structure/Hull.svelte b/src/lib/components/ShipEdit/Structure/Hull.svelte
new file mode 100644
index 0000000..69dca24
--- /dev/null
+++ b/src/lib/components/ShipEdit/Structure/Hull.svelte
@@ -0,0 +1,27 @@
+
+
+
+
+
+
+
+
+
diff --git a/src/lib/components/ShipEdit/Structure/Screens.svelte b/src/lib/components/ShipEdit/Structure/Screens.svelte
new file mode 100644
index 0000000..70831b0
--- /dev/null
+++ b/src/lib/components/ShipEdit/Structure/Screens.svelte
@@ -0,0 +1,37 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/src/lib/components/ShipEdit/Structure/Streamlining.svelte b/src/lib/components/ShipEdit/Structure/Streamlining.svelte
new file mode 100644
index 0000000..f610be3
--- /dev/null
+++ b/src/lib/components/ShipEdit/Structure/Streamlining.svelte
@@ -0,0 +1,41 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/src/lib/components/ShipEdit/Structure/index.svelte b/src/lib/components/ShipEdit/Structure/index.svelte
new file mode 100644
index 0000000..f6c583e
--- /dev/null
+++ b/src/lib/components/ShipEdit/Structure/index.svelte
@@ -0,0 +1,27 @@
+
+
+
+
+
diff --git a/src/lib/components/ShipEdit/Weaponry/ADFC.svelte b/src/lib/components/ShipEdit/Weaponry/ADFC.svelte
new file mode 100644
index 0000000..93da8e6
--- /dev/null
+++ b/src/lib/components/ShipEdit/Weaponry/ADFC.svelte
@@ -0,0 +1,18 @@
+
+
+
+
+
+
+
diff --git a/src/lib/components/ShipEdit/Weaponry/AddWeapon.svelte b/src/lib/components/ShipEdit/Weaponry/AddWeapon.svelte
new file mode 100644
index 0000000..e72af04
--- /dev/null
+++ b/src/lib/components/ShipEdit/Weaponry/AddWeapon.svelte
@@ -0,0 +1,29 @@
+
+
+
+
+
+
+
+
+
diff --git a/src/lib/components/ShipEdit/Weaponry/Firecons.svelte b/src/lib/components/ShipEdit/Weaponry/Firecons.svelte
new file mode 100644
index 0000000..24ffc9c
--- /dev/null
+++ b/src/lib/components/ShipEdit/Weaponry/Firecons.svelte
@@ -0,0 +1,21 @@
+
+
+
+
+
+
+
+
+
diff --git a/src/lib/components/ShipEdit/Weaponry/Weapon/Arc.svelte b/src/lib/components/ShipEdit/Weaponry/Weapon/Arc.svelte
new file mode 100644
index 0000000..47a73a0
--- /dev/null
+++ b/src/lib/components/ShipEdit/Weaponry/Weapon/Arc.svelte
@@ -0,0 +1,50 @@
+
+
+
+
+
+
+
diff --git a/src/lib/components/ShipEdit/Weaponry/Weapon/Arcs.svelte b/src/lib/components/ShipEdit/Weaponry/Weapon/Arcs.svelte
new file mode 100644
index 0000000..6657c21
--- /dev/null
+++ b/src/lib/components/ShipEdit/Weaponry/Weapon/Arcs.svelte
@@ -0,0 +1,32 @@
+
+
+
+
+
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..0ba11a7
--- /dev/null
+++ b/src/lib/components/ShipEdit/Weaponry/Weapon/Beam/index.svelte
@@ -0,0 +1,80 @@
+
+
+
+
+
+
+
+
+
+
+ setArcs(detail)} />
+
+
diff --git a/src/lib/components/ShipEdit/Weaponry/Weapon/Needle.svelte b/src/lib/components/ShipEdit/Weaponry/Weapon/Needle.svelte
new file mode 100644
index 0000000..cdb17fd
--- /dev/null
+++ b/src/lib/components/ShipEdit/Weaponry/Weapon/Needle.svelte
@@ -0,0 +1,27 @@
+
+
+ click_arc(detail)} />
+
+
+
+
diff --git a/src/lib/components/ShipEdit/Weaponry/Weapon/PDS.svelte b/src/lib/components/ShipEdit/Weaponry/Weapon/PDS.svelte
new file mode 100644
index 0000000..6c9c9ef
--- /dev/null
+++ b/src/lib/components/ShipEdit/Weaponry/Weapon/PDS.svelte
@@ -0,0 +1 @@
+
diff --git a/src/components/Weapon/Scattergun/index.svelte b/src/lib/components/ShipEdit/Weaponry/Weapon/Scattergun.svelte
similarity index 96%
rename from src/components/Weapon/Scattergun/index.svelte
rename to src/lib/components/ShipEdit/Weaponry/Weapon/Scattergun.svelte
index de8a6e0..8910b00 100644
--- a/src/components/Weapon/Scattergun/index.svelte
+++ b/src/lib/components/ShipEdit/Weaponry/Weapon/Scattergun.svelte
@@ -1,2 +1 @@
-
diff --git a/src/lib/components/ShipEdit/Weaponry/Weapon/Submunition.svelte b/src/lib/components/ShipEdit/Weaponry/Weapon/Submunition.svelte
new file mode 100644
index 0000000..070b55a
--- /dev/null
+++ b/src/lib/components/ShipEdit/Weaponry/Weapon/Submunition.svelte
@@ -0,0 +1,19 @@
+
+
+ click_arc(detail)} />
+
+
diff --git a/src/lib/components/ShipEdit/Weaponry/Weapon/index.svelte b/src/lib/components/ShipEdit/Weaponry/Weapon/index.svelte
new file mode 100644
index 0000000..dc8965a
--- /dev/null
+++ b/src/lib/components/ShipEdit/Weaponry/Weapon/index.svelte
@@ -0,0 +1,121 @@
+
+
+
+
+
+
+
+
+
+
+
diff --git a/src/lib/components/ShipEdit/Weaponry/Weaponry.stories.svelte b/src/lib/components/ShipEdit/Weaponry/Weaponry.stories.svelte
new file mode 100644
index 0000000..4072200
--- /dev/null
+++ b/src/lib/components/ShipEdit/Weaponry/Weaponry.stories.svelte
@@ -0,0 +1,34 @@
+
+
+
+
+
+
+
+
+
+
+
diff --git a/src/lib/components/ShipEdit/Weaponry/index.svelte b/src/lib/components/ShipEdit/Weaponry/index.svelte
new file mode 100644
index 0000000..d9b168b
--- /dev/null
+++ b/src/lib/components/ShipEdit/Weaponry/index.svelte
@@ -0,0 +1,34 @@
+
+
+
+
+
+
+
+ {#each weapons as weapon (weapon.id)}
+
+ {/each}
+
+
+
+
+
+
diff --git a/src/lib/components/ShipEdit/index.svelte b/src/lib/components/ShipEdit/index.svelte
new file mode 100644
index 0000000..366fb15
--- /dev/null
+++ b/src/lib/components/ShipEdit/index.svelte
@@ -0,0 +1,44 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/src/components/ShipItem/index.svelte b/src/lib/components/ShipItem/index.svelte
similarity index 77%
rename from src/components/ShipItem/index.svelte
rename to src/lib/components/ShipItem/index.svelte
index c1e9d59..7b5f447 100644
--- a/src/components/ShipItem/index.svelte
+++ b/src/lib/components/ShipItem/index.svelte
@@ -1,7 +1,11 @@
-
+
diff --git a/src/components/ShipSpecs/ShipCost.svelte b/src/lib/components/ShipSpecs/ShipCost.svelte
similarity index 86%
rename from src/components/ShipSpecs/ShipCost.svelte
rename to src/lib/components/ShipSpecs/ShipCost.svelte
index f5337c2..13cd8de 100644
--- a/src/components/ShipSpecs/ShipCost.svelte
+++ b/src/lib/components/ShipSpecs/ShipCost.svelte
@@ -5,8 +5,9 @@
on:change={change_tonnage}
type="number"
min="10"
- max="300" />
-
+ max="300"
+ />
+
{#if within_budget}
@@ -18,7 +19,8 @@
- {$ship.general.cost}
+ {$ship.general.cost}
-
-
diff --git a/src/lib/components/Structure/Armour/Layer/index.svelte b/src/lib/components/Structure/Armour/Layer/index.svelte
new file mode 100644
index 0000000..a3d54ce
--- /dev/null
+++ b/src/lib/components/Structure/Armour/Layer/index.svelte
@@ -0,0 +1,22 @@
+
+
+
+
+
+
+
diff --git a/src/lib/components/Structure/Armour/index.svelte b/src/lib/components/Structure/Armour/index.svelte
new file mode 100644
index 0000000..70d83d8
--- /dev/null
+++ b/src/lib/components/Structure/Armour/index.svelte
@@ -0,0 +1,48 @@
+
+
+
+
+
+
+
+
+
+ {#each armour as layer (layer.layer)}
+
+ {/each}
+
+
+
+
+
+
+
diff --git a/src/lib/components/Structure/Armour/stories.js b/src/lib/components/Structure/Armour/stories.js
new file mode 100644
index 0000000..c016e17
--- /dev/null
+++ b/src/lib/components/Structure/Armour/stories.js
@@ -0,0 +1,18 @@
+import Armour from "./index.svelte";
+
+export default {
+ title: "Armour",
+};
+
+export const basic = () => ({
+ Component: Armour,
+ props: {
+ armour: [
+ { layer: 1, rating: 12, cost: 1, mass: 2 },
+ { layer: 2, rating: 12, cost: 1, mass: 2 },
+ ],
+ },
+ on: {
+ ship_change: ({ detail }) => console.log(detail),
+ },
+});
diff --git a/src/components/Hull/Cargo/index.svelte b/src/lib/components/Structure/Cargo/index.svelte
similarity index 99%
rename from src/components/Hull/Cargo/index.svelte
rename to src/lib/components/Structure/Cargo/index.svelte
index ffb786d..fd916be 100644
--- a/src/components/Hull/Cargo/index.svelte
+++ b/src/lib/components/Structure/Cargo/index.svelte
@@ -17,12 +17,10 @@
export let mass = 0;
$: ship?.dispatch_action("set_cargo", space);
-
diff --git a/src/lib/components/Structure/Screens/index.svelte b/src/lib/components/Structure/Screens/index.svelte
new file mode 100644
index 0000000..b19c7f0
--- /dev/null
+++ b/src/lib/components/Structure/Screens/index.svelte
@@ -0,0 +1,40 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/src/lib/components/Structure/Streamlining/index.svelte b/src/lib/components/Structure/Streamlining/index.svelte
new file mode 100644
index 0000000..cccb2b1
--- /dev/null
+++ b/src/lib/components/Structure/Streamlining/index.svelte
@@ -0,0 +1,41 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/src/lib/components/Structure/index.svelte b/src/lib/components/Structure/index.svelte
new file mode 100644
index 0000000..c74b6e9
--- /dev/null
+++ b/src/lib/components/Structure/index.svelte
@@ -0,0 +1,51 @@
+
+
+
+
+
diff --git a/src/components/Weapon/Beam/index.svelte b/src/lib/components/Weapon/Beam/index.svelte
similarity index 99%
rename from src/components/Weapon/Beam/index.svelte
rename to src/lib/components/Weapon/Beam/index.svelte
index 6269277..b0fc2c4 100644
--- a/src/components/Weapon/Beam/index.svelte
+++ b/src/lib/components/Weapon/Beam/index.svelte
@@ -93,7 +93,6 @@
weapon_class,
arcs: cache.split(":"),
});
-
diff --git a/src/components/Weapon/PointDefenceSystem/index.svelte b/src/lib/components/Weapon/PointDefenceSystem/index.svelte
similarity index 97%
rename from src/components/Weapon/PointDefenceSystem/index.svelte
rename to src/lib/components/Weapon/PointDefenceSystem/index.svelte
index 27f4aa9..6c9c9ef 100644
--- a/src/components/Weapon/PointDefenceSystem/index.svelte
+++ b/src/lib/components/Weapon/PointDefenceSystem/index.svelte
@@ -1,2 +1 @@
-
diff --git a/src/lib/components/Weapon/Submunition/index.svelte b/src/lib/components/Weapon/Submunition/index.svelte
new file mode 100644
index 0000000..27174cb
--- /dev/null
+++ b/src/lib/components/Weapon/Submunition/index.svelte
@@ -0,0 +1,35 @@
+
+
click_arc(detail)} />
+
+
+
+
diff --git a/src/components/Weapon/index.svelte b/src/lib/components/Weapon/index.svelte
similarity index 99%
rename from src/components/Weapon/index.svelte
rename to src/lib/components/Weapon/index.svelte
index df422ee..fea53a2 100644
--- a/src/components/Weapon/index.svelte
+++ b/src/lib/components/Weapon/index.svelte
@@ -56,7 +56,6 @@
...detail,
});
};
-
diff --git a/src/components/Weaponry/ADFC/index.svelte b/src/lib/components/Weaponry/ADFC/index.svelte
similarity index 89%
rename from src/components/Weaponry/ADFC/index.svelte
rename to src/lib/components/Weaponry/ADFC/index.svelte
index 4a4e641..d574045 100644
--- a/src/components/Weaponry/ADFC/index.svelte
+++ b/src/lib/components/Weaponry/ADFC/index.svelte
@@ -4,7 +4,6 @@
-
diff --git a/src/components/Weaponry/AddWeapon/index.svelte b/src/lib/components/Weaponry/AddWeapon/index.svelte
similarity index 99%
rename from src/components/Weaponry/AddWeapon/index.svelte
rename to src/lib/components/Weaponry/AddWeapon/index.svelte
index f6e66ba..6cfe6c2 100644
--- a/src/components/Weaponry/AddWeapon/index.svelte
+++ b/src/lib/components/Weaponry/AddWeapon/index.svelte
@@ -23,5 +23,4 @@
export let ship = getContext("ship");
const add_weapon = () => ship?.dispatch_action("add_weapon", weapon_type);
-
diff --git a/src/lib/components/Weapons/Add.svelte b/src/lib/components/Weapons/Add.svelte
new file mode 100644
index 0000000..8cf4bf1
--- /dev/null
+++ b/src/lib/components/Weapons/Add.svelte
@@ -0,0 +1,194 @@
+
+
+
+
+
+
+
+
+
+
+
+
{weapon.cost}
+
{weapon.mass}
+
+
+
+
+
diff --git a/src/lib/components/Weapons/stories.js b/src/lib/components/Weapons/stories.js
new file mode 100644
index 0000000..f3923fe
--- /dev/null
+++ b/src/lib/components/Weapons/stories.js
@@ -0,0 +1,9 @@
+import AddWeapon from "./Add.svelte";
+
+export default {
+ title: "add weapon",
+};
+
+export const beam = () => ({
+ Component: AddWeapon,
+});
diff --git a/src/lib/shipDux/carrier.js b/src/lib/shipDux/carrier.js
new file mode 100644
index 0000000..6d8d145
--- /dev/null
+++ b/src/lib/shipDux/carrier.js
@@ -0,0 +1,76 @@
+import { Updux } from "updux";
+import u from "updeep";
+import _ from 'lodash';
+
+import reqs from "./reqs.js";
+
+const dux = new Updux({
+ subduxes: { reqs },
+ initial: {
+ bays: 0,
+ squadrons: [],
+ },
+ actions: {
+ setCarrierBays: null,
+ setSquadronType: null,
+ }
+});
+
+dux.setMutation( 'setCarrierBays', bays => u({bays, reqs:
+ calcBaysReqs(bays),
+ squadrons: adjustSquadrons(bays),
+}) );
+
+dux.setMutation('setSquadronType', ({type, id}) => state => {
+
+ return u.updateIn(['squadrons', id-1], {
+ type,
+ reqs: squadronReqs(type)
+ }, state )
+
+} );
+
+export const squadronTypes= [
+ { type: "standard", cost: 3 },
+ { type: "fast", cost: 4 },
+ { type: "heavy", cost: 5 },
+ { type: "interceptor", cost: 3 },
+ { type: "attack", cost: 4 },
+ { type: "long range", cost: 4 },
+ { type: "torpedo", cost: 6 },
+];
+
+function squadronReqs(type) {
+ return { mass: 6, cost: 6 * squadronTypes.find( s => s.type === type )?.cost }
+}
+
+
+const adjustSquadrons = bays => squadrons => {
+ if( squadrons.length > bays ) {
+ squadrons = squadrons.slice(0,bays);
+ }
+
+ if( squadrons.length < bays ) {
+ squadrons = [ ...squadrons, ..._.times(
+ bays - squadrons.length, () => ({
+ type: squadronTypes[0].type,
+ reqs: {
+ cost: 6 * squadronTypes[0].cost,
+ mass: 6,
+ },
+ })
+ )];
+ }
+
+ return squadrons;
+
+}
+
+function calcBaysReqs(bays) {
+ return {
+ mass: 9 * bays,
+ cost: 18 * bays,
+ }
+}
+
+export default dux;
diff --git a/src/lib/shipDux/engine.js b/src/lib/shipDux/engine.js
new file mode 100644
index 0000000..1e33ed8
--- /dev/null
+++ b/src/lib/shipDux/engine.js
@@ -0,0 +1,28 @@
+import { Updux } from "updux";
+import u from "updeep";
+
+import reqs from "./reqs.js";
+
+const dux = new Updux({
+ subduxes: { reqs },
+ initial: {
+ rating: 1,
+ advanced: false,
+ },
+ actions: {
+ setDrive: null,
+ setDriveReqs: null,
+ },
+});
+
+dux.setMutation("setDrive", (changes) => u(changes));
+dux.setMutation("setDriveReqs", (reqs) => u({ reqs }));
+
+export function calcDriveReqs(shipMass, rating, advanced = false) {
+ const mass = Math.ceil(rating * 0.05 * shipMass);
+ const cost = mass * (advanced ? 3 : 2);
+
+ return { mass, cost };
+}
+
+export default dux;
diff --git a/src/lib/shipDux/identification.js b/src/lib/shipDux/identification.js
new file mode 100644
index 0000000..71e4085
--- /dev/null
+++ b/src/lib/shipDux/identification.js
@@ -0,0 +1,26 @@
+import { Updux } from "updux";
+import u from "updeep";
+
+import carrier from './carrier.js';
+
+const dux = new Updux({
+ actions: {
+ setShipType: null,
+ setShipClass: null,
+ setCarrierBays: carrier.actions.setCarrierBays,
+ },
+ initial: {
+ shipType: "",
+ shipClass: "",
+ isCarrier: false,
+ mass: 10,
+ },
+});
+
+dux.setMutation("setShipType", (shipType) => u({ shipType }));
+dux.setMutation("setShipClass", (shipClass) => u({ shipClass }));
+dux.setMutation('setCarrierBays', (bays) => u({
+ isCarrier: bays > 0,
+}))
+
+export default dux;
diff --git a/src/lib/shipDux/index.js b/src/lib/shipDux/index.js
new file mode 100644
index 0000000..388af19
--- /dev/null
+++ b/src/lib/shipDux/index.js
@@ -0,0 +1,58 @@
+import { Updux } from "updux";
+import u from "updeep";
+
+import propulsion from "./propulsion/index.js";
+import identification from "./identification.js";
+import { calculateDriveReqs } from "./propulsion/drive.js";
+import { ftlReqsReaction } from "./propulsion/ftl.js";
+import structure from "./structure/index.js";
+import carrier from "./carrier.js";
+import weaponry from "./weaponry/index.js";
+import { screensReqsReaction } from "./structure/screens.js";
+
+const dux = new Updux({
+ subduxes: {
+ identification,
+ propulsion,
+ structure,
+ carrier,
+ weaponry,
+ },
+ initial: {
+ reqs: { cost: 0, mass: 10, usedMass: 0 },
+ },
+ actions: {
+ setShipReqs: null,
+ },
+});
+
+dux.setMutation("setShipMass", (mass) => u({ reqs: { mass } }));
+dux.setMutation('setShipReqs', reqs => u({reqs}));
+
+dux.addReaction(calculateDriveReqs);
+dux.addReaction(ftlReqsReaction);
+dux.addReaction(screensReqsReaction);
+
+dux.addReaction( (store) => (state) => {
+ let cost = 0;
+ let mass = 0;
+
+ let subsystems = Object.values(state);
+
+ while(subsystems.length>0) {
+ const subsystem = subsystems.shift();
+ if( typeof subsystem !== 'object' ) continue;
+
+ if( subsystem.reqs ) {
+ cost += subsystem.reqs.cost;
+ mass += subsystem.reqs.mass;
+ }
+
+ subsystems.push( ...Object.values(subsystem));
+ }
+
+ store.dispatch.setShipReqs({cost,usedMass: mass});
+
+});
+
+export default dux;
diff --git a/src/lib/shipDux/propulsion/drive.js b/src/lib/shipDux/propulsion/drive.js
new file mode 100644
index 0000000..f165e7d
--- /dev/null
+++ b/src/lib/shipDux/propulsion/drive.js
@@ -0,0 +1,41 @@
+import { Updux } from "updux";
+import u from "updeep";
+import { createSelector } from "reselect";
+
+import reqs from "../reqs.js";
+
+const dux = new Updux({
+ subduxes: { reqs },
+ initial: {
+ rating: 1,
+ advanced: false,
+ },
+ actions: {
+ setDrive: null,
+ setDriveReqs: null,
+ },
+});
+
+dux.setMutation("setDrive", (changes) => u(changes));
+dux.setMutation("setDriveReqs", (reqs) => u({ reqs }));
+
+// needs to be at the top level
+export const calculateDriveReqs = store =>
+ createSelector(
+ [
+ (ship) => ship.reqs.mass,
+ (ship) => ship.propulsion.drive.rating,
+ (ship) => ship.propulsion.drive.advanced,
+ ],
+ (ship_mass, rating, advanced) =>
+ store.dispatch.setDriveReqs(calcDriveReqs(ship_mass, rating, advanced))
+ );
+
+export function calcDriveReqs(shipMass, rating, advanced = false) {
+ const mass = Math.ceil(rating * 0.05 * shipMass);
+ const cost = mass * (advanced ? 3 : 2);
+
+ return { mass, cost };
+}
+
+export default dux;
diff --git a/src/lib/shipDux/propulsion/ftl.js b/src/lib/shipDux/propulsion/ftl.js
new file mode 100644
index 0000000..ee42eca
--- /dev/null
+++ b/src/lib/shipDux/propulsion/ftl.js
@@ -0,0 +1,44 @@
+import { Updux } from "updux";
+import u from "updeep";
+import { createSelector } from "reselect";
+
+import reqs from "../reqs.js";
+
+export const ftlTypes = ["none", "standard", "advanced"];
+
+const dux = new Updux({
+ subduxes: { reqs },
+ initial: {
+ type: "none",
+ },
+ actions: {
+ setFtl: null,
+ setFtlReqs: null,
+ },
+});
+export default dux;
+
+dux.setMutation( 'setFtl', type => u({type}) );
+dux.setMutation( 'setFtlReqs', reqs => u({reqs}) );
+
+export function calcFtlReqs(type,shipMass) {
+ if(type==="none") return { cost: 0, mass: 0 };
+
+ const mass = Math.ceil(shipMass / 10);
+
+ return {
+ mass,
+ cost: mass * ( type === 'advanced' ? 3 : 2 ),
+ }
+}
+
+// needs to be at the top level
+export const ftlReqsReaction = store =>
+ createSelector(
+ [
+ (ship) => ship.propulsion.ftl.type,
+ (ship) => ship.reqs.mass,
+ ],
+ (type,shipMass) =>
+ store.dispatch.setFtlReqs(calcFtlReqs(type,shipMass))
+ );
diff --git a/src/lib/shipDux/propulsion/index.js b/src/lib/shipDux/propulsion/index.js
new file mode 100644
index 0000000..47d28fc
--- /dev/null
+++ b/src/lib/shipDux/propulsion/index.js
@@ -0,0 +1,13 @@
+import { Updux } from "updux";
+import u from 'updeep';
+
+import drive from './drive.js';
+import ftl from './ftl.js';
+
+const dux = new Updux({
+ subduxes: {
+ drive, ftl
+ },
+});
+
+export default dux;
diff --git a/src/lib/shipDux/reqs.js b/src/lib/shipDux/reqs.js
new file mode 100644
index 0000000..62ea2dd
--- /dev/null
+++ b/src/lib/shipDux/reqs.js
@@ -0,0 +1,10 @@
+import { Updux } from "updux";
+
+const dux = new Updux({
+ initial: {
+ cost: 0,
+ mass: 0,
+ },
+});
+
+export default dux;
diff --git a/src/lib/shipDux/structure/armor.js b/src/lib/shipDux/structure/armor.js
new file mode 100644
index 0000000..0724399
--- /dev/null
+++ b/src/lib/shipDux/structure/armor.js
@@ -0,0 +1,64 @@
+import { Updux } from "updux";
+import u from "updeep";
+
+import reqs from "../reqs.js";
+
+const schema = {
+ type: 'object',
+ properties: {
+ reqs: { type: 'object', properties: {
+ cost: { type: 'number' },
+ mass: { type: 'number' },
+ } },
+ layers: { type: 'array', items: 'number' }
+ },
+ examples: [
+ { reqs: { cost: 5, mass: 5 }, layers: [2,4 ] }
+ ]
+}
+
+const dux = new Updux({
+ subduxes: {
+ reqs,
+ },
+ initial: {
+ layers: [],
+ },
+ actions: {
+ setArmorLayers: null,
+ setArmorRating: null,
+ },
+});
+export default dux;
+
+dux.setMutation('setArmorRating', ({layer, rating}) => state => {
+ let layers = [ ...state.layers ].map( (v,k) => k === layer-1 ? rating : v );
+
+ return { layers, reqs: calcArmorReqs(layers) }
+} );
+
+dux.setMutation( 'setArmorLayers', nbrLayers => state => {
+
+ let layers = [...state.layers];
+
+ if( nbrLayers < state.layers.length )
+ layers = [ ...state.layers ].slice(0,nbrLayers);
+
+ while( layers.length < nbrLayers ) {
+ layers.push(0);
+ }
+
+ return {
+ layers,
+ reqs: calcArmorReqs(layers),
+ }
+});
+
+function calcArmorReqs(layers) {
+ const mass = 2* layers.reduce( (a,b) => a+ b,0 );
+ const cost = 2* layers.map( (v,k) => v * (k+1) ).reduce( (a,b) => a+ b,0 );
+
+ return {
+ mass, cost
+ }
+}
diff --git a/src/lib/shipDux/structure/cargo.js b/src/lib/shipDux/structure/cargo.js
new file mode 100644
index 0000000..204d94b
--- /dev/null
+++ b/src/lib/shipDux/structure/cargo.js
@@ -0,0 +1,24 @@
+import { Updux } from "updux";
+import u from 'updeep';
+import { createSelector } from 'reselect';
+
+import reqs from '../reqs.js';
+
+const dux = new Updux({
+ subduxes: {
+ reqs
+ },
+ initial: {
+ space: 0,
+ },
+ actions: {
+ setCargo: null,
+ }
+});
+export default dux;
+
+dux.setMutation('setCargo', space => u({
+ space,
+ reqs: { mass: space }
+}));
+
diff --git a/src/lib/shipDux/structure/hull.js b/src/lib/shipDux/structure/hull.js
new file mode 100644
index 0000000..a91160c
--- /dev/null
+++ b/src/lib/shipDux/structure/hull.js
@@ -0,0 +1,31 @@
+import { Updux } from "updux";
+import u from 'updeep';
+
+import reqs from '../reqs.js';
+
+const dux = new Updux({
+ subduxes: {
+ reqs
+ },
+ initial: {
+ rating: 0, min: 0, max: 0,
+ },
+ actions: {
+ setShipMass: null,
+ setHull: null,
+ }
+});
+export default dux;
+
+dux.setMutation( 'setHull', rating => u({rating,
+ reqs: {
+mass: rating, cost: 2 * rating
+ }}) );
+
+dux.setMutation( 'setShipMass', mass => state => {
+ let {rating} = state;
+ if(rating > mass) rating = mass;
+ const min = Math.ceil(mass/10);
+ if(rating < min) rating = min;
+ return u({max: mass, min, rating}, state);
+})
diff --git a/src/lib/shipDux/structure/index.js b/src/lib/shipDux/structure/index.js
new file mode 100644
index 0000000..c5fe3cb
--- /dev/null
+++ b/src/lib/shipDux/structure/index.js
@@ -0,0 +1,13 @@
+import { Updux } from 'updux';
+
+import hull from './hull.js';
+import screens from './screens.js';
+import cargo from './cargo.js';
+import armor from './armor.js';
+import streamlining from './streamlining.js';
+
+const dux = new Updux({
+ subduxes: { hull, screens, cargo, streamlining, armor }
+});
+export default dux;
+
diff --git a/src/lib/shipDux/structure/screens.js b/src/lib/shipDux/structure/screens.js
new file mode 100644
index 0000000..068e653
--- /dev/null
+++ b/src/lib/shipDux/structure/screens.js
@@ -0,0 +1,40 @@
+import { Updux } from "updux";
+import u from 'updeep';
+import { createSelector } from 'reselect';
+
+import reqs from '../reqs.js';
+
+const dux = new Updux({
+ subduxes: {
+ reqs
+ },
+ initial: {
+ standard: 0, advanced: 0,
+ },
+ actions: {
+ setScreens: null,
+ setScreensReqs: null,
+ }
+});
+export default dux;
+
+dux.setMutation('setScreens', payload => u(payload));
+dux.setMutation('setScreensReqs', reqs => u({reqs}));
+
+export const screensReqsReaction = store => createSelector(
+ (ship) => ship.reqs.mass,
+ (ship) => ship.structure.screens.standard,
+ (ship) => ship.structure.screens.advanced,
+ (...args) => store.dispatch.setScreensReqs(calcScreensReqs(...args)),
+);
+
+function calcScreensReqs(mass,standard,advanced) {
+
+ const standard_mass = standard * Math.max(3, Math.ceil(0.05 * mass));
+ const advanced_mass = advanced * Math.max(4, Math.ceil(0.075 * mass));
+
+ return {
+ mass: standard_mass + advanced_mass,
+ cost: 3 * standard_mass + 4 * advanced_mass,
+ }
+}
diff --git a/src/lib/shipDux/structure/streamlining.js b/src/lib/shipDux/structure/streamlining.js
new file mode 100644
index 0000000..aca39e6
--- /dev/null
+++ b/src/lib/shipDux/structure/streamlining.js
@@ -0,0 +1,32 @@
+import { Updux } from "updux";
+import u from "updeep";
+
+import reqs from "../reqs.js";
+
+const dux = new Updux({
+ subduxes: {
+ reqs,
+ },
+ initial: {
+ type: "none",
+ },
+ actions: {
+ setStreamlining: null,
+ },
+});
+export default dux;
+
+dux.setMutation("setStreamlining", ({ shipMass, type }) =>
+ u({
+ type,
+ reqs: calcStreamliningReqs({ shipMass, type }),
+ })
+);
+
+function calcStreamliningReqs({ shipMass, type }) {
+ const mass = Math.ceil(
+ (shipMass * (type === "none" ? 0 : type === "partial" ? 5 : 10)) / 100
+ );
+
+ return { mass, cost: 2 * mass };
+}
diff --git a/src/lib/shipDux/weaponry/index.js b/src/lib/shipDux/weaponry/index.js
new file mode 100644
index 0000000..7cfbed7
--- /dev/null
+++ b/src/lib/shipDux/weaponry/index.js
@@ -0,0 +1,46 @@
+import { Updux } from "updux";
+import u from "updeep";
+
+import weapons from './weapons.js';
+
+const reqs = { cost: 0, mass: 0 };
+
+const dux = new Updux({
+ subduxes: { weapons },
+ initial: {
+ firecons: {
+ stations: 0,
+ reqs,
+ },
+ adfc: { rating: 0, reqs },
+ },
+ actions: {
+ setADFC: null,
+ setFirecons: null,
+ },
+});
+
+dux.setMutation("setFirecons", (stations) =>
+ u({
+ firecons: {
+ stations,
+ reqs: {
+ cost: 4 * stations,
+ mass: stations,
+ },
+ },
+ })
+);
+dux.setMutation("setADFC", (rating) =>
+ u({
+ adfc: {
+ rating,
+ reqs: {
+ cost: 8 * rating,
+ mass: 2 * rating,
+ },
+ },
+ })
+);
+
+export default dux;
diff --git a/src/lib/shipDux/weaponry/weapons.js b/src/lib/shipDux/weaponry/weapons.js
new file mode 100644
index 0000000..6aa6167
--- /dev/null
+++ b/src/lib/shipDux/weaponry/weapons.js
@@ -0,0 +1,122 @@
+import { Updux } from "updux";
+import u from "updeep";
+
+const reqs = { cost: 0, mass: 0 };
+
+export const weaponTypes = [
+ { name: 'beam', type: 'beam', reqs: beam_cost_mass, initial: {
+ weaponClass: 1
+ }},
+ { name: 'submunition pack', type: 'submunition', reqs: { mass:1, cost:3 },
+ initial: { arc: 'F' }
+ },
+ { name: 'point defence system', type: 'pds', reqs: {mass:1,cost:3}, initial: {}},
+ { name: 'scattergun', type: 'scattergun', reqs: { mass:1,cost:4 }, initial: {}},
+ { name: 'needle weapon', type: 'needle', reqs: { mass: 2, cost: 6 },
+ initial: { arc: 'F' }},
+];
+
+const dux = new Updux({
+ initial: [],
+ actions: {
+ addWeapon: null,
+ removeWeapon: null,
+ setWeapon: null,
+ },
+});
+
+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 => [
+ ...state.filter( (w) => w.id !== id )
+]);
+
+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,...initial}),
+ ...initial,
+ }
+ ]
+});
+
+function weaponReqs(weapon) {
+
+ const {reqs} = weaponTypes.find( wt => wt.type === weapon.type ) ||{};
+
+ if(!reqs) return {};
+
+ if( typeof reqs === 'function' ) return reqs(weapon);
+
+ return reqs;
+}
+
+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( weaponClass === 1 ) {
+ mass = 1;
+ }
+
+ if( weaponClass === 2 ) {
+ mass = 2 + (arcs.length > 3 ? 1 : 0);
+ }
+
+
+ if( weaponClass == 3 ) {
+ mass = 4;
+
+ if( isBroadside(arcs) ) {
+ mass += 2;
+ }
+ else {
+ mass += arcs.length - 1;
+ }
+ }
+
+ if( weaponClass == 4 ) {
+ mass = 8;
+
+ if( isBroadside(arcs) ) {
+ mass += 4;
+ }
+ else {
+ mass += 2*(arcs.length - 1);
+ }
+ }
+
+ return {
+ mass, cost: 3 * mass
+ }
+
+
+}
+
+
+export default dux;
diff --git a/src/lib/store/ship.js b/src/lib/store/ship.js
new file mode 100644
index 0000000..2e507f1
--- /dev/null
+++ b/src/lib/store/ship.js
@@ -0,0 +1,32 @@
+import { browser } from "$app/env";
+import { readable, get, derived } from "svelte/store";
+import { compose, applyMiddleware } from "redux";
+
+import shipDux from "../shipDux/index.js";
+
+let composeEnhancers = compose;
+
+if (browser) {
+ composeEnhancers = window.__REDUX_DEVTOOLS_EXTENSION_COMPOSE__;
+}
+
+export default () => {
+ const duxStore = shipDux.createStore(undefined, (mw) =>
+ composeEnhancers(applyMiddleware(mw))
+ );
+
+ let previous;
+ const state = readable(duxStore.getState(), (set) => {
+ duxStore.subscribe(() => {
+ if (previous === duxStore.getState()) return;
+ previous = duxStore.getState();
+ set(previous);
+ });
+ });
+
+ return {
+ dispatch: duxStore.dispatch,
+ state,
+ shipMass: derived( state, state => state.reqs.mass )
+ };
+};
diff --git a/src/lib/style/index.css b/src/lib/style/index.css
new file mode 100644
index 0000000..75866d1
--- /dev/null
+++ b/src/lib/style/index.css
@@ -0,0 +1,17 @@
+:root {
+ --main-font-family: "Dosis", -apple-system, BlinkMacSystemFont, "Segoe UI",
+ Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif;
+
+ --font-scale-9: 0.75rem;
+ --font-scale-10: 1em;
+ --font-scale-11: 1.333rem;
+ --font-scale-12: 1.777rem;
+ --font-scale-13: 2.369rem;
+ --font-scale-14: 3.157rem;
+ --font-scale-15: 4.209rem;
+}
+
+input.short {
+ width: 5em !important;
+}
+
diff --git a/src/lib/style/index.js b/src/lib/style/index.js
new file mode 100644
index 0000000..86e7d49
--- /dev/null
+++ b/src/lib/style/index.js
@@ -0,0 +1,5 @@
+import "../../../static/fonts/faktos.css";
+import "../../../static/fonts/dosis/dosis.css";
+import "../../../static/global.css";
+import 'chota';
+import "./index.css";
diff --git a/src/lib/utils.js b/src/lib/utils.js
new file mode 100644
index 0000000..79226cb
--- /dev/null
+++ b/src/lib/utils.js
@@ -0,0 +1,8 @@
+export function range(min, max) {
+ if(max === undefined) {
+ max = min;
+ min = 0;
+ }
+
+ return Array.from({length: 1+max - min}).map( (_d,i) => i+ min);
+}
diff --git a/src/routes/index.svelte b/src/routes/index.svelte
index c7121fd..df71d56 100644
--- a/src/routes/index.svelte
+++ b/src/routes/index.svelte
@@ -1,20 +1,12 @@
-
- {#each stylesheets as href (href)}
-
- {/each}
-
-
diff --git a/public/bulma/bulma-rtl.css b/static/bulma/bulma-rtl.css
similarity index 100%
rename from public/bulma/bulma-rtl.css
rename to static/bulma/bulma-rtl.css
diff --git a/public/bulma/bulma-rtl.css.map b/static/bulma/bulma-rtl.css.map
similarity index 100%
rename from public/bulma/bulma-rtl.css.map
rename to static/bulma/bulma-rtl.css.map
diff --git a/public/bulma/bulma-rtl.min.css b/static/bulma/bulma-rtl.min.css
similarity index 100%
rename from public/bulma/bulma-rtl.min.css
rename to static/bulma/bulma-rtl.min.css
diff --git a/public/bulma/bulma.css b/static/bulma/bulma.css
similarity index 100%
rename from public/bulma/bulma.css
rename to static/bulma/bulma.css
diff --git a/public/bulma/bulma.css.map b/static/bulma/bulma.css.map
similarity index 100%
rename from public/bulma/bulma.css.map
rename to static/bulma/bulma.css.map
diff --git a/public/bulma/bulma.min.css b/static/bulma/bulma.min.css
similarity index 100%
rename from public/bulma/bulma.min.css
rename to static/bulma/bulma.min.css
diff --git a/public/css/buttons.css b/static/css/buttons.css
similarity index 100%
rename from public/css/buttons.css
rename to static/css/buttons.css
diff --git a/public/favicon.ico b/static/favicon.ico
similarity index 100%
rename from public/favicon.ico
rename to static/favicon.ico
diff --git a/public/favicon.png b/static/favicon.png
similarity index 100%
rename from public/favicon.png
rename to static/favicon.png
diff --git a/public/fonts/Faktos.ttf b/static/fonts/Faktos.ttf
similarity index 100%
rename from public/fonts/Faktos.ttf
rename to static/fonts/Faktos.ttf
diff --git a/public/fonts/FaktosContour.ttf b/static/fonts/FaktosContour.ttf
similarity index 100%
rename from public/fonts/FaktosContour.ttf
rename to static/fonts/FaktosContour.ttf
diff --git a/public/fonts/FaktosOutline.ttf b/static/fonts/FaktosOutline.ttf
similarity index 100%
rename from public/fonts/FaktosOutline.ttf
rename to static/fonts/FaktosOutline.ttf
diff --git a/public/fonts/FaktosShadow.ttf b/static/fonts/FaktosShadow.ttf
similarity index 100%
rename from public/fonts/FaktosShadow.ttf
rename to static/fonts/FaktosShadow.ttf
diff --git a/public/fonts/dosis/Dosis-VariableFont_wght.ttf b/static/fonts/dosis/Dosis-VariableFont_wght.ttf
similarity index 100%
rename from public/fonts/dosis/Dosis-VariableFont_wght.ttf
rename to static/fonts/dosis/Dosis-VariableFont_wght.ttf
diff --git a/public/fonts/dosis/OFL.txt b/static/fonts/dosis/OFL.txt
similarity index 100%
rename from public/fonts/dosis/OFL.txt
rename to static/fonts/dosis/OFL.txt
diff --git a/public/fonts/dosis/README.txt b/static/fonts/dosis/README.txt
similarity index 100%
rename from public/fonts/dosis/README.txt
rename to static/fonts/dosis/README.txt
diff --git a/public/fonts/dosis/dosis.css b/static/fonts/dosis/dosis.css
similarity index 100%
rename from public/fonts/dosis/dosis.css
rename to static/fonts/dosis/dosis.css
diff --git a/public/fonts/dosis/static/Dosis-Bold.ttf b/static/fonts/dosis/static/Dosis-Bold.ttf
similarity index 100%
rename from public/fonts/dosis/static/Dosis-Bold.ttf
rename to static/fonts/dosis/static/Dosis-Bold.ttf
diff --git a/public/fonts/dosis/static/Dosis-ExtraBold.ttf b/static/fonts/dosis/static/Dosis-ExtraBold.ttf
similarity index 100%
rename from public/fonts/dosis/static/Dosis-ExtraBold.ttf
rename to static/fonts/dosis/static/Dosis-ExtraBold.ttf
diff --git a/public/fonts/dosis/static/Dosis-ExtraLight.ttf b/static/fonts/dosis/static/Dosis-ExtraLight.ttf
similarity index 100%
rename from public/fonts/dosis/static/Dosis-ExtraLight.ttf
rename to static/fonts/dosis/static/Dosis-ExtraLight.ttf
diff --git a/public/fonts/dosis/static/Dosis-Light.ttf b/static/fonts/dosis/static/Dosis-Light.ttf
similarity index 100%
rename from public/fonts/dosis/static/Dosis-Light.ttf
rename to static/fonts/dosis/static/Dosis-Light.ttf
diff --git a/public/fonts/dosis/static/Dosis-Medium.ttf b/static/fonts/dosis/static/Dosis-Medium.ttf
similarity index 100%
rename from public/fonts/dosis/static/Dosis-Medium.ttf
rename to static/fonts/dosis/static/Dosis-Medium.ttf
diff --git a/public/fonts/dosis/static/Dosis-Regular.ttf b/static/fonts/dosis/static/Dosis-Regular.ttf
similarity index 100%
rename from public/fonts/dosis/static/Dosis-Regular.ttf
rename to static/fonts/dosis/static/Dosis-Regular.ttf
diff --git a/public/fonts/dosis/static/Dosis-SemiBold.ttf b/static/fonts/dosis/static/Dosis-SemiBold.ttf
similarity index 100%
rename from public/fonts/dosis/static/Dosis-SemiBold.ttf
rename to static/fonts/dosis/static/Dosis-SemiBold.ttf
diff --git a/public/fonts/fakto10.ttf b/static/fonts/fakto10.ttf
similarity index 100%
rename from public/fonts/fakto10.ttf
rename to static/fonts/fakto10.ttf
diff --git a/public/fonts/fakto9.ttf b/static/fonts/fakto9.ttf
similarity index 100%
rename from public/fonts/fakto9.ttf
rename to static/fonts/fakto9.ttf
diff --git a/public/fonts/faktos.css b/static/fonts/faktos.css
similarity index 100%
rename from public/fonts/faktos.css
rename to static/fonts/faktos.css
diff --git a/public/fonts/faktos.ttf b/static/fonts/faktos.ttf
similarity index 100%
rename from public/fonts/faktos.ttf
rename to static/fonts/faktos.ttf
diff --git a/public/global.css b/static/global.css
similarity index 76%
rename from public/global.css
rename to static/global.css
index f3f5cd6..49c533a 100644
--- a/public/global.css
+++ b/static/global.css
@@ -1,11 +1,4 @@
:root {
- --font-scale-9: 0.75rem;
- --font-scale-10: 1em;
- --font-scale-11: 1.333rem;
- --font-scale-12: 1.777rem;
- --font-scale-13: 2.369rem;
- --font-scale-14: 3.157rem;
- --font-scale-15: 4.209rem;
--oxford-blue: hsla(226, 60%, 10%, 1);
--royal-blue-dark: hsla(218, 100%, 16%, 1);
@@ -79,24 +72,6 @@ input[type="range"] {
height: 0;
}
-button {
- color: #333;
- background-color: #f4f4f4;
- outline: none;
-}
-
-button:disabled {
- color: #999;
-}
-
-button:not(:disabled):active {
- background-color: #ddd;
-}
-
-button:focus {
- border-color: #666;
-}
-
/* ---- inputs --- */
input, select {
diff --git a/public/icons/crew-star.svg b/static/icons/crew-star.svg
similarity index 100%
rename from public/icons/crew-star.svg
rename to static/icons/crew-star.svg
diff --git a/public/icons/firecon.svg b/static/icons/firecon.svg
similarity index 100%
rename from public/icons/firecon.svg
rename to static/icons/firecon.svg
diff --git a/public/icons/ftl-drive.svg b/static/icons/ftl-drive.svg
similarity index 100%
rename from public/icons/ftl-drive.svg
rename to static/icons/ftl-drive.svg
diff --git a/public/icons/internal-systems.svg b/static/icons/internal-systems.svg
similarity index 100%
rename from public/icons/internal-systems.svg
rename to static/icons/internal-systems.svg
diff --git a/public/icons/screen-advanced.svg b/static/icons/screen-advanced.svg
similarity index 100%
rename from public/icons/screen-advanced.svg
rename to static/icons/screen-advanced.svg
diff --git a/public/icons/screen.svg b/static/icons/screen.svg
similarity index 100%
rename from public/icons/screen.svg
rename to static/icons/screen.svg
diff --git a/public/icons/standard-drive.svg b/static/icons/standard-drive.svg
similarity index 100%
rename from public/icons/standard-drive.svg
rename to static/icons/standard-drive.svg
diff --git a/public/mass.svg b/static/mass.svg
similarity index 100%
rename from public/mass.svg
rename to static/mass.svg
diff --git a/public/print.css b/static/print.css
similarity index 100%
rename from public/print.css
rename to static/print.css
diff --git a/public/ssd-icons/AADFC.svg b/static/ssd-icons/AADFC.svg
similarity index 100%
rename from public/ssd-icons/AADFC.svg
rename to static/ssd-icons/AADFC.svg
diff --git a/public/ssd-icons/ADS.svg b/static/ssd-icons/ADS.svg
similarity index 100%
rename from public/ssd-icons/ADS.svg
rename to static/ssd-icons/ADS.svg
diff --git a/public/ssd-icons/AMSuicide.svg b/static/ssd-icons/AMSuicide.svg
similarity index 100%
rename from public/ssd-icons/AMSuicide.svg
rename to static/ssd-icons/AMSuicide.svg
diff --git a/public/ssd-icons/AMT.svg b/static/ssd-icons/AMT.svg
similarity index 100%
rename from public/ssd-icons/AMT.svg
rename to static/ssd-icons/AMT.svg
diff --git a/public/ssd-icons/AdvFireCont2.svg b/static/ssd-icons/AdvFireCont2.svg
similarity index 100%
rename from public/ssd-icons/AdvFireCont2.svg
rename to static/ssd-icons/AdvFireCont2.svg
diff --git a/public/ssd-icons/Advanced FTL Drive.svg b/static/ssd-icons/Advanced FTL Drive.svg
similarity index 100%
rename from public/ssd-icons/Advanced FTL Drive.svg
rename to static/ssd-icons/Advanced FTL Drive.svg
diff --git a/public/ssd-icons/AlternativeIcon.svg b/static/ssd-icons/AlternativeIcon.svg
similarity index 100%
rename from public/ssd-icons/AlternativeIcon.svg
rename to static/ssd-icons/AlternativeIcon.svg
diff --git a/public/ssd-icons/AndvancedDrives (2).svg b/static/ssd-icons/AndvancedDrives (2).svg
similarity index 100%
rename from public/ssd-icons/AndvancedDrives (2).svg
rename to static/ssd-icons/AndvancedDrives (2).svg
diff --git a/public/ssd-icons/AndvancedDrives (3).svg b/static/ssd-icons/AndvancedDrives (3).svg
similarity index 100%
rename from public/ssd-icons/AndvancedDrives (3).svg
rename to static/ssd-icons/AndvancedDrives (3).svg
diff --git a/public/ssd-icons/AndvancedDrives (4).svg b/static/ssd-icons/AndvancedDrives (4).svg
similarity index 100%
rename from public/ssd-icons/AndvancedDrives (4).svg
rename to static/ssd-icons/AndvancedDrives (4).svg
diff --git a/public/ssd-icons/AndvancedDrives (5).svg b/static/ssd-icons/AndvancedDrives (5).svg
similarity index 100%
rename from public/ssd-icons/AndvancedDrives (5).svg
rename to static/ssd-icons/AndvancedDrives (5).svg
diff --git a/public/ssd-icons/AndvancedDrives (6).svg b/static/ssd-icons/AndvancedDrives (6).svg
similarity index 100%
rename from public/ssd-icons/AndvancedDrives (6).svg
rename to static/ssd-icons/AndvancedDrives (6).svg
diff --git a/public/ssd-icons/AndvancedDrives (7).svg b/static/ssd-icons/AndvancedDrives (7).svg
similarity index 100%
rename from public/ssd-icons/AndvancedDrives (7).svg
rename to static/ssd-icons/AndvancedDrives (7).svg
diff --git a/public/ssd-icons/AndvancedDrives (8).svg b/static/ssd-icons/AndvancedDrives (8).svg
similarity index 100%
rename from public/ssd-icons/AndvancedDrives (8).svg
rename to static/ssd-icons/AndvancedDrives (8).svg
diff --git a/public/ssd-icons/AndvancedDrives.svg b/static/ssd-icons/AndvancedDrives.svg
similarity index 100%
rename from public/ssd-icons/AndvancedDrives.svg
rename to static/ssd-icons/AndvancedDrives.svg
diff --git a/public/ssd-icons/AreaECM.svg b/static/ssd-icons/AreaECM.svg
similarity index 100%
rename from public/ssd-icons/AreaECM.svg
rename to static/ssd-icons/AreaECM.svg
diff --git a/public/ssd-icons/AreaScreens1.svg b/static/ssd-icons/AreaScreens1.svg
similarity index 100%
rename from public/ssd-icons/AreaScreens1.svg
rename to static/ssd-icons/AreaScreens1.svg
diff --git a/public/ssd-icons/AreaScreens2.svg b/static/ssd-icons/AreaScreens2.svg
similarity index 100%
rename from public/ssd-icons/AreaScreens2.svg
rename to static/ssd-icons/AreaScreens2.svg
diff --git a/public/ssd-icons/Beam1 (2).svg b/static/ssd-icons/Beam1 (2).svg
similarity index 100%
rename from public/ssd-icons/Beam1 (2).svg
rename to static/ssd-icons/Beam1 (2).svg
diff --git a/public/ssd-icons/Beam1.svg b/static/ssd-icons/Beam1.svg
similarity index 100%
rename from public/ssd-icons/Beam1.svg
rename to static/ssd-icons/Beam1.svg
diff --git a/public/ssd-icons/Beam2 (2).svg b/static/ssd-icons/Beam2 (2).svg
similarity index 100%
rename from public/ssd-icons/Beam2 (2).svg
rename to static/ssd-icons/Beam2 (2).svg
diff --git a/public/ssd-icons/Beam2.svg b/static/ssd-icons/Beam2.svg
similarity index 100%
rename from public/ssd-icons/Beam2.svg
rename to static/ssd-icons/Beam2.svg
diff --git a/public/ssd-icons/Beam3 (2).svg b/static/ssd-icons/Beam3 (2).svg
similarity index 100%
rename from public/ssd-icons/Beam3 (2).svg
rename to static/ssd-icons/Beam3 (2).svg
diff --git a/public/ssd-icons/Beam3.svg b/static/ssd-icons/Beam3.svg
similarity index 100%
rename from public/ssd-icons/Beam3.svg
rename to static/ssd-icons/Beam3.svg
diff --git a/public/ssd-icons/Beam4.svg b/static/ssd-icons/Beam4.svg
similarity index 100%
rename from public/ssd-icons/Beam4.svg
rename to static/ssd-icons/Beam4.svg
diff --git a/public/ssd-icons/Boarding Torps.svg b/static/ssd-icons/Boarding Torps.svg
similarity index 100%
rename from public/ssd-icons/Boarding Torps.svg
rename to static/ssd-icons/Boarding Torps.svg
diff --git a/public/ssd-icons/Capital Decoy.svg b/static/ssd-icons/Capital Decoy.svg
similarity index 100%
rename from public/ssd-icons/Capital Decoy.svg
rename to static/ssd-icons/Capital Decoy.svg
diff --git a/public/ssd-icons/Cargo Hold.svg b/static/ssd-icons/Cargo Hold.svg
similarity index 100%
rename from public/ssd-icons/Cargo Hold.svg
rename to static/ssd-icons/Cargo Hold.svg
diff --git a/public/ssd-icons/Cruiser Decoy.svg b/static/ssd-icons/Cruiser Decoy.svg
similarity index 100%
rename from public/ssd-icons/Cruiser Decoy.svg
rename to static/ssd-icons/Cruiser Decoy.svg
diff --git a/public/ssd-icons/DamageControl.svg b/static/ssd-icons/DamageControl.svg
similarity index 100%
rename from public/ssd-icons/DamageControl.svg
rename to static/ssd-icons/DamageControl.svg
diff --git a/public/ssd-icons/Defenses1.svg b/static/ssd-icons/Defenses1.svg
similarity index 100%
rename from public/ssd-icons/Defenses1.svg
rename to static/ssd-icons/Defenses1.svg
diff --git a/public/ssd-icons/Defenses2.svg b/static/ssd-icons/Defenses2.svg
similarity index 100%
rename from public/ssd-icons/Defenses2.svg
rename to static/ssd-icons/Defenses2.svg
diff --git a/public/ssd-icons/Defenses3.svg b/static/ssd-icons/Defenses3.svg
similarity index 100%
rename from public/ssd-icons/Defenses3.svg
rename to static/ssd-icons/Defenses3.svg
diff --git a/public/ssd-icons/Defenses4.svg b/static/ssd-icons/Defenses4.svg
similarity index 100%
rename from public/ssd-icons/Defenses4.svg
rename to static/ssd-icons/Defenses4.svg
diff --git a/public/ssd-icons/ECM.svg b/static/ssd-icons/ECM.svg
similarity index 100%
rename from public/ssd-icons/ECM.svg
rename to static/ssd-icons/ECM.svg
diff --git a/public/ssd-icons/EMP1.svg b/static/ssd-icons/EMP1.svg
similarity index 100%
rename from public/ssd-icons/EMP1.svg
rename to static/ssd-icons/EMP1.svg
diff --git a/public/ssd-icons/EMP2.svg b/static/ssd-icons/EMP2.svg
similarity index 100%
rename from public/ssd-icons/EMP2.svg
rename to static/ssd-icons/EMP2.svg
diff --git a/public/ssd-icons/EMP3.svg b/static/ssd-icons/EMP3.svg
similarity index 100%
rename from public/ssd-icons/EMP3.svg
rename to static/ssd-icons/EMP3.svg
diff --git a/public/ssd-icons/EMP4.svg b/static/ssd-icons/EMP4.svg
similarity index 100%
rename from public/ssd-icons/EMP4.svg
rename to static/ssd-icons/EMP4.svg
diff --git a/public/ssd-icons/Energy1.svg b/static/ssd-icons/Energy1.svg
similarity index 100%
rename from public/ssd-icons/Energy1.svg
rename to static/ssd-icons/Energy1.svg
diff --git a/public/ssd-icons/FTL Tug.svg b/static/ssd-icons/FTL Tug.svg
similarity index 100%
rename from public/ssd-icons/FTL Tug.svg
rename to static/ssd-icons/FTL Tug.svg
diff --git a/public/ssd-icons/FusionArray.svg b/static/ssd-icons/FusionArray.svg
similarity index 100%
rename from public/ssd-icons/FusionArray.svg
rename to static/ssd-icons/FusionArray.svg
diff --git a/public/ssd-icons/Gattling battery.svg b/static/ssd-icons/Gattling battery.svg
similarity index 100%
rename from public/ssd-icons/Gattling battery.svg
rename to static/ssd-icons/Gattling battery.svg
diff --git a/public/ssd-icons/GrapeShot.svg b/static/ssd-icons/GrapeShot.svg
similarity index 100%
rename from public/ssd-icons/GrapeShot.svg
rename to static/ssd-icons/GrapeShot.svg
diff --git a/public/ssd-icons/Gravity1.svg b/static/ssd-icons/Gravity1.svg
similarity index 100%
rename from public/ssd-icons/Gravity1.svg
rename to static/ssd-icons/Gravity1.svg
diff --git a/public/ssd-icons/Gravity2.svg b/static/ssd-icons/Gravity2.svg
similarity index 100%
rename from public/ssd-icons/Gravity2.svg
rename to static/ssd-icons/Gravity2.svg
diff --git a/public/ssd-icons/Gravity3.svg b/static/ssd-icons/Gravity3.svg
similarity index 100%
rename from public/ssd-icons/Gravity3.svg
rename to static/ssd-icons/Gravity3.svg
diff --git a/public/ssd-icons/Gravity4.svg b/static/ssd-icons/Gravity4.svg
similarity index 100%
rename from public/ssd-icons/Gravity4.svg
rename to static/ssd-icons/Gravity4.svg
diff --git a/public/ssd-icons/Hangar Rack 1.svg b/static/ssd-icons/Hangar Rack 1.svg
similarity index 100%
rename from public/ssd-icons/Hangar Rack 1.svg
rename to static/ssd-icons/Hangar Rack 1.svg
diff --git a/public/ssd-icons/Hangar Rack 2.svg b/static/ssd-icons/Hangar Rack 2.svg
similarity index 100%
rename from public/ssd-icons/Hangar Rack 2.svg
rename to static/ssd-icons/Hangar Rack 2.svg
diff --git a/public/ssd-icons/HeavyGraser1.svg b/static/ssd-icons/HeavyGraser1.svg
similarity index 100%
rename from public/ssd-icons/HeavyGraser1.svg
rename to static/ssd-icons/HeavyGraser1.svg
diff --git a/public/ssd-icons/HeavyGraser2.svg b/static/ssd-icons/HeavyGraser2.svg
similarity index 100%
rename from public/ssd-icons/HeavyGraser2.svg
rename to static/ssd-icons/HeavyGraser2.svg
diff --git a/public/ssd-icons/HeavyGraser3.svg b/static/ssd-icons/HeavyGraser3.svg
similarity index 100%
rename from public/ssd-icons/HeavyGraser3.svg
rename to static/ssd-icons/HeavyGraser3.svg
diff --git a/public/ssd-icons/HeavyGraser4.svg b/static/ssd-icons/HeavyGraser4.svg
similarity index 100%
rename from public/ssd-icons/HeavyGraser4.svg
rename to static/ssd-icons/HeavyGraser4.svg
diff --git a/public/ssd-icons/Holofield.svg b/static/ssd-icons/Holofield.svg
similarity index 100%
rename from public/ssd-icons/Holofield.svg
rename to static/ssd-icons/Holofield.svg
diff --git a/public/ssd-icons/Hull.svg b/static/ssd-icons/Hull.svg
similarity index 100%
rename from public/ssd-icons/Hull.svg
rename to static/ssd-icons/Hull.svg
diff --git a/public/ssd-icons/LRK1.svg b/static/ssd-icons/LRK1.svg
similarity index 100%
rename from public/ssd-icons/LRK1.svg
rename to static/ssd-icons/LRK1.svg
diff --git a/public/ssd-icons/LRK2.svg b/static/ssd-icons/LRK2.svg
similarity index 100%
rename from public/ssd-icons/LRK2.svg
rename to static/ssd-icons/LRK2.svg
diff --git a/public/ssd-icons/LRK3.svg b/static/ssd-icons/LRK3.svg
similarity index 100%
rename from public/ssd-icons/LRK3.svg
rename to static/ssd-icons/LRK3.svg
diff --git a/public/ssd-icons/LRK4.svg b/static/ssd-icons/LRK4.svg
similarity index 100%
rename from public/ssd-icons/LRK4.svg
rename to static/ssd-icons/LRK4.svg
diff --git a/public/ssd-icons/LRK5.svg b/static/ssd-icons/LRK5.svg
similarity index 100%
rename from public/ssd-icons/LRK5.svg
rename to static/ssd-icons/LRK5.svg
diff --git a/public/ssd-icons/Launch Tube Catapult 2.svg b/static/ssd-icons/Launch Tube Catapult 2.svg
similarity index 100%
rename from public/ssd-icons/Launch Tube Catapult 2.svg
rename to static/ssd-icons/Launch Tube Catapult 2.svg
diff --git a/public/ssd-icons/Launch Tube Catapult.svg b/static/ssd-icons/Launch Tube Catapult.svg
similarity index 100%
rename from public/ssd-icons/Launch Tube Catapult.svg
rename to static/ssd-icons/Launch Tube Catapult.svg
diff --git a/public/ssd-icons/Launch Tube.svg b/static/ssd-icons/Launch Tube.svg
similarity index 100%
rename from public/ssd-icons/Launch Tube.svg
rename to static/ssd-icons/Launch Tube.svg
diff --git a/public/ssd-icons/Marines1.svg b/static/ssd-icons/Marines1.svg
similarity index 100%
rename from public/ssd-icons/Marines1.svg
rename to static/ssd-icons/Marines1.svg
diff --git a/public/ssd-icons/Marines2.svg b/static/ssd-icons/Marines2.svg
similarity index 100%
rename from public/ssd-icons/Marines2.svg
rename to static/ssd-icons/Marines2.svg
diff --git a/public/ssd-icons/Marines3.svg b/static/ssd-icons/Marines3.svg
similarity index 100%
rename from public/ssd-icons/Marines3.svg
rename to static/ssd-icons/Marines3.svg
diff --git a/public/ssd-icons/MesonProjector.svg b/static/ssd-icons/MesonProjector.svg
similarity index 100%
rename from public/ssd-icons/MesonProjector.svg
rename to static/ssd-icons/MesonProjector.svg
diff --git a/public/ssd-icons/Mine Rack.svg b/static/ssd-icons/Mine Rack.svg
similarity index 100%
rename from public/ssd-icons/Mine Rack.svg
rename to static/ssd-icons/Mine Rack.svg
diff --git a/public/ssd-icons/Minesweep.svg b/static/ssd-icons/Minesweep.svg
similarity index 100%
rename from public/ssd-icons/Minesweep.svg
rename to static/ssd-icons/Minesweep.svg
diff --git a/public/ssd-icons/Needle1.svg b/static/ssd-icons/Needle1.svg
similarity index 100%
rename from public/ssd-icons/Needle1.svg
rename to static/ssd-icons/Needle1.svg
diff --git a/public/ssd-icons/Needle2.svg b/static/ssd-icons/Needle2.svg
similarity index 100%
rename from public/ssd-icons/Needle2.svg
rename to static/ssd-icons/Needle2.svg
diff --git a/public/ssd-icons/Needle3.svg b/static/ssd-icons/Needle3.svg
similarity index 100%
rename from public/ssd-icons/Needle3.svg
rename to static/ssd-icons/Needle3.svg
diff --git a/public/ssd-icons/Needle4.svg b/static/ssd-icons/Needle4.svg
similarity index 100%
rename from public/ssd-icons/Needle4.svg
rename to static/ssd-icons/Needle4.svg
diff --git a/public/ssd-icons/Nova Cannon.svg b/static/ssd-icons/Nova Cannon.svg
similarity index 100%
rename from public/ssd-icons/Nova Cannon.svg
rename to static/ssd-icons/Nova Cannon.svg
diff --git a/public/ssd-icons/Ortillery.svg b/static/ssd-icons/Ortillery.svg
similarity index 100%
rename from public/ssd-icons/Ortillery.svg
rename to static/ssd-icons/Ortillery.svg
diff --git a/public/ssd-icons/Passenger Berth.svg b/static/ssd-icons/Passenger Berth.svg
similarity index 100%
rename from public/ssd-icons/Passenger Berth.svg
rename to static/ssd-icons/Passenger Berth.svg
diff --git a/public/ssd-icons/Phasers1.svg b/static/ssd-icons/Phasers1.svg
similarity index 100%
rename from public/ssd-icons/Phasers1.svg
rename to static/ssd-icons/Phasers1.svg
diff --git a/public/ssd-icons/Phasers2.svg b/static/ssd-icons/Phasers2.svg
similarity index 100%
rename from public/ssd-icons/Phasers2.svg
rename to static/ssd-icons/Phasers2.svg
diff --git a/public/ssd-icons/Phasers3.svg b/static/ssd-icons/Phasers3.svg
similarity index 100%
rename from public/ssd-icons/Phasers3.svg
rename to static/ssd-icons/Phasers3.svg
diff --git a/public/ssd-icons/Phasers4.svg b/static/ssd-icons/Phasers4.svg
similarity index 100%
rename from public/ssd-icons/Phasers4.svg
rename to static/ssd-icons/Phasers4.svg
diff --git a/public/ssd-icons/Plasma Bolt Launcher 1 v1.svg b/static/ssd-icons/Plasma Bolt Launcher 1 v1.svg
similarity index 100%
rename from public/ssd-icons/Plasma Bolt Launcher 1 v1.svg
rename to static/ssd-icons/Plasma Bolt Launcher 1 v1.svg
diff --git a/public/ssd-icons/Plasma Bolt Launcher 1 v2.svg b/static/ssd-icons/Plasma Bolt Launcher 1 v2.svg
similarity index 100%
rename from public/ssd-icons/Plasma Bolt Launcher 1 v2.svg
rename to static/ssd-icons/Plasma Bolt Launcher 1 v2.svg
diff --git a/public/ssd-icons/Plasma Bolt Launcher 1.svg b/static/ssd-icons/Plasma Bolt Launcher 1.svg
similarity index 100%
rename from public/ssd-icons/Plasma Bolt Launcher 1.svg
rename to static/ssd-icons/Plasma Bolt Launcher 1.svg
diff --git a/public/ssd-icons/Plasma Bolt Launcher 2 v1.svg b/static/ssd-icons/Plasma Bolt Launcher 2 v1.svg
similarity index 100%
rename from public/ssd-icons/Plasma Bolt Launcher 2 v1.svg
rename to static/ssd-icons/Plasma Bolt Launcher 2 v1.svg
diff --git a/public/ssd-icons/Plasma Bolt Launcher 2 v2.svg b/static/ssd-icons/Plasma Bolt Launcher 2 v2.svg
similarity index 100%
rename from public/ssd-icons/Plasma Bolt Launcher 2 v2.svg
rename to static/ssd-icons/Plasma Bolt Launcher 2 v2.svg
diff --git a/public/ssd-icons/Plasma Bolt Launcher 2.svg b/static/ssd-icons/Plasma Bolt Launcher 2.svg
similarity index 100%
rename from public/ssd-icons/Plasma Bolt Launcher 2.svg
rename to static/ssd-icons/Plasma Bolt Launcher 2.svg
diff --git a/public/ssd-icons/Plasma Bolt Launcher 3 v1.svg b/static/ssd-icons/Plasma Bolt Launcher 3 v1.svg
similarity index 100%
rename from public/ssd-icons/Plasma Bolt Launcher 3 v1.svg
rename to static/ssd-icons/Plasma Bolt Launcher 3 v1.svg
diff --git a/public/ssd-icons/Plasma Bolt Launcher 3 v2.svg b/static/ssd-icons/Plasma Bolt Launcher 3 v2.svg
similarity index 100%
rename from public/ssd-icons/Plasma Bolt Launcher 3 v2.svg
rename to static/ssd-icons/Plasma Bolt Launcher 3 v2.svg
diff --git a/public/ssd-icons/Plasma Bolt Launcher 3.svg b/static/ssd-icons/Plasma Bolt Launcher 3.svg
similarity index 100%
rename from public/ssd-icons/Plasma Bolt Launcher 3.svg
rename to static/ssd-icons/Plasma Bolt Launcher 3.svg
diff --git a/public/ssd-icons/Plasma Bolt Launcher 4 v1.svg b/static/ssd-icons/Plasma Bolt Launcher 4 v1.svg
similarity index 100%
rename from public/ssd-icons/Plasma Bolt Launcher 4 v1.svg
rename to static/ssd-icons/Plasma Bolt Launcher 4 v1.svg
diff --git a/public/ssd-icons/Plasma Bolt Launcher 4 v2.svg b/static/ssd-icons/Plasma Bolt Launcher 4 v2.svg
similarity index 100%
rename from public/ssd-icons/Plasma Bolt Launcher 4 v2.svg
rename to static/ssd-icons/Plasma Bolt Launcher 4 v2.svg
diff --git a/public/ssd-icons/Plasma Bolt Launcher 4.svg b/static/ssd-icons/Plasma Bolt Launcher 4.svg
similarity index 100%
rename from public/ssd-icons/Plasma Bolt Launcher 4.svg
rename to static/ssd-icons/Plasma Bolt Launcher 4.svg
diff --git a/public/ssd-icons/Plasma Bolt Launcher 5 v1.svg b/static/ssd-icons/Plasma Bolt Launcher 5 v1.svg
similarity index 100%
rename from public/ssd-icons/Plasma Bolt Launcher 5 v1.svg
rename to static/ssd-icons/Plasma Bolt Launcher 5 v1.svg
diff --git a/public/ssd-icons/Plasma Bolt Launcher 5 v2.svg b/static/ssd-icons/Plasma Bolt Launcher 5 v2.svg
similarity index 100%
rename from public/ssd-icons/Plasma Bolt Launcher 5 v2.svg
rename to static/ssd-icons/Plasma Bolt Launcher 5 v2.svg
diff --git a/public/ssd-icons/Plasma Bolt Launcher 5.svg b/static/ssd-icons/Plasma Bolt Launcher 5.svg
similarity index 100%
rename from public/ssd-icons/Plasma Bolt Launcher 5.svg
rename to static/ssd-icons/Plasma Bolt Launcher 5.svg
diff --git a/public/ssd-icons/Plasma Bolt Launcher 6 v1.svg b/static/ssd-icons/Plasma Bolt Launcher 6 v1.svg
similarity index 100%
rename from public/ssd-icons/Plasma Bolt Launcher 6 v1.svg
rename to static/ssd-icons/Plasma Bolt Launcher 6 v1.svg
diff --git a/public/ssd-icons/Plasma Bolt Launcher 6 v2.svg b/static/ssd-icons/Plasma Bolt Launcher 6 v2.svg
similarity index 100%
rename from public/ssd-icons/Plasma Bolt Launcher 6 v2.svg
rename to static/ssd-icons/Plasma Bolt Launcher 6 v2.svg
diff --git a/public/ssd-icons/Plasma Bolt Launcher 6.svg b/static/ssd-icons/Plasma Bolt Launcher 6.svg
similarity index 100%
rename from public/ssd-icons/Plasma Bolt Launcher 6.svg
rename to static/ssd-icons/Plasma Bolt Launcher 6.svg
diff --git a/public/ssd-icons/Plasma1.svg b/static/ssd-icons/Plasma1.svg
similarity index 100%
rename from public/ssd-icons/Plasma1.svg
rename to static/ssd-icons/Plasma1.svg
diff --git a/public/ssd-icons/Plasma2.svg b/static/ssd-icons/Plasma2.svg
similarity index 100%
rename from public/ssd-icons/Plasma2.svg
rename to static/ssd-icons/Plasma2.svg
diff --git a/public/ssd-icons/Plasma3.svg b/static/ssd-icons/Plasma3.svg
similarity index 100%
rename from public/ssd-icons/Plasma3.svg
rename to static/ssd-icons/Plasma3.svg
diff --git a/public/ssd-icons/PlasmaCannon1.svg b/static/ssd-icons/PlasmaCannon1.svg
similarity index 100%
rename from public/ssd-icons/PlasmaCannon1.svg
rename to static/ssd-icons/PlasmaCannon1.svg
diff --git a/public/ssd-icons/PlasmaCannon2.svg b/static/ssd-icons/PlasmaCannon2.svg
similarity index 100%
rename from public/ssd-icons/PlasmaCannon2.svg
rename to static/ssd-icons/PlasmaCannon2.svg
diff --git a/public/ssd-icons/PlasmaCannon3.svg b/static/ssd-icons/PlasmaCannon3.svg
similarity index 100%
rename from public/ssd-icons/PlasmaCannon3.svg
rename to static/ssd-icons/PlasmaCannon3.svg
diff --git a/public/ssd-icons/PlasmaCannon4.svg b/static/ssd-icons/PlasmaCannon4.svg
similarity index 100%
rename from public/ssd-icons/PlasmaCannon4.svg
rename to static/ssd-icons/PlasmaCannon4.svg
diff --git a/public/ssd-icons/Psp1.svg b/static/ssd-icons/Psp1.svg
similarity index 100%
rename from public/ssd-icons/Psp1.svg
rename to static/ssd-icons/Psp1.svg
diff --git a/public/ssd-icons/Psp2.svg b/static/ssd-icons/Psp2.svg
similarity index 100%
rename from public/ssd-icons/Psp2.svg
rename to static/ssd-icons/Psp2.svg
diff --git a/public/ssd-icons/Psp3.svg b/static/ssd-icons/Psp3.svg
similarity index 100%
rename from public/ssd-icons/Psp3.svg
rename to static/ssd-icons/Psp3.svg
diff --git a/public/ssd-icons/Pulser1.svg b/static/ssd-icons/Pulser1.svg
similarity index 100%
rename from public/ssd-icons/Pulser1.svg
rename to static/ssd-icons/Pulser1.svg
diff --git a/public/ssd-icons/Pulser2.svg b/static/ssd-icons/Pulser2.svg
similarity index 100%
rename from public/ssd-icons/Pulser2.svg
rename to static/ssd-icons/Pulser2.svg
diff --git a/public/ssd-icons/Pulser3.svg b/static/ssd-icons/Pulser3.svg
similarity index 100%
rename from public/ssd-icons/Pulser3.svg
rename to static/ssd-icons/Pulser3.svg
diff --git a/public/ssd-icons/Pulser4.svg b/static/ssd-icons/Pulser4.svg
similarity index 100%
rename from public/ssd-icons/Pulser4.svg
rename to static/ssd-icons/Pulser4.svg
diff --git a/public/ssd-icons/Pulser5.svg b/static/ssd-icons/Pulser5.svg
similarity index 100%
rename from public/ssd-icons/Pulser5.svg
rename to static/ssd-icons/Pulser5.svg
diff --git a/public/ssd-icons/Pulser6.svg b/static/ssd-icons/Pulser6.svg
similarity index 100%
rename from public/ssd-icons/Pulser6.svg
rename to static/ssd-icons/Pulser6.svg
diff --git a/public/ssd-icons/Pulser7.svg b/static/ssd-icons/Pulser7.svg
similarity index 100%
rename from public/ssd-icons/Pulser7.svg
rename to static/ssd-icons/Pulser7.svg
diff --git a/public/ssd-icons/Pulser8.svg b/static/ssd-icons/Pulser8.svg
similarity index 100%
rename from public/ssd-icons/Pulser8.svg
rename to static/ssd-icons/Pulser8.svg
diff --git a/public/ssd-icons/Reflex Field.svg b/static/ssd-icons/Reflex Field.svg
similarity index 100%
rename from public/ssd-icons/Reflex Field.svg
rename to static/ssd-icons/Reflex Field.svg
diff --git a/public/ssd-icons/Rocket Pod 2.svg b/static/ssd-icons/Rocket Pod 2.svg
similarity index 100%
rename from public/ssd-icons/Rocket Pod 2.svg
rename to static/ssd-icons/Rocket Pod 2.svg
diff --git a/public/ssd-icons/Rocket Pod.svg b/static/ssd-icons/Rocket Pod.svg
similarity index 100%
rename from public/ssd-icons/Rocket Pod.svg
rename to static/ssd-icons/Rocket Pod.svg
diff --git a/public/ssd-icons/SRK1(v1).svg b/static/ssd-icons/SRK1(v1).svg
similarity index 100%
rename from public/ssd-icons/SRK1(v1).svg
rename to static/ssd-icons/SRK1(v1).svg
diff --git a/public/ssd-icons/SRK1(v2).svg b/static/ssd-icons/SRK1(v2).svg
similarity index 100%
rename from public/ssd-icons/SRK1(v2).svg
rename to static/ssd-icons/SRK1(v2).svg
diff --git a/public/ssd-icons/SRK2(v1).svg b/static/ssd-icons/SRK2(v1).svg
similarity index 100%
rename from public/ssd-icons/SRK2(v1).svg
rename to static/ssd-icons/SRK2(v1).svg
diff --git a/public/ssd-icons/SRK2(v2).svg b/static/ssd-icons/SRK2(v2).svg
similarity index 100%
rename from public/ssd-icons/SRK2(v2).svg
rename to static/ssd-icons/SRK2(v2).svg
diff --git a/public/ssd-icons/SRK3(v1).svg b/static/ssd-icons/SRK3(v1).svg
similarity index 100%
rename from public/ssd-icons/SRK3(v1).svg
rename to static/ssd-icons/SRK3(v1).svg
diff --git a/public/ssd-icons/SRK3(v2).svg b/static/ssd-icons/SRK3(v2).svg
similarity index 100%
rename from public/ssd-icons/SRK3(v2).svg
rename to static/ssd-icons/SRK3(v2).svg
diff --git a/public/ssd-icons/SRK4(v1).svg b/static/ssd-icons/SRK4(v1).svg
similarity index 100%
rename from public/ssd-icons/SRK4(v1).svg
rename to static/ssd-icons/SRK4(v1).svg
diff --git a/public/ssd-icons/SRK4(v2).svg b/static/ssd-icons/SRK4(v2).svg
similarity index 100%
rename from public/ssd-icons/SRK4(v2).svg
rename to static/ssd-icons/SRK4(v2).svg
diff --git a/public/ssd-icons/SRK5(v1).svg b/static/ssd-icons/SRK5(v1).svg
similarity index 100%
rename from public/ssd-icons/SRK5(v1).svg
rename to static/ssd-icons/SRK5(v1).svg
diff --git a/public/ssd-icons/SRK5(v2).svg b/static/ssd-icons/SRK5(v2).svg
similarity index 100%
rename from public/ssd-icons/SRK5(v2).svg
rename to static/ssd-icons/SRK5(v2).svg
diff --git a/public/ssd-icons/Salvo Missiles Magazines (2).svg b/static/ssd-icons/Salvo Missiles Magazines (2).svg
similarity index 100%
rename from public/ssd-icons/Salvo Missiles Magazines (2).svg
rename to static/ssd-icons/Salvo Missiles Magazines (2).svg
diff --git a/public/ssd-icons/Salvo Missiles Magazines (3).svg b/static/ssd-icons/Salvo Missiles Magazines (3).svg
similarity index 100%
rename from public/ssd-icons/Salvo Missiles Magazines (3).svg
rename to static/ssd-icons/Salvo Missiles Magazines (3).svg
diff --git a/public/ssd-icons/Salvo Missiles Magazines (4).svg b/static/ssd-icons/Salvo Missiles Magazines (4).svg
similarity index 100%
rename from public/ssd-icons/Salvo Missiles Magazines (4).svg
rename to static/ssd-icons/Salvo Missiles Magazines (4).svg
diff --git a/public/ssd-icons/Salvo Missiles Magazines (5).svg b/static/ssd-icons/Salvo Missiles Magazines (5).svg
similarity index 100%
rename from public/ssd-icons/Salvo Missiles Magazines (5).svg
rename to static/ssd-icons/Salvo Missiles Magazines (5).svg
diff --git a/public/ssd-icons/Salvo Missiles Magazines (6).svg b/static/ssd-icons/Salvo Missiles Magazines (6).svg
similarity index 100%
rename from public/ssd-icons/Salvo Missiles Magazines (6).svg
rename to static/ssd-icons/Salvo Missiles Magazines (6).svg
diff --git a/public/ssd-icons/Salvo Missiles Magazines.svg b/static/ssd-icons/Salvo Missiles Magazines.svg
similarity index 100%
rename from public/ssd-icons/Salvo Missiles Magazines.svg
rename to static/ssd-icons/Salvo Missiles Magazines.svg
diff --git a/public/ssd-icons/Salvo Missiles.svg b/static/ssd-icons/Salvo Missiles.svg
similarity index 100%
rename from public/ssd-icons/Salvo Missiles.svg
rename to static/ssd-icons/Salvo Missiles.svg
diff --git a/public/ssd-icons/SensorsLVL1.svg b/static/ssd-icons/SensorsLVL1.svg
similarity index 100%
rename from public/ssd-icons/SensorsLVL1.svg
rename to static/ssd-icons/SensorsLVL1.svg
diff --git a/public/ssd-icons/SensorsLVL2.svg b/static/ssd-icons/SensorsLVL2.svg
similarity index 100%
rename from public/ssd-icons/SensorsLVL2.svg
rename to static/ssd-icons/SensorsLVL2.svg
diff --git a/public/ssd-icons/Shroud.svg b/static/ssd-icons/Shroud.svg
similarity index 100%
rename from public/ssd-icons/Shroud.svg
rename to static/ssd-icons/Shroud.svg
diff --git a/public/ssd-icons/StandardDrives (2).svg b/static/ssd-icons/StandardDrives (2).svg
similarity index 100%
rename from public/ssd-icons/StandardDrives (2).svg
rename to static/ssd-icons/StandardDrives (2).svg
diff --git a/public/ssd-icons/StandardDrives (3).svg b/static/ssd-icons/StandardDrives (3).svg
similarity index 100%
rename from public/ssd-icons/StandardDrives (3).svg
rename to static/ssd-icons/StandardDrives (3).svg
diff --git a/public/ssd-icons/StandardDrives (4).svg b/static/ssd-icons/StandardDrives (4).svg
similarity index 100%
rename from public/ssd-icons/StandardDrives (4).svg
rename to static/ssd-icons/StandardDrives (4).svg
diff --git a/public/ssd-icons/StandardDrives (5).svg b/static/ssd-icons/StandardDrives (5).svg
similarity index 100%
rename from public/ssd-icons/StandardDrives (5).svg
rename to static/ssd-icons/StandardDrives (5).svg
diff --git a/public/ssd-icons/StandardDrives (6).svg b/static/ssd-icons/StandardDrives (6).svg
similarity index 100%
rename from public/ssd-icons/StandardDrives (6).svg
rename to static/ssd-icons/StandardDrives (6).svg
diff --git a/public/ssd-icons/StandardDrives (7).svg b/static/ssd-icons/StandardDrives (7).svg
similarity index 100%
rename from public/ssd-icons/StandardDrives (7).svg
rename to static/ssd-icons/StandardDrives (7).svg
diff --git a/public/ssd-icons/StandardDrives (8).svg b/static/ssd-icons/StandardDrives (8).svg
similarity index 100%
rename from public/ssd-icons/StandardDrives (8).svg
rename to static/ssd-icons/StandardDrives (8).svg
diff --git a/public/ssd-icons/StandardDrives.svg b/static/ssd-icons/StandardDrives.svg
similarity index 100%
rename from public/ssd-icons/StandardDrives.svg
rename to static/ssd-icons/StandardDrives.svg
diff --git a/public/ssd-icons/StandardGraser1.svg b/static/ssd-icons/StandardGraser1.svg
similarity index 100%
rename from public/ssd-icons/StandardGraser1.svg
rename to static/ssd-icons/StandardGraser1.svg
diff --git a/public/ssd-icons/StandardGraser2.svg b/static/ssd-icons/StandardGraser2.svg
similarity index 100%
rename from public/ssd-icons/StandardGraser2.svg
rename to static/ssd-icons/StandardGraser2.svg
diff --git a/public/ssd-icons/StandardGraser3.svg b/static/ssd-icons/StandardGraser3.svg
similarity index 100%
rename from public/ssd-icons/StandardGraser3.svg
rename to static/ssd-icons/StandardGraser3.svg
diff --git a/public/ssd-icons/Stealth Hull.svg b/static/ssd-icons/Stealth Hull.svg
similarity index 100%
rename from public/ssd-icons/Stealth Hull.svg
rename to static/ssd-icons/Stealth Hull.svg
diff --git a/public/ssd-icons/StealthField.svg b/static/ssd-icons/StealthField.svg
similarity index 100%
rename from public/ssd-icons/StealthField.svg
rename to static/ssd-icons/StealthField.svg
diff --git a/public/ssd-icons/Transport Craft.svg b/static/ssd-icons/Transport Craft.svg
similarity index 100%
rename from public/ssd-icons/Transport Craft.svg
rename to static/ssd-icons/Transport Craft.svg
diff --git a/public/ssd-icons/Transporter1.svg b/static/ssd-icons/Transporter1.svg
similarity index 100%
rename from public/ssd-icons/Transporter1.svg
rename to static/ssd-icons/Transporter1.svg
diff --git a/public/ssd-icons/Transporter2.svg b/static/ssd-icons/Transporter2.svg
similarity index 100%
rename from public/ssd-icons/Transporter2.svg
rename to static/ssd-icons/Transporter2.svg
diff --git a/public/ssd-icons/Transporter3.svg b/static/ssd-icons/Transporter3.svg
similarity index 100%
rename from public/ssd-icons/Transporter3.svg
rename to static/ssd-icons/Transporter3.svg
diff --git a/public/ssd-icons/Transporter4.svg b/static/ssd-icons/Transporter4.svg
similarity index 100%
rename from public/ssd-icons/Transporter4.svg
rename to static/ssd-icons/Transporter4.svg
diff --git a/public/ssd-icons/Troop Berth.svg b/static/ssd-icons/Troop Berth.svg
similarity index 100%
rename from public/ssd-icons/Troop Berth.svg
rename to static/ssd-icons/Troop Berth.svg
diff --git a/public/ssd-icons/Turret1.svg b/static/ssd-icons/Turret1.svg
similarity index 100%
rename from public/ssd-icons/Turret1.svg
rename to static/ssd-icons/Turret1.svg
diff --git a/public/ssd-icons/Turret2.svg b/static/ssd-icons/Turret2.svg
similarity index 100%
rename from public/ssd-icons/Turret2.svg
rename to static/ssd-icons/Turret2.svg
diff --git a/public/ssd-icons/TwinParticleArray.svg b/static/ssd-icons/TwinParticleArray.svg
similarity index 100%
rename from public/ssd-icons/TwinParticleArray.svg
rename to static/ssd-icons/TwinParticleArray.svg
diff --git a/public/ssd-icons/Type I Cloak.svg b/static/ssd-icons/Type I Cloak.svg
similarity index 100%
rename from public/ssd-icons/Type I Cloak.svg
rename to static/ssd-icons/Type I Cloak.svg
diff --git a/public/ssd-icons/Type II Cloak.svg b/static/ssd-icons/Type II Cloak.svg
similarity index 100%
rename from public/ssd-icons/Type II Cloak.svg
rename to static/ssd-icons/Type II Cloak.svg
diff --git a/public/ssd-icons/Type III Cloak.svg b/static/ssd-icons/Type III Cloak.svg
similarity index 100%
rename from public/ssd-icons/Type III Cloak.svg
rename to static/ssd-icons/Type III Cloak.svg
diff --git a/public/ssd-icons/Wave Gun.svg b/static/ssd-icons/Wave Gun.svg
similarity index 100%
rename from public/ssd-icons/Wave Gun.svg
rename to static/ssd-icons/Wave Gun.svg
diff --git a/public/ssd-icons/armor.svg b/static/ssd-icons/armor.svg
similarity index 100%
rename from public/ssd-icons/armor.svg
rename to static/ssd-icons/armor.svg
diff --git a/public/ssd-icons/fighter 1.svg b/static/ssd-icons/fighter 1.svg
similarity index 100%
rename from public/ssd-icons/fighter 1.svg
rename to static/ssd-icons/fighter 1.svg
diff --git a/public/ssd-icons/fighter 2.svg b/static/ssd-icons/fighter 2.svg
similarity index 100%
rename from public/ssd-icons/fighter 2.svg
rename to static/ssd-icons/fighter 2.svg
diff --git a/public/ssd-icons/fighter 3.svg b/static/ssd-icons/fighter 3.svg
similarity index 100%
rename from public/ssd-icons/fighter 3.svg
rename to static/ssd-icons/fighter 3.svg
diff --git a/public/ssd-icons/fighter 4.svg b/static/ssd-icons/fighter 4.svg
similarity index 100%
rename from public/ssd-icons/fighter 4.svg
rename to static/ssd-icons/fighter 4.svg
diff --git a/public/ssd-icons/fighter 5.svg b/static/ssd-icons/fighter 5.svg
similarity index 100%
rename from public/ssd-icons/fighter 5.svg
rename to static/ssd-icons/fighter 5.svg
diff --git a/public/ssd-icons/fighter 6.svg b/static/ssd-icons/fighter 6.svg
similarity index 100%
rename from public/ssd-icons/fighter 6.svg
rename to static/ssd-icons/fighter 6.svg
diff --git a/public/ssd-icons/fighter 7.svg b/static/ssd-icons/fighter 7.svg
similarity index 100%
rename from public/ssd-icons/fighter 7.svg
rename to static/ssd-icons/fighter 7.svg
diff --git a/public/ssd-icons/fighter 8.svg b/static/ssd-icons/fighter 8.svg
similarity index 100%
rename from public/ssd-icons/fighter 8.svg
rename to static/ssd-icons/fighter 8.svg
diff --git a/public/ssd-icons/fighter 9.svg b/static/ssd-icons/fighter 9.svg
similarity index 100%
rename from public/ssd-icons/fighter 9.svg
rename to static/ssd-icons/fighter 9.svg
diff --git a/public/ssd-icons/fighter bays (1).svg b/static/ssd-icons/fighter bays (1).svg
similarity index 100%
rename from public/ssd-icons/fighter bays (1).svg
rename to static/ssd-icons/fighter bays (1).svg
diff --git a/public/ssd-icons/fighter bays (10).svg b/static/ssd-icons/fighter bays (10).svg
similarity index 100%
rename from public/ssd-icons/fighter bays (10).svg
rename to static/ssd-icons/fighter bays (10).svg
diff --git a/public/ssd-icons/fighter bays (11).svg b/static/ssd-icons/fighter bays (11).svg
similarity index 100%
rename from public/ssd-icons/fighter bays (11).svg
rename to static/ssd-icons/fighter bays (11).svg
diff --git a/public/ssd-icons/fighter bays (12).svg b/static/ssd-icons/fighter bays (12).svg
similarity index 100%
rename from public/ssd-icons/fighter bays (12).svg
rename to static/ssd-icons/fighter bays (12).svg
diff --git a/public/ssd-icons/fighter bays (13).svg b/static/ssd-icons/fighter bays (13).svg
similarity index 100%
rename from public/ssd-icons/fighter bays (13).svg
rename to static/ssd-icons/fighter bays (13).svg
diff --git a/public/ssd-icons/fighter bays (14).svg b/static/ssd-icons/fighter bays (14).svg
similarity index 100%
rename from public/ssd-icons/fighter bays (14).svg
rename to static/ssd-icons/fighter bays (14).svg
diff --git a/public/ssd-icons/fighter bays (15).svg b/static/ssd-icons/fighter bays (15).svg
similarity index 100%
rename from public/ssd-icons/fighter bays (15).svg
rename to static/ssd-icons/fighter bays (15).svg
diff --git a/public/ssd-icons/fighter bays (16).svg b/static/ssd-icons/fighter bays (16).svg
similarity index 100%
rename from public/ssd-icons/fighter bays (16).svg
rename to static/ssd-icons/fighter bays (16).svg
diff --git a/public/ssd-icons/fighter bays (2).svg b/static/ssd-icons/fighter bays (2).svg
similarity index 100%
rename from public/ssd-icons/fighter bays (2).svg
rename to static/ssd-icons/fighter bays (2).svg
diff --git a/public/ssd-icons/fighter bays (3).svg b/static/ssd-icons/fighter bays (3).svg
similarity index 100%
rename from public/ssd-icons/fighter bays (3).svg
rename to static/ssd-icons/fighter bays (3).svg
diff --git a/public/ssd-icons/fighter bays (4).svg b/static/ssd-icons/fighter bays (4).svg
similarity index 100%
rename from public/ssd-icons/fighter bays (4).svg
rename to static/ssd-icons/fighter bays (4).svg
diff --git a/public/ssd-icons/fighter bays (5).svg b/static/ssd-icons/fighter bays (5).svg
similarity index 100%
rename from public/ssd-icons/fighter bays (5).svg
rename to static/ssd-icons/fighter bays (5).svg
diff --git a/public/ssd-icons/fighter bays (6).svg b/static/ssd-icons/fighter bays (6).svg
similarity index 100%
rename from public/ssd-icons/fighter bays (6).svg
rename to static/ssd-icons/fighter bays (6).svg
diff --git a/public/ssd-icons/fighter bays (7).svg b/static/ssd-icons/fighter bays (7).svg
similarity index 100%
rename from public/ssd-icons/fighter bays (7).svg
rename to static/ssd-icons/fighter bays (7).svg
diff --git a/public/ssd-icons/fighter bays (8).svg b/static/ssd-icons/fighter bays (8).svg
similarity index 100%
rename from public/ssd-icons/fighter bays (8).svg
rename to static/ssd-icons/fighter bays (8).svg
diff --git a/public/ssd-icons/fighter bays (9).svg b/static/ssd-icons/fighter bays (9).svg
similarity index 100%
rename from public/ssd-icons/fighter bays (9).svg
rename to static/ssd-icons/fighter bays (9).svg
diff --git a/public/ssd-icons/new1.svg b/static/ssd-icons/new1.svg
similarity index 100%
rename from public/ssd-icons/new1.svg
rename to static/ssd-icons/new1.svg
diff --git a/public/ssd-icons/new2.svg b/static/ssd-icons/new2.svg
similarity index 100%
rename from public/ssd-icons/new2.svg
rename to static/ssd-icons/new2.svg
diff --git a/public/ssd-icons/new3.svg b/static/ssd-icons/new3.svg
similarity index 100%
rename from public/ssd-icons/new3.svg
rename to static/ssd-icons/new3.svg
diff --git a/public/ssd-icons/new4.svg b/static/ssd-icons/new4.svg
similarity index 100%
rename from public/ssd-icons/new4.svg
rename to static/ssd-icons/new4.svg
diff --git a/public/ssd-icons/new5.svg b/static/ssd-icons/new5.svg
similarity index 100%
rename from public/ssd-icons/new5.svg
rename to static/ssd-icons/new5.svg
diff --git a/public/ssd-icons/new6.svg b/static/ssd-icons/new6.svg
similarity index 100%
rename from public/ssd-icons/new6.svg
rename to static/ssd-icons/new6.svg
diff --git a/public/ssd-icons/notes b/static/ssd-icons/notes
similarity index 100%
rename from public/ssd-icons/notes
rename to static/ssd-icons/notes
diff --git a/public/ssd-icons/numbers/0.svg b/static/ssd-icons/numbers/0.svg
similarity index 100%
rename from public/ssd-icons/numbers/0.svg
rename to static/ssd-icons/numbers/0.svg
diff --git a/public/ssd-icons/numbers/1.svg b/static/ssd-icons/numbers/1.svg
similarity index 100%
rename from public/ssd-icons/numbers/1.svg
rename to static/ssd-icons/numbers/1.svg
diff --git a/public/ssd-icons/numbers/2.svg b/static/ssd-icons/numbers/2.svg
similarity index 100%
rename from public/ssd-icons/numbers/2.svg
rename to static/ssd-icons/numbers/2.svg
diff --git a/public/ssd-icons/numbers/3.svg b/static/ssd-icons/numbers/3.svg
similarity index 100%
rename from public/ssd-icons/numbers/3.svg
rename to static/ssd-icons/numbers/3.svg
diff --git a/public/ssd-icons/numbers/4.svg b/static/ssd-icons/numbers/4.svg
similarity index 100%
rename from public/ssd-icons/numbers/4.svg
rename to static/ssd-icons/numbers/4.svg
diff --git a/public/ssd-icons/numbers/5.svg b/static/ssd-icons/numbers/5.svg
similarity index 100%
rename from public/ssd-icons/numbers/5.svg
rename to static/ssd-icons/numbers/5.svg
diff --git a/public/ssd-icons/numbers/6.svg b/static/ssd-icons/numbers/6.svg
similarity index 100%
rename from public/ssd-icons/numbers/6.svg
rename to static/ssd-icons/numbers/6.svg
diff --git a/public/ssd-icons/numbers/7.svg b/static/ssd-icons/numbers/7.svg
similarity index 100%
rename from public/ssd-icons/numbers/7.svg
rename to static/ssd-icons/numbers/7.svg
diff --git a/public/ssd-icons/numbers/8.svg b/static/ssd-icons/numbers/8.svg
similarity index 100%
rename from public/ssd-icons/numbers/8.svg
rename to static/ssd-icons/numbers/8.svg
diff --git a/public/ssd-icons/numbers/9.svg b/static/ssd-icons/numbers/9.svg
similarity index 100%
rename from public/ssd-icons/numbers/9.svg
rename to static/ssd-icons/numbers/9.svg
diff --git a/public/ssd-icons/old1.svg b/static/ssd-icons/old1.svg
similarity index 100%
rename from public/ssd-icons/old1.svg
rename to static/ssd-icons/old1.svg
diff --git a/public/ssd-icons/old2.svg b/static/ssd-icons/old2.svg
similarity index 100%
rename from public/ssd-icons/old2.svg
rename to static/ssd-icons/old2.svg
diff --git a/public/ssd-icons/old3.svg b/static/ssd-icons/old3.svg
similarity index 100%
rename from public/ssd-icons/old3.svg
rename to static/ssd-icons/old3.svg
diff --git a/public/ssd-icons/old4.svg b/static/ssd-icons/old4.svg
similarity index 100%
rename from public/ssd-icons/old4.svg
rename to static/ssd-icons/old4.svg
diff --git a/public/ssd-icons/old5.svg b/static/ssd-icons/old5.svg
similarity index 100%
rename from public/ssd-icons/old5.svg
rename to static/ssd-icons/old5.svg
diff --git a/public/ssd-icons/old6.svg b/static/ssd-icons/old6.svg
similarity index 100%
rename from public/ssd-icons/old6.svg
rename to static/ssd-icons/old6.svg
diff --git a/public/ssd-icons/unlabeled (1).svg b/static/ssd-icons/unlabeled (1).svg
similarity index 100%
rename from public/ssd-icons/unlabeled (1).svg
rename to static/ssd-icons/unlabeled (1).svg
diff --git a/public/ssd-icons/unlabeled (3).svg b/static/ssd-icons/unlabeled (3).svg
similarity index 100%
rename from public/ssd-icons/unlabeled (3).svg
rename to static/ssd-icons/unlabeled (3).svg
diff --git a/public/ssd-icons/unlabeled (4).svg b/static/ssd-icons/unlabeled (4).svg
similarity index 100%
rename from public/ssd-icons/unlabeled (4).svg
rename to static/ssd-icons/unlabeled (4).svg
diff --git a/public/standard-drive.svg b/static/standard-drive.svg
similarity index 100%
rename from public/standard-drive.svg
rename to static/standard-drive.svg
diff --git a/svelte.config.js b/svelte.config.js
index bc88df1..c3bd805 100644
--- a/svelte.config.js
+++ b/svelte.config.js
@@ -1,22 +1,18 @@
-import adapter from '@sveltejs/adapter-static';
-import analyze from 'rollup-plugin-analyzer';
+import adapter from "@sveltejs/adapter-static";
+import analyze from "rollup-plugin-analyzer";
/** @type {import('@sveltejs/kit').Config} */
export default {
- kit: {
- // hydrate the element in src/app.html
- target: '#svelte',
- adapter: adapter(),
- files: {
- lib: './src',
- assets: './public',
- },
- vite: {
- build: {
+ kit: {
+ // hydrate the
element in src/app.html
+ adapter: adapter(),
+ vite: {
+ build: {
rollupOptions: {
- plugins: [ analyze() ],
-// external: ['updux','@yanick/updeep']
- }
- }
- }},
+ plugins: [analyze()],
+ // external: ['updux','@yanick/updeep']
+ },
+ },
+ },
+ },
};