@rpgjs/common 4.2.1 → 5.0.0-alpha.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/dist/Physic.d.ts +619 -0
- package/dist/Player.d.ts +198 -0
- package/{lib → dist}/Utils.d.ts +19 -2
- package/dist/database/Item.d.ts +10 -0
- package/dist/database/index.d.ts +1 -0
- package/dist/index.d.ts +9 -0
- package/dist/index.js +16741 -0
- package/dist/index.js.map +1 -0
- package/dist/modules.d.ts +92 -0
- package/dist/movement/MovementManager.d.ts +84 -0
- package/dist/movement/MovementStrategy.d.ts +39 -0
- package/dist/movement/index.d.ts +12 -0
- package/dist/movement/strategies/CompositeMovement.d.ts +76 -0
- package/dist/movement/strategies/Dash.d.ts +52 -0
- package/dist/movement/strategies/IceMovement.d.ts +87 -0
- package/dist/movement/strategies/Knockback.d.ts +50 -0
- package/dist/movement/strategies/LinearMove.d.ts +43 -0
- package/dist/movement/strategies/LinearRepulsion.d.ts +55 -0
- package/dist/movement/strategies/Oscillate.d.ts +60 -0
- package/dist/movement/strategies/PathFollow.d.ts +78 -0
- package/dist/movement/strategies/ProjectileMovement.d.ts +138 -0
- package/dist/movement/strategies/SeekAvoid.d.ts +27 -0
- package/dist/rooms/Map.d.ts +109 -0
- package/dist/services/updateMap.d.ts +7 -0
- package/package.json +17 -17
- package/src/Physic.ts +1644 -0
- package/src/Player.ts +262 -26
- package/src/{gui/PrebuiltGui.ts → PrebuiltGui.ts} +1 -1
- package/src/Utils.ts +184 -123
- package/src/database/Item.ts +19 -0
- package/src/database/index.ts +1 -0
- package/src/index.ts +9 -25
- package/src/modules.ts +230 -0
- package/src/movement/MovementManager.ts +142 -0
- package/src/movement/MovementStrategy.ts +42 -0
- package/src/movement/index.ts +15 -0
- package/src/movement/strategies/CompositeMovement.ts +173 -0
- package/src/movement/strategies/Dash.ts +82 -0
- package/src/movement/strategies/IceMovement.ts +158 -0
- package/src/movement/strategies/Knockback.ts +81 -0
- package/src/movement/strategies/LinearMove.ts +58 -0
- package/src/movement/strategies/LinearRepulsion.ts +128 -0
- package/src/movement/strategies/Oscillate.ts +144 -0
- package/src/movement/strategies/PathFollow.ts +156 -0
- package/src/movement/strategies/ProjectileMovement.ts +322 -0
- package/src/movement/strategies/SeekAvoid.ts +123 -0
- package/src/rooms/Map.ts +272 -0
- package/src/services/updateMap.ts +9 -0
- package/tests/physic.spec.ts +454 -0
- package/tsconfig.json +8 -3
- package/vite.config.ts +21 -0
- package/CHANGELOG.md +0 -152
- package/LICENSE +0 -19
- package/browser/manifest.json +0 -7
- package/browser/rpg.common.js +0 -11357
- package/browser/rpg.common.umd.cjs +0 -11358
- package/lib/AbstractObject.d.ts +0 -322
- package/lib/AbstractObject.js +0 -872
- package/lib/AbstractObject.js.map +0 -1
- package/lib/Color.d.ts +0 -1
- package/lib/Color.js +0 -25
- package/lib/Color.js.map +0 -1
- package/lib/DefaultInput.d.ts +0 -2
- package/lib/DefaultInput.js +0 -26
- package/lib/DefaultInput.js.map +0 -1
- package/lib/Event.d.ts +0 -3
- package/lib/Event.js +0 -4
- package/lib/Event.js.map +0 -1
- package/lib/EventEmitter.d.ts +0 -10
- package/lib/EventEmitter.js +0 -61
- package/lib/EventEmitter.js.map +0 -1
- package/lib/Game.d.ts +0 -28
- package/lib/Game.js +0 -127
- package/lib/Game.js.map +0 -1
- package/lib/Hit.d.ts +0 -16
- package/lib/Hit.js +0 -65
- package/lib/Hit.js.map +0 -1
- package/lib/Inject.d.ts +0 -9
- package/lib/Inject.js +0 -17
- package/lib/Inject.js.map +0 -1
- package/lib/Logger.d.ts +0 -2
- package/lib/Logger.js +0 -7
- package/lib/Logger.js.map +0 -1
- package/lib/Map.d.ts +0 -174
- package/lib/Map.js +0 -263
- package/lib/Map.js.map +0 -1
- package/lib/Module.d.ts +0 -16
- package/lib/Module.js +0 -139
- package/lib/Module.js.map +0 -1
- package/lib/Player.d.ts +0 -26
- package/lib/Player.js +0 -19
- package/lib/Player.js.map +0 -1
- package/lib/Plugin.d.ts +0 -67
- package/lib/Plugin.js +0 -92
- package/lib/Plugin.js.map +0 -1
- package/lib/Scheduler.d.ts +0 -26
- package/lib/Scheduler.js +0 -90
- package/lib/Scheduler.js.map +0 -1
- package/lib/Shape.d.ts +0 -127
- package/lib/Shape.js +0 -261
- package/lib/Shape.js.map +0 -1
- package/lib/Utils.js +0 -181
- package/lib/Utils.js.map +0 -1
- package/lib/Vector2d.d.ts +0 -20
- package/lib/Vector2d.js +0 -63
- package/lib/Vector2d.js.map +0 -1
- package/lib/VirtualGrid.d.ts +0 -26
- package/lib/VirtualGrid.js +0 -68
- package/lib/VirtualGrid.js.map +0 -1
- package/lib/Worker.d.ts +0 -7
- package/lib/Worker.js +0 -13
- package/lib/Worker.js.map +0 -1
- package/lib/WorldMaps.d.ts +0 -105
- package/lib/WorldMaps.js +0 -184
- package/lib/WorldMaps.js.map +0 -1
- package/lib/gui/PrebuiltGui.js +0 -29
- package/lib/gui/PrebuiltGui.js.map +0 -1
- package/lib/index.d.ts +0 -25
- package/lib/index.js +0 -26
- package/lib/index.js.map +0 -1
- package/lib/transports/io.d.ts +0 -22
- package/lib/transports/io.js +0 -82
- package/lib/transports/io.js.map +0 -1
- package/lib/workers/move.d.ts +0 -1
- package/lib/workers/move.js +0 -57
- package/lib/workers/move.js.map +0 -1
- package/rpg.toml +0 -11
- package/src/AbstractObject.ts +0 -973
- package/src/Color.ts +0 -29
- package/src/DefaultInput.ts +0 -26
- package/src/Event.ts +0 -3
- package/src/EventEmitter.ts +0 -65
- package/src/Game.ts +0 -159
- package/src/Hit.ts +0 -70
- package/src/Inject.ts +0 -22
- package/src/Logger.ts +0 -7
- package/src/Map.ts +0 -335
- package/src/Module.ts +0 -144
- package/src/Plugin.ts +0 -100
- package/src/Scheduler.ts +0 -95
- package/src/Shape.ts +0 -302
- package/src/Vector2d.ts +0 -70
- package/src/VirtualGrid.ts +0 -78
- package/src/Worker.ts +0 -17
- package/src/WorldMaps.ts +0 -204
- package/src/transports/io.ts +0 -91
- package/src/workers/move.ts +0 -61
- /package/{lib/gui → dist}/PrebuiltGui.d.ts +0 -0
package/lib/Plugin.d.ts
DELETED
|
@@ -1,67 +0,0 @@
|
|
|
1
|
-
import { EventEmitter } from './EventEmitter';
|
|
2
|
-
type PluginFunction = (obj: any, options?: any) => void;
|
|
3
|
-
type PluginSides = {
|
|
4
|
-
client: null | PluginFunction;
|
|
5
|
-
server: null | PluginFunction;
|
|
6
|
-
};
|
|
7
|
-
export type Plugin = PluginSides | [PluginSides, any];
|
|
8
|
-
export declare enum HookServer {
|
|
9
|
-
Start = "Server.Start",
|
|
10
|
-
Step = "Server.Step",
|
|
11
|
-
Auth = "Server.Auth",
|
|
12
|
-
PlayerConnected = "Server.onConnected",
|
|
13
|
-
PlayerDisconnected = "Server.onDisconnected",
|
|
14
|
-
AddMap = "Server.AddMap",
|
|
15
|
-
AddEvent = "Server.AddEvent",
|
|
16
|
-
AddWorldMaps = "Server.AddWorldMaps",
|
|
17
|
-
AddDatabase = "Server.AddDatabase",
|
|
18
|
-
PlayerInput = "Server.onInput",
|
|
19
|
-
PlayerJoinMap = "Server.onJoinMap",
|
|
20
|
-
PlayerLeaveMap = "Server.onLeaveMap",
|
|
21
|
-
PlayerLevelUp = "Server.onLevelUp",
|
|
22
|
-
PlayerDead = "Server.onDead",
|
|
23
|
-
PlayerInShape = "Server.onInShape",
|
|
24
|
-
PlayerOutShape = "Server.onOutShape",
|
|
25
|
-
PlayerMove = "Server.PlayerMove",
|
|
26
|
-
PlayerCanChangeMap = "Server.PlayerCanChangeMap",
|
|
27
|
-
ScalabilityPlayerConnected = "Server.ScalabilityPlayerConnected",
|
|
28
|
-
ScalabilityChangeServer = "Server.ScalabilityChangeServer"
|
|
29
|
-
}
|
|
30
|
-
export declare enum HookClient {
|
|
31
|
-
Start = "Client.Start",
|
|
32
|
-
Step = "Client.Step",
|
|
33
|
-
Connected = "Client.Connected",
|
|
34
|
-
Disconnect = "Client.Disconnect",
|
|
35
|
-
ConnectedError = "Client.ConnectedError",
|
|
36
|
-
AddSpriteSheet = "Client.AddSpriteSheet",
|
|
37
|
-
AddGui = "Client.AddGui",
|
|
38
|
-
AddSound = "Client.AddSound",
|
|
39
|
-
SendInput = "Client.SendInput",
|
|
40
|
-
BeforeSceneLoading = "Client.BeforeSceneLoading",
|
|
41
|
-
AfterSceneLoading = "Client.AfterSceneLoading",
|
|
42
|
-
SceneMapLoading = "Client.SceneMapLoading",
|
|
43
|
-
SceneAddSprite = "Client.SceneAddSprite",
|
|
44
|
-
SceneOnChanges = "Client.SceneOnChanges",
|
|
45
|
-
SceneDraw = "Client.SceneDraw",
|
|
46
|
-
SceneRemoveSprite = "Client.SceneRemoveSprite",
|
|
47
|
-
AddSprite = "Client.AddSprite",
|
|
48
|
-
RemoveSprite = "Client.RemoveSprite",
|
|
49
|
-
UpdateSprite = "Client.UpdateSprite",
|
|
50
|
-
ChangesSprite = "Client.ChangesSprite",
|
|
51
|
-
WindowResize = "Client.WindowResize",
|
|
52
|
-
SpriteMove = "Client.SpriteMove"
|
|
53
|
-
}
|
|
54
|
-
/**
|
|
55
|
-
* @deprecated
|
|
56
|
-
*/
|
|
57
|
-
export declare class PluginSystem extends EventEmitter {
|
|
58
|
-
customHooks: {
|
|
59
|
-
[key: string]: boolean;
|
|
60
|
-
};
|
|
61
|
-
customHookExists(name: string): boolean;
|
|
62
|
-
private loadPlugins;
|
|
63
|
-
loadServerPlugins(plugins: any, shared: any): void;
|
|
64
|
-
loadClientPlugins(plugins: any, shared: any): void;
|
|
65
|
-
}
|
|
66
|
-
export declare const RpgPlugin: PluginSystem;
|
|
67
|
-
export {};
|
package/lib/Plugin.js
DELETED
|
@@ -1,92 +0,0 @@
|
|
|
1
|
-
import { EventEmitter } from './EventEmitter.js';
|
|
2
|
-
import { isArray } from './Utils.js';
|
|
3
|
-
export var HookServer;
|
|
4
|
-
(function (HookServer) {
|
|
5
|
-
HookServer["Start"] = "Server.Start";
|
|
6
|
-
HookServer["Step"] = "Server.Step";
|
|
7
|
-
HookServer["Auth"] = "Server.Auth";
|
|
8
|
-
HookServer["PlayerConnected"] = "Server.onConnected";
|
|
9
|
-
HookServer["PlayerDisconnected"] = "Server.onDisconnected";
|
|
10
|
-
HookServer["AddMap"] = "Server.AddMap";
|
|
11
|
-
HookServer["AddEvent"] = "Server.AddEvent";
|
|
12
|
-
HookServer["AddWorldMaps"] = "Server.AddWorldMaps";
|
|
13
|
-
HookServer["AddDatabase"] = "Server.AddDatabase";
|
|
14
|
-
HookServer["PlayerInput"] = "Server.onInput";
|
|
15
|
-
HookServer["PlayerJoinMap"] = "Server.onJoinMap";
|
|
16
|
-
HookServer["PlayerLeaveMap"] = "Server.onLeaveMap";
|
|
17
|
-
HookServer["PlayerLevelUp"] = "Server.onLevelUp";
|
|
18
|
-
HookServer["PlayerDead"] = "Server.onDead";
|
|
19
|
-
HookServer["PlayerInShape"] = "Server.onInShape";
|
|
20
|
-
HookServer["PlayerOutShape"] = "Server.onOutShape";
|
|
21
|
-
HookServer["PlayerMove"] = "Server.PlayerMove";
|
|
22
|
-
HookServer["PlayerCanChangeMap"] = "Server.PlayerCanChangeMap";
|
|
23
|
-
HookServer["ScalabilityPlayerConnected"] = "Server.ScalabilityPlayerConnected";
|
|
24
|
-
HookServer["ScalabilityChangeServer"] = "Server.ScalabilityChangeServer";
|
|
25
|
-
})(HookServer || (HookServer = {}));
|
|
26
|
-
export var HookClient;
|
|
27
|
-
(function (HookClient) {
|
|
28
|
-
HookClient["Start"] = "Client.Start";
|
|
29
|
-
HookClient["Step"] = "Client.Step";
|
|
30
|
-
HookClient["Connected"] = "Client.Connected";
|
|
31
|
-
HookClient["Disconnect"] = "Client.Disconnect";
|
|
32
|
-
HookClient["ConnectedError"] = "Client.ConnectedError";
|
|
33
|
-
HookClient["AddSpriteSheet"] = "Client.AddSpriteSheet";
|
|
34
|
-
HookClient["AddGui"] = "Client.AddGui";
|
|
35
|
-
HookClient["AddSound"] = "Client.AddSound";
|
|
36
|
-
HookClient["SendInput"] = "Client.SendInput";
|
|
37
|
-
HookClient["BeforeSceneLoading"] = "Client.BeforeSceneLoading";
|
|
38
|
-
HookClient["AfterSceneLoading"] = "Client.AfterSceneLoading";
|
|
39
|
-
HookClient["SceneMapLoading"] = "Client.SceneMapLoading";
|
|
40
|
-
HookClient["SceneAddSprite"] = "Client.SceneAddSprite";
|
|
41
|
-
HookClient["SceneOnChanges"] = "Client.SceneOnChanges";
|
|
42
|
-
HookClient["SceneDraw"] = "Client.SceneDraw";
|
|
43
|
-
HookClient["SceneRemoveSprite"] = "Client.SceneRemoveSprite";
|
|
44
|
-
HookClient["AddSprite"] = "Client.AddSprite";
|
|
45
|
-
HookClient["RemoveSprite"] = "Client.RemoveSprite";
|
|
46
|
-
HookClient["UpdateSprite"] = "Client.UpdateSprite";
|
|
47
|
-
HookClient["ChangesSprite"] = "Client.ChangesSprite";
|
|
48
|
-
HookClient["WindowResize"] = "Client.WindowResize";
|
|
49
|
-
HookClient["SpriteMove"] = "Client.SpriteMove";
|
|
50
|
-
})(HookClient || (HookClient = {}));
|
|
51
|
-
/**
|
|
52
|
-
* @deprecated
|
|
53
|
-
*/
|
|
54
|
-
export class PluginSystem extends EventEmitter {
|
|
55
|
-
constructor() {
|
|
56
|
-
super(...arguments);
|
|
57
|
-
this.customHooks = {};
|
|
58
|
-
}
|
|
59
|
-
customHookExists(name) {
|
|
60
|
-
return this.customHooks[name];
|
|
61
|
-
}
|
|
62
|
-
loadPlugins(plugins, shared, type) {
|
|
63
|
-
if (!plugins)
|
|
64
|
-
return;
|
|
65
|
-
for (let plugin of plugins) {
|
|
66
|
-
if (!plugin)
|
|
67
|
-
continue;
|
|
68
|
-
let plug = [];
|
|
69
|
-
if (!isArray(plugin)) {
|
|
70
|
-
plug = [plugin];
|
|
71
|
-
}
|
|
72
|
-
else {
|
|
73
|
-
plug = plugin;
|
|
74
|
-
}
|
|
75
|
-
const [side, options] = plug;
|
|
76
|
-
if (!side[type])
|
|
77
|
-
continue;
|
|
78
|
-
side[type]({
|
|
79
|
-
RpgPlugin,
|
|
80
|
-
...shared
|
|
81
|
-
}, options);
|
|
82
|
-
}
|
|
83
|
-
}
|
|
84
|
-
loadServerPlugins(plugins, shared) {
|
|
85
|
-
this.loadPlugins(plugins, shared, 'server');
|
|
86
|
-
}
|
|
87
|
-
loadClientPlugins(plugins, shared) {
|
|
88
|
-
this.loadPlugins(plugins, shared, 'client');
|
|
89
|
-
}
|
|
90
|
-
}
|
|
91
|
-
export const RpgPlugin = new PluginSystem();
|
|
92
|
-
//# sourceMappingURL=Plugin.js.map
|
package/lib/Plugin.js.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"Plugin.js","sourceRoot":"","sources":["../src/Plugin.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAA;AAC7C,OAAO,EAAE,OAAO,EAAE,MAAM,SAAS,CAAA;AAMjC,MAAM,CAAN,IAAY,UAqBX;AArBD,WAAY,UAAU;IAClB,oCAAsB,CAAA;IACtB,kCAAoB,CAAA;IACpB,kCAAoB,CAAA;IACpB,oDAAsC,CAAA;IACtC,0DAA4C,CAAA;IAC5C,sCAAwB,CAAA;IACxB,0CAA4B,CAAA;IAC5B,kDAAoC,CAAA;IACpC,gDAAkC,CAAA;IAClC,4CAA8B,CAAA;IAC9B,gDAAkC,CAAA;IAClC,kDAAoC,CAAA;IACpC,gDAAkC,CAAA;IAClC,0CAA4B,CAAA;IAC5B,gDAAkC,CAAA;IAClC,kDAAoC,CAAA;IACpC,8CAAgC,CAAA;IAChC,8DAAgD,CAAA;IAChD,8EAAgE,CAAA;IAChE,wEAA0D,CAAA;AAC9D,CAAC,EArBW,UAAU,KAAV,UAAU,QAqBrB;AAED,MAAM,CAAN,IAAY,UA0BX;AA1BD,WAAY,UAAU;IAClB,oCAAsB,CAAA;IACtB,kCAAoB,CAAA;IACpB,4CAA8B,CAAA;IAC9B,8CAAgC,CAAA;IAChC,sDAAwC,CAAA;IAExC,sDAAwC,CAAA;IACxC,sCAAwB,CAAA;IACxB,0CAA4B,CAAA;IAC5B,4CAA8B,CAAA;IAE9B,8DAAgD,CAAA;IAChD,4DAA8C,CAAA;IAC9C,wDAA0C,CAAA;IAC1C,sDAAwC,CAAA;IACxC,sDAAwC,CAAA;IACxC,4CAA8B,CAAA;IAC9B,4DAA8C,CAAA;IAE9C,4CAA8B,CAAA;IAC9B,kDAAoC,CAAA;IACpC,kDAAoC,CAAA;IACpC,oDAAsC,CAAA;IACtC,kDAAoC,CAAA;IACpC,8CAAgC,CAAA;AACpC,CAAC,EA1BW,UAAU,KAAV,UAAU,QA0BrB;AAED;;GAEG;AACH,MAAM,OAAO,YAAa,SAAQ,YAAY;IAA9C;;QACI,gBAAW,GAEP,EAAE,CAAA;IAiCV,CAAC;IA/BG,gBAAgB,CAAC,IAAY;QACzB,OAAO,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,CAAA;IACjC,CAAC;IAEO,WAAW,CAAC,OAAiB,EAAE,MAAW,EAAE,IAAY;QAC5D,IAAI,CAAC,OAAO;YAAE,OAAM;QACpB,KAAK,IAAI,MAAM,IAAI,OAAO,EAAE;YACxB,IAAI,CAAC,MAAM;gBAAE,SAAQ;YACrB,IAAI,IAAI,GAAQ,EAAE,CAAA;YAClB,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,EAAE;gBAClB,IAAI,GAAG,CAAC,MAAM,CAAC,CAAA;aAClB;iBACI;gBACD,IAAI,GAAG,MAAM,CAAA;aAChB;YACD,MAAM,CAAC,IAAI,EAAE,OAAO,CAAC,GAAG,IAAI,CAAA;YAC5B,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC;gBAAE,SAAQ;YACzB,IAAI,CAAC,IAAI,CAAC,CAAC;gBACP,SAAS;gBACT,GAAG,MAAM;aACZ,EAAE,OAAO,CAAC,CAAA;SACd;IACL,CAAC;IAED,iBAAiB,CAAC,OAAO,EAAE,MAAM;QAC7B,IAAI,CAAC,WAAW,CAAC,OAAO,EAAE,MAAM,EAAE,QAAQ,CAAC,CAAA;IAC/C,CAAC;IAED,iBAAiB,CAAC,OAAO,EAAE,MAAM;QAC7B,IAAI,CAAC,WAAW,CAAC,OAAO,EAAE,MAAM,EAAE,QAAQ,CAAC,CAAA;IAC/C,CAAC;CACJ;AAED,MAAM,CAAC,MAAM,SAAS,GAAG,IAAI,YAAY,EAAE,CAAA"}
|
package/lib/Scheduler.d.ts
DELETED
|
@@ -1,26 +0,0 @@
|
|
|
1
|
-
import { Tick } from '@rpgjs/types';
|
|
2
|
-
import { Observable } from 'rxjs';
|
|
3
|
-
import { EventEmitter } from './EventEmitter';
|
|
4
|
-
export declare class Scheduler extends EventEmitter {
|
|
5
|
-
private maxFps?;
|
|
6
|
-
private fps;
|
|
7
|
-
private deltaTime;
|
|
8
|
-
frame: number;
|
|
9
|
-
private timestamp;
|
|
10
|
-
private requestedDelay;
|
|
11
|
-
private lastTimestamp;
|
|
12
|
-
private _tick;
|
|
13
|
-
private _stop;
|
|
14
|
-
get tick(): Observable<Tick>;
|
|
15
|
-
nextTick(timestamp: number): void;
|
|
16
|
-
/**
|
|
17
|
-
* start the schedule
|
|
18
|
-
* @return {Scheduler} returns this scheduler instance
|
|
19
|
-
*/
|
|
20
|
-
start(options: {
|
|
21
|
-
maxFps?: number;
|
|
22
|
-
fps?: number;
|
|
23
|
-
delay?: number;
|
|
24
|
-
}): this;
|
|
25
|
-
stop(): void;
|
|
26
|
-
}
|
package/lib/Scheduler.js
DELETED
|
@@ -1,90 +0,0 @@
|
|
|
1
|
-
import { BehaviorSubject } from 'rxjs';
|
|
2
|
-
import { EventEmitter } from './EventEmitter.js';
|
|
3
|
-
import Utils from './Utils.js';
|
|
4
|
-
export class Scheduler extends EventEmitter {
|
|
5
|
-
constructor() {
|
|
6
|
-
super(...arguments);
|
|
7
|
-
this.fps = 60;
|
|
8
|
-
this.deltaTime = 0;
|
|
9
|
-
this.frame = 0;
|
|
10
|
-
this.timestamp = 0;
|
|
11
|
-
this.requestedDelay = 0;
|
|
12
|
-
this.lastTimestamp = 0;
|
|
13
|
-
this._tick = new BehaviorSubject({
|
|
14
|
-
timestamp: 0,
|
|
15
|
-
deltaTime: 0,
|
|
16
|
-
frame: 0,
|
|
17
|
-
deltaRatio: 0
|
|
18
|
-
});
|
|
19
|
-
this._stop = false;
|
|
20
|
-
}
|
|
21
|
-
get tick() {
|
|
22
|
-
return this._tick.asObservable();
|
|
23
|
-
}
|
|
24
|
-
nextTick(timestamp) {
|
|
25
|
-
this.lastTimestamp = this.lastTimestamp || this.timestamp; // first
|
|
26
|
-
this.deltaTime = Utils.preciseNow() - this.timestamp;
|
|
27
|
-
this.timestamp = timestamp;
|
|
28
|
-
this._tick.next({
|
|
29
|
-
timestamp: this.timestamp,
|
|
30
|
-
deltaTime: this.deltaTime,
|
|
31
|
-
frame: this.frame,
|
|
32
|
-
deltaRatio: ~~this.deltaTime / ~~Utils.fps2ms(this.fps)
|
|
33
|
-
});
|
|
34
|
-
this.lastTimestamp = this.timestamp;
|
|
35
|
-
this.frame++;
|
|
36
|
-
}
|
|
37
|
-
/**
|
|
38
|
-
* start the schedule
|
|
39
|
-
* @return {Scheduler} returns this scheduler instance
|
|
40
|
-
*/
|
|
41
|
-
start(options) {
|
|
42
|
-
if (options.maxFps)
|
|
43
|
-
this.maxFps = options.maxFps;
|
|
44
|
-
if (options.fps)
|
|
45
|
-
this.fps = options.fps;
|
|
46
|
-
if (options.delay)
|
|
47
|
-
this.requestedDelay = options.delay;
|
|
48
|
-
const requestAnimationFrame = (fn) => {
|
|
49
|
-
if (Utils.isBrowser()) {
|
|
50
|
-
window.requestAnimationFrame(fn.bind(this));
|
|
51
|
-
}
|
|
52
|
-
else {
|
|
53
|
-
setTimeout(() => {
|
|
54
|
-
this.requestedDelay = 0;
|
|
55
|
-
fn(Utils.preciseNow());
|
|
56
|
-
}, Utils.fps2ms(this.fps) + this.requestedDelay);
|
|
57
|
-
}
|
|
58
|
-
};
|
|
59
|
-
if (!this.maxFps) {
|
|
60
|
-
const loop = (timestamp) => {
|
|
61
|
-
requestAnimationFrame(loop);
|
|
62
|
-
this.nextTick(timestamp);
|
|
63
|
-
};
|
|
64
|
-
requestAnimationFrame(loop);
|
|
65
|
-
}
|
|
66
|
-
else {
|
|
67
|
-
const msInterval = Utils.fps2ms(this.maxFps);
|
|
68
|
-
let now = Utils.preciseNow();
|
|
69
|
-
let then = Utils.preciseNow();
|
|
70
|
-
const loop = (timestamp) => {
|
|
71
|
-
if (this._stop)
|
|
72
|
-
return;
|
|
73
|
-
requestAnimationFrame(loop);
|
|
74
|
-
now = Utils.preciseNow();
|
|
75
|
-
const elapsed = now - then;
|
|
76
|
-
if (elapsed > msInterval) {
|
|
77
|
-
then = now - (elapsed % msInterval);
|
|
78
|
-
this.nextTick(timestamp);
|
|
79
|
-
}
|
|
80
|
-
};
|
|
81
|
-
requestAnimationFrame(loop);
|
|
82
|
-
}
|
|
83
|
-
return this;
|
|
84
|
-
}
|
|
85
|
-
stop() {
|
|
86
|
-
this._stop = true;
|
|
87
|
-
this._tick.complete();
|
|
88
|
-
}
|
|
89
|
-
}
|
|
90
|
-
//# sourceMappingURL=Scheduler.js.map
|
package/lib/Scheduler.js.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"Scheduler.js","sourceRoot":"","sources":["../src/Scheduler.ts"],"names":[],"mappings":"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"}
|
package/lib/Shape.d.ts
DELETED
|
@@ -1,127 +0,0 @@
|
|
|
1
|
-
import { RpgCommonPlayer } from './Player';
|
|
2
|
-
import { TiledObjectClass } from '@rpgjs/tiled';
|
|
3
|
-
import { Vector2d } from './Vector2d';
|
|
4
|
-
import { AbstractObject } from './AbstractObject';
|
|
5
|
-
export declare enum ShapePositioning {
|
|
6
|
-
Default = "default",
|
|
7
|
-
Center = "center"
|
|
8
|
-
}
|
|
9
|
-
type ShapeObject = TiledObjectClass & {
|
|
10
|
-
onIn?(player: RpgCommonPlayer): any;
|
|
11
|
-
onOut?(player: RpgCommonPlayer): any;
|
|
12
|
-
fixEvent?: RpgCommonPlayer;
|
|
13
|
-
positioning?: ShapePositioning;
|
|
14
|
-
};
|
|
15
|
-
export declare class RpgShape extends TiledObjectClass {
|
|
16
|
-
_hitbox: any;
|
|
17
|
-
type: string;
|
|
18
|
-
class: string;
|
|
19
|
-
/**
|
|
20
|
-
* Get/Set name
|
|
21
|
-
* @title name
|
|
22
|
-
* @prop { string } name
|
|
23
|
-
* @memberof Shape
|
|
24
|
-
*/
|
|
25
|
-
name: string;
|
|
26
|
-
fixEvent?: RpgCommonPlayer;
|
|
27
|
-
private playersIn;
|
|
28
|
-
private onIn;
|
|
29
|
-
private onOut;
|
|
30
|
-
clientContainer: any;
|
|
31
|
-
/**
|
|
32
|
-
* Get/Set positioning
|
|
33
|
-
* @title positioning
|
|
34
|
-
* @prop { ShapePositioning } positioning
|
|
35
|
-
* @default default
|
|
36
|
-
* @memberof Shape
|
|
37
|
-
*/
|
|
38
|
-
positioning?: ShapePositioning;
|
|
39
|
-
components: any[];
|
|
40
|
-
constructor(obj: ShapeObject);
|
|
41
|
-
private setPos;
|
|
42
|
-
get hasCollision(): boolean;
|
|
43
|
-
get id(): any;
|
|
44
|
-
get hitbox(): any;
|
|
45
|
-
set hitbox(val: any);
|
|
46
|
-
/**
|
|
47
|
-
* Get/Set width
|
|
48
|
-
* @title width
|
|
49
|
-
* @prop { number } width
|
|
50
|
-
* @since 3.0.0-beta.5
|
|
51
|
-
* @memberof Shape
|
|
52
|
-
*/
|
|
53
|
-
get width(): number;
|
|
54
|
-
set width(val: number);
|
|
55
|
-
/**
|
|
56
|
-
* Get/Set height
|
|
57
|
-
* @title height
|
|
58
|
-
* @prop { number } height
|
|
59
|
-
* @since 3.0.0-beta.5
|
|
60
|
-
* @memberof Shape
|
|
61
|
-
*/
|
|
62
|
-
get height(): number;
|
|
63
|
-
set height(val: number);
|
|
64
|
-
/**
|
|
65
|
-
* Get/Set x
|
|
66
|
-
* @title x
|
|
67
|
-
* @prop { number } x
|
|
68
|
-
* @memberof Shape
|
|
69
|
-
*/
|
|
70
|
-
get x(): number;
|
|
71
|
-
set x(val: number);
|
|
72
|
-
get z(): number | undefined;
|
|
73
|
-
/**
|
|
74
|
-
* Get/Set y
|
|
75
|
-
* @title y
|
|
76
|
-
* @prop { number } y
|
|
77
|
-
* @memberof Shape
|
|
78
|
-
*/
|
|
79
|
-
get y(): number;
|
|
80
|
-
set y(val: number);
|
|
81
|
-
get position(): Vector2d;
|
|
82
|
-
/**
|
|
83
|
-
* Get/Set properties
|
|
84
|
-
|
|
85
|
-
* @title Properties
|
|
86
|
-
* @prop { object } Properties
|
|
87
|
-
* @memberof Shape
|
|
88
|
-
*/
|
|
89
|
-
isEvent(): boolean;
|
|
90
|
-
set(obj: ShapeObject): void;
|
|
91
|
-
setComponent(): void;
|
|
92
|
-
getType(): string;
|
|
93
|
-
in(player: AbstractObject): Promise<boolean>;
|
|
94
|
-
out(player: AbstractObject): Promise<boolean>;
|
|
95
|
-
/**
|
|
96
|
-
* Whether the player is in this shape
|
|
97
|
-
*
|
|
98
|
-
* @title Player is in this shape ?
|
|
99
|
-
* @method shape.playerIsIn(player)
|
|
100
|
-
* @returns {boolean}
|
|
101
|
-
* @memberof Shape
|
|
102
|
-
*/
|
|
103
|
-
playerIsIn(player: AbstractObject): boolean;
|
|
104
|
-
isShapePosition(): boolean;
|
|
105
|
-
/**
|
|
106
|
-
* Recover the player with the shape. You must have used the `attachShape()` method on the player
|
|
107
|
-
*
|
|
108
|
-
* @title Get Player Owner
|
|
109
|
-
* @method shape.getPlayerOwner()
|
|
110
|
-
* @returns {RpgPlayer | undefined}
|
|
111
|
-
* @memberof Shape
|
|
112
|
-
*/
|
|
113
|
-
getPlayerOwner(): RpgCommonPlayer | undefined;
|
|
114
|
-
/**
|
|
115
|
-
* We get the rectangle of a shape (box, circle and polygon). We use in the grid system to recover a shape.
|
|
116
|
-
* Generally we add a margin (size of a tile) to detect if the player enters or leaves a shape
|
|
117
|
-
* @param margin
|
|
118
|
-
* @returns { minX: number, minY: number, maxX: number, maxY: number }
|
|
119
|
-
*/
|
|
120
|
-
getSizeBox(margin?: number): {
|
|
121
|
-
minX: number;
|
|
122
|
-
minY: number;
|
|
123
|
-
maxX: number;
|
|
124
|
-
maxY: number;
|
|
125
|
-
};
|
|
126
|
-
}
|
|
127
|
-
export {};
|
package/lib/Shape.js
DELETED
|
@@ -1,261 +0,0 @@
|
|
|
1
|
-
import { Hit, HitType } from './Hit.js';
|
|
2
|
-
import { TiledObjectClass } from '@rpgjs/tiled';
|
|
3
|
-
import { PlayerType } from '@rpgjs/types';
|
|
4
|
-
import { Vector2d } from './Vector2d.js';
|
|
5
|
-
export var ShapePositioning;
|
|
6
|
-
(function (ShapePositioning) {
|
|
7
|
-
ShapePositioning["Default"] = "default";
|
|
8
|
-
ShapePositioning["Center"] = "center";
|
|
9
|
-
})(ShapePositioning || (ShapePositioning = {}));
|
|
10
|
-
export class RpgShape extends TiledObjectClass {
|
|
11
|
-
constructor(obj) {
|
|
12
|
-
super();
|
|
13
|
-
this.type = HitType.Box;
|
|
14
|
-
this.class = '';
|
|
15
|
-
/**
|
|
16
|
-
* Get/Set name
|
|
17
|
-
* @title name
|
|
18
|
-
* @prop { string } name
|
|
19
|
-
* @memberof Shape
|
|
20
|
-
*/
|
|
21
|
-
this.name = '';
|
|
22
|
-
this.playersIn = {};
|
|
23
|
-
this.clientContainer = null;
|
|
24
|
-
/**
|
|
25
|
-
* Get/Set positioning
|
|
26
|
-
* @title positioning
|
|
27
|
-
* @prop { ShapePositioning } positioning
|
|
28
|
-
* @default default
|
|
29
|
-
* @memberof Shape
|
|
30
|
-
*/
|
|
31
|
-
this.positioning = ShapePositioning.Default;
|
|
32
|
-
this.components = [];
|
|
33
|
-
Reflect.deleteProperty(obj, 'id');
|
|
34
|
-
this.set(obj);
|
|
35
|
-
}
|
|
36
|
-
setPos(type, val) {
|
|
37
|
-
if (!this.hitbox.pos)
|
|
38
|
-
return;
|
|
39
|
-
if (this.isShapePosition()) {
|
|
40
|
-
this.hitbox[type] = val;
|
|
41
|
-
}
|
|
42
|
-
else {
|
|
43
|
-
this.hitbox.pos[type] = val;
|
|
44
|
-
}
|
|
45
|
-
}
|
|
46
|
-
get hasCollision() {
|
|
47
|
-
return this.getProperty('collision', false);
|
|
48
|
-
}
|
|
49
|
-
// alias
|
|
50
|
-
get id() {
|
|
51
|
-
return this.name;
|
|
52
|
-
}
|
|
53
|
-
get hitbox() {
|
|
54
|
-
if (this.fixEvent) {
|
|
55
|
-
this._hitbox.pos.x = this.fixEvent.position.x;
|
|
56
|
-
this._hitbox.pos.y = this.fixEvent.position.y;
|
|
57
|
-
switch (this.positioning) {
|
|
58
|
-
case ShapePositioning.Center:
|
|
59
|
-
this._hitbox.pos.x -= this._hitbox.w / 2 - this.fixEvent.hitbox.w / 2;
|
|
60
|
-
this._hitbox.pos.y -= this._hitbox.h / 2 - this.fixEvent.hitbox.h / 2;
|
|
61
|
-
break;
|
|
62
|
-
}
|
|
63
|
-
}
|
|
64
|
-
return this._hitbox;
|
|
65
|
-
}
|
|
66
|
-
set hitbox(val) {
|
|
67
|
-
this._hitbox = val;
|
|
68
|
-
}
|
|
69
|
-
/**
|
|
70
|
-
* Get/Set width
|
|
71
|
-
* @title width
|
|
72
|
-
* @prop { number } width
|
|
73
|
-
* @since 3.0.0-beta.5
|
|
74
|
-
* @memberof Shape
|
|
75
|
-
*/
|
|
76
|
-
get width() {
|
|
77
|
-
return this.hitbox.w || 0;
|
|
78
|
-
}
|
|
79
|
-
set width(val) {
|
|
80
|
-
this.setPos('w', val);
|
|
81
|
-
}
|
|
82
|
-
/**
|
|
83
|
-
* Get/Set height
|
|
84
|
-
* @title height
|
|
85
|
-
* @prop { number } height
|
|
86
|
-
* @since 3.0.0-beta.5
|
|
87
|
-
* @memberof Shape
|
|
88
|
-
*/
|
|
89
|
-
get height() {
|
|
90
|
-
return this.hitbox.h || 0;
|
|
91
|
-
}
|
|
92
|
-
set height(val) {
|
|
93
|
-
this.setPos('h', val);
|
|
94
|
-
}
|
|
95
|
-
/**
|
|
96
|
-
* Get/Set x
|
|
97
|
-
* @title x
|
|
98
|
-
* @prop { number } x
|
|
99
|
-
* @memberof Shape
|
|
100
|
-
*/
|
|
101
|
-
get x() {
|
|
102
|
-
return this.hitbox.x || this.hitbox.pos.x;
|
|
103
|
-
}
|
|
104
|
-
set x(val) {
|
|
105
|
-
this.setPos('x', val);
|
|
106
|
-
}
|
|
107
|
-
get z() {
|
|
108
|
-
return this.getProperty('z');
|
|
109
|
-
}
|
|
110
|
-
/**
|
|
111
|
-
* Get/Set y
|
|
112
|
-
* @title y
|
|
113
|
-
* @prop { number } y
|
|
114
|
-
* @memberof Shape
|
|
115
|
-
*/
|
|
116
|
-
get y() {
|
|
117
|
-
return this.hitbox.y || this.hitbox.pos.y;
|
|
118
|
-
}
|
|
119
|
-
set y(val) {
|
|
120
|
-
this.setPos('y', val);
|
|
121
|
-
}
|
|
122
|
-
get position() {
|
|
123
|
-
return new Vector2d(this.x, this.y, this.z);
|
|
124
|
-
}
|
|
125
|
-
/**
|
|
126
|
-
* Get/Set properties
|
|
127
|
-
|
|
128
|
-
* @title Properties
|
|
129
|
-
* @prop { object } Properties
|
|
130
|
-
* @memberof Shape
|
|
131
|
-
*/
|
|
132
|
-
isEvent() {
|
|
133
|
-
return this.type == PlayerType.Event;
|
|
134
|
-
}
|
|
135
|
-
set(obj) {
|
|
136
|
-
const hit = Hit.getHitbox(obj);
|
|
137
|
-
Object.assign(this, hit);
|
|
138
|
-
const objClone = { ...obj };
|
|
139
|
-
// Delete dimension and position because already managed and given by the hitbox above
|
|
140
|
-
['width', 'height', 'x', 'y'].forEach((prop) => Reflect.deleteProperty(objClone, prop));
|
|
141
|
-
Object.assign(this, objClone);
|
|
142
|
-
const findPoint = (prop, isMin) => {
|
|
143
|
-
return this.hitbox.points.sort((a, b) => isMin ? a[prop] - b[prop] : b[prop] - a[prop])[0][prop];
|
|
144
|
-
};
|
|
145
|
-
if (this.type == HitType.Polygon) {
|
|
146
|
-
this.hitbox.minX = findPoint('x', true);
|
|
147
|
-
this.hitbox.maxX = findPoint('x', false);
|
|
148
|
-
this.hitbox.minY = findPoint('y', true);
|
|
149
|
-
this.hitbox.maxY = findPoint('y', false);
|
|
150
|
-
}
|
|
151
|
-
this.positioning = obj.positioning;
|
|
152
|
-
this.fixEvent = obj.fixEvent;
|
|
153
|
-
this.setComponent();
|
|
154
|
-
}
|
|
155
|
-
setComponent() {
|
|
156
|
-
const color = this.getProperty('color');
|
|
157
|
-
const image = this.getProperty('image');
|
|
158
|
-
if (color) {
|
|
159
|
-
this.components = [{
|
|
160
|
-
id: 'shape', value: {
|
|
161
|
-
fill: color
|
|
162
|
-
}
|
|
163
|
-
}];
|
|
164
|
-
return;
|
|
165
|
-
}
|
|
166
|
-
if (image) {
|
|
167
|
-
this.components = [{ id: 'image', value: image }];
|
|
168
|
-
return;
|
|
169
|
-
}
|
|
170
|
-
if (this.text) {
|
|
171
|
-
this.components = [{ id: 'text', value: this.text.text }];
|
|
172
|
-
return;
|
|
173
|
-
}
|
|
174
|
-
if (this.gid) {
|
|
175
|
-
this.components = [{ id: 'tile', value: this.gid }];
|
|
176
|
-
return;
|
|
177
|
-
}
|
|
178
|
-
}
|
|
179
|
-
getType() {
|
|
180
|
-
return this.class || this.type;
|
|
181
|
-
}
|
|
182
|
-
async in(player) {
|
|
183
|
-
if (!this.playerIsIn(player)) {
|
|
184
|
-
this.playersIn[player.id] = true;
|
|
185
|
-
player.inShapes[this.name] = this;
|
|
186
|
-
await player.execMethod('onInShape', [this]);
|
|
187
|
-
await this.fixEvent?.execMethod('onDetectInShape', [player, this], this.fixEvent);
|
|
188
|
-
await player.execMethod('onIn', [player], this);
|
|
189
|
-
return true;
|
|
190
|
-
}
|
|
191
|
-
return false;
|
|
192
|
-
}
|
|
193
|
-
async out(player) {
|
|
194
|
-
if (this.playerIsIn(player)) {
|
|
195
|
-
delete this.playersIn[player.id];
|
|
196
|
-
delete player.inShapes[this.name];
|
|
197
|
-
await player.execMethod('onOutShape', [this]);
|
|
198
|
-
await this.fixEvent?.execMethod('onDetectOutShape', [player, this], this.fixEvent);
|
|
199
|
-
await player.execMethod('onOut', [player], this);
|
|
200
|
-
return true;
|
|
201
|
-
}
|
|
202
|
-
return false;
|
|
203
|
-
}
|
|
204
|
-
/**
|
|
205
|
-
* Whether the player is in this shape
|
|
206
|
-
*
|
|
207
|
-
* @title Player is in this shape ?
|
|
208
|
-
* @method shape.playerIsIn(player)
|
|
209
|
-
* @returns {boolean}
|
|
210
|
-
* @memberof Shape
|
|
211
|
-
*/
|
|
212
|
-
playerIsIn(player) {
|
|
213
|
-
return !!this.playersIn[player.id];
|
|
214
|
-
}
|
|
215
|
-
isShapePosition() {
|
|
216
|
-
return this.type !== HitType.Box && this.type !== HitType.Circle && this.type !== HitType.Polygon;
|
|
217
|
-
}
|
|
218
|
-
/**
|
|
219
|
-
* Recover the player with the shape. You must have used the `attachShape()` method on the player
|
|
220
|
-
*
|
|
221
|
-
* @title Get Player Owner
|
|
222
|
-
* @method shape.getPlayerOwner()
|
|
223
|
-
* @returns {RpgPlayer | undefined}
|
|
224
|
-
* @memberof Shape
|
|
225
|
-
*/
|
|
226
|
-
getPlayerOwner() {
|
|
227
|
-
return this.fixEvent;
|
|
228
|
-
}
|
|
229
|
-
/**
|
|
230
|
-
* We get the rectangle of a shape (box, circle and polygon). We use in the grid system to recover a shape.
|
|
231
|
-
* Generally we add a margin (size of a tile) to detect if the player enters or leaves a shape
|
|
232
|
-
* @param margin
|
|
233
|
-
* @returns { minX: number, minY: number, maxX: number, maxY: number }
|
|
234
|
-
*/
|
|
235
|
-
getSizeBox(margin = 0) {
|
|
236
|
-
if (this.type == HitType.Circle) {
|
|
237
|
-
const radius = this.hitbox.r;
|
|
238
|
-
return {
|
|
239
|
-
minX: this.x - radius - margin,
|
|
240
|
-
maxX: this.x + radius + margin,
|
|
241
|
-
minY: this.y - radius - margin,
|
|
242
|
-
maxY: this.y + radius + margin
|
|
243
|
-
};
|
|
244
|
-
}
|
|
245
|
-
if (this.type == HitType.Polygon) {
|
|
246
|
-
return {
|
|
247
|
-
minX: this.x + this.hitbox.minX - margin,
|
|
248
|
-
maxX: this.x + this.hitbox.maxX + margin,
|
|
249
|
-
minY: this.y + this.hitbox.minY - margin,
|
|
250
|
-
maxY: this.y + this.hitbox.maxY + margin
|
|
251
|
-
};
|
|
252
|
-
}
|
|
253
|
-
return {
|
|
254
|
-
minX: this.x - margin,
|
|
255
|
-
maxX: this.x + this.width + margin,
|
|
256
|
-
minY: this.y - margin,
|
|
257
|
-
maxY: this.y + this.height + margin
|
|
258
|
-
};
|
|
259
|
-
}
|
|
260
|
-
}
|
|
261
|
-
//# sourceMappingURL=Shape.js.map
|