@akashic/headless-driver 1.11.36 → 2.0.0
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/CHANGELOG.md +1725 -0
- package/README.md +30 -0
- package/lib/ExecuteVmScriptV1.d.ts +2 -2
- package/lib/ExecuteVmScriptV1.js +2 -2
- package/lib/ExecuteVmScriptV2.d.ts +2 -2
- package/lib/ExecuteVmScriptV2.js +2 -2
- package/lib/ExecuteVmScriptV3.d.ts +2 -2
- package/lib/ExecuteVmScriptV3.js +2 -2
- package/lib/Looper.d.ts +24 -0
- package/lib/Looper.js +79 -0
- package/lib/index.d.ts +3 -11
- package/lib/index.js +3 -11
- package/lib/play/AMFlowClientManager.d.ts +1 -1
- package/lib/play/Play.d.ts +1 -1
- package/lib/play/PlayManager.d.ts +5 -5
- package/lib/play/amflow/AMFlowClient.d.ts +4 -4
- package/lib/play/amflow/AMFlowStore.d.ts +3 -3
- package/lib/play/amflow/index.d.ts +4 -0
- package/lib/play/amflow/index.js +16 -0
- package/lib/play/amflow/types.d.ts +2 -2
- package/lib/play/index.d.ts +5 -0
- package/lib/play/index.js +17 -0
- package/lib/runner/Platform.d.ts +25 -0
- package/lib/runner/Platform.js +34 -0
- package/lib/runner/Runner.d.ts +110 -0
- package/lib/runner/Runner.js +101 -0
- package/lib/runner/RunnerManager.d.ts +6 -6
- package/lib/runner/RunnerManager.js +2 -2
- package/lib/runner/index.d.ts +7 -0
- package/lib/runner/index.js +19 -0
- package/lib/runner/types.d.ts +15 -0
- package/lib/runner/types.js +2 -0
- package/lib/runner/v1/RunnerV1.d.ts +26 -0
- package/lib/runner/v1/RunnerV1.js +230 -0
- package/lib/runner/v1/index.d.ts +3 -0
- package/lib/runner/v1/index.js +19 -0
- package/lib/runner/v1/platform/NullAudioPlayer.d.ts +3 -0
- package/lib/runner/v1/platform/NullAudioPlayer.js +7 -0
- package/lib/runner/v1/platform/NullGlyphFactory.d.ts +6 -0
- package/lib/runner/v1/platform/NullGlyphFactory.js +18 -0
- package/lib/runner/v1/platform/NullRenderer.d.ts +16 -0
- package/lib/runner/v1/platform/NullRenderer.js +46 -0
- package/lib/runner/v1/platform/NullSurface.d.ts +7 -0
- package/lib/runner/v1/platform/NullSurface.js +18 -0
- package/lib/runner/v1/platform/NullVideoPlayer.d.ts +4 -0
- package/lib/runner/v1/platform/NullVideoPlayer.js +10 -0
- package/lib/runner/v1/platform/PlatformV1.d.ts +22 -0
- package/lib/runner/v1/platform/PlatformV1.js +67 -0
- package/lib/runner/v1/platform/ResourceFactory.d.ts +18 -0
- package/lib/runner/v1/platform/ResourceFactory.js +53 -0
- package/lib/runner/v1/platform/assets/NodeScriptAsset.d.ts +16 -0
- package/lib/runner/v1/platform/assets/NodeScriptAsset.js +36 -0
- package/lib/runner/v1/platform/assets/NodeTextAsset.d.ts +11 -0
- package/lib/runner/v1/platform/assets/NodeTextAsset.js +23 -0
- package/lib/runner/v1/platform/assets/NullAudioAsset.d.ts +4 -0
- package/lib/runner/v1/platform/assets/NullAudioAsset.js +10 -0
- package/lib/runner/v1/platform/assets/NullImageAsset.d.ts +6 -0
- package/lib/runner/v1/platform/assets/NullImageAsset.js +18 -0
- package/lib/runner/v1/platform/assets/NullVideoAsset.d.ts +10 -0
- package/lib/runner/v1/platform/assets/NullVideoAsset.js +25 -0
- package/lib/runner/v2/RunnerV2.d.ts +26 -0
- package/lib/runner/v2/RunnerV2.js +229 -0
- package/lib/runner/v2/index.d.ts +3 -0
- package/lib/runner/v2/index.js +19 -0
- package/lib/runner/v2/platform/NullAudioPlayer.d.ts +3 -0
- package/lib/runner/v2/platform/NullAudioPlayer.js +7 -0
- package/lib/runner/v2/platform/NullGlyphFactory.d.ts +6 -0
- package/lib/runner/v2/platform/NullGlyphFactory.js +18 -0
- package/lib/runner/v2/platform/NullRenderer.d.ts +20 -0
- package/lib/runner/v2/platform/NullRenderer.js +58 -0
- package/lib/runner/v2/platform/NullSurface.d.ts +7 -0
- package/lib/runner/v2/platform/NullSurface.js +18 -0
- package/lib/runner/v2/platform/NullVideoPlayer.d.ts +4 -0
- package/lib/runner/v2/platform/NullVideoPlayer.js +10 -0
- package/lib/runner/v2/platform/PlatformV2.d.ts +23 -0
- package/lib/runner/v2/platform/PlatformV2.js +70 -0
- package/lib/runner/v2/platform/ResourceFactory.d.ts +18 -0
- package/lib/runner/v2/platform/ResourceFactory.js +53 -0
- package/lib/runner/v2/platform/assets/NodeScriptAsset.d.ts +16 -0
- package/lib/runner/v2/platform/assets/NodeScriptAsset.js +36 -0
- package/lib/runner/v2/platform/assets/NodeTextAsset.d.ts +11 -0
- package/lib/runner/v2/platform/assets/NodeTextAsset.js +23 -0
- package/lib/runner/v2/platform/assets/NullAudioAsset.d.ts +4 -0
- package/lib/runner/v2/platform/assets/NullAudioAsset.js +10 -0
- package/lib/runner/v2/platform/assets/NullImageAsset.d.ts +6 -0
- package/lib/runner/v2/platform/assets/NullImageAsset.js +18 -0
- package/lib/runner/v2/platform/assets/NullVideoAsset.d.ts +10 -0
- package/lib/runner/v2/platform/assets/NullVideoAsset.js +25 -0
- package/lib/runner/v3/RunnerV3.d.ts +38 -0
- package/lib/runner/v3/RunnerV3.js +245 -0
- package/lib/runner/v3/engineFiles.d.ts +2 -0
- package/lib/runner/v3/engineFiles.js +31 -0
- package/lib/runner/v3/index.d.ts +5 -0
- package/lib/runner/v3/index.js +21 -0
- package/lib/runner/v3/platform/NodeCanvasResourceFactory.d.ts +22 -0
- package/lib/runner/v3/platform/NodeCanvasResourceFactory.js +57 -0
- package/lib/runner/v3/platform/NullResourceFactory.d.ts +21 -0
- package/lib/runner/v3/platform/NullResourceFactory.js +54 -0
- package/lib/runner/v3/platform/PlatformV3.d.ts +23 -0
- package/lib/runner/v3/platform/PlatformV3.js +94 -0
- package/lib/runner/v3/platform/assets/Asset.d.ts +14 -0
- package/lib/runner/v3/platform/assets/Asset.js +30 -0
- package/lib/runner/v3/platform/assets/NodeScriptAsset.d.ts +19 -0
- package/lib/runner/v3/platform/assets/NodeScriptAsset.js +48 -0
- package/lib/runner/v3/platform/assets/NodeTextAsset.d.ts +14 -0
- package/lib/runner/v3/platform/assets/NodeTextAsset.js +35 -0
- package/lib/runner/v3/platform/audios/NullAudioAsset.d.ts +15 -0
- package/lib/runner/v3/platform/audios/NullAudioAsset.js +28 -0
- package/lib/runner/v3/platform/audios/NullAudioPlayer.d.ts +17 -0
- package/lib/runner/v3/platform/audios/NullAudioPlayer.js +34 -0
- package/lib/runner/v3/platform/graphics/canvas/CompositeOperationConverter.d.ts +6 -0
- package/lib/runner/v3/platform/graphics/canvas/CompositeOperationConverter.js +78 -0
- package/lib/runner/v3/platform/graphics/canvas/NodeCanvasGlyph.d.ts +16 -0
- package/lib/runner/v3/platform/graphics/canvas/NodeCanvasGlyph.js +25 -0
- package/lib/runner/v3/platform/graphics/canvas/NodeCanvasGlyphFactory.d.ts +24 -0
- package/lib/runner/v3/platform/graphics/canvas/NodeCanvasGlyphFactory.js +204 -0
- package/lib/runner/v3/platform/graphics/canvas/NodeCanvasImageAsset.d.ts +16 -0
- package/lib/runner/v3/platform/graphics/canvas/NodeCanvasImageAsset.js +78 -0
- package/lib/runner/v3/platform/graphics/canvas/NodeCanvasRenderer.d.ts +26 -0
- package/lib/runner/v3/platform/graphics/canvas/NodeCanvasRenderer.js +72 -0
- package/lib/runner/v3/platform/graphics/canvas/NodeCanvasSurface.d.ts +14 -0
- package/lib/runner/v3/platform/graphics/canvas/NodeCanvasSurface.js +25 -0
- package/lib/runner/v3/platform/graphics/null/NullGlyph.d.ts +16 -0
- package/lib/runner/v3/platform/graphics/null/NullGlyph.js +25 -0
- package/lib/runner/v3/platform/graphics/null/NullGlyphFactory.d.ts +14 -0
- package/lib/runner/v3/platform/graphics/null/NullGlyphFactory.js +22 -0
- package/lib/runner/v3/platform/graphics/null/NullImageAsset.d.ts +13 -0
- package/lib/runner/v3/platform/graphics/null/NullImageAsset.js +24 -0
- package/lib/runner/v3/platform/graphics/null/NullRenderer.d.ts +21 -0
- package/lib/runner/v3/platform/graphics/null/NullRenderer.js +60 -0
- package/lib/runner/v3/platform/graphics/null/NullSurface.d.ts +14 -0
- package/lib/runner/v3/platform/graphics/null/NullSurface.js +26 -0
- package/lib/runner/v3/platform/videos/NullVideoAsset.d.ts +20 -0
- package/lib/runner/v3/platform/videos/NullVideoAsset.js +37 -0
- package/lib/runner/v3/platform/videos/NullVideoPlayer.d.ts +14 -0
- package/lib/runner/v3/platform/videos/NullVideoPlayer.js +25 -0
- package/lib/runner/v3/requireEngineFiles.d.ts +5 -0
- package/lib/runner/v3/requireEngineFiles.js +21 -0
- package/package.json +26 -18
|
@@ -0,0 +1,36 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.NodeScriptAsset = void 0;
|
|
4
|
+
const aev1_1 = require("aev1");
|
|
5
|
+
class NodeScriptAsset extends aev1_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 "aev1";
|
|
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 aev1_1 = require("aev1");
|
|
5
|
+
class NodeTextAsset extends aev1_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,10 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.NullAudioAsset = void 0;
|
|
4
|
+
const aev1_1 = require("aev1");
|
|
5
|
+
class NullAudioAsset extends aev1_1.akashicEngine.AudioAsset {
|
|
6
|
+
_load(loader) {
|
|
7
|
+
loader._onAssetLoad(this);
|
|
8
|
+
}
|
|
9
|
+
}
|
|
10
|
+
exports.NullAudioAsset = NullAudioAsset;
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.NullImageAsset = void 0;
|
|
4
|
+
const aev1_1 = require("aev1");
|
|
5
|
+
const NullSurface_1 = require("../NullSurface");
|
|
6
|
+
class NullImageAsset extends aev1_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 "aev1";
|
|
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 aev1_1 = require("aev1");
|
|
5
|
+
const NullSurface_1 = require("../NullSurface");
|
|
6
|
+
class NullVideoAsset extends aev1_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 aev1_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,26 @@
|
|
|
1
|
+
import { akashicEngine as g, gameDriver as gdr } from "aev2";
|
|
2
|
+
import type { RunnerStartParameters } from "../Runner";
|
|
3
|
+
import { Runner } from "../Runner";
|
|
4
|
+
import type { RunnerPointEvent } from "../types";
|
|
5
|
+
import { PlatformV2 } from "./platform/PlatformV2";
|
|
6
|
+
export declare type RunnerV2Game = g.Game;
|
|
7
|
+
export declare class RunnerV2 extends Runner {
|
|
8
|
+
readonly engineVersion: string;
|
|
9
|
+
readonly g: typeof g;
|
|
10
|
+
platform: PlatformV2 | null;
|
|
11
|
+
private driver;
|
|
12
|
+
private fps;
|
|
13
|
+
private running;
|
|
14
|
+
start(params?: RunnerStartParameters): Promise<RunnerV2Game | null>;
|
|
15
|
+
stop(): void;
|
|
16
|
+
pause(): void;
|
|
17
|
+
resume(): void;
|
|
18
|
+
step(): void;
|
|
19
|
+
advance(ms: number): Promise<void>;
|
|
20
|
+
changeGameDriverState(param: gdr.GameDriverInitializeParameterObject): Promise<void>;
|
|
21
|
+
firePointEvent(event: RunnerPointEvent): void;
|
|
22
|
+
getPrimarySurface(): never;
|
|
23
|
+
protected _stepMinimal(): void;
|
|
24
|
+
private initGameDriver;
|
|
25
|
+
private onSendedToExternal;
|
|
26
|
+
}
|
|
@@ -0,0 +1,229 @@
|
|
|
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.RunnerV2 = void 0;
|
|
13
|
+
const aev2_1 = require("aev2");
|
|
14
|
+
const Runner_1 = require("../Runner");
|
|
15
|
+
const PlatformV2_1 = require("./platform/PlatformV2");
|
|
16
|
+
class RunnerV2 extends Runner_1.Runner {
|
|
17
|
+
constructor() {
|
|
18
|
+
super(...arguments);
|
|
19
|
+
this.engineVersion = "2";
|
|
20
|
+
this.g = aev2_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.advanceLoopers(Math.ceil(1000 / this.fps));
|
|
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 { loopMode, skipThreshold } = this.driver.getLoopConfiguration();
|
|
87
|
+
// NOTE: skip の通知タイミングを一度に制限するため skipThreshold を一時的に変更する。
|
|
88
|
+
yield this.changeGameDriverState({
|
|
89
|
+
loopConfiguration: {
|
|
90
|
+
loopMode,
|
|
91
|
+
skipThreshold: Math.ceil(ms / this.fps) + 1
|
|
92
|
+
}
|
|
93
|
+
});
|
|
94
|
+
const delta = Math.ceil(1000 / this.fps);
|
|
95
|
+
let progress = 0;
|
|
96
|
+
while (progress <= ms) {
|
|
97
|
+
// NOTE: game-driver の内部実装により Looper 経由で一度に進める時間に制限がある。
|
|
98
|
+
// そのため一度に進める時間を fps に応じて分割する。
|
|
99
|
+
this.platform.advanceLoopers(delta);
|
|
100
|
+
progress += delta;
|
|
101
|
+
}
|
|
102
|
+
yield this.changeGameDriverState({
|
|
103
|
+
loopConfiguration: {
|
|
104
|
+
loopMode,
|
|
105
|
+
skipThreshold
|
|
106
|
+
}
|
|
107
|
+
});
|
|
108
|
+
});
|
|
109
|
+
}
|
|
110
|
+
changeGameDriverState(param) {
|
|
111
|
+
return new Promise((resolve, reject) => {
|
|
112
|
+
if (!this.driver) {
|
|
113
|
+
reject(new Error("Game is not started"));
|
|
114
|
+
return;
|
|
115
|
+
}
|
|
116
|
+
this.driver.changeState(param, (err) => (err ? reject(err) : resolve()));
|
|
117
|
+
});
|
|
118
|
+
}
|
|
119
|
+
firePointEvent(event) {
|
|
120
|
+
if (this.platform == null) {
|
|
121
|
+
this.errorTrigger.fire(new Error("Cannot call Runner#firePointEvent() before initialized"));
|
|
122
|
+
return;
|
|
123
|
+
}
|
|
124
|
+
let type;
|
|
125
|
+
if (event.type === "down") {
|
|
126
|
+
type = 0 /* Down */;
|
|
127
|
+
}
|
|
128
|
+
else if (event.type === "move") {
|
|
129
|
+
type = 1 /* Move */;
|
|
130
|
+
}
|
|
131
|
+
else if (event.type === "up") {
|
|
132
|
+
type = 2 /* Up */;
|
|
133
|
+
}
|
|
134
|
+
else {
|
|
135
|
+
this.errorTrigger.fire(new Error(`RunnerV2#firePointEvent(): unknown event type: ${event.type}`));
|
|
136
|
+
return;
|
|
137
|
+
}
|
|
138
|
+
this.platform.firePointEvent({
|
|
139
|
+
type,
|
|
140
|
+
identifier: event.identifier,
|
|
141
|
+
offset: event.offset
|
|
142
|
+
});
|
|
143
|
+
}
|
|
144
|
+
getPrimarySurface() {
|
|
145
|
+
throw new Error("RunnerV2#getPrimarySurface(): Not supported");
|
|
146
|
+
}
|
|
147
|
+
_stepMinimal() {
|
|
148
|
+
if (this.fps == null || this.platform == null) {
|
|
149
|
+
this.errorTrigger.fire(new Error("RunnerV2#_stepHalf(): Cannot call Runner#step() before initialized"));
|
|
150
|
+
return;
|
|
151
|
+
}
|
|
152
|
+
if (this.running) {
|
|
153
|
+
this.errorTrigger.fire(new Error("RunnerV2#_stepHalf(): Cannot call Runner#step() in running"));
|
|
154
|
+
return;
|
|
155
|
+
}
|
|
156
|
+
// NOTE: 現状 PDI の API 仕様により this.step() では厳密なフレーム更新ができない。そこで、一フレームの 1/2 の時間で進行することでフレームが飛んでしまうことを防止する。
|
|
157
|
+
this.platform.advanceLoopers(1000 / this.fps / 2);
|
|
158
|
+
}
|
|
159
|
+
initGameDriver() {
|
|
160
|
+
return new Promise((resolve, reject) => {
|
|
161
|
+
if (this.driver) {
|
|
162
|
+
this.driver.destroy();
|
|
163
|
+
this.driver = null;
|
|
164
|
+
}
|
|
165
|
+
const player = {
|
|
166
|
+
id: this.player ? this.player.id : undefined,
|
|
167
|
+
name: this.player ? this.player.name : undefined
|
|
168
|
+
};
|
|
169
|
+
const executionMode = this.executionMode === "active" ? aev2_1.gameDriver.ExecutionMode.Active : aev2_1.gameDriver.ExecutionMode.Passive;
|
|
170
|
+
this.platform = new PlatformV2_1.PlatformV2({
|
|
171
|
+
configurationBaseUrl: this.configurationBaseUrl,
|
|
172
|
+
assetBaseUrl: this.assetBaseUrl,
|
|
173
|
+
amflow: this.amflow,
|
|
174
|
+
trusted: this.trusted,
|
|
175
|
+
renderingMode: this.renderingMode,
|
|
176
|
+
sendToExternalHandler: (data) => this.onSendedToExternal(data),
|
|
177
|
+
errorHandler: (e) => this.onError(e),
|
|
178
|
+
loadFileHandler: (url, callback) => this.loadFileHandler(url, callback)
|
|
179
|
+
});
|
|
180
|
+
this.pause();
|
|
181
|
+
const driver = new aev2_1.gameDriver.GameDriver({
|
|
182
|
+
platform: this.platform,
|
|
183
|
+
player,
|
|
184
|
+
errorHandler: (e) => this.onError(e)
|
|
185
|
+
});
|
|
186
|
+
this.driver = driver;
|
|
187
|
+
let result = null;
|
|
188
|
+
// TODO: パラメータを外部から変更可能にする
|
|
189
|
+
driver.initialize({
|
|
190
|
+
configurationUrl: this.configurationUrl,
|
|
191
|
+
configurationBase: this.configurationBaseUrl,
|
|
192
|
+
assetBase: this.assetBaseUrl,
|
|
193
|
+
driverConfiguration: {
|
|
194
|
+
playId: this.playId,
|
|
195
|
+
playToken: this.playToken,
|
|
196
|
+
executionMode
|
|
197
|
+
},
|
|
198
|
+
loopConfiguration: {
|
|
199
|
+
loopMode: aev2_1.gameDriver.LoopMode.Realtime
|
|
200
|
+
},
|
|
201
|
+
gameArgs: this.gameArgs
|
|
202
|
+
}, (e) => {
|
|
203
|
+
if (e) {
|
|
204
|
+
reject(e);
|
|
205
|
+
return;
|
|
206
|
+
}
|
|
207
|
+
if (!result) {
|
|
208
|
+
// GameDriver の内部実装上ここに来ることはないはずだが念のため確認
|
|
209
|
+
return reject(new Error("Game is null."));
|
|
210
|
+
}
|
|
211
|
+
driver.startGame();
|
|
212
|
+
resolve(result);
|
|
213
|
+
});
|
|
214
|
+
driver.gameCreatedTrigger.addOnce((game) => {
|
|
215
|
+
if (this.externalValue) {
|
|
216
|
+
Object.keys(this.externalValue).forEach((key) => {
|
|
217
|
+
game.external[key] = this.externalValue[key];
|
|
218
|
+
});
|
|
219
|
+
}
|
|
220
|
+
this.fps = game.fps;
|
|
221
|
+
result = game;
|
|
222
|
+
});
|
|
223
|
+
});
|
|
224
|
+
}
|
|
225
|
+
onSendedToExternal(data) {
|
|
226
|
+
this.sendToExternalTrigger.fire(data);
|
|
227
|
+
}
|
|
228
|
+
}
|
|
229
|
+
exports.RunnerV2 = RunnerV2;
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
3
|
+
if (k2 === undefined) k2 = k;
|
|
4
|
+
Object.defineProperty(o, k2, { enumerable: true, get: function() { return m[k]; } });
|
|
5
|
+
}) : (function(o, m, k, k2) {
|
|
6
|
+
if (k2 === undefined) k2 = k;
|
|
7
|
+
o[k2] = m[k];
|
|
8
|
+
}));
|
|
9
|
+
var __exportStar = (this && this.__exportStar) || function(m, exports) {
|
|
10
|
+
for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
|
|
11
|
+
};
|
|
12
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
13
|
+
exports.RunnerV2_pdi = exports.RunnerV2_gdr = exports.RunnerV2_g = void 0;
|
|
14
|
+
__exportStar(require("./RunnerV2"), exports);
|
|
15
|
+
__exportStar(require("./platform/PlatformV2"), exports);
|
|
16
|
+
var aev2_1 = require("aev2");
|
|
17
|
+
Object.defineProperty(exports, "RunnerV2_g", { enumerable: true, get: function () { return aev2_1.akashicEngine; } });
|
|
18
|
+
Object.defineProperty(exports, "RunnerV2_gdr", { enumerable: true, get: function () { return aev2_1.gameDriver; } });
|
|
19
|
+
Object.defineProperty(exports, "RunnerV2_pdi", { enumerable: true, get: function () { return aev2_1.pdi; } });
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.NullGlyphFactory = void 0;
|
|
4
|
+
const aev2_1 = require("aev2");
|
|
5
|
+
const NullSurface_1 = require("./NullSurface");
|
|
6
|
+
class NullGlyphFactory extends aev2_1.akashicEngine.GlyphFactory {
|
|
7
|
+
constructor() {
|
|
8
|
+
super(...arguments);
|
|
9
|
+
this.dummySurface = new NullSurface_1.NullSurface(0, 0);
|
|
10
|
+
}
|
|
11
|
+
create(code) {
|
|
12
|
+
return new aev2_1.akashicEngine.Glyph(code, 0, 0, 0, 0, 0, 0, this.fontSize, this.dummySurface, true);
|
|
13
|
+
}
|
|
14
|
+
measureMinimumFontSize() {
|
|
15
|
+
return 1;
|
|
16
|
+
}
|
|
17
|
+
}
|
|
18
|
+
exports.NullGlyphFactory = NullGlyphFactory;
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
import { akashicEngine as g } from "aev2";
|
|
2
|
+
export declare class NullRenderer extends g.Renderer {
|
|
3
|
+
clear(): void;
|
|
4
|
+
drawImage(_surface: g.Surface, _offsetX: number, _offsetY: number, _width: number, _height: number, _destOffsetX: number, _destOffsetY: number): void;
|
|
5
|
+
drawSprites(_surface: g.Surface, _offsetX: number[], _offsetY: number[], _width: number[], _height: number[], _canvasOffsetX: number[], _canvasOffsetY: number[], _count: number): void;
|
|
6
|
+
drawSystemText(_text: string, _x: number, _y: number, _maxWidth: number, _fontSize: number, _textAlign: g.TextAlign, _textBaseline: g.TextBaseline, _textColor: string, _fontFamily: g.FontFamily, _strokeWidth: number, _strokeColor: string, _strokeOnly: boolean): void;
|
|
7
|
+
translate(_x: number, _y: number): void;
|
|
8
|
+
transform(_matrix: number[]): void;
|
|
9
|
+
opacity(_opacity: number): void;
|
|
10
|
+
save(): void;
|
|
11
|
+
restore(): void;
|
|
12
|
+
fillRect(_x: number, _y: number, _width: number, _height: number, _cssColor: string): void;
|
|
13
|
+
setCompositeOperation(_operation: g.CompositeOperation): void;
|
|
14
|
+
setTransform(_matrix: number[]): void;
|
|
15
|
+
setOpacity(_opacity: number): void;
|
|
16
|
+
isSupportedShaderProgram(): boolean;
|
|
17
|
+
setShaderProgram(_shaderProgram: g.ShaderProgram | null): void;
|
|
18
|
+
_getImageData(_sx: number, _sy: number, _sw: number, _sh: number): g.ImageData;
|
|
19
|
+
_putImageData(_imageData: g.ImageData, _dx: number, _dy: number, _dirtyX?: number, _dirtyY?: number, _dirtyWidth?: number, _dirtyHeight?: number): void;
|
|
20
|
+
}
|
|
@@ -0,0 +1,58 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.NullRenderer = void 0;
|
|
4
|
+
const aev2_1 = require("aev2");
|
|
5
|
+
class NullRenderer extends aev2_1.akashicEngine.Renderer {
|
|
6
|
+
clear() {
|
|
7
|
+
//
|
|
8
|
+
}
|
|
9
|
+
drawImage(_surface, _offsetX, _offsetY, _width, _height, _destOffsetX, _destOffsetY) {
|
|
10
|
+
//
|
|
11
|
+
}
|
|
12
|
+
drawSprites(_surface, _offsetX, _offsetY, _width, _height, _canvasOffsetX, _canvasOffsetY, _count) {
|
|
13
|
+
//
|
|
14
|
+
}
|
|
15
|
+
drawSystemText(_text, _x, _y, _maxWidth, _fontSize, _textAlign, _textBaseline, _textColor, _fontFamily, _strokeWidth, _strokeColor, _strokeOnly) {
|
|
16
|
+
//
|
|
17
|
+
}
|
|
18
|
+
translate(_x, _y) {
|
|
19
|
+
//
|
|
20
|
+
}
|
|
21
|
+
transform(_matrix) {
|
|
22
|
+
//
|
|
23
|
+
}
|
|
24
|
+
opacity(_opacity) {
|
|
25
|
+
//
|
|
26
|
+
}
|
|
27
|
+
save() {
|
|
28
|
+
//
|
|
29
|
+
}
|
|
30
|
+
restore() {
|
|
31
|
+
//
|
|
32
|
+
}
|
|
33
|
+
fillRect(_x, _y, _width, _height, _cssColor) {
|
|
34
|
+
//
|
|
35
|
+
}
|
|
36
|
+
setCompositeOperation(_operation) {
|
|
37
|
+
//
|
|
38
|
+
}
|
|
39
|
+
setTransform(_matrix) {
|
|
40
|
+
//
|
|
41
|
+
}
|
|
42
|
+
setOpacity(_opacity) {
|
|
43
|
+
//
|
|
44
|
+
}
|
|
45
|
+
isSupportedShaderProgram() {
|
|
46
|
+
return false;
|
|
47
|
+
}
|
|
48
|
+
setShaderProgram(_shaderProgram) {
|
|
49
|
+
//
|
|
50
|
+
}
|
|
51
|
+
_getImageData(_sx, _sy, _sw, _sh) {
|
|
52
|
+
return null; // TODO: pdi-types 側の型を修正
|
|
53
|
+
}
|
|
54
|
+
_putImageData(_imageData, _dx, _dy, _dirtyX, _dirtyY, _dirtyWidth, _dirtyHeight) {
|
|
55
|
+
//
|
|
56
|
+
}
|
|
57
|
+
}
|
|
58
|
+
exports.NullRenderer = NullRenderer;
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.NullSurface = void 0;
|
|
4
|
+
const aev2_1 = require("aev2");
|
|
5
|
+
const NullRenderer_1 = require("./NullRenderer");
|
|
6
|
+
class NullSurface extends aev2_1.akashicEngine.Surface {
|
|
7
|
+
constructor(width, height, drawable, isDynamic) {
|
|
8
|
+
super(width, height, drawable, isDynamic);
|
|
9
|
+
this._renderer = new NullRenderer_1.NullRenderer();
|
|
10
|
+
}
|
|
11
|
+
renderer() {
|
|
12
|
+
return this._renderer;
|
|
13
|
+
}
|
|
14
|
+
isPlaying() {
|
|
15
|
+
return false;
|
|
16
|
+
}
|
|
17
|
+
}
|
|
18
|
+
exports.NullSurface = NullSurface;
|
|
@@ -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
|
+
}
|