@akashic/headless-driver 1.11.37 → 2.0.1

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.
Files changed (139) hide show
  1. package/CHANGELOG.md +1728 -0
  2. package/README.md +30 -0
  3. package/lib/ExecuteVmScriptV1.d.ts +2 -2
  4. package/lib/ExecuteVmScriptV1.js +2 -2
  5. package/lib/ExecuteVmScriptV2.d.ts +2 -2
  6. package/lib/ExecuteVmScriptV2.js +2 -2
  7. package/lib/ExecuteVmScriptV3.d.ts +2 -2
  8. package/lib/ExecuteVmScriptV3.js +2 -2
  9. package/lib/Looper.d.ts +24 -0
  10. package/lib/Looper.js +79 -0
  11. package/lib/index.d.ts +3 -11
  12. package/lib/index.js +8 -12
  13. package/lib/play/AMFlowClientManager.d.ts +1 -1
  14. package/lib/play/Play.d.ts +1 -1
  15. package/lib/play/PlayManager.d.ts +5 -5
  16. package/lib/play/amflow/AMFlowClient.d.ts +4 -4
  17. package/lib/play/amflow/AMFlowStore.d.ts +3 -3
  18. package/lib/play/amflow/index.d.ts +4 -0
  19. package/lib/play/amflow/index.js +20 -0
  20. package/lib/play/amflow/types.d.ts +2 -2
  21. package/lib/play/index.d.ts +5 -0
  22. package/lib/play/index.js +21 -0
  23. package/lib/runner/Platform.d.ts +25 -0
  24. package/lib/runner/Platform.js +34 -0
  25. package/lib/runner/Runner.d.ts +110 -0
  26. package/lib/runner/Runner.js +101 -0
  27. package/lib/runner/RunnerManager.d.ts +6 -6
  28. package/lib/runner/RunnerManager.js +2 -2
  29. package/lib/runner/index.d.ts +7 -0
  30. package/lib/runner/index.js +23 -0
  31. package/lib/runner/types.d.ts +15 -0
  32. package/lib/runner/types.js +2 -0
  33. package/lib/runner/v1/RunnerV1.d.ts +26 -0
  34. package/lib/runner/v1/RunnerV1.js +230 -0
  35. package/lib/runner/v1/index.d.ts +3 -0
  36. package/lib/runner/v1/index.js +23 -0
  37. package/lib/runner/v1/platform/NullAudioPlayer.d.ts +3 -0
  38. package/lib/runner/v1/platform/NullAudioPlayer.js +7 -0
  39. package/lib/runner/v1/platform/NullGlyphFactory.d.ts +6 -0
  40. package/lib/runner/v1/platform/NullGlyphFactory.js +18 -0
  41. package/lib/runner/v1/platform/NullRenderer.d.ts +16 -0
  42. package/lib/runner/v1/platform/NullRenderer.js +46 -0
  43. package/lib/runner/v1/platform/NullSurface.d.ts +7 -0
  44. package/lib/runner/v1/platform/NullSurface.js +18 -0
  45. package/lib/runner/v1/platform/NullVideoPlayer.d.ts +4 -0
  46. package/lib/runner/v1/platform/NullVideoPlayer.js +10 -0
  47. package/lib/runner/v1/platform/PlatformV1.d.ts +22 -0
  48. package/lib/runner/v1/platform/PlatformV1.js +67 -0
  49. package/lib/runner/v1/platform/ResourceFactory.d.ts +18 -0
  50. package/lib/runner/v1/platform/ResourceFactory.js +53 -0
  51. package/lib/runner/v1/platform/assets/NodeScriptAsset.d.ts +16 -0
  52. package/lib/runner/v1/platform/assets/NodeScriptAsset.js +36 -0
  53. package/lib/runner/v1/platform/assets/NodeTextAsset.d.ts +11 -0
  54. package/lib/runner/v1/platform/assets/NodeTextAsset.js +23 -0
  55. package/lib/runner/v1/platform/assets/NullAudioAsset.d.ts +4 -0
  56. package/lib/runner/v1/platform/assets/NullAudioAsset.js +10 -0
  57. package/lib/runner/v1/platform/assets/NullImageAsset.d.ts +6 -0
  58. package/lib/runner/v1/platform/assets/NullImageAsset.js +18 -0
  59. package/lib/runner/v1/platform/assets/NullVideoAsset.d.ts +10 -0
  60. package/lib/runner/v1/platform/assets/NullVideoAsset.js +25 -0
  61. package/lib/runner/v2/RunnerV2.d.ts +26 -0
  62. package/lib/runner/v2/RunnerV2.js +229 -0
  63. package/lib/runner/v2/index.d.ts +3 -0
  64. package/lib/runner/v2/index.js +23 -0
  65. package/lib/runner/v2/platform/NullAudioPlayer.d.ts +3 -0
  66. package/lib/runner/v2/platform/NullAudioPlayer.js +7 -0
  67. package/lib/runner/v2/platform/NullGlyphFactory.d.ts +6 -0
  68. package/lib/runner/v2/platform/NullGlyphFactory.js +18 -0
  69. package/lib/runner/v2/platform/NullRenderer.d.ts +20 -0
  70. package/lib/runner/v2/platform/NullRenderer.js +58 -0
  71. package/lib/runner/v2/platform/NullSurface.d.ts +7 -0
  72. package/lib/runner/v2/platform/NullSurface.js +18 -0
  73. package/lib/runner/v2/platform/NullVideoPlayer.d.ts +4 -0
  74. package/lib/runner/v2/platform/NullVideoPlayer.js +10 -0
  75. package/lib/runner/v2/platform/PlatformV2.d.ts +23 -0
  76. package/lib/runner/v2/platform/PlatformV2.js +70 -0
  77. package/lib/runner/v2/platform/ResourceFactory.d.ts +18 -0
  78. package/lib/runner/v2/platform/ResourceFactory.js +53 -0
  79. package/lib/runner/v2/platform/assets/NodeScriptAsset.d.ts +16 -0
  80. package/lib/runner/v2/platform/assets/NodeScriptAsset.js +36 -0
  81. package/lib/runner/v2/platform/assets/NodeTextAsset.d.ts +11 -0
  82. package/lib/runner/v2/platform/assets/NodeTextAsset.js +23 -0
  83. package/lib/runner/v2/platform/assets/NullAudioAsset.d.ts +4 -0
  84. package/lib/runner/v2/platform/assets/NullAudioAsset.js +10 -0
  85. package/lib/runner/v2/platform/assets/NullImageAsset.d.ts +6 -0
  86. package/lib/runner/v2/platform/assets/NullImageAsset.js +18 -0
  87. package/lib/runner/v2/platform/assets/NullVideoAsset.d.ts +10 -0
  88. package/lib/runner/v2/platform/assets/NullVideoAsset.js +25 -0
  89. package/lib/runner/v3/RunnerV3.d.ts +38 -0
  90. package/lib/runner/v3/RunnerV3.js +245 -0
  91. package/lib/runner/v3/engineFiles.d.ts +2 -0
  92. package/lib/runner/v3/engineFiles.js +31 -0
  93. package/lib/runner/v3/index.d.ts +5 -0
  94. package/lib/runner/v3/index.js +25 -0
  95. package/lib/runner/v3/platform/NodeCanvasResourceFactory.d.ts +22 -0
  96. package/lib/runner/v3/platform/NodeCanvasResourceFactory.js +57 -0
  97. package/lib/runner/v3/platform/NullResourceFactory.d.ts +21 -0
  98. package/lib/runner/v3/platform/NullResourceFactory.js +54 -0
  99. package/lib/runner/v3/platform/PlatformV3.d.ts +23 -0
  100. package/lib/runner/v3/platform/PlatformV3.js +94 -0
  101. package/lib/runner/v3/platform/assets/Asset.d.ts +14 -0
  102. package/lib/runner/v3/platform/assets/Asset.js +30 -0
  103. package/lib/runner/v3/platform/assets/NodeScriptAsset.d.ts +19 -0
  104. package/lib/runner/v3/platform/assets/NodeScriptAsset.js +48 -0
  105. package/lib/runner/v3/platform/assets/NodeTextAsset.d.ts +14 -0
  106. package/lib/runner/v3/platform/assets/NodeTextAsset.js +35 -0
  107. package/lib/runner/v3/platform/audios/NullAudioAsset.d.ts +15 -0
  108. package/lib/runner/v3/platform/audios/NullAudioAsset.js +28 -0
  109. package/lib/runner/v3/platform/audios/NullAudioPlayer.d.ts +17 -0
  110. package/lib/runner/v3/platform/audios/NullAudioPlayer.js +34 -0
  111. package/lib/runner/v3/platform/graphics/canvas/CompositeOperationConverter.d.ts +6 -0
  112. package/lib/runner/v3/platform/graphics/canvas/CompositeOperationConverter.js +78 -0
  113. package/lib/runner/v3/platform/graphics/canvas/NodeCanvasGlyph.d.ts +16 -0
  114. package/lib/runner/v3/platform/graphics/canvas/NodeCanvasGlyph.js +25 -0
  115. package/lib/runner/v3/platform/graphics/canvas/NodeCanvasGlyphFactory.d.ts +24 -0
  116. package/lib/runner/v3/platform/graphics/canvas/NodeCanvasGlyphFactory.js +204 -0
  117. package/lib/runner/v3/platform/graphics/canvas/NodeCanvasImageAsset.d.ts +16 -0
  118. package/lib/runner/v3/platform/graphics/canvas/NodeCanvasImageAsset.js +78 -0
  119. package/lib/runner/v3/platform/graphics/canvas/NodeCanvasRenderer.d.ts +26 -0
  120. package/lib/runner/v3/platform/graphics/canvas/NodeCanvasRenderer.js +72 -0
  121. package/lib/runner/v3/platform/graphics/canvas/NodeCanvasSurface.d.ts +14 -0
  122. package/lib/runner/v3/platform/graphics/canvas/NodeCanvasSurface.js +25 -0
  123. package/lib/runner/v3/platform/graphics/null/NullGlyph.d.ts +16 -0
  124. package/lib/runner/v3/platform/graphics/null/NullGlyph.js +25 -0
  125. package/lib/runner/v3/platform/graphics/null/NullGlyphFactory.d.ts +14 -0
  126. package/lib/runner/v3/platform/graphics/null/NullGlyphFactory.js +22 -0
  127. package/lib/runner/v3/platform/graphics/null/NullImageAsset.d.ts +13 -0
  128. package/lib/runner/v3/platform/graphics/null/NullImageAsset.js +24 -0
  129. package/lib/runner/v3/platform/graphics/null/NullRenderer.d.ts +21 -0
  130. package/lib/runner/v3/platform/graphics/null/NullRenderer.js +60 -0
  131. package/lib/runner/v3/platform/graphics/null/NullSurface.d.ts +14 -0
  132. package/lib/runner/v3/platform/graphics/null/NullSurface.js +26 -0
  133. package/lib/runner/v3/platform/videos/NullVideoAsset.d.ts +20 -0
  134. package/lib/runner/v3/platform/videos/NullVideoAsset.js +37 -0
  135. package/lib/runner/v3/platform/videos/NullVideoPlayer.d.ts +14 -0
  136. package/lib/runner/v3/platform/videos/NullVideoPlayer.js +25 -0
  137. package/lib/runner/v3/requireEngineFiles.d.ts +5 -0
  138. package/lib/runner/v3/requireEngineFiles.js +21 -0
  139. package/package.json +33 -25
@@ -0,0 +1,10 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.NullVideoplayerAsset = void 0;
4
+ const aev2_1 = require("aev2");
5
+ class NullVideoplayerAsset extends aev2_1.akashicEngine.VideoPlayer {
6
+ isDummy() {
7
+ return true;
8
+ }
9
+ }
10
+ exports.NullVideoplayerAsset = NullVideoplayerAsset;
@@ -0,0 +1,23 @@
1
+ import type { akashicEngine as g, pdi } from "aev2";
2
+ import { Looper } from "../../../Looper";
3
+ import type { PlatformParameters } from "../../Platform";
4
+ import { Platform } from "../../Platform";
5
+ export declare class PlatformV2 extends Platform implements pdi.Platform {
6
+ private resFac;
7
+ private rendererReq;
8
+ private primarySurface;
9
+ private eventHandler;
10
+ private loopers;
11
+ private isLooperPaused;
12
+ constructor(param: PlatformParameters);
13
+ getResourceFactory(): g.ResourceFactory;
14
+ setRendererRequirement(requirement: pdi.RendererRequirement): void;
15
+ setPlatformEventHandler(handler: pdi.PlatformEventHandler): void;
16
+ getPlatformHandler(): pdi.PlatformEventHandler | null;
17
+ getPrimarySurface(): g.Surface;
18
+ createLooper(fun: (deltaTime: number) => number): Looper;
19
+ advanceLoopers(ms: number): void;
20
+ pauseLoopers(): void;
21
+ resumeLoopers(): void;
22
+ firePointEvent(event: pdi.PointEvent): void;
23
+ }
@@ -0,0 +1,70 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.PlatformV2 = void 0;
4
+ const Looper_1 = require("../../../Looper");
5
+ const Platform_1 = require("../../Platform");
6
+ const NullSurface_1 = require("./NullSurface");
7
+ const ResourceFactory_1 = require("./ResourceFactory");
8
+ class PlatformV2 extends Platform_1.Platform {
9
+ constructor(param) {
10
+ super(param);
11
+ this.rendererReq = null;
12
+ this.primarySurface = null;
13
+ this.eventHandler = null;
14
+ this.loopers = [];
15
+ this.isLooperPaused = false;
16
+ this.resFac = new ResourceFactory_1.ResourceFactory({
17
+ errorHandler: (e) => this.errorHandler(e),
18
+ loadFileHandler: param.loadFileHandler
19
+ });
20
+ }
21
+ getResourceFactory() {
22
+ return this.resFac;
23
+ }
24
+ setRendererRequirement(requirement) {
25
+ this.rendererReq = requirement;
26
+ this.primarySurface = new NullSurface_1.NullSurface(this.rendererReq.primarySurfaceWidth, this.rendererReq.primarySurfaceHeight, null);
27
+ }
28
+ setPlatformEventHandler(handler) {
29
+ this.eventHandler = handler;
30
+ }
31
+ getPlatformHandler() {
32
+ return this.eventHandler;
33
+ }
34
+ getPrimarySurface() {
35
+ if (this.primarySurface == null) {
36
+ throw new Error("PlatformV2#getPrimarySurface(): Primary surface has not been initialized yet");
37
+ }
38
+ return this.primarySurface;
39
+ }
40
+ createLooper(fun) {
41
+ const looper = new Looper_1.Looper(fun, (e) => this.errorHandler(e));
42
+ if (this.isLooperPaused) {
43
+ looper.debugStop();
44
+ }
45
+ this.loopers.push(looper);
46
+ return looper;
47
+ }
48
+ advanceLoopers(ms) {
49
+ for (let i = 0; i < this.loopers.length; i++) {
50
+ this.loopers[i].debugStep(ms);
51
+ }
52
+ }
53
+ pauseLoopers() {
54
+ this.isLooperPaused = true;
55
+ for (let i = 0; i < this.loopers.length; i++) {
56
+ this.loopers[i].debugStop();
57
+ }
58
+ }
59
+ resumeLoopers() {
60
+ this.isLooperPaused = false;
61
+ for (let i = 0; i < this.loopers.length; i++) {
62
+ this.loopers[i].debugStart();
63
+ }
64
+ }
65
+ firePointEvent(event) {
66
+ var _a;
67
+ (_a = this.eventHandler) === null || _a === void 0 ? void 0 : _a.onPointEvent(event);
68
+ }
69
+ }
70
+ exports.PlatformV2 = PlatformV2;
@@ -0,0 +1,18 @@
1
+ import { akashicEngine as g } from "aev2";
2
+ export interface ResourceFactoryParameters {
3
+ loadFileHandler: (url: string, callback: (err: Error | null, data?: string) => void) => void;
4
+ errorHandler: (err: any) => void;
5
+ }
6
+ export declare class ResourceFactory extends g.ResourceFactory {
7
+ private loadFileHandler;
8
+ private errorHandler;
9
+ constructor({ loadFileHandler, errorHandler }: ResourceFactoryParameters);
10
+ createImageAsset(id: string, assetPath: string, width: number, height: number): g.ImageAsset;
11
+ createVideoAsset(id: string, assetPath: string, width: number, height: number, system: g.VideoSystem, loop: boolean, useRealSize: boolean): g.VideoAsset;
12
+ createAudioAsset(id: string, assetPath: string, duration: number, system: g.AudioSystem, loop: boolean, hint: g.AudioAssetHint): g.AudioAsset;
13
+ createAudioPlayer(system: g.AudioSystem): g.AudioPlayer;
14
+ createTextAsset(id: string, assetPath: string): g.TextAsset;
15
+ createScriptAsset(id: string, assetPath: string): g.ScriptAsset;
16
+ createSurface(width: number, height: number): g.Surface;
17
+ createGlyphFactory(fontFamily: g.FontFamily | string | (g.FontFamily | string)[], fontSize: number, baselineHeight?: number, fontColor?: string, strokeWidth?: number, strokeColor?: string, strokeOnly?: boolean, fontWeight?: g.FontWeight): g.GlyphFactory;
18
+ }
@@ -0,0 +1,53 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.ResourceFactory = void 0;
4
+ const aev2_1 = require("aev2");
5
+ const NodeScriptAsset_1 = require("./assets/NodeScriptAsset");
6
+ const NodeTextAsset_1 = require("./assets/NodeTextAsset");
7
+ const NullAudioAsset_1 = require("./assets/NullAudioAsset");
8
+ const NullImageAsset_1 = require("./assets/NullImageAsset");
9
+ const NullVideoAsset_1 = require("./assets/NullVideoAsset");
10
+ const NullAudioPlayer_1 = require("./NullAudioPlayer");
11
+ const NullGlyphFactory_1 = require("./NullGlyphFactory");
12
+ const NullSurface_1 = require("./NullSurface");
13
+ class ResourceFactory extends aev2_1.akashicEngine.ResourceFactory {
14
+ constructor({ loadFileHandler, errorHandler }) {
15
+ super();
16
+ this.loadFileHandler = loadFileHandler;
17
+ this.errorHandler = errorHandler;
18
+ }
19
+ createImageAsset(id, assetPath, width, height) {
20
+ return new NullImageAsset_1.NullImageAsset(id, assetPath, width, height);
21
+ }
22
+ createVideoAsset(id, assetPath, width, height, system, loop, useRealSize) {
23
+ return new NullVideoAsset_1.NullVideoAsset(id, assetPath, width, height, system, loop, useRealSize);
24
+ }
25
+ createAudioAsset(id, assetPath, duration, system, loop, hint) {
26
+ return new NullAudioAsset_1.NullAudioAsset(id, assetPath, duration, system, loop, hint);
27
+ }
28
+ createAudioPlayer(system) {
29
+ return new NullAudioPlayer_1.NullAudioPlayer(system);
30
+ }
31
+ createTextAsset(id, assetPath) {
32
+ return new NodeTextAsset_1.NodeTextAsset({
33
+ id,
34
+ path: assetPath,
35
+ loadFileHandler: this.loadFileHandler
36
+ });
37
+ }
38
+ createScriptAsset(id, assetPath) {
39
+ return new NodeScriptAsset_1.NodeScriptAsset({
40
+ id,
41
+ path: assetPath,
42
+ errorHandler: this.errorHandler,
43
+ loadFileHandler: this.loadFileHandler
44
+ });
45
+ }
46
+ createSurface(width, height) {
47
+ return new NullSurface_1.NullSurface(width, height);
48
+ }
49
+ createGlyphFactory(fontFamily, fontSize, baselineHeight, fontColor, strokeWidth, strokeColor, strokeOnly, fontWeight) {
50
+ return new NullGlyphFactory_1.NullGlyphFactory(fontFamily, fontSize, baselineHeight, fontColor, strokeWidth, strokeColor, strokeOnly, fontWeight);
51
+ }
52
+ }
53
+ exports.ResourceFactory = ResourceFactory;
@@ -0,0 +1,16 @@
1
+ import { akashicEngine as g } from "aev2";
2
+ export interface NodeScriptAssetParameters {
3
+ id: string;
4
+ path: string;
5
+ errorHandler: (err: any) => void;
6
+ loadFileHandler: (url: string, callback: (err: Error | null, data?: string) => void) => void;
7
+ }
8
+ export declare class NodeScriptAsset extends g.ScriptAsset {
9
+ static PRE_SCRIPT: string;
10
+ static POST_SCRIPT: string;
11
+ private errorHandler;
12
+ private loadFileHandler;
13
+ constructor(param: NodeScriptAssetParameters);
14
+ _load(loader: g.AssetLoadHandler): void;
15
+ execute(execEnv: g.ScriptAssetExecuteEnvironment): any;
16
+ }
@@ -0,0 +1,36 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.NodeScriptAsset = void 0;
4
+ const aev2_1 = require("aev2");
5
+ class NodeScriptAsset extends aev2_1.akashicEngine.ScriptAsset {
6
+ constructor(param) {
7
+ super(param.id, param.path);
8
+ this.errorHandler = param.errorHandler;
9
+ this.loadFileHandler = param.loadFileHandler;
10
+ }
11
+ _load(loader) {
12
+ this.loadFileHandler(this.path, (err, text) => {
13
+ // NOTE: 過去バージョンのため型については精査しない
14
+ if (err) {
15
+ loader._onAssetError(this, err);
16
+ }
17
+ else {
18
+ this.script = text;
19
+ loader._onAssetLoad(this);
20
+ }
21
+ });
22
+ }
23
+ execute(execEnv) {
24
+ const func = new Function("g", NodeScriptAsset.PRE_SCRIPT + this.script + NodeScriptAsset.POST_SCRIPT);
25
+ try {
26
+ func(execEnv);
27
+ }
28
+ catch (e) {
29
+ this.errorHandler(e);
30
+ }
31
+ return execEnv.module.exports;
32
+ }
33
+ }
34
+ exports.NodeScriptAsset = NodeScriptAsset;
35
+ NodeScriptAsset.PRE_SCRIPT = "(function(exports, require, module, __filename, __dirname) {\n";
36
+ NodeScriptAsset.POST_SCRIPT = "\n})(g.module.exports, g.module.require, g.module, g.filename, g.dirname);";
@@ -0,0 +1,11 @@
1
+ import { akashicEngine as g } from "aev2";
2
+ export interface NodeTextAssetParameters {
3
+ id: string;
4
+ path: string;
5
+ loadFileHandler: (url: string, callback: (err: Error | null, data?: string) => void) => void;
6
+ }
7
+ export declare class NodeTextAsset extends g.TextAsset {
8
+ private loadFileHandler;
9
+ constructor(param: NodeTextAssetParameters);
10
+ _load(loader: g.AssetLoadHandler): void;
11
+ }
@@ -0,0 +1,23 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.NodeTextAsset = void 0;
4
+ const aev2_1 = require("aev2");
5
+ class NodeTextAsset extends aev2_1.akashicEngine.TextAsset {
6
+ constructor(param) {
7
+ super(param.id, param.path);
8
+ this.loadFileHandler = param.loadFileHandler;
9
+ }
10
+ _load(loader) {
11
+ this.loadFileHandler(this.path, (err, text) => {
12
+ // NOTE: 過去バージョンのため型については精査しない
13
+ if (err) {
14
+ loader._onAssetError(this, err);
15
+ }
16
+ else {
17
+ this.data = text;
18
+ loader._onAssetLoad(this);
19
+ }
20
+ });
21
+ }
22
+ }
23
+ exports.NodeTextAsset = NodeTextAsset;
@@ -0,0 +1,4 @@
1
+ import { akashicEngine as g } from "aev2";
2
+ export declare class NullAudioAsset extends g.AudioAsset {
3
+ _load(loader: g.AssetLoadHandler): void;
4
+ }
@@ -0,0 +1,10 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.NullAudioAsset = void 0;
4
+ const aev2_1 = require("aev2");
5
+ class NullAudioAsset extends aev2_1.akashicEngine.AudioAsset {
6
+ _load(loader) {
7
+ loader._onAssetLoad(this);
8
+ }
9
+ }
10
+ exports.NullAudioAsset = NullAudioAsset;
@@ -0,0 +1,6 @@
1
+ import { akashicEngine as g } from "aev2";
2
+ export declare class NullImageAsset extends g.ImageAsset {
3
+ _surface: g.Surface | null;
4
+ _load(loader: g.AssetLoadHandler): void;
5
+ asSurface(): g.Surface;
6
+ }
@@ -0,0 +1,18 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.NullImageAsset = void 0;
4
+ const aev2_1 = require("aev2");
5
+ const NullSurface_1 = require("../NullSurface");
6
+ class NullImageAsset extends aev2_1.akashicEngine.ImageAsset {
7
+ constructor() {
8
+ super(...arguments);
9
+ this._surface = null;
10
+ }
11
+ _load(loader) {
12
+ loader._onAssetLoad(this);
13
+ }
14
+ asSurface() {
15
+ return this._surface || (this._surface = new NullSurface_1.NullSurface(this.width, this.height, null));
16
+ }
17
+ }
18
+ exports.NullImageAsset = NullImageAsset;
@@ -0,0 +1,10 @@
1
+ import { akashicEngine as g } from "aev2";
2
+ export declare class NullVideoAsset extends g.VideoAsset {
3
+ _surface: g.Surface | null;
4
+ _player: g.VideoPlayer;
5
+ constructor(id: string, assetPath: string, width: number, height: number, system: any, loop: boolean, useRealSize: boolean);
6
+ _load(loader: g.AssetLoadHandler): void;
7
+ asSurface(): g.Surface;
8
+ getPlayer(): g.VideoPlayer;
9
+ play(): g.VideoPlayer;
10
+ }
@@ -0,0 +1,25 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.NullVideoAsset = void 0;
4
+ const aev2_1 = require("aev2");
5
+ const NullSurface_1 = require("../NullSurface");
6
+ class NullVideoAsset extends aev2_1.akashicEngine.VideoAsset {
7
+ constructor(id, assetPath, width, height, system, loop, useRealSize) {
8
+ super(id, assetPath, width, height, system, loop, useRealSize);
9
+ this._surface = null;
10
+ this._player = new aev2_1.akashicEngine.VideoPlayer();
11
+ }
12
+ _load(loader) {
13
+ loader._onAssetLoad(this);
14
+ }
15
+ asSurface() {
16
+ return this._surface || (this._surface = new NullSurface_1.NullSurface(this.width, this.height, null));
17
+ }
18
+ getPlayer() {
19
+ return this._player;
20
+ }
21
+ play() {
22
+ return this._player;
23
+ }
24
+ }
25
+ exports.NullVideoAsset = NullVideoAsset;
@@ -0,0 +1,38 @@
1
+ import type { Canvas } from "canvas";
2
+ import type { RunnerStartParameters } from "../Runner";
3
+ import { Runner } from "../Runner";
4
+ import type { RunnerPointEvent } from "../types";
5
+ import { akashicEngine as g, gameDriver as gdr } from "./engineFiles";
6
+ import type { NodeCanvasSurface } from "./platform/graphics/canvas/NodeCanvasSurface";
7
+ import type { NullSurface } from "./platform/graphics/null/NullSurface";
8
+ import { PlatformV3 } from "./platform/PlatformV3";
9
+ export declare type RunnerV3Game = g.Game;
10
+ export declare class RunnerV3 extends Runner {
11
+ readonly engineVersion: string;
12
+ readonly g: typeof g;
13
+ platform: PlatformV3 | null;
14
+ private driver;
15
+ private fps;
16
+ private running;
17
+ start(params?: RunnerStartParameters): Promise<RunnerV3Game | null>;
18
+ stop(): void;
19
+ pause(): void;
20
+ resume(): void;
21
+ step(): void;
22
+ advance(ms: number): Promise<void>;
23
+ changeGameDriverState(param: gdr.GameDriverInitializeParameterObject): Promise<void>;
24
+ firePointEvent(event: RunnerPointEvent): void;
25
+ /**
26
+ * プライマリサーフェスを取得する。
27
+ * @returns NullSurface または NodeCanvasSurface
28
+ */
29
+ getPrimarySurface(): NullSurface | NodeCanvasSurface;
30
+ /**
31
+ * プライマリサーフェスの Canvas インスタンスを取得する。
32
+ * @returns node-canvas の Canvas
33
+ */
34
+ getPrimarySurfaceCanvas(): Canvas;
35
+ protected _stepMinimal(): void;
36
+ private initGameDriver;
37
+ private onSendedToExternal;
38
+ }
@@ -0,0 +1,245 @@
1
+ "use strict";
2
+ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
3
+ function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
4
+ return new (P || (P = Promise))(function (resolve, reject) {
5
+ function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
6
+ function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
7
+ function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
8
+ step((generator = generator.apply(thisArg, _arguments || [])).next());
9
+ });
10
+ };
11
+ Object.defineProperty(exports, "__esModule", { value: true });
12
+ exports.RunnerV3 = void 0;
13
+ const Runner_1 = require("../Runner");
14
+ const engineFiles_1 = require("./engineFiles");
15
+ const PlatformV3_1 = require("./platform/PlatformV3");
16
+ class RunnerV3 extends Runner_1.Runner {
17
+ constructor() {
18
+ super(...arguments);
19
+ this.engineVersion = "3";
20
+ this.g = engineFiles_1.akashicEngine;
21
+ this.platform = null;
22
+ this.driver = null;
23
+ this.fps = null;
24
+ this.running = false;
25
+ }
26
+ start(params) {
27
+ return __awaiter(this, void 0, void 0, function* () {
28
+ let game = null;
29
+ const paused = !!(params === null || params === void 0 ? void 0 : params.paused);
30
+ try {
31
+ game = yield this.initGameDriver();
32
+ if (!paused) {
33
+ this.resume();
34
+ }
35
+ }
36
+ catch (e) {
37
+ this.onError(e);
38
+ }
39
+ return game;
40
+ });
41
+ }
42
+ stop() {
43
+ if (this.driver) {
44
+ this.driver.stopGame();
45
+ this.driver = null;
46
+ }
47
+ this.running = false;
48
+ }
49
+ pause() {
50
+ if (this.platform == null) {
51
+ this.errorTrigger.fire(new Error("Cannot call Runner#pause() before initialized"));
52
+ return;
53
+ }
54
+ this.platform.pauseLoopers();
55
+ this.running = false;
56
+ }
57
+ resume() {
58
+ if (this.platform == null) {
59
+ this.errorTrigger.fire(new Error("Cannot call Runner#resume() before initialized"));
60
+ return;
61
+ }
62
+ this.platform.resumeLoopers();
63
+ this.running = true;
64
+ }
65
+ step() {
66
+ if (this.fps == null || this.platform == null) {
67
+ this.errorTrigger.fire(new Error("Cannot call Runner#step() before initialized"));
68
+ return;
69
+ }
70
+ if (this.running) {
71
+ this.errorTrigger.fire(new Error("Cannot call Runner#step() in running"));
72
+ return;
73
+ }
74
+ this.platform.stepLoopers();
75
+ }
76
+ advance(ms) {
77
+ return __awaiter(this, void 0, void 0, function* () {
78
+ if (this.fps == null || this.platform == null || this.driver == null) {
79
+ this.errorTrigger.fire(new Error("Cannot call Runner#advance() before initialized"));
80
+ return;
81
+ }
82
+ if (this.running) {
83
+ this.errorTrigger.fire(new Error("Cannot call Runner#advance() in running"));
84
+ return;
85
+ }
86
+ const loopConfiguration = this.driver.getLoopConfiguration();
87
+ if (!loopConfiguration) {
88
+ this.errorTrigger.fire(new Error("Cannot get LoopConfiguration"));
89
+ return;
90
+ }
91
+ const { loopMode, skipThreshold } = loopConfiguration;
92
+ // NOTE: skip の通知タイミングを一度に制限するため skipThreshold を一時的に変更する。
93
+ yield this.changeGameDriverState({
94
+ loopConfiguration: {
95
+ loopMode,
96
+ skipThreshold: Math.ceil(ms / this.fps) + 1
97
+ }
98
+ });
99
+ const delta = Math.ceil(1000 / this.fps);
100
+ let progress = 0;
101
+ while (progress <= ms) {
102
+ // NOTE: game-driver の内部実装により Looper 経由で一度に進める時間に制限がある。
103
+ // そのため一度に進める時間を fps に応じて分割する。
104
+ this.platform.advanceLoopers(delta);
105
+ progress += delta;
106
+ }
107
+ yield this.changeGameDriverState({
108
+ loopConfiguration: {
109
+ loopMode,
110
+ skipThreshold
111
+ }
112
+ });
113
+ });
114
+ }
115
+ changeGameDriverState(param) {
116
+ return new Promise((resolve, reject) => {
117
+ if (!this.driver) {
118
+ reject(new Error("Game is not started"));
119
+ return;
120
+ }
121
+ this.driver.changeState(param, (err) => (err ? reject(err) : resolve()));
122
+ });
123
+ }
124
+ firePointEvent(event) {
125
+ if (this.platform == null) {
126
+ this.errorTrigger.fire(new Error("Cannot call Runner#firePointEvent() before initialized"));
127
+ return;
128
+ }
129
+ let type;
130
+ if (event.type === "down") {
131
+ type = 0 /* Down */;
132
+ }
133
+ else if (event.type === "move") {
134
+ type = 1 /* Move */;
135
+ }
136
+ else if (event.type === "up") {
137
+ type = 2 /* Up */;
138
+ }
139
+ else {
140
+ this.errorTrigger.fire(new Error(`RunnerV3#firePointEvent(): unknown event type: ${event.type}`));
141
+ return;
142
+ }
143
+ this.platform.firePointEvent({
144
+ type,
145
+ identifier: event.identifier,
146
+ offset: event.offset
147
+ });
148
+ }
149
+ /**
150
+ * プライマリサーフェスを取得する。
151
+ * @returns NullSurface または NodeCanvasSurface
152
+ */
153
+ getPrimarySurface() {
154
+ if (!this.platform) {
155
+ throw new Error("RunnerV3#getPrimarySurface(): Platform has not been initialized");
156
+ }
157
+ if (this.renderingMode === "canvas") {
158
+ return this.platform.getPrimarySurface();
159
+ }
160
+ return this.platform.getPrimarySurface();
161
+ }
162
+ /**
163
+ * プライマリサーフェスの Canvas インスタンスを取得する。
164
+ * @returns node-canvas の Canvas
165
+ */
166
+ getPrimarySurfaceCanvas() {
167
+ if (this.renderingMode !== "canvas") {
168
+ throw Error("RunnerV3#getPrimarySurface(): Not supported except in the case of renderingMode === 'canvas");
169
+ }
170
+ return this.getPrimarySurface()._drawable;
171
+ }
172
+ _stepMinimal() {
173
+ this.step();
174
+ }
175
+ initGameDriver() {
176
+ return new Promise((resolve, reject) => {
177
+ if (this.driver) {
178
+ this.driver.destroy();
179
+ this.driver = null;
180
+ }
181
+ const player = {
182
+ id: this.player ? this.player.id : undefined,
183
+ name: this.player ? this.player.name : undefined
184
+ };
185
+ const executionMode = this.executionMode === "active" ? engineFiles_1.gameDriver.ExecutionMode.Active : engineFiles_1.gameDriver.ExecutionMode.Passive;
186
+ this.platform = new PlatformV3_1.PlatformV3({
187
+ configurationBaseUrl: this.configurationBaseUrl,
188
+ assetBaseUrl: this.assetBaseUrl,
189
+ amflow: this.amflow,
190
+ trusted: this.trusted,
191
+ renderingMode: this.renderingMode,
192
+ sendToExternalHandler: (data) => this.onSendedToExternal(data),
193
+ errorHandler: (e) => this.onError(e),
194
+ loadFileHandler: (url, callback) => this.loadFileHandler(url, callback)
195
+ });
196
+ this.pause();
197
+ const driver = new engineFiles_1.gameDriver.GameDriver({
198
+ platform: this.platform,
199
+ player,
200
+ errorHandler: (e) => this.onError(e)
201
+ });
202
+ this.driver = driver;
203
+ let result = null;
204
+ // TODO: パラメータを外部から変更可能にする
205
+ driver.initialize({
206
+ configurationUrl: this.configurationUrl,
207
+ configurationBase: this.configurationBaseUrl,
208
+ assetBase: this.assetBaseUrl,
209
+ driverConfiguration: {
210
+ playId: this.playId,
211
+ playToken: this.playToken,
212
+ executionMode
213
+ },
214
+ loopConfiguration: {
215
+ loopMode: engineFiles_1.gameDriver.LoopMode.Realtime
216
+ },
217
+ gameArgs: this.gameArgs
218
+ }, (e) => {
219
+ if (e) {
220
+ reject(e);
221
+ return;
222
+ }
223
+ if (!result) {
224
+ // GameDriver の内部実装上ここに来ることはないはずだが念のため確認
225
+ return reject(new Error("Game is null."));
226
+ }
227
+ driver.startGame();
228
+ resolve(result);
229
+ });
230
+ driver.gameCreatedTrigger.addOnce((game) => {
231
+ if (this.externalValue) {
232
+ Object.keys(this.externalValue).forEach((key) => {
233
+ game.external[key] = this.externalValue[key];
234
+ });
235
+ }
236
+ this.fps = game.fps;
237
+ result = game;
238
+ });
239
+ });
240
+ }
241
+ onSendedToExternal(data) {
242
+ this.sendToExternalTrigger.fire(data);
243
+ }
244
+ }
245
+ exports.RunnerV3 = RunnerV3;
@@ -0,0 +1,2 @@
1
+ import { akashicEngine, gameDriver, pdi } from "aev3";
2
+ export { akashicEngine, gameDriver, pdi };
@@ -0,0 +1,31 @@
1
+ "use strict";
2
+ // 環境に応じて適当な engineFiles を返すモジュール。
3
+ // 通常の engine-files と同様に `import { akashicEngine, gameDriver, pdi } from "./engineFiles"` という形で呼び出せる。
4
+ // RunnerV3 内では基本的に本モジュールを介して engine-files の読み込みを行うこと。
5
+ //
6
+ // NOTE: このモジュールは現実装において NodeVM のサンドボックスの内側と外側の両方から require される。
7
+ // サンドボックスの内側ではグローバル関数 trustedFunctions.engineFiles() が存在するため、下の (1) のパスから engine-files を読みようにする。
8
+ // 一方、このモジュール自体が NodeVM の外側から require されるケースも存在するため、下の (2) のパスから engine-files を読み込むようにしている。
9
+ Object.defineProperty(exports, "__esModule", { value: true });
10
+ exports.pdi = exports.gameDriver = exports.akashicEngine = void 0;
11
+ const aev3_1 = require("aev3");
12
+ Object.defineProperty(exports, "akashicEngine", { enumerable: true, get: function () { return aev3_1.akashicEngine; } });
13
+ Object.defineProperty(exports, "gameDriver", { enumerable: true, get: function () { return aev3_1.gameDriver; } });
14
+ Object.defineProperty(exports, "pdi", { enumerable: true, get: function () { return aev3_1.pdi; } });
15
+ let e;
16
+ if (typeof trustedFunctions !== "undefined") {
17
+ // (1)
18
+ // NodeVM の中であれば
19
+ e = trustedFunctions.engineFiles();
20
+ }
21
+ else {
22
+ // (2)
23
+ // NodeVM 起動前もしくはその他環境であれば
24
+ // eslint-disable-next-line @typescript-eslint/no-var-requires
25
+ e = require("./requireEngineFiles").requireEngineFiles();
26
+ }
27
+ if (e) {
28
+ aev3_1.akashicEngine = e.akashicEngine;
29
+ aev3_1.gameDriver = e.gameDriver;
30
+ aev3_1.pdi = e.pdi;
31
+ }