@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.
Files changed (148) hide show
  1. package/dist/Physic.d.ts +619 -0
  2. package/dist/Player.d.ts +198 -0
  3. package/{lib → dist}/Utils.d.ts +19 -2
  4. package/dist/database/Item.d.ts +10 -0
  5. package/dist/database/index.d.ts +1 -0
  6. package/dist/index.d.ts +9 -0
  7. package/dist/index.js +16741 -0
  8. package/dist/index.js.map +1 -0
  9. package/dist/modules.d.ts +92 -0
  10. package/dist/movement/MovementManager.d.ts +84 -0
  11. package/dist/movement/MovementStrategy.d.ts +39 -0
  12. package/dist/movement/index.d.ts +12 -0
  13. package/dist/movement/strategies/CompositeMovement.d.ts +76 -0
  14. package/dist/movement/strategies/Dash.d.ts +52 -0
  15. package/dist/movement/strategies/IceMovement.d.ts +87 -0
  16. package/dist/movement/strategies/Knockback.d.ts +50 -0
  17. package/dist/movement/strategies/LinearMove.d.ts +43 -0
  18. package/dist/movement/strategies/LinearRepulsion.d.ts +55 -0
  19. package/dist/movement/strategies/Oscillate.d.ts +60 -0
  20. package/dist/movement/strategies/PathFollow.d.ts +78 -0
  21. package/dist/movement/strategies/ProjectileMovement.d.ts +138 -0
  22. package/dist/movement/strategies/SeekAvoid.d.ts +27 -0
  23. package/dist/rooms/Map.d.ts +109 -0
  24. package/dist/services/updateMap.d.ts +7 -0
  25. package/package.json +17 -17
  26. package/src/Physic.ts +1644 -0
  27. package/src/Player.ts +262 -26
  28. package/src/{gui/PrebuiltGui.ts → PrebuiltGui.ts} +1 -1
  29. package/src/Utils.ts +184 -123
  30. package/src/database/Item.ts +19 -0
  31. package/src/database/index.ts +1 -0
  32. package/src/index.ts +9 -25
  33. package/src/modules.ts +230 -0
  34. package/src/movement/MovementManager.ts +142 -0
  35. package/src/movement/MovementStrategy.ts +42 -0
  36. package/src/movement/index.ts +15 -0
  37. package/src/movement/strategies/CompositeMovement.ts +173 -0
  38. package/src/movement/strategies/Dash.ts +82 -0
  39. package/src/movement/strategies/IceMovement.ts +158 -0
  40. package/src/movement/strategies/Knockback.ts +81 -0
  41. package/src/movement/strategies/LinearMove.ts +58 -0
  42. package/src/movement/strategies/LinearRepulsion.ts +128 -0
  43. package/src/movement/strategies/Oscillate.ts +144 -0
  44. package/src/movement/strategies/PathFollow.ts +156 -0
  45. package/src/movement/strategies/ProjectileMovement.ts +322 -0
  46. package/src/movement/strategies/SeekAvoid.ts +123 -0
  47. package/src/rooms/Map.ts +272 -0
  48. package/src/services/updateMap.ts +9 -0
  49. package/tests/physic.spec.ts +454 -0
  50. package/tsconfig.json +8 -3
  51. package/vite.config.ts +21 -0
  52. package/CHANGELOG.md +0 -152
  53. package/LICENSE +0 -19
  54. package/browser/manifest.json +0 -7
  55. package/browser/rpg.common.js +0 -11357
  56. package/browser/rpg.common.umd.cjs +0 -11358
  57. package/lib/AbstractObject.d.ts +0 -322
  58. package/lib/AbstractObject.js +0 -872
  59. package/lib/AbstractObject.js.map +0 -1
  60. package/lib/Color.d.ts +0 -1
  61. package/lib/Color.js +0 -25
  62. package/lib/Color.js.map +0 -1
  63. package/lib/DefaultInput.d.ts +0 -2
  64. package/lib/DefaultInput.js +0 -26
  65. package/lib/DefaultInput.js.map +0 -1
  66. package/lib/Event.d.ts +0 -3
  67. package/lib/Event.js +0 -4
  68. package/lib/Event.js.map +0 -1
  69. package/lib/EventEmitter.d.ts +0 -10
  70. package/lib/EventEmitter.js +0 -61
  71. package/lib/EventEmitter.js.map +0 -1
  72. package/lib/Game.d.ts +0 -28
  73. package/lib/Game.js +0 -127
  74. package/lib/Game.js.map +0 -1
  75. package/lib/Hit.d.ts +0 -16
  76. package/lib/Hit.js +0 -65
  77. package/lib/Hit.js.map +0 -1
  78. package/lib/Inject.d.ts +0 -9
  79. package/lib/Inject.js +0 -17
  80. package/lib/Inject.js.map +0 -1
  81. package/lib/Logger.d.ts +0 -2
  82. package/lib/Logger.js +0 -7
  83. package/lib/Logger.js.map +0 -1
  84. package/lib/Map.d.ts +0 -174
  85. package/lib/Map.js +0 -263
  86. package/lib/Map.js.map +0 -1
  87. package/lib/Module.d.ts +0 -16
  88. package/lib/Module.js +0 -139
  89. package/lib/Module.js.map +0 -1
  90. package/lib/Player.d.ts +0 -26
  91. package/lib/Player.js +0 -19
  92. package/lib/Player.js.map +0 -1
  93. package/lib/Plugin.d.ts +0 -67
  94. package/lib/Plugin.js +0 -92
  95. package/lib/Plugin.js.map +0 -1
  96. package/lib/Scheduler.d.ts +0 -26
  97. package/lib/Scheduler.js +0 -90
  98. package/lib/Scheduler.js.map +0 -1
  99. package/lib/Shape.d.ts +0 -127
  100. package/lib/Shape.js +0 -261
  101. package/lib/Shape.js.map +0 -1
  102. package/lib/Utils.js +0 -181
  103. package/lib/Utils.js.map +0 -1
  104. package/lib/Vector2d.d.ts +0 -20
  105. package/lib/Vector2d.js +0 -63
  106. package/lib/Vector2d.js.map +0 -1
  107. package/lib/VirtualGrid.d.ts +0 -26
  108. package/lib/VirtualGrid.js +0 -68
  109. package/lib/VirtualGrid.js.map +0 -1
  110. package/lib/Worker.d.ts +0 -7
  111. package/lib/Worker.js +0 -13
  112. package/lib/Worker.js.map +0 -1
  113. package/lib/WorldMaps.d.ts +0 -105
  114. package/lib/WorldMaps.js +0 -184
  115. package/lib/WorldMaps.js.map +0 -1
  116. package/lib/gui/PrebuiltGui.js +0 -29
  117. package/lib/gui/PrebuiltGui.js.map +0 -1
  118. package/lib/index.d.ts +0 -25
  119. package/lib/index.js +0 -26
  120. package/lib/index.js.map +0 -1
  121. package/lib/transports/io.d.ts +0 -22
  122. package/lib/transports/io.js +0 -82
  123. package/lib/transports/io.js.map +0 -1
  124. package/lib/workers/move.d.ts +0 -1
  125. package/lib/workers/move.js +0 -57
  126. package/lib/workers/move.js.map +0 -1
  127. package/rpg.toml +0 -11
  128. package/src/AbstractObject.ts +0 -973
  129. package/src/Color.ts +0 -29
  130. package/src/DefaultInput.ts +0 -26
  131. package/src/Event.ts +0 -3
  132. package/src/EventEmitter.ts +0 -65
  133. package/src/Game.ts +0 -159
  134. package/src/Hit.ts +0 -70
  135. package/src/Inject.ts +0 -22
  136. package/src/Logger.ts +0 -7
  137. package/src/Map.ts +0 -335
  138. package/src/Module.ts +0 -144
  139. package/src/Plugin.ts +0 -100
  140. package/src/Scheduler.ts +0 -95
  141. package/src/Shape.ts +0 -302
  142. package/src/Vector2d.ts +0 -70
  143. package/src/VirtualGrid.ts +0 -78
  144. package/src/Worker.ts +0 -17
  145. package/src/WorldMaps.ts +0 -204
  146. package/src/transports/io.ts +0 -91
  147. package/src/workers/move.ts +0 -61
  148. /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"}
@@ -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
@@ -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