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
|
@@ -1,14 +1,23 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* Canonical default values and type definitions for a CyberiaInstanceConf document.
|
|
3
3
|
*
|
|
4
|
-
*
|
|
4
|
+
* Canonical config defaults used by:
|
|
5
5
|
* - cyberia-instance-conf.model.js — Mongoose schema `default:` declarations
|
|
6
6
|
* - grpc-server.js — FALLBACK_CONFIG_DEFAULTS for missing instances
|
|
7
|
-
*
|
|
7
|
+
*
|
|
8
|
+
* The canonical entity-type ↔ item-type relationship lives in:
|
|
9
|
+
* - src/client/components/cyberia-portal/CommonCyberiaPortal.js
|
|
10
|
+
*
|
|
11
|
+
* This file derives its item/entity type enums from that shared module.
|
|
8
12
|
*
|
|
9
13
|
* @module src/api/cyberia-instance-conf/cyberia-instance-conf.defaults.js
|
|
10
14
|
*/
|
|
11
15
|
|
|
16
|
+
import {
|
|
17
|
+
ITEM_TYPES as SHARED_ITEM_TYPES,
|
|
18
|
+
ENTITY_TYPES as SHARED_ENTITY_TYPES,
|
|
19
|
+
} from '../../client/components/cyberia-portal/CommonCyberiaPortal.js';
|
|
20
|
+
|
|
12
21
|
// ── Item type registry ───────────────────────────────────────────────────────
|
|
13
22
|
/**
|
|
14
23
|
* Canonical set of ObjectLayer item type names, used as asset directory names
|
|
@@ -19,16 +28,10 @@
|
|
|
19
28
|
* determined separately by `get_priority_for_type()` in entity_render.c.
|
|
20
29
|
*
|
|
21
30
|
* @constant
|
|
22
|
-
* @type {Readonly<
|
|
31
|
+
* @type {Readonly<Record<string, string>>}
|
|
23
32
|
*/
|
|
24
|
-
export const ITEM_TYPES =
|
|
25
|
-
|
|
26
|
-
skin: 'skin',
|
|
27
|
-
breastplate: 'breastplate',
|
|
28
|
-
weapon: 'weapon',
|
|
29
|
-
skill: 'skill',
|
|
30
|
-
coin: 'coin',
|
|
31
|
-
});
|
|
33
|
+
export const ITEM_TYPES = SHARED_ITEM_TYPES;
|
|
34
|
+
export const ENTITY_TYPES = SHARED_ENTITY_TYPES;
|
|
32
35
|
|
|
33
36
|
// ── Entity Status Indicator (ESI) registry ───────────────────────────────────
|
|
34
37
|
/**
|
|
@@ -46,7 +49,7 @@ export const ITEM_TYPES = Object.freeze({
|
|
|
46
49
|
* UO: skull for murderers, shield for invulnerables
|
|
47
50
|
*
|
|
48
51
|
* IMPORTANT: The numeric IDs MUST stay in sync with:
|
|
49
|
-
* - Go: cyberia-server/src/entity_status.go (StatusNone …
|
|
52
|
+
* - Go: cyberia-server/src/entity_status.go (StatusNone … StatusResourceExtracted)
|
|
50
53
|
*
|
|
51
54
|
* @constant
|
|
52
55
|
*/
|
|
@@ -99,6 +102,30 @@ export const STATUS_ICONS = Object.freeze([
|
|
|
99
102
|
borderColor: { r: 160, g: 130, b: 200, a: 200 },
|
|
100
103
|
description: 'Entity is dead / respawning',
|
|
101
104
|
},
|
|
105
|
+
{
|
|
106
|
+
id: 6,
|
|
107
|
+
name: 'resource',
|
|
108
|
+
iconId: 'arrow-down-gray',
|
|
109
|
+
bounce: false,
|
|
110
|
+
borderColor: { r: 100, g: 180, b: 80, a: 220 },
|
|
111
|
+
description: 'Resource entity — static, exploitable (wood, minerals, etc.)',
|
|
112
|
+
},
|
|
113
|
+
{
|
|
114
|
+
id: 7,
|
|
115
|
+
name: 'resource-extracted',
|
|
116
|
+
iconId: 'clock',
|
|
117
|
+
bounce: false,
|
|
118
|
+
borderColor: { r: 160, g: 130, b: 200, a: 200 },
|
|
119
|
+
description: 'Resource entity extracted/depleted (dead state)',
|
|
120
|
+
},
|
|
121
|
+
{
|
|
122
|
+
id: 8,
|
|
123
|
+
name: 'action-provider',
|
|
124
|
+
iconId: 'chat',
|
|
125
|
+
bounce: true,
|
|
126
|
+
borderColor: { r: 220, g: 190, b: 60, a: 240 },
|
|
127
|
+
description: 'Bot with available quest-talk/shop/storage/craft actions',
|
|
128
|
+
},
|
|
102
129
|
]);
|
|
103
130
|
|
|
104
131
|
// ── Equipment rules ──────────────────────────────────────────────────────────
|
|
@@ -122,7 +149,7 @@ export const STATUS_ICONS = Object.freeze([
|
|
|
122
149
|
export const EQUIPMENT_RULES_DEFAULTS = Object.freeze({
|
|
123
150
|
// Item types that players are allowed to activate (equip).
|
|
124
151
|
// Types not in this list are non-activable (coins, floors, etc.).
|
|
125
|
-
activeItemTypes: [
|
|
152
|
+
activeItemTypes: [ITEM_TYPES.skin, ITEM_TYPES.breastplate, ITEM_TYPES.weapon],
|
|
126
153
|
// Enforce at most one active item per item type.
|
|
127
154
|
onePerType: true,
|
|
128
155
|
// Require at least one active skin when the player owns any skin.
|
|
@@ -144,6 +171,9 @@ export const EQUIPMENT_RULES_DEFAULTS = Object.freeze({
|
|
|
144
171
|
* deadItemIds — Array of ObjectLayer item IDs for the dead / ghost / respawning
|
|
145
172
|
* state. Empty array = no dead-state OL; same solid fill as live.
|
|
146
173
|
* Replaces the old flat ghostItemId field for players.
|
|
174
|
+
* dropItemIds — Array of ObjectLayer item IDs granted to the extractor when
|
|
175
|
+
* a resource-type entity is depleted. These are inventory/drop
|
|
176
|
+
* items only and are NOT auto-activated on the entity itself.
|
|
147
177
|
* colorKey — Named palette colour key (see colors in CYBERIA_INSTANCE_CONF_DEFAULTS).
|
|
148
178
|
* Used as solid-colour fallback when the entity carries NO active
|
|
149
179
|
* ObjectLayer items, or while atlas textures are still loading.
|
|
@@ -165,12 +195,34 @@ export const EQUIPMENT_RULES_DEFAULTS = Object.freeze({
|
|
|
165
195
|
* floor / obstacle / portal / foreground
|
|
166
196
|
*
|
|
167
197
|
* @constant
|
|
168
|
-
* @type {ReadonlyArray<{entityType:string, liveItemIds:string[], deadItemIds:string[], colorKey:string}>}
|
|
198
|
+
* @type {ReadonlyArray<{entityType:string, liveItemIds:string[], deadItemIds:string[], dropItemIds:string[], colorKey:string}>}
|
|
169
199
|
*/
|
|
200
|
+
export const RESOURCE_ENTITY_TYPE_DEFAULTS = Object.freeze([
|
|
201
|
+
Object.freeze({
|
|
202
|
+
entityType: ENTITY_TYPES.resource,
|
|
203
|
+
liveItemIds: ['wood-1'],
|
|
204
|
+
deadItemIds: ['wood-extracted-1'],
|
|
205
|
+
// Until dedicated resource-drop OLs are authored, reuse the wood stack item.
|
|
206
|
+
dropItemIds: ['wood-drop-1'],
|
|
207
|
+
colorKey: 'RESOURCE',
|
|
208
|
+
defaultObjectLayers: [],
|
|
209
|
+
}),
|
|
210
|
+
Object.freeze({
|
|
211
|
+
entityType: ENTITY_TYPES.resource,
|
|
212
|
+
liveItemIds: ['wood-2'],
|
|
213
|
+
deadItemIds: ['wood-extracted-2'],
|
|
214
|
+
dropItemIds: ['wood-drop-2'],
|
|
215
|
+
colorKey: 'RESOURCE',
|
|
216
|
+
defaultObjectLayers: [],
|
|
217
|
+
}),
|
|
218
|
+
]);
|
|
219
|
+
|
|
220
|
+
export const RESOURCE_ENTITY_TYPE_DEFAULT = RESOURCE_ENTITY_TYPE_DEFAULTS[0];
|
|
221
|
+
|
|
170
222
|
export const ENTITY_TYPE_DEFAULTS = Object.freeze([
|
|
171
223
|
// ── Characters ─────────────────────────────────────────────────────────
|
|
172
224
|
{
|
|
173
|
-
entityType:
|
|
225
|
+
entityType: ENTITY_TYPES.player,
|
|
174
226
|
liveItemIds: ['anon', 'atlas_pistol_mk2'],
|
|
175
227
|
deadItemIds: ['ghost'],
|
|
176
228
|
colorKey: 'PLAYER',
|
|
@@ -180,48 +232,50 @@ export const ENTITY_TYPE_DEFAULTS = Object.freeze([
|
|
|
180
232
|
defaultObjectLayers: [
|
|
181
233
|
{ itemId: 'anon', active: true, quantity: 1 },
|
|
182
234
|
{ itemId: 'atlas_pistol_mk2', active: true, quantity: 1 },
|
|
183
|
-
{ itemId: 'purple', active: false, quantity: 1 },
|
|
235
|
+
// { itemId: 'purple', active: false, quantity: 1 },
|
|
184
236
|
{ itemId: 'ghost', active: false, quantity: 1 },
|
|
185
|
-
{ itemId: '
|
|
186
|
-
{ itemId: '
|
|
187
|
-
{ itemId: '
|
|
188
|
-
{ itemId: '
|
|
189
|
-
{ itemId: '
|
|
190
|
-
{ itemId: '
|
|
191
|
-
{ itemId: '
|
|
192
|
-
{ itemId: '
|
|
193
|
-
{ itemId: '
|
|
194
|
-
{ itemId: '
|
|
195
|
-
{ itemId: '
|
|
237
|
+
// { itemId: 'gp1', active: false, quantity: 1 },
|
|
238
|
+
// { itemId: 'gp2', active: false, quantity: 1 },
|
|
239
|
+
// { itemId: 'lain', active: false, quantity: 1 },
|
|
240
|
+
// { itemId: 'hatchet', active: false, quantity: 1 },
|
|
241
|
+
// { itemId: 'wason', active: false, quantity: 1 },
|
|
242
|
+
// { itemId: 'scp-2040', active: false, quantity: 1 },
|
|
243
|
+
// { itemId: 'punk', active: false, quantity: 1 },
|
|
244
|
+
// { itemId: 'kaneki', active: false, quantity: 1 },
|
|
245
|
+
// { itemId: 'junko', active: false, quantity: 1 },
|
|
246
|
+
// { itemId: 'eiri', active: false, quantity: 1 },
|
|
247
|
+
// { itemId: 'alex', active: false, quantity: 1 },
|
|
248
|
+
// { itemId: 'agent', active: false, quantity: 1 },
|
|
196
249
|
{ itemId: 'coin', active: false, quantity: 0 },
|
|
197
250
|
],
|
|
198
251
|
},
|
|
199
252
|
{
|
|
200
|
-
entityType:
|
|
253
|
+
entityType: ENTITY_TYPES.other_player,
|
|
201
254
|
liveItemIds: ['anon', 'atlas_pistol_mk2'],
|
|
202
255
|
deadItemIds: ['ghost'],
|
|
203
256
|
colorKey: 'OTHER_PLAYER',
|
|
204
257
|
defaultObjectLayers: [
|
|
205
258
|
{ itemId: 'anon', active: true, quantity: 1 },
|
|
206
259
|
{ itemId: 'atlas_pistol_mk2', active: true, quantity: 1 },
|
|
207
|
-
{ itemId: 'purple', active: false, quantity: 1 },
|
|
260
|
+
// { itemId: 'purple', active: false, quantity: 1 },
|
|
208
261
|
{ itemId: 'ghost', active: false, quantity: 1 },
|
|
209
|
-
{ itemId: '
|
|
210
|
-
{ itemId: '
|
|
211
|
-
{ itemId: '
|
|
212
|
-
{ itemId: '
|
|
213
|
-
{ itemId: '
|
|
214
|
-
{ itemId: '
|
|
215
|
-
{ itemId: '
|
|
216
|
-
{ itemId: '
|
|
217
|
-
{ itemId: '
|
|
218
|
-
{ itemId: '
|
|
219
|
-
{ itemId: '
|
|
262
|
+
// { itemId: 'gp1', active: false, quantity: 1 },
|
|
263
|
+
// { itemId: 'gp2', active: false, quantity: 1 },
|
|
264
|
+
// { itemId: 'lain', active: false, quantity: 1 },
|
|
265
|
+
// { itemId: 'hatchet', active: false, quantity: 1 },
|
|
266
|
+
// { itemId: 'wason', active: false, quantity: 1 },
|
|
267
|
+
// { itemId: 'scp-2040', active: false, quantity: 1 },
|
|
268
|
+
// { itemId: 'punk', active: false, quantity: 1 },
|
|
269
|
+
// { itemId: 'kaneki', active: false, quantity: 1 },
|
|
270
|
+
// { itemId: 'junko', active: false, quantity: 1 },
|
|
271
|
+
// { itemId: 'eiri', active: false, quantity: 1 },
|
|
272
|
+
// { itemId: 'alex', active: false, quantity: 1 },
|
|
273
|
+
// { itemId: 'agent', active: false, quantity: 1 },
|
|
220
274
|
{ itemId: 'coin', active: false, quantity: 0 },
|
|
221
275
|
],
|
|
222
276
|
},
|
|
223
277
|
{
|
|
224
|
-
entityType:
|
|
278
|
+
entityType: ENTITY_TYPES.bot,
|
|
225
279
|
liveItemIds: ['purple'],
|
|
226
280
|
deadItemIds: ['ghost'],
|
|
227
281
|
colorKey: 'BOT',
|
|
@@ -231,28 +285,89 @@ export const ENTITY_TYPE_DEFAULTS = Object.freeze([
|
|
|
231
285
|
],
|
|
232
286
|
},
|
|
233
287
|
{
|
|
234
|
-
entityType:
|
|
288
|
+
entityType: ENTITY_TYPES.skill,
|
|
235
289
|
liveItemIds: ['atlas_pistol_mk2_bullet'],
|
|
236
290
|
deadItemIds: [],
|
|
237
291
|
colorKey: 'SKILL',
|
|
238
292
|
defaultObjectLayers: [{ itemId: 'atlas_pistol_mk2_bullet', active: true, quantity: 1 }],
|
|
239
293
|
},
|
|
240
294
|
{
|
|
241
|
-
entityType:
|
|
295
|
+
entityType: ENTITY_TYPES.coin,
|
|
242
296
|
liveItemIds: ['coin'],
|
|
243
297
|
deadItemIds: [],
|
|
244
298
|
colorKey: 'COIN',
|
|
245
299
|
defaultObjectLayers: [{ itemId: 'coin', active: true, quantity: 1 }],
|
|
246
300
|
},
|
|
247
301
|
// ── World objects ───────────────────────────────────────────────────────
|
|
248
|
-
{
|
|
249
|
-
|
|
250
|
-
|
|
251
|
-
|
|
252
|
-
|
|
253
|
-
|
|
254
|
-
|
|
255
|
-
|
|
302
|
+
{
|
|
303
|
+
entityType: ENTITY_TYPES.floor,
|
|
304
|
+
liveItemIds: ['grass'],
|
|
305
|
+
deadItemIds: [],
|
|
306
|
+
dropItemIds: [],
|
|
307
|
+
colorKey: 'FLOOR',
|
|
308
|
+
defaultObjectLayers: [],
|
|
309
|
+
},
|
|
310
|
+
{
|
|
311
|
+
entityType: ENTITY_TYPES.obstacle,
|
|
312
|
+
liveItemIds: [],
|
|
313
|
+
deadItemIds: [],
|
|
314
|
+
dropItemIds: [],
|
|
315
|
+
colorKey: 'OBSTACLE',
|
|
316
|
+
defaultObjectLayers: [],
|
|
317
|
+
},
|
|
318
|
+
{
|
|
319
|
+
entityType: ENTITY_TYPES.portal,
|
|
320
|
+
liveItemIds: [],
|
|
321
|
+
deadItemIds: [],
|
|
322
|
+
dropItemIds: [],
|
|
323
|
+
colorKey: 'PORTAL',
|
|
324
|
+
defaultObjectLayers: [],
|
|
325
|
+
},
|
|
326
|
+
{
|
|
327
|
+
entityType: ENTITY_TYPES.portal,
|
|
328
|
+
liveItemIds: [],
|
|
329
|
+
deadItemIds: [],
|
|
330
|
+
dropItemIds: [],
|
|
331
|
+
colorKey: 'PORTAL_INTER_PORTAL',
|
|
332
|
+
defaultObjectLayers: [],
|
|
333
|
+
},
|
|
334
|
+
{
|
|
335
|
+
entityType: ENTITY_TYPES.portal,
|
|
336
|
+
liveItemIds: [],
|
|
337
|
+
deadItemIds: [],
|
|
338
|
+
dropItemIds: [],
|
|
339
|
+
colorKey: 'PORTAL_INTER_RANDOM',
|
|
340
|
+
defaultObjectLayers: [],
|
|
341
|
+
},
|
|
342
|
+
{
|
|
343
|
+
entityType: ENTITY_TYPES.portal,
|
|
344
|
+
liveItemIds: [],
|
|
345
|
+
deadItemIds: [],
|
|
346
|
+
dropItemIds: [],
|
|
347
|
+
colorKey: 'PORTAL_INTRA_RANDOM',
|
|
348
|
+
defaultObjectLayers: [],
|
|
349
|
+
},
|
|
350
|
+
{
|
|
351
|
+
entityType: 'portal',
|
|
352
|
+
liveItemIds: [],
|
|
353
|
+
deadItemIds: [],
|
|
354
|
+
dropItemIds: [],
|
|
355
|
+
colorKey: 'PORTAL_INTRA_PORTAL',
|
|
356
|
+
defaultObjectLayers: [],
|
|
357
|
+
},
|
|
358
|
+
{
|
|
359
|
+
entityType: ENTITY_TYPES.foreground,
|
|
360
|
+
liveItemIds: [],
|
|
361
|
+
deadItemIds: [],
|
|
362
|
+
dropItemIds: [],
|
|
363
|
+
colorKey: 'FOREGROUND',
|
|
364
|
+
defaultObjectLayers: [],
|
|
365
|
+
},
|
|
366
|
+
// ── Resource entities ────────────────────────────────────────────
|
|
367
|
+
// Static, exploitable map objects (wood, minerals, organic matter, etc.).
|
|
368
|
+
// liveItemIds render while alive, deadItemIds while depleted, and dropItemIds
|
|
369
|
+
// are transferred to the extractor. On respawn, original live OLs are restored.
|
|
370
|
+
...RESOURCE_ENTITY_TYPE_DEFAULTS,
|
|
256
371
|
]);
|
|
257
372
|
|
|
258
373
|
// ── Instance configuration defaults ─────────────────────────────────────────
|
|
@@ -295,6 +410,7 @@ export const CYBERIA_INSTANCE_CONF_DEFAULTS = {
|
|
|
295
410
|
{ key: 'GHOST', r: 200, g: 200, b: 255, a: 100 }, // rgba(200, 200, 255, 0.39)
|
|
296
411
|
{ key: 'COIN', r: 255, g: 215, b: 0, a: 255 }, // rgba(255, 215, 0, 1)
|
|
297
412
|
{ key: 'SKILL', r: 255, g: 255, b: 50, a: 255 }, // rgba(255, 255, 50, 1)
|
|
413
|
+
{ key: 'RESOURCE', r: 100, g: 180, b: 80, a: 255 }, // rgba(100, 180, 80, 1)
|
|
298
414
|
// ── UI-only ────────────────────────────────────────────────────
|
|
299
415
|
{ key: 'WEAPON', r: 180, g: 50, b: 50, a: 255 }, // rgba(180, 50, 50, 1)
|
|
300
416
|
// ── Interaction overlay — self-player bubble/panel border ──────
|
|
@@ -378,7 +494,7 @@ export const CYBERIA_INSTANCE_CONF_DEFAULTS = {
|
|
|
378
494
|
// Replaces flat fields: userDefaultItemId, botDefaultItemId, ghostItemId,
|
|
379
495
|
// coinItemId, defaultFloorItemId, weaponDefaultItemId.
|
|
380
496
|
// See ENTITY_TYPE_DEFAULTS for documentation of each field.
|
|
381
|
-
// liveItemIds / deadItemIds are arrays of ObjectLayer item IDs.
|
|
497
|
+
// liveItemIds / deadItemIds / dropItemIds are arrays of ObjectLayer item IDs.
|
|
382
498
|
entityDefaults: ENTITY_TYPE_DEFAULTS.map((e) => ({ ...e })),
|
|
383
499
|
|
|
384
500
|
// ── Entity Status Indicators (ESI) ─────────────────────────────────
|
|
@@ -389,9 +505,54 @@ export const CYBERIA_INSTANCE_CONF_DEFAULTS = {
|
|
|
389
505
|
|
|
390
506
|
// ── Skill system ───────────────────────────────────────────────────
|
|
391
507
|
skillConfig: [
|
|
392
|
-
{
|
|
393
|
-
|
|
394
|
-
|
|
508
|
+
{
|
|
509
|
+
triggerItemId: 'atlas_pistol_mk2',
|
|
510
|
+
skills: [
|
|
511
|
+
{
|
|
512
|
+
logicEventId: 'projectile',
|
|
513
|
+
name: 'Projectile',
|
|
514
|
+
description:
|
|
515
|
+
'Fires a projectile in the direction of the tap. Spawn chance and lifetime scale with Intelligence and Range.',
|
|
516
|
+
summonedEntityItemId: 'atlas_pistol_mk2_bullet',
|
|
517
|
+
},
|
|
518
|
+
],
|
|
519
|
+
},
|
|
520
|
+
{
|
|
521
|
+
triggerItemId: 'coin',
|
|
522
|
+
skills: [
|
|
523
|
+
{
|
|
524
|
+
logicEventId: 'coin_drop_or_transaction',
|
|
525
|
+
name: 'Coin Drop',
|
|
526
|
+
description:
|
|
527
|
+
'Coins are dropped automatically when an entity is killed. Transfer amount scales with kill percent rules.',
|
|
528
|
+
summonedEntityItemId: 'coin',
|
|
529
|
+
},
|
|
530
|
+
],
|
|
531
|
+
},
|
|
532
|
+
{
|
|
533
|
+
triggerItemId: 'anon',
|
|
534
|
+
skills: [
|
|
535
|
+
{
|
|
536
|
+
logicEventId: 'doppelganger',
|
|
537
|
+
name: 'Doppelganger',
|
|
538
|
+
description:
|
|
539
|
+
'Summons a passive clone of yourself that wanders nearby. Spawn chance scales with Intelligence.',
|
|
540
|
+
summonedEntityItemId: '$active_skin',
|
|
541
|
+
},
|
|
542
|
+
],
|
|
543
|
+
},
|
|
544
|
+
{
|
|
545
|
+
triggerItemId: 'hatchet',
|
|
546
|
+
skills: [
|
|
547
|
+
{
|
|
548
|
+
logicEventId: 'projectile',
|
|
549
|
+
name: 'Projectile',
|
|
550
|
+
description:
|
|
551
|
+
'Fires a projectile in the direction of the tap. Spawn chance and lifetime scale with Intelligence and Range.',
|
|
552
|
+
summonedEntityItemId: 'hatchet-skill',
|
|
553
|
+
},
|
|
554
|
+
],
|
|
555
|
+
},
|
|
395
556
|
],
|
|
396
557
|
|
|
397
558
|
skillRules: {
|
|
@@ -32,6 +32,9 @@ const EntityDefaultSchema = new Schema(
|
|
|
32
32
|
// Default ObjectLayer item IDs for the dead / ghost / respawning state.
|
|
33
33
|
// Empty array = use liveItemIds solid fill color.
|
|
34
34
|
deadItemIds: { type: [String], default: [] },
|
|
35
|
+
// Resource-only inventory items granted on extraction/depletion.
|
|
36
|
+
// These are not auto-activated on the entity itself.
|
|
37
|
+
dropItemIds: { type: [String], default: [] },
|
|
35
38
|
// Palette key for solid-color fallback when no OL items are assigned.
|
|
36
39
|
colorKey: { type: String, default: '' },
|
|
37
40
|
// Full default ObjectLayer inventory for this entity type.
|
|
@@ -197,7 +200,7 @@ const CyberiaInstanceConfSchema = new Schema(
|
|
|
197
200
|
// ── Entity type rendering defaults ───────────────────────────────
|
|
198
201
|
// Replaces flat fields: userDefaultItemId, botDefaultItemId, ghostItemId,
|
|
199
202
|
// coinItemId, defaultFloorItemId, weaponDefaultItemId.
|
|
200
|
-
// Each entry: { entityType, liveItemIds, deadItemIds, colorKey }.
|
|
203
|
+
// Each entry: { entityType, liveItemIds, deadItemIds, dropItemIds, colorKey }.
|
|
201
204
|
entityDefaults: { type: [EntityDefaultSchema], default: D.entityDefaults },
|
|
202
205
|
|
|
203
206
|
// ── Entity Status Indicators ────────────────────────────────────
|
|
@@ -4,15 +4,17 @@ import { DataQuery } from '../../server/data-query.js';
|
|
|
4
4
|
|
|
5
5
|
const logger = loggerFactory(import.meta);
|
|
6
6
|
|
|
7
|
-
|
|
8
|
-
post
|
|
7
|
+
class CyberiaInstanceConfService {
|
|
8
|
+
static post = async (req, res, options) => {
|
|
9
9
|
/** @type {import('./cyberia-instance-conf.model.js').CyberiaInstanceConfModel} */
|
|
10
|
-
const CyberiaInstanceConf =
|
|
10
|
+
const CyberiaInstanceConf =
|
|
11
|
+
DataBaseProvider.instance[`${options.host}${options.path}`].mongoose.models.CyberiaInstanceConf;
|
|
11
12
|
return await new CyberiaInstanceConf(req.body).save();
|
|
12
|
-
}
|
|
13
|
-
get
|
|
13
|
+
};
|
|
14
|
+
static get = async (req, res, options) => {
|
|
14
15
|
/** @type {import('./cyberia-instance-conf.model.js').CyberiaInstanceConfModel} */
|
|
15
|
-
const CyberiaInstanceConf =
|
|
16
|
+
const CyberiaInstanceConf =
|
|
17
|
+
DataBaseProvider.instance[`${options.host}${options.path}`].mongoose.models.CyberiaInstanceConf;
|
|
16
18
|
if (req.params.id) return await CyberiaInstanceConf.findById(req.params.id);
|
|
17
19
|
|
|
18
20
|
// Parse query parameters using DataQuery helper
|
|
@@ -25,18 +27,20 @@ const CyberiaInstanceConfService = {
|
|
|
25
27
|
|
|
26
28
|
const totalPages = Math.ceil(total / limit);
|
|
27
29
|
return { data, total, page, totalPages };
|
|
28
|
-
}
|
|
29
|
-
put
|
|
30
|
+
};
|
|
31
|
+
static put = async (req, res, options) => {
|
|
30
32
|
/** @type {import('./cyberia-instance-conf.model.js').CyberiaInstanceConfModel} */
|
|
31
|
-
const CyberiaInstanceConf =
|
|
33
|
+
const CyberiaInstanceConf =
|
|
34
|
+
DataBaseProvider.instance[`${options.host}${options.path}`].mongoose.models.CyberiaInstanceConf;
|
|
32
35
|
return await CyberiaInstanceConf.findByIdAndUpdate(req.params.id, req.body);
|
|
33
|
-
}
|
|
34
|
-
delete
|
|
36
|
+
};
|
|
37
|
+
static delete = async (req, res, options) => {
|
|
35
38
|
/** @type {import('./cyberia-instance-conf.model.js').CyberiaInstanceConfModel} */
|
|
36
|
-
const CyberiaInstanceConf =
|
|
39
|
+
const CyberiaInstanceConf =
|
|
40
|
+
DataBaseProvider.instance[`${options.host}${options.path}`].mongoose.models.CyberiaInstanceConf;
|
|
37
41
|
if (req.params.id) return await CyberiaInstanceConf.findByIdAndDelete(req.params.id);
|
|
38
42
|
else return await CyberiaInstanceConf.deleteMany();
|
|
39
|
-
}
|
|
40
|
-
}
|
|
43
|
+
};
|
|
44
|
+
}
|
|
41
45
|
|
|
42
46
|
export { CyberiaInstanceConfService };
|
|
@@ -3,8 +3,8 @@ import { CyberiaMapService } from './cyberia-map.service.js';
|
|
|
3
3
|
|
|
4
4
|
const logger = loggerFactory(import.meta);
|
|
5
5
|
|
|
6
|
-
|
|
7
|
-
post
|
|
6
|
+
class CyberiaMapController {
|
|
7
|
+
static post = async (req, res, options) => {
|
|
8
8
|
try {
|
|
9
9
|
const result = await CyberiaMapService.post(req, res, options);
|
|
10
10
|
return res.status(200).json({
|
|
@@ -18,8 +18,8 @@ const CyberiaMapController = {
|
|
|
18
18
|
message: error.message,
|
|
19
19
|
});
|
|
20
20
|
}
|
|
21
|
-
}
|
|
22
|
-
get
|
|
21
|
+
};
|
|
22
|
+
static get = async (req, res, options) => {
|
|
23
23
|
try {
|
|
24
24
|
const { page, limit } = req.query;
|
|
25
25
|
const result = await CyberiaMapService.get(
|
|
@@ -43,8 +43,8 @@ const CyberiaMapController = {
|
|
|
43
43
|
message: error.message,
|
|
44
44
|
});
|
|
45
45
|
}
|
|
46
|
-
}
|
|
47
|
-
put
|
|
46
|
+
};
|
|
47
|
+
static put = async (req, res, options) => {
|
|
48
48
|
try {
|
|
49
49
|
const result = await CyberiaMapService.put(req, res, options);
|
|
50
50
|
return res.status(200).json({
|
|
@@ -58,8 +58,8 @@ const CyberiaMapController = {
|
|
|
58
58
|
message: error.message,
|
|
59
59
|
});
|
|
60
60
|
}
|
|
61
|
-
}
|
|
62
|
-
delete
|
|
61
|
+
};
|
|
62
|
+
static delete = async (req, res, options) => {
|
|
63
63
|
try {
|
|
64
64
|
const result = await CyberiaMapService.delete(req, res, options);
|
|
65
65
|
return res.status(200).json({
|
|
@@ -73,7 +73,7 @@ const CyberiaMapController = {
|
|
|
73
73
|
message: error.message,
|
|
74
74
|
});
|
|
75
75
|
}
|
|
76
|
-
}
|
|
77
|
-
}
|
|
76
|
+
};
|
|
77
|
+
}
|
|
78
78
|
|
|
79
79
|
export { CyberiaMapController };
|
|
@@ -4,14 +4,14 @@ import { DataQuery } from '../../server/data-query.js';
|
|
|
4
4
|
|
|
5
5
|
const logger = loggerFactory(import.meta);
|
|
6
6
|
|
|
7
|
-
|
|
8
|
-
post
|
|
7
|
+
class CyberiaMapService {
|
|
8
|
+
static post = async (req, res, options) => {
|
|
9
9
|
/** @type {import('./cyberia-map.model.js').CyberiaMapModel} */
|
|
10
10
|
const CyberiaMap = DataBaseProvider.instance[`${options.host}${options.path}`].mongoose.models.CyberiaMap;
|
|
11
11
|
if (req.auth && req.auth.user) req.body.creator = req.auth.user._id;
|
|
12
12
|
return await new CyberiaMap(req.body).save();
|
|
13
|
-
}
|
|
14
|
-
get
|
|
13
|
+
};
|
|
14
|
+
static get = async (req, res, options) => {
|
|
15
15
|
/** @type {import('./cyberia-map.model.js').CyberiaMapModel} */
|
|
16
16
|
const CyberiaMap = DataBaseProvider.instance[`${options.host}${options.path}`].mongoose.models.CyberiaMap;
|
|
17
17
|
const populateCreator = { path: 'creator', model: 'User', select: '_id username' };
|
|
@@ -40,8 +40,8 @@ const CyberiaMapService = {
|
|
|
40
40
|
|
|
41
41
|
const totalPages = Math.ceil(total / limit);
|
|
42
42
|
return { data, total, page, totalPages };
|
|
43
|
-
}
|
|
44
|
-
put
|
|
43
|
+
};
|
|
44
|
+
static put = async (req, res, options) => {
|
|
45
45
|
/** @type {import('./cyberia-map.model.js').CyberiaMapModel} */
|
|
46
46
|
const CyberiaMap = DataBaseProvider.instance[`${options.host}${options.path}`].mongoose.models.CyberiaMap;
|
|
47
47
|
const map = await CyberiaMap.findById(req.params.id);
|
|
@@ -53,8 +53,8 @@ const CyberiaMapService = {
|
|
|
53
53
|
await File.findByIdAndDelete(map.thumbnail);
|
|
54
54
|
}
|
|
55
55
|
return await CyberiaMap.findByIdAndUpdate(req.params.id, req.body, { returnDocument: 'after' });
|
|
56
|
-
}
|
|
57
|
-
delete
|
|
56
|
+
};
|
|
57
|
+
static delete = async (req, res, options) => {
|
|
58
58
|
/** @type {import('./cyberia-map.model.js').CyberiaMapModel} */
|
|
59
59
|
const CyberiaMap = DataBaseProvider.instance[`${options.host}${options.path}`].mongoose.models.CyberiaMap;
|
|
60
60
|
if (req.params.id) {
|
|
@@ -68,7 +68,7 @@ const CyberiaMapService = {
|
|
|
68
68
|
}
|
|
69
69
|
return await CyberiaMap.findByIdAndDelete(req.params.id);
|
|
70
70
|
} else return await CyberiaMap.deleteMany();
|
|
71
|
-
}
|
|
72
|
-
}
|
|
71
|
+
};
|
|
72
|
+
}
|
|
73
73
|
|
|
74
74
|
export { CyberiaMapService };
|
|
@@ -0,0 +1,74 @@
|
|
|
1
|
+
import { loggerFactory } from '../../server/logger.js';
|
|
2
|
+
import { CyberiaQuestService } from './cyberia-quest.service.js';
|
|
3
|
+
|
|
4
|
+
const logger = loggerFactory(import.meta);
|
|
5
|
+
|
|
6
|
+
class CyberiaQuestController {
|
|
7
|
+
static post = async (req, res, options) => {
|
|
8
|
+
try {
|
|
9
|
+
const result = await CyberiaQuestService.post(req, res, options);
|
|
10
|
+
return res.status(200).json({
|
|
11
|
+
status: 'success',
|
|
12
|
+
data: result,
|
|
13
|
+
});
|
|
14
|
+
} catch (error) {
|
|
15
|
+
logger.error(error, error.stack);
|
|
16
|
+
return res.status(400).json({
|
|
17
|
+
status: 'error',
|
|
18
|
+
message: error.message,
|
|
19
|
+
});
|
|
20
|
+
}
|
|
21
|
+
};
|
|
22
|
+
static get = async (req, res, options) => {
|
|
23
|
+
try {
|
|
24
|
+
const { page, limit } = req.query;
|
|
25
|
+
const result = await CyberiaQuestService.get(
|
|
26
|
+
{ ...req, query: { ...req.query, page: parseInt(page), limit: parseInt(limit) } },
|
|
27
|
+
res,
|
|
28
|
+
options,
|
|
29
|
+
);
|
|
30
|
+
return res.status(200).json({
|
|
31
|
+
status: 'success',
|
|
32
|
+
data: result,
|
|
33
|
+
});
|
|
34
|
+
} catch (error) {
|
|
35
|
+
logger.error(error, error.stack);
|
|
36
|
+
return res.status(400).json({
|
|
37
|
+
status: 'error',
|
|
38
|
+
message: error.message,
|
|
39
|
+
});
|
|
40
|
+
}
|
|
41
|
+
};
|
|
42
|
+
static put = async (req, res, options) => {
|
|
43
|
+
try {
|
|
44
|
+
const result = await CyberiaQuestService.put(req, res, options);
|
|
45
|
+
return res.status(200).json({
|
|
46
|
+
status: 'success',
|
|
47
|
+
data: result,
|
|
48
|
+
});
|
|
49
|
+
} catch (error) {
|
|
50
|
+
logger.error(error, error.stack);
|
|
51
|
+
return res.status(400).json({
|
|
52
|
+
status: 'error',
|
|
53
|
+
message: error.message,
|
|
54
|
+
});
|
|
55
|
+
}
|
|
56
|
+
};
|
|
57
|
+
static delete = async (req, res, options) => {
|
|
58
|
+
try {
|
|
59
|
+
const result = await CyberiaQuestService.delete(req, res, options);
|
|
60
|
+
return res.status(200).json({
|
|
61
|
+
status: 'success',
|
|
62
|
+
data: result,
|
|
63
|
+
});
|
|
64
|
+
} catch (error) {
|
|
65
|
+
logger.error(error, error.stack);
|
|
66
|
+
return res.status(400).json({
|
|
67
|
+
status: 'error',
|
|
68
|
+
message: error.message,
|
|
69
|
+
});
|
|
70
|
+
}
|
|
71
|
+
};
|
|
72
|
+
}
|
|
73
|
+
|
|
74
|
+
export { CyberiaQuestController };
|