cyberia 3.2.5 → 3.2.9
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/.github/workflows/engine-cyberia.cd.yml +2 -2
- package/.github/workflows/release.cd.yml +1 -2
- package/CHANGELOG.md +351 -1
- package/CLI-HELP.md +40 -13
- package/Dockerfile +0 -4
- package/README.md +242 -497
- package/bin/build.js +19 -5
- package/bin/cyberia.js +1149 -240
- package/bin/deploy.js +570 -1
- package/bin/file.js +6 -0
- package/bin/index.js +1149 -240
- package/bin/vs.js +1 -1
- package/conf.js +67 -89
- package/deployment.yaml +4 -222
- package/hardhat/package-lock.json +32 -32
- package/hardhat/package.json +3 -3
- package/jsconfig.json +1 -1
- package/manifests/cronjobs/dd-cron/dd-cron-backup.yaml +2 -2
- package/manifests/cronjobs/dd-cron/dd-cron-dns.yaml +2 -2
- package/manifests/deployment/dd-cyberia-development/deployment.yaml +4 -222
- package/manifests/deployment/dd-cyberia-development/proxy.yaml +10 -118
- package/manifests/deployment/dd-default-development/deployment.yaml +2 -6
- package/manifests/deployment/dd-test-development/deployment.yaml +136 -66
- package/manifests/deployment/dd-test-development/proxy.yaml +41 -5
- package/package.json +23 -14
- package/proxy.yaml +10 -118
- package/scripts/k3s-node-setup.sh +2 -2
- package/scripts/nat-iptables.sh +103 -18
- package/src/api/atlas-sprite-sheet/atlas-sprite-sheet.controller.js +18 -18
- package/src/api/atlas-sprite-sheet/atlas-sprite-sheet.model.js +7 -14
- package/src/api/atlas-sprite-sheet/atlas-sprite-sheet.service.js +76 -21
- package/src/api/core/core.controller.js +10 -10
- package/src/api/core/core.service.js +10 -10
- package/src/api/crypto/crypto.controller.js +8 -8
- package/src/api/crypto/crypto.service.js +8 -8
- package/src/api/cyberia-action/cyberia-action.controller.js +74 -0
- package/src/api/cyberia-action/cyberia-action.model.js +87 -0
- package/src/api/cyberia-action/cyberia-action.router.js +27 -0
- package/src/api/cyberia-action/cyberia-action.service.js +42 -0
- package/src/api/cyberia-dialogue/cyberia-dialogue.controller.js +13 -13
- package/src/api/cyberia-dialogue/cyberia-dialogue.model.js +11 -11
- package/src/api/cyberia-dialogue/cyberia-dialogue.router.js +2 -2
- package/src/api/cyberia-dialogue/cyberia-dialogue.service.js +16 -16
- package/src/api/cyberia-entity/cyberia-entity.controller.js +10 -10
- package/src/api/cyberia-entity/cyberia-entity.service.js +10 -10
- package/src/api/cyberia-instance/cyberia-fallback-world.js +19 -209
- package/src/api/cyberia-instance/cyberia-instance.controller.js +14 -14
- package/src/api/cyberia-instance/cyberia-instance.model.js +3 -0
- package/src/api/cyberia-instance/cyberia-instance.service.js +22 -57
- package/src/api/cyberia-instance/cyberia-portal-connector.js +20 -246
- package/src/api/cyberia-instance/cyberia-world-generator.js +505 -0
- package/src/api/cyberia-instance-conf/cyberia-instance-conf.controller.js +10 -10
- package/src/api/cyberia-instance-conf/cyberia-instance-conf.defaults.js +216 -55
- package/src/api/cyberia-instance-conf/cyberia-instance-conf.model.js +4 -1
- package/src/api/cyberia-instance-conf/cyberia-instance-conf.service.js +18 -14
- package/src/api/cyberia-map/cyberia-map.controller.js +10 -10
- package/src/api/cyberia-map/cyberia-map.service.js +10 -10
- package/src/api/cyberia-quest/cyberia-quest.controller.js +74 -0
- package/src/api/cyberia-quest/cyberia-quest.model.js +67 -0
- package/src/api/cyberia-quest/cyberia-quest.router.js +27 -0
- package/src/api/cyberia-quest/cyberia-quest.service.js +42 -0
- package/src/api/cyberia-quest-progress/cyberia-quest-progress.controller.js +74 -0
- package/src/api/cyberia-quest-progress/cyberia-quest-progress.model.js +49 -0
- package/src/api/cyberia-quest-progress/cyberia-quest-progress.router.js +27 -0
- package/src/api/cyberia-quest-progress/cyberia-quest-progress.service.js +42 -0
- package/src/api/default/default.controller.js +10 -10
- package/src/api/default/default.service.js +10 -10
- package/src/api/document/document.controller.js +12 -12
- package/src/api/document/document.model.js +10 -16
- package/src/api/file/file.controller.js +8 -8
- package/src/api/file/file.model.js +10 -10
- package/src/api/file/file.service.js +36 -36
- package/src/api/instance/instance.controller.js +10 -10
- package/src/api/instance/instance.model.js +4 -10
- package/src/api/instance/instance.service.js +10 -10
- package/src/api/ipfs/ipfs.controller.js +12 -12
- package/src/api/ipfs/ipfs.model.js +4 -13
- package/src/api/ipfs/ipfs.service.js +14 -28
- package/src/api/object-layer/object-layer.controller.js +12 -12
- package/src/api/object-layer/object-layer.model.js +4 -17
- package/src/api/object-layer/object-layer.service.js +12 -12
- package/src/api/object-layer-render-frames/object-layer-render-frames.controller.js +10 -10
- package/src/api/object-layer-render-frames/object-layer-render-frames.model.js +6 -16
- package/src/api/object-layer-render-frames/object-layer-render-frames.service.js +18 -14
- package/src/api/test/test.controller.js +8 -8
- package/src/api/test/test.service.js +8 -8
- package/src/api/user/guest.service.js +99 -0
- package/src/api/user/user.controller.js +6 -6
- package/src/api/user/user.model.js +8 -13
- package/src/api/user/user.service.js +3 -20
- package/src/cli/cluster.js +61 -14
- package/src/cli/db.js +47 -2
- package/src/cli/deploy.js +67 -35
- package/src/cli/fs.js +79 -8
- package/src/cli/image.js +43 -1
- package/src/cli/index.js +26 -1
- package/src/cli/release.js +57 -1
- package/src/cli/repository.js +69 -31
- package/src/cli/run.js +415 -36
- package/src/cli/ssh.js +1 -1
- package/src/cli/static.js +43 -115
- package/src/client/Cryptokoyn.index.js +18 -21
- package/src/client/CyberiaPortal.index.js +19 -23
- package/src/client/Default.index.js +21 -33
- package/src/client/Itemledger.index.js +20 -26
- package/src/client/Underpost.index.js +19 -23
- package/src/client/components/core/404.js +4 -4
- package/src/client/components/core/500.js +4 -4
- package/src/client/components/core/Account.js +73 -60
- package/src/client/components/core/AgGrid.js +23 -33
- package/src/client/components/core/Alert.js +12 -13
- package/src/client/components/core/AppStore.js +1 -1
- package/src/client/components/core/Auth.js +35 -37
- package/src/client/components/core/Badge.js +7 -13
- package/src/client/components/core/BtnIcon.js +15 -17
- package/src/client/components/core/CalendarCore.js +42 -63
- package/src/client/components/core/Chat.js +13 -15
- package/src/client/components/core/ClientEvents.js +87 -0
- package/src/client/components/core/ColorPaletteElement.js +309 -0
- package/src/client/components/core/Content.js +17 -14
- package/src/client/components/core/Css.js +15 -71
- package/src/client/components/core/CssCore.js +12 -16
- package/src/client/components/core/D3Chart.js +4 -4
- package/src/client/components/core/Docs.js +64 -91
- package/src/client/components/core/DropDown.js +69 -91
- package/src/client/components/core/EventBus.js +92 -0
- package/src/client/components/core/EventsUI.js +14 -17
- package/src/client/components/core/FileExplorer.js +96 -228
- package/src/client/components/core/FullScreen.js +47 -75
- package/src/client/components/core/Input.js +24 -69
- package/src/client/components/core/Keyboard.js +25 -18
- package/src/client/components/core/KeyboardAvoidance.js +145 -0
- package/src/client/components/core/LoadingAnimation.js +25 -31
- package/src/client/components/core/LogIn.js +41 -41
- package/src/client/components/core/LogOut.js +23 -14
- package/src/client/components/core/Modal.js +462 -178
- package/src/client/components/core/NotificationManager.js +14 -18
- package/src/client/components/core/Panel.js +54 -50
- package/src/client/components/core/PanelForm.js +25 -125
- package/src/client/components/core/Polyhedron.js +110 -214
- package/src/client/components/core/PublicProfile.js +39 -32
- package/src/client/components/core/Recover.js +48 -44
- package/src/client/components/core/Responsive.js +88 -32
- package/src/client/components/core/RichText.js +9 -18
- package/src/client/components/core/Router.js +24 -3
- package/src/client/components/core/SearchBox.js +37 -37
- package/src/client/components/core/SignUp.js +39 -30
- package/src/client/components/core/SocketIo.js +31 -2
- package/src/client/components/core/SocketIoHandler.js +6 -6
- package/src/client/components/core/ToggleSwitch.js +8 -20
- package/src/client/components/core/ToolTip.js +5 -17
- package/src/client/components/core/Translate.js +56 -59
- package/src/client/components/core/Validator.js +26 -16
- package/src/client/components/core/Wallet.js +15 -26
- package/src/client/components/core/Worker.js +163 -27
- package/src/client/components/core/windowGetDimensions.js +7 -7
- package/src/client/components/cryptokoyn/{MenuCryptokoyn.js → AppShellCryptokoyn.js} +57 -57
- package/src/client/components/cryptokoyn/CssCryptokoyn.js +15 -15
- package/src/client/components/cryptokoyn/LogInCryptokoyn.js +6 -4
- package/src/client/components/cryptokoyn/LogOutCryptokoyn.js +6 -4
- package/src/client/components/cryptokoyn/RouterCryptokoyn.js +37 -0
- package/src/client/components/cryptokoyn/SettingsCryptokoyn.js +4 -4
- package/src/client/components/cryptokoyn/SignUpCryptokoyn.js +6 -4
- package/src/client/components/cyberia/InstanceEngineCyberia.js +141 -60
- package/src/client/components/cyberia/MapEngineCyberia.js +691 -214
- package/src/client/components/cyberia/ObjectLayerEngine.js +19 -0
- package/src/client/components/cyberia/ObjectLayerEngineModal.js +1204 -94
- package/src/client/components/cyberia/ObjectLayerEngineViewer.js +196 -298
- package/src/client/components/cyberia-portal/{MenuCyberiaPortal.js → AppShellCyberiaPortal.js} +102 -102
- package/src/client/components/cyberia-portal/CommonCyberiaPortal.js +305 -61
- package/src/client/components/cyberia-portal/CssCyberiaPortal.js +15 -15
- package/src/client/components/cyberia-portal/LogInCyberiaPortal.js +6 -4
- package/src/client/components/cyberia-portal/LogOutCyberiaPortal.js +6 -4
- package/src/client/components/cyberia-portal/MainBodyCyberiaPortal.js +4 -4
- package/src/client/components/cyberia-portal/RouterCyberiaPortal.js +60 -0
- package/src/client/components/cyberia-portal/SettingsCyberiaPortal.js +4 -4
- package/src/client/components/cyberia-portal/SignUpCyberiaPortal.js +6 -4
- package/src/client/components/cyberia-portal/TranslateCyberiaPortal.js +4 -4
- package/src/client/components/default/{MenuDefault.js → AppShellDefault.js} +87 -87
- package/src/client/components/default/CssDefault.js +12 -12
- package/src/client/components/default/LogInDefault.js +6 -4
- package/src/client/components/default/LogOutDefault.js +6 -4
- package/src/client/components/default/RouterDefault.js +47 -0
- package/src/client/components/default/SettingsDefault.js +4 -4
- package/src/client/components/default/SignUpDefault.js +6 -4
- package/src/client/components/default/TranslateDefault.js +3 -3
- package/src/client/components/itemledger/{MenuItemledger.js → AppShellItemledger.js} +57 -57
- package/src/client/components/itemledger/CssItemledger.js +15 -15
- package/src/client/components/itemledger/LogInItemledger.js +6 -4
- package/src/client/components/itemledger/LogOutItemledger.js +6 -4
- package/src/client/components/itemledger/RouterItemledger.js +38 -0
- package/src/client/components/itemledger/SettingsItemledger.js +4 -4
- package/src/client/components/itemledger/SignUpItemledger.js +6 -4
- package/src/client/components/itemledger/TranslateItemledger.js +3 -3
- package/src/client/components/underpost/{MenuUnderpost.js → AppShellUnderpost.js} +88 -88
- package/src/client/components/underpost/CssUnderpost.js +14 -14
- package/src/client/components/underpost/CyberpunkBloggerUnderpost.js +4 -4
- package/src/client/components/underpost/DocumentSearchProvider.js +1 -1
- package/src/client/components/underpost/LabGalleryUnderpost.js +12 -15
- package/src/client/components/underpost/LogInUnderpost.js +6 -4
- package/src/client/components/underpost/LogOutUnderpost.js +6 -4
- package/src/client/components/underpost/RouterUnderpost.js +45 -0
- package/src/client/components/underpost/SettingsUnderpost.js +4 -4
- package/src/client/components/underpost/SignUpUnderpost.js +6 -4
- package/src/client/components/underpost/TranslateUnderpost.js +4 -4
- package/src/client/public/cyberia-docs/ACTION-SYSTEM.md +235 -0
- package/src/client/public/cyberia-docs/ARCHITECTURE.md +443 -0
- package/src/client/public/cyberia-docs/CYBERIA-CLI.md +417 -0
- package/src/client/public/cyberia-docs/CYBERIA-CLIENT.md +313 -0
- package/src/client/public/cyberia-docs/CYBERIA-SERVER.md +260 -0
- package/src/client/public/cyberia-docs/ENTITY-PROFILE.md +241 -0
- package/src/client/public/cyberia-docs/HARDHAT-MODULE.md +300 -0
- package/src/client/public/cyberia-docs/OFF-CHAIN-ECONOMY.md +279 -0
- package/src/client/public/cyberia-docs/QUEST-SYSTEM.md +206 -0
- package/src/client/public/cyberia-docs/ROADMAP.md +240 -0
- package/src/client/public/cyberia-docs/WHITE-PAPER.md +732 -0
- package/src/client/services/atlas-sprite-sheet/atlas-sprite-sheet.service.js +14 -20
- package/src/client/services/core/core.service.js +17 -49
- package/src/client/services/crypto/crypto.service.js +8 -13
- package/src/client/services/cyberia-action/cyberia-action.service.js +99 -0
- package/src/client/services/cyberia-dialogue/cyberia-dialogue.service.js +10 -16
- package/src/client/services/cyberia-entity/cyberia-entity.management.js +5 -5
- package/src/client/services/cyberia-entity/cyberia-entity.service.js +10 -16
- package/src/client/services/cyberia-instance/cyberia-instance.management.js +6 -6
- package/src/client/services/cyberia-instance/cyberia-instance.service.js +12 -18
- package/src/client/services/cyberia-instance-conf/cyberia-instance-conf.service.js +10 -16
- package/src/client/services/cyberia-map/cyberia-map.management.js +6 -6
- package/src/client/services/cyberia-map/cyberia-map.service.js +12 -18
- package/src/client/services/cyberia-quest/cyberia-quest.service.js +99 -0
- package/src/client/services/cyberia-quest-progress/cyberia-quest-progress.service.js +99 -0
- package/src/client/services/default/default.management.js +159 -267
- package/src/client/services/default/default.service.js +10 -16
- package/src/client/services/document/document.service.js +14 -19
- package/src/client/services/file/file.service.js +8 -13
- package/src/client/services/instance/instance.management.js +5 -5
- package/src/client/services/instance/instance.service.js +10 -15
- package/src/client/services/ipfs/ipfs.service.js +12 -18
- package/src/client/services/object-layer/object-layer.management.js +12 -12
- package/src/client/services/object-layer/object-layer.service.js +20 -26
- package/src/client/services/object-layer-render-frames/object-layer-render-frames.service.js +10 -16
- package/src/client/services/test/test.service.js +8 -13
- package/src/client/services/user/guest.service.js +86 -0
- package/src/client/services/user/user.management.js +5 -5
- package/src/client/services/user/user.service.js +14 -20
- package/src/client/ssr/body/404.js +3 -3
- package/src/client/ssr/body/500.js +3 -3
- package/src/client/ssr/body/CacheControl.js +5 -2
- package/src/client/ssr/body/DefaultSplashScreen.js +19 -12
- package/src/client/ssr/body/UnderpostDefaultSplashScreen.js +13 -6
- package/src/client/ssr/head/PwaItemledger.js +197 -60
- package/src/client/ssr/mailer/DefaultRecoverEmail.js +19 -20
- package/src/client/ssr/mailer/DefaultVerifyEmail.js +15 -16
- package/src/client/ssr/offline/Maintenance.js +12 -11
- package/src/client/ssr/offline/NoNetworkConnection.js +3 -3
- package/src/client/ssr/pages/Test.js +2 -2
- package/src/client/sw/core.sw.js +212 -0
- package/src/grpc/cyberia/grpc-server.js +179 -67
- package/src/index.js +1 -1
- package/src/runtime/cyberia-client/Dockerfile +80 -0
- package/src/runtime/cyberia-server/Dockerfile +37 -0
- package/src/runtime/express/Dockerfile +4 -4
- package/src/runtime/lampp/Dockerfile +8 -7
- package/src/runtime/wp/Dockerfile +11 -17
- package/src/server/atlas-sprite-sheet-generator.js +4 -2
- package/src/server/client-build-docs.js +45 -46
- package/src/server/client-build.js +334 -60
- package/src/server/client-formatted.js +47 -16
- package/src/server/conf.js +5 -4
- package/src/server/data-query.js +32 -20
- package/src/server/dns.js +22 -0
- package/src/server/ipfs-client.js +232 -91
- package/src/server/object-layer.js +1 -6
- package/src/server/process.js +13 -27
- package/src/server/semantic-layer-generator-floor.js +11 -51
- package/src/server/semantic-layer-generator-resource.js +259 -0
- package/src/server/semantic-layer-generator-skin.js +41 -171
- package/src/server/semantic-layer-generator.js +122 -14
- package/src/server/shape-generator.js +108 -0
- package/src/server/start.js +17 -3
- package/src/server/valkey.js +141 -235
- package/tsconfig.docs.json +15 -0
- package/typedoc.dd-cyberia.json +29 -0
- package/typedoc.json +29 -0
- package/WHITE-PAPER.md +0 -1540
- package/hardhat/README.md +0 -531
- package/hardhat/WHITE-PAPER.md +0 -1540
- package/jsdoc.dd-cyberia.json +0 -68
- package/jsdoc.json +0 -68
- package/src/api/object-layer/README.md +0 -672
- package/src/client/components/core/ColorPalette.js +0 -5267
- package/src/client/components/core/JoyStick.js +0 -80
- package/src/client/components/cryptokoyn/RoutesCryptokoyn.js +0 -39
- package/src/client/components/cyberia-portal/RoutesCyberiaPortal.js +0 -62
- package/src/client/components/cyberia-portal/ServerCyberiaPortal.js +0 -136
- package/src/client/components/default/RoutesDefault.js +0 -49
- package/src/client/components/itemledger/RoutesItemledger.js +0 -40
- package/src/client/components/underpost/RoutesUnderpost.js +0 -47
- package/src/client/sw/default.sw.js +0 -127
- package/src/client/sw/template.sw.js +0 -84
- package/src/grpc/cyberia/OFF_CHAIN_ECONOMY.md +0 -305
- package/src/grpc/cyberia/README.md +0 -326
|
@@ -6,8 +6,9 @@ import { RouterReady } from '../core/Router.js';
|
|
|
6
6
|
import { s } from '../core/VanillaJs.js';
|
|
7
7
|
import { commonUserGuard } from '../core/CommonJs.js';
|
|
8
8
|
|
|
9
|
-
|
|
10
|
-
|
|
9
|
+
class LogInUnderpost {
|
|
10
|
+
static async instance() {
|
|
11
|
+
LogIn.onLogin(async (options) => {
|
|
11
12
|
const { token, user } = options;
|
|
12
13
|
|
|
13
14
|
AppStoreUnderpost.Data.user.main.model.user = user;
|
|
@@ -15,9 +16,10 @@ const LogInUnderpost = async function () {
|
|
|
15
16
|
await RouterReady;
|
|
16
17
|
await PanelForm.Data['underpost-panel'].updatePanel();
|
|
17
18
|
if (s(`.main-btn-cloud`) && commonUserGuard(user.role)) s(`.main-btn-cloud`).classList.remove('hide');
|
|
18
|
-
};
|
|
19
|
+
}, { key: 'LogInUnderpost' });
|
|
19
20
|
const { user } = await Auth.sessionIn();
|
|
20
21
|
AppStoreUnderpost.Data.user.main.model.user = user;
|
|
21
|
-
}
|
|
22
|
+
}
|
|
23
|
+
}
|
|
22
24
|
|
|
23
25
|
export { LogInUnderpost };
|
|
@@ -3,13 +3,15 @@ import { AppStoreUnderpost } from './AppStoreUnderpost.js';
|
|
|
3
3
|
import { PanelForm } from '../core/PanelForm.js';
|
|
4
4
|
import { s } from '../core/VanillaJs.js';
|
|
5
5
|
|
|
6
|
-
|
|
7
|
-
|
|
6
|
+
class LogOutUnderpost {
|
|
7
|
+
static async instance() {
|
|
8
|
+
LogOut.onLogout(async (result = { user: { _id: '' } }) => {
|
|
8
9
|
AppStoreUnderpost.Data.user.main.model.user = result.user;
|
|
9
10
|
|
|
10
11
|
PanelForm.Data['underpost-panel'].updatePanel();
|
|
11
12
|
if (s(`.main-btn-cloud`)) s(`.main-btn-cloud`).classList.add('hide');
|
|
12
|
-
};
|
|
13
|
-
}
|
|
13
|
+
}, { key: 'LogOutUnderpost' });
|
|
14
|
+
}
|
|
15
|
+
}
|
|
14
16
|
|
|
15
17
|
export { LogOutUnderpost };
|
|
@@ -0,0 +1,45 @@
|
|
|
1
|
+
import { loggerFactory } from '../core/Logger.js';
|
|
2
|
+
import { Modal } from '../core/Modal.js';
|
|
3
|
+
import { s } from '../core/VanillaJs.js';
|
|
4
|
+
|
|
5
|
+
const logger = loggerFactory(import.meta);
|
|
6
|
+
|
|
7
|
+
const BannerAppTemplate = html`underpost.net`;
|
|
8
|
+
|
|
9
|
+
class RouterUnderpost {
|
|
10
|
+
static routes() {
|
|
11
|
+
return {
|
|
12
|
+
'/': {
|
|
13
|
+
title: 'Home',
|
|
14
|
+
render: () => Modal.onHomeRouterEvent(),
|
|
15
|
+
},
|
|
16
|
+
'/contracultura-cyberpunk': {
|
|
17
|
+
title: 'contracultura-cyberpunk',
|
|
18
|
+
render: () => s(`.main-btn-contracultura-cyberpunk`).click(),
|
|
19
|
+
},
|
|
20
|
+
'/lab-gallery': { title: 'lab-gallery', render: () => s(`.main-btn-lab-gallery`).click() },
|
|
21
|
+
'/log-in': { title: 'log-in', render: () => s(`.main-btn-log-in`).click() },
|
|
22
|
+
'/sign-up': { title: 'sign-up', render: () => s(`.main-btn-sign-up`).click() },
|
|
23
|
+
'/log-out': {
|
|
24
|
+
title: 'log-out',
|
|
25
|
+
render: () => s(`.main-btn-log-out`).click(),
|
|
26
|
+
},
|
|
27
|
+
'/account': {
|
|
28
|
+
title: 'account',
|
|
29
|
+
render: () => s(`.main-btn-account`).click(),
|
|
30
|
+
},
|
|
31
|
+
'/u': { title: 'public-profile', render: () => s(`.main-btn-public-profile`).click() },
|
|
32
|
+
'/settings': { title: 'settings', render: () => s(`.main-btn-settings`).click() },
|
|
33
|
+
'/recover': { title: 'recover', render: () => s(`.main-btn-recover`).click() },
|
|
34
|
+
'/content': { title: 'content', render: () => s(`.main-btn-content`).click() },
|
|
35
|
+
'/cloud': { title: 'cloud', render: () => s(`.main-btn-cloud`).click() },
|
|
36
|
+
'/polyhedron': { title: 'polyhedron', render: () => s(`.main-btn-polyhedron`).click() },
|
|
37
|
+
};
|
|
38
|
+
}
|
|
39
|
+
|
|
40
|
+
static instance() {
|
|
41
|
+
return { Routes: RouterUnderpost.routes };
|
|
42
|
+
}
|
|
43
|
+
}
|
|
44
|
+
|
|
45
|
+
export { RouterUnderpost, BannerAppTemplate };
|
|
@@ -3,14 +3,14 @@ import { FullScreen } from '../core/FullScreen.js';
|
|
|
3
3
|
import { Translate } from '../core/Translate.js';
|
|
4
4
|
import { Worker } from '../core/Worker.js';
|
|
5
5
|
|
|
6
|
-
|
|
7
|
-
|
|
6
|
+
class SettingsUnderpost {
|
|
7
|
+
static async instance() {
|
|
8
8
|
let render = await FullScreen.RenderSetting();
|
|
9
9
|
render += await Css.RenderSetting();
|
|
10
10
|
render += await Translate.RenderSetting();
|
|
11
11
|
render += await Worker.RenderSetting();
|
|
12
12
|
return render;
|
|
13
|
-
}
|
|
14
|
-
}
|
|
13
|
+
}
|
|
14
|
+
}
|
|
15
15
|
|
|
16
16
|
export { SettingsUnderpost };
|
|
@@ -1,9 +1,11 @@
|
|
|
1
1
|
import { SignUp } from '../core/SignUp.js';
|
|
2
2
|
|
|
3
|
-
|
|
4
|
-
|
|
3
|
+
class SignUpUnderpost {
|
|
4
|
+
static instance() {
|
|
5
|
+
SignUp.onSignup(async (options) => {
|
|
5
6
|
const { user } = options;
|
|
6
|
-
};
|
|
7
|
-
}
|
|
7
|
+
}, { key: 'SignUpUnderpost' });
|
|
8
|
+
}
|
|
9
|
+
}
|
|
8
10
|
|
|
9
11
|
export { SignUpUnderpost };
|
|
@@ -1,10 +1,10 @@
|
|
|
1
1
|
import { Translate } from '../core/Translate.js';
|
|
2
2
|
|
|
3
|
-
|
|
4
|
-
|
|
3
|
+
class TranslateUnderpost {
|
|
4
|
+
static async instance() {
|
|
5
5
|
Translate.Data['contracultura-cyberpunk'] = { en: 'Contracultura Cyberpunk', es: 'Contracultura Cyberpunk' };
|
|
6
6
|
Translate.Data['lab-gallery'] = { en: 'Lab Gallery', es: 'Lab Gallery' };
|
|
7
|
-
}
|
|
8
|
-
}
|
|
7
|
+
}
|
|
8
|
+
}
|
|
9
9
|
|
|
10
10
|
export { TranslateUnderpost };
|
|
@@ -0,0 +1,235 @@
|
|
|
1
|
+
# Action System
|
|
2
|
+
|
|
3
|
+
**Module:** `src/api/cyberia-action` · `src/api/cyberia-dialogue`
|
|
4
|
+
|
|
5
|
+
---
|
|
6
|
+
|
|
7
|
+
## Overview
|
|
8
|
+
|
|
9
|
+
The Action System defines how NPC entities interact with players. An **Action** is a spatial, typed payload attached to a map entity that the player activates by tapping the NPC. Actions drive dialogue, shops, crafting, storage, and quest grant events.
|
|
10
|
+
|
|
11
|
+
> **Implementation status — Pre-alpha:** The CyberiaAction and CyberiaDialogue MongoDB schemas and Engine REST API (`src/api/cyberia-action`, `src/api/cyberia-dialogue`) are defined. Go server integration (NPC tap routing to action handlers, shop/craft transaction processing, quest grant on dialogue completion) is planned for the **Alpha milestone**. The `freeze_start`/`freeze_end` WS messages for modal protection are implemented in the Go server today.
|
|
12
|
+
|
|
13
|
+
---
|
|
14
|
+
|
|
15
|
+
## Data Model
|
|
16
|
+
|
|
17
|
+
### CyberiaAction Schema
|
|
18
|
+
|
|
19
|
+
```
|
|
20
|
+
CyberiaAction {
|
|
21
|
+
code: String // stable unique slug
|
|
22
|
+
type: String // see Action Types below
|
|
23
|
+
label: String // display label on interaction button
|
|
24
|
+
|
|
25
|
+
// Spatial origin — NPC entity cell providing this action
|
|
26
|
+
sourceMapCode: String
|
|
27
|
+
sourceCellX: Number
|
|
28
|
+
sourceCellY: Number
|
|
29
|
+
|
|
30
|
+
// Identity — used to match quest objectives of type 'talk'
|
|
31
|
+
provideItemId: String // entity's active skin ObjectLayer item ID (e.g. 'wason', 'alex')
|
|
32
|
+
|
|
33
|
+
// Quest grant — first interaction with this NPC starts the linked quest chain
|
|
34
|
+
grantQuestCode: String // empty = no quest granted
|
|
35
|
+
|
|
36
|
+
// Dialogue
|
|
37
|
+
dialogCode: String // greeting dialogue shown on tap
|
|
38
|
+
questDialogueCodes: [String] // ordered dialogue codes that satisfy 'talk' quest objectives
|
|
39
|
+
|
|
40
|
+
// Type-specific payloads:
|
|
41
|
+
shopItems: [{
|
|
42
|
+
itemId: String // ObjectLayer item ID being sold
|
|
43
|
+
priceItemId: String // currency item ID (default: 'coin')
|
|
44
|
+
priceQty: Number // price quantity
|
|
45
|
+
}]
|
|
46
|
+
|
|
47
|
+
craftRecipes: [{
|
|
48
|
+
outputItems: [{ itemId: String, qty: Number }]
|
|
49
|
+
ingredients: [{ itemId: String, qty: Number }]
|
|
50
|
+
}]
|
|
51
|
+
|
|
52
|
+
storageSlots: Number // storage capacity (type='storage' only)
|
|
53
|
+
}
|
|
54
|
+
```
|
|
55
|
+
|
|
56
|
+
### CyberiaDialogue Schema
|
|
57
|
+
|
|
58
|
+
```
|
|
59
|
+
CyberiaDialogue {
|
|
60
|
+
code: String // grouping key (e.g. "wason-intro")
|
|
61
|
+
order: Number // 0-based sequence within the group
|
|
62
|
+
speaker: String // display name above the dialogue line
|
|
63
|
+
text: String // dialogue line content
|
|
64
|
+
mood: String // emotion hint: neutral | angry | sad | happy | ...
|
|
65
|
+
}
|
|
66
|
+
```
|
|
67
|
+
|
|
68
|
+
A single `code` groups many ordered dialogue lines. The C client fetches all lines for a given code in one request, then displays them sequentially.
|
|
69
|
+
|
|
70
|
+
---
|
|
71
|
+
|
|
72
|
+
## Action Types
|
|
73
|
+
|
|
74
|
+
| Type | Description | Active Payload |
|
|
75
|
+
| ------------ | -------------------------------------------------------------- | ---------------------------------------------------- |
|
|
76
|
+
| `quest-talk` | Grants a quest on first interaction, then shows dialogue | `grantQuestCode`, `dialogCode`, `questDialogueCodes` |
|
|
77
|
+
| `talk` | NPC dialogue only — satisfies `talk` quest objectives | `dialogCode`, `questDialogueCodes` |
|
|
78
|
+
| `shop` | Item shop — player buys items with in-game currency | `shopItems[]` |
|
|
79
|
+
| `craft` | Crafting station — consume ingredients to produce output items | `craftRecipes[]` |
|
|
80
|
+
| `storage` | Personal item storage vault | `storageSlots` |
|
|
81
|
+
|
|
82
|
+
---
|
|
83
|
+
|
|
84
|
+
## Action–Quest Integration
|
|
85
|
+
|
|
86
|
+
The Action System and Quest System are linked through `provideItemId` and `questDialogueCodes`:
|
|
87
|
+
|
|
88
|
+
```mermaid
|
|
89
|
+
graph LR
|
|
90
|
+
Quest["CyberiaQuest\nstep.objective:\n{ type: 'talk', itemId: 'wason' }"]
|
|
91
|
+
Action["CyberiaAction\nprovideItemId: 'wason'\ngrantQuestCode: 'wason-intro'\nquestDialogueCodes: ['wason-intro']"]
|
|
92
|
+
Progress["CyberiaQuestProgress\nstep.objectiveProgress[i].current++"]
|
|
93
|
+
|
|
94
|
+
Quest -->|matched by provideItemId| Action
|
|
95
|
+
Action -->|player completes dialogue| Progress
|
|
96
|
+
```
|
|
97
|
+
|
|
98
|
+
**Talk objective satisfaction flow:**
|
|
99
|
+
|
|
100
|
+
1. Player taps NPC → interaction bubble shown.
|
|
101
|
+
2. Player taps interaction bubble → Action is fetched by spatial coordinates.
|
|
102
|
+
3. Client displays `dialogCode` dialogue sequence.
|
|
103
|
+
4. On first tap, if `grantQuestCode` is set → server grants the quest.
|
|
104
|
+
5. After viewing all `questDialogueCodes` dialogue lines → server increments the matching `talk` objective's `current` counter.
|
|
105
|
+
|
|
106
|
+
---
|
|
107
|
+
|
|
108
|
+
## Shop Transaction Flow
|
|
109
|
+
|
|
110
|
+
```mermaid
|
|
111
|
+
sequenceDiagram
|
|
112
|
+
participant P as Player
|
|
113
|
+
participant G as Go Server
|
|
114
|
+
participant E as Engine (Node.js)
|
|
115
|
+
|
|
116
|
+
P->>G: Tap shop NPC
|
|
117
|
+
G->>E: GET /api/cyberia-action?sourceMapCode=...&sourceCellX=...
|
|
118
|
+
E-->>G: CyberiaAction { type: 'shop', shopItems: [...] }
|
|
119
|
+
G-->>P: init_data → shop payload (item list + prices)
|
|
120
|
+
P-->>G: FrozenInteractionState (modal open)
|
|
121
|
+
|
|
122
|
+
P->>G: Buy request { itemId, quantity }
|
|
123
|
+
G->>E: GET player coin balance
|
|
124
|
+
Note over G: balance >= price * quantity?
|
|
125
|
+
G->>E: Deduct coins + grant item to inventory
|
|
126
|
+
G-->>P: FCT: CoinLoss + ItemGain events
|
|
127
|
+
G-->>P: ThawPlayer (modal close allowed)
|
|
128
|
+
```
|
|
129
|
+
|
|
130
|
+
---
|
|
131
|
+
|
|
132
|
+
## Craft Transaction Flow
|
|
133
|
+
|
|
134
|
+
```mermaid
|
|
135
|
+
sequenceDiagram
|
|
136
|
+
participant P as Player
|
|
137
|
+
participant G as Go Server
|
|
138
|
+
participant E as Engine (Node.js)
|
|
139
|
+
participant BC as ObjectLayerToken
|
|
140
|
+
|
|
141
|
+
P->>G: Tap craft NPC
|
|
142
|
+
G-->>P: FrozenInteractionState
|
|
143
|
+
P->>G: Craft request { recipeIndex }
|
|
144
|
+
Note over G: Verify player has all ingredients
|
|
145
|
+
G->>E: Deduct ingredient quantities from inventory
|
|
146
|
+
G->>E: Grant output items to inventory
|
|
147
|
+
opt Item has on-chain token (ERC-1155)
|
|
148
|
+
G->>BC: burn(ingredientTokenId, qty) per ingredient
|
|
149
|
+
G->>BC: mint(outputTokenId, qty)
|
|
150
|
+
end
|
|
151
|
+
G-->>P: FCT: ItemLoss per ingredient + ItemGain per output
|
|
152
|
+
G-->>P: ThawPlayer
|
|
153
|
+
```
|
|
154
|
+
|
|
155
|
+
---
|
|
156
|
+
|
|
157
|
+
## Spatial Binding and Instance Init
|
|
158
|
+
|
|
159
|
+
`sourceMapCode + sourceCellX + sourceCellY` links an Action to a specific entity cell in a specific map. During instance initialization:
|
|
160
|
+
|
|
161
|
+
1. `instance_loader.go` reads each `CyberiaEntity` at its `initCellX/initCellY`.
|
|
162
|
+
2. For entities with matching Action source coordinates, the Go server attaches the Action payload to the runtime entity.
|
|
163
|
+
3. The entity's `entityStatus` is set to `action-provider` (ESI id=8) — the bouncing chat icon renders above its nameplate.
|
|
164
|
+
|
|
165
|
+
---
|
|
166
|
+
|
|
167
|
+
## Dialogue System
|
|
168
|
+
|
|
169
|
+
Dialogue groups allow multi-line sequential NPC speech:
|
|
170
|
+
|
|
171
|
+
```json
|
|
172
|
+
[
|
|
173
|
+
{
|
|
174
|
+
"code": "wason-intro",
|
|
175
|
+
"order": 0,
|
|
176
|
+
"speaker": "Wason",
|
|
177
|
+
"text": "Young traveler... you've finally arrived.",
|
|
178
|
+
"mood": "neutral"
|
|
179
|
+
},
|
|
180
|
+
{
|
|
181
|
+
"code": "wason-intro",
|
|
182
|
+
"order": 1,
|
|
183
|
+
"speaker": "Wason",
|
|
184
|
+
"text": "The village is in danger. I need your help.",
|
|
185
|
+
"mood": "sad"
|
|
186
|
+
},
|
|
187
|
+
{
|
|
188
|
+
"code": "wason-intro",
|
|
189
|
+
"order": 2,
|
|
190
|
+
"speaker": "Wason",
|
|
191
|
+
"text": "Collect 5 herbs from the forest and return to me.",
|
|
192
|
+
"mood": "neutral"
|
|
193
|
+
}
|
|
194
|
+
]
|
|
195
|
+
```
|
|
196
|
+
|
|
197
|
+
The C client fetches the full `code` group sorted by `order`, then renders lines one at a time in `modal_dialogue.c`. The player advances through lines by tapping.
|
|
198
|
+
|
|
199
|
+
---
|
|
200
|
+
|
|
201
|
+
## Indexes
|
|
202
|
+
|
|
203
|
+
```javascript
|
|
204
|
+
// CyberiaAction
|
|
205
|
+
{ code: 1 } // unique
|
|
206
|
+
{ provideItemId: 1 }
|
|
207
|
+
{ grantQuestCode: 1 } // sparse
|
|
208
|
+
{ sourceMapCode: 1, sourceCellX: 1, sourceCellY: 1 }
|
|
209
|
+
|
|
210
|
+
// CyberiaDialogue
|
|
211
|
+
{ code: 1 }
|
|
212
|
+
{ code: 1, order: 1 }
|
|
213
|
+
```
|
|
214
|
+
|
|
215
|
+
---
|
|
216
|
+
|
|
217
|
+
## Example Action Document
|
|
218
|
+
|
|
219
|
+
```json
|
|
220
|
+
{
|
|
221
|
+
"code": "wason-npc",
|
|
222
|
+
"type": "quest-talk",
|
|
223
|
+
"label": "Talk",
|
|
224
|
+
"sourceMapCode": "cyberia-village",
|
|
225
|
+
"sourceCellX": 12,
|
|
226
|
+
"sourceCellY": 8,
|
|
227
|
+
"provideItemId": "wason",
|
|
228
|
+
"grantQuestCode": "wason-intro",
|
|
229
|
+
"dialogCode": "wason-intro",
|
|
230
|
+
"questDialogueCodes": ["wason-intro"],
|
|
231
|
+
"shopItems": [],
|
|
232
|
+
"craftRecipes": [],
|
|
233
|
+
"storageSlots": 0
|
|
234
|
+
}
|
|
235
|
+
```
|