@rpgjs/server 4.3.0 → 5.0.0-alpha.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (219) hide show
  1. package/{lib → dist}/Gui/DialogGui.d.ts +1 -2
  2. package/{lib → dist}/Gui/Gui.d.ts +1 -2
  3. package/dist/Player/BattleManager.d.ts +22 -0
  4. package/dist/Player/ClassManager.d.ts +18 -0
  5. package/dist/Player/Event.d.ts +0 -0
  6. package/dist/Player/ItemManager.d.ts +17 -0
  7. package/dist/Player/MoveManager.d.ts +177 -0
  8. package/dist/Player/ParameterManager.d.ts +42 -0
  9. package/dist/Player/Player.d.ts +73 -0
  10. package/dist/Player/SkillManager.d.ts +23 -0
  11. package/dist/Player/StateManager.d.ts +39 -0
  12. package/{lib → dist}/RpgServer.d.ts +32 -15
  13. package/dist/RpgServerEngine.d.ts +5 -0
  14. package/dist/core/context.d.ts +2 -0
  15. package/dist/core/inject.d.ts +5 -0
  16. package/dist/core/setup.d.ts +6 -0
  17. package/dist/index.d.ts +9 -0
  18. package/dist/index.js +29673 -0
  19. package/dist/index.js.map +1 -0
  20. package/dist/module.d.ts +2 -0
  21. package/dist/rooms/lobby.d.ts +6 -0
  22. package/dist/rooms/map.d.ts +110 -0
  23. package/package.json +15 -37
  24. package/src/Gui/DialogGui.ts +3 -4
  25. package/src/Gui/Gui.ts +4 -6
  26. package/src/Player/BattleManager.ts +108 -99
  27. package/src/Player/ClassManager.ts +47 -46
  28. package/src/Player/ComponentManager.ts +26 -535
  29. package/src/Player/EffectManager.ts +44 -59
  30. package/src/Player/ElementManager.ts +70 -72
  31. package/src/Player/Event.ts +0 -0
  32. package/src/Player/GoldManager.ts +24 -6
  33. package/src/Player/GuiManager.ts +106 -97
  34. package/src/Player/ItemFixture.ts +22 -17
  35. package/src/Player/ItemManager.ts +234 -225
  36. package/src/Player/MoveManager.ts +1047 -457
  37. package/src/Player/ParameterManager.ts +59 -37
  38. package/src/Player/Player.ts +272 -1058
  39. package/src/Player/SkillManager.ts +146 -137
  40. package/src/Player/StateManager.ts +124 -98
  41. package/src/Player/VariableManager.ts +23 -3
  42. package/src/RpgServer.ts +36 -12
  43. package/src/RpgServerEngine.ts +7 -0
  44. package/src/core/context.ts +3 -0
  45. package/src/core/inject.ts +17 -0
  46. package/src/core/setup.ts +20 -0
  47. package/src/index.ts +9 -31
  48. package/src/module.ts +32 -0
  49. package/src/presets/index.ts +1 -3
  50. package/src/rooms/lobby.ts +24 -0
  51. package/src/rooms/map.ts +311 -0
  52. package/tsconfig.json +26 -23
  53. package/vite.config.ts +21 -0
  54. package/CHANGELOG.md +0 -174
  55. package/LICENSE +0 -19
  56. package/browser/manifest.json +0 -7
  57. package/browser/rpg.server.js +0 -22379
  58. package/browser/rpg.server.umd.cjs +0 -22410
  59. package/lib/Game/EventManager.d.ts +0 -54
  60. package/lib/Game/EventManager.js +0 -107
  61. package/lib/Game/EventManager.js.map +0 -1
  62. package/lib/Game/Map.d.ts +0 -191
  63. package/lib/Game/Map.js +0 -419
  64. package/lib/Game/Map.js.map +0 -1
  65. package/lib/Game/WorldMaps.d.ts +0 -17
  66. package/lib/Game/WorldMaps.js +0 -28
  67. package/lib/Game/WorldMaps.js.map +0 -1
  68. package/lib/Gui/DialogGui.js +0 -57
  69. package/lib/Gui/DialogGui.js.map +0 -1
  70. package/lib/Gui/Gui.js +0 -37
  71. package/lib/Gui/Gui.js.map +0 -1
  72. package/lib/Gui/MenuGui.js +0 -23
  73. package/lib/Gui/MenuGui.js.map +0 -1
  74. package/lib/Gui/NotificationGui.js +0 -8
  75. package/lib/Gui/NotificationGui.js.map +0 -1
  76. package/lib/Gui/ShopGui.js +0 -40
  77. package/lib/Gui/ShopGui.js.map +0 -1
  78. package/lib/Gui/index.js +0 -7
  79. package/lib/Gui/index.js.map +0 -1
  80. package/lib/Interfaces/Gui.d.ts +0 -4
  81. package/lib/Interfaces/Gui.js +0 -2
  82. package/lib/Interfaces/Gui.js.map +0 -1
  83. package/lib/Interfaces/StateStore.d.ts +0 -5
  84. package/lib/Interfaces/StateStore.js +0 -2
  85. package/lib/Interfaces/StateStore.js.map +0 -1
  86. package/lib/MatchMaker.d.ts +0 -24
  87. package/lib/MatchMaker.js +0 -42
  88. package/lib/MatchMaker.js.map +0 -1
  89. package/lib/Monitor/index.d.ts +0 -17
  90. package/lib/Monitor/index.js +0 -72
  91. package/lib/Monitor/index.js.map +0 -1
  92. package/lib/Player/BattleManager.d.ts +0 -36
  93. package/lib/Player/BattleManager.js +0 -101
  94. package/lib/Player/BattleManager.js.map +0 -1
  95. package/lib/Player/ClassManager.d.ts +0 -47
  96. package/lib/Player/ClassManager.js +0 -65
  97. package/lib/Player/ClassManager.js.map +0 -1
  98. package/lib/Player/ComponentManager.d.ts +0 -397
  99. package/lib/Player/ComponentManager.js +0 -505
  100. package/lib/Player/ComponentManager.js.map +0 -1
  101. package/lib/Player/EffectManager.d.ts +0 -46
  102. package/lib/Player/EffectManager.js +0 -75
  103. package/lib/Player/EffectManager.js.map +0 -1
  104. package/lib/Player/ElementManager.d.ts +0 -108
  105. package/lib/Player/ElementManager.js +0 -120
  106. package/lib/Player/ElementManager.js.map +0 -1
  107. package/lib/Player/GoldManager.d.ts +0 -17
  108. package/lib/Player/GoldManager.js +0 -27
  109. package/lib/Player/GoldManager.js.map +0 -1
  110. package/lib/Player/GuiManager.d.ts +0 -247
  111. package/lib/Player/GuiManager.js +0 -291
  112. package/lib/Player/GuiManager.js.map +0 -1
  113. package/lib/Player/ItemFixture.d.ts +0 -7
  114. package/lib/Player/ItemFixture.js +0 -19
  115. package/lib/Player/ItemFixture.js.map +0 -1
  116. package/lib/Player/ItemManager.d.ts +0 -331
  117. package/lib/Player/ItemManager.js +0 -475
  118. package/lib/Player/ItemManager.js.map +0 -1
  119. package/lib/Player/MoveManager.d.ts +0 -333
  120. package/lib/Player/MoveManager.js +0 -450
  121. package/lib/Player/MoveManager.js.map +0 -1
  122. package/lib/Player/ParameterManager.d.ts +0 -316
  123. package/lib/Player/ParameterManager.js +0 -408
  124. package/lib/Player/ParameterManager.js.map +0 -1
  125. package/lib/Player/Player.d.ts +0 -828
  126. package/lib/Player/Player.js +0 -927
  127. package/lib/Player/Player.js.map +0 -1
  128. package/lib/Player/SkillManager.d.ts +0 -163
  129. package/lib/Player/SkillManager.js +0 -223
  130. package/lib/Player/SkillManager.js.map +0 -1
  131. package/lib/Player/StateManager.d.ts +0 -185
  132. package/lib/Player/StateManager.js +0 -228
  133. package/lib/Player/StateManager.js.map +0 -1
  134. package/lib/Player/VariableManager.d.ts +0 -46
  135. package/lib/Player/VariableManager.js +0 -52
  136. package/lib/Player/VariableManager.js.map +0 -1
  137. package/lib/Query.d.ts +0 -127
  138. package/lib/Query.js +0 -159
  139. package/lib/Query.js.map +0 -1
  140. package/lib/RpgServer.js +0 -2
  141. package/lib/RpgServer.js.map +0 -1
  142. package/lib/Scenes/Map.d.ts +0 -136
  143. package/lib/Scenes/Map.js +0 -273
  144. package/lib/Scenes/Map.js.map +0 -1
  145. package/lib/decorators/event.d.ts +0 -43
  146. package/lib/decorators/event.js +0 -13
  147. package/lib/decorators/event.js.map +0 -1
  148. package/lib/decorators/map.d.ts +0 -178
  149. package/lib/decorators/map.js +0 -43
  150. package/lib/decorators/map.js.map +0 -1
  151. package/lib/entry-point.d.ts +0 -34
  152. package/lib/entry-point.js +0 -70
  153. package/lib/entry-point.js.map +0 -1
  154. package/lib/express/api.d.ts +0 -3
  155. package/lib/express/api.js +0 -105
  156. package/lib/express/api.js.map +0 -1
  157. package/lib/express/errors/NotAuthorized.d.ts +0 -4
  158. package/lib/express/errors/NotAuthorized.js +0 -7
  159. package/lib/express/errors/NotAuthorized.js.map +0 -1
  160. package/lib/express/errors/NotFound.d.ts +0 -4
  161. package/lib/express/errors/NotFound.js +0 -7
  162. package/lib/express/errors/NotFound.js.map +0 -1
  163. package/lib/express/server.d.ts +0 -18
  164. package/lib/express/server.js +0 -70
  165. package/lib/express/server.js.map +0 -1
  166. package/lib/index.d.ts +0 -20
  167. package/lib/index.js +0 -19
  168. package/lib/index.js.map +0 -1
  169. package/lib/inject.d.ts +0 -22
  170. package/lib/inject.js +0 -29
  171. package/lib/inject.js.map +0 -1
  172. package/lib/logs/index.js +0 -6
  173. package/lib/logs/index.js.map +0 -1
  174. package/lib/logs/item.js +0 -34
  175. package/lib/logs/item.js.map +0 -1
  176. package/lib/logs/log.js +0 -7
  177. package/lib/logs/log.js.map +0 -1
  178. package/lib/logs/skill.js +0 -19
  179. package/lib/logs/skill.js.map +0 -1
  180. package/lib/logs/state.js +0 -13
  181. package/lib/logs/state.js.map +0 -1
  182. package/lib/models/Item.d.ts +0 -10
  183. package/lib/models/Item.js +0 -2
  184. package/lib/models/Item.js.map +0 -1
  185. package/lib/presets/index.js +0 -65
  186. package/lib/presets/index.js.map +0 -1
  187. package/lib/server.d.ts +0 -137
  188. package/lib/server.js +0 -443
  189. package/lib/server.js.map +0 -1
  190. package/rpg.toml +0 -14
  191. package/src/Game/EventManager.ts +0 -125
  192. package/src/Game/Map.ts +0 -500
  193. package/src/Game/WorldMaps.ts +0 -45
  194. package/src/Interfaces/Gui.ts +0 -4
  195. package/src/Interfaces/StateStore.ts +0 -5
  196. package/src/MatchMaker.ts +0 -65
  197. package/src/Monitor/index.ts +0 -78
  198. package/src/Query.ts +0 -172
  199. package/src/Scenes/Map.ts +0 -310
  200. package/src/decorators/event.ts +0 -58
  201. package/src/decorators/map.ts +0 -226
  202. package/src/entry-point.ts +0 -111
  203. package/src/express/api.ts +0 -118
  204. package/src/express/errors/NotAuthorized.ts +0 -6
  205. package/src/express/errors/NotFound.ts +0 -6
  206. package/src/express/server.ts +0 -94
  207. package/src/inject.ts +0 -33
  208. package/src/models/Item.ts +0 -11
  209. package/src/server.ts +0 -459
  210. /package/{lib → dist}/Gui/MenuGui.d.ts +0 -0
  211. /package/{lib → dist}/Gui/NotificationGui.d.ts +0 -0
  212. /package/{lib → dist}/Gui/ShopGui.d.ts +0 -0
  213. /package/{lib → dist}/Gui/index.d.ts +0 -0
  214. /package/{lib → dist}/logs/index.d.ts +0 -0
  215. /package/{lib → dist}/logs/item.d.ts +0 -0
  216. /package/{lib → dist}/logs/log.d.ts +0 -0
  217. /package/{lib → dist}/logs/skill.d.ts +0 -0
  218. /package/{lib → dist}/logs/state.d.ts +0 -0
  219. /package/{lib → dist}/presets/index.d.ts +0 -0
@@ -1,450 +0,0 @@
1
- import { Direction, LiteralDirection } from '@rpgjs/common';
2
- import { Utils } from '@rpgjs/common';
3
- import { SocketEvents, SocketMethods } from '@rpgjs/types';
4
- import { Observable, takeUntil, tap, switchMap, of, from } from 'rxjs';
5
- const { arrayFlat, random, isFunction, capitalize } = Utils;
6
- function wait(sec) {
7
- return new Promise((resolve) => {
8
- setTimeout(resolve, sec * 1000);
9
- });
10
- }
11
- export var Frequency;
12
- (function (Frequency) {
13
- Frequency[Frequency["Lowest"] = 600] = "Lowest";
14
- Frequency[Frequency["Lower"] = 400] = "Lower";
15
- Frequency[Frequency["Low"] = 200] = "Low";
16
- Frequency[Frequency["High"] = 100] = "High";
17
- Frequency[Frequency["Higher"] = 50] = "Higher";
18
- Frequency[Frequency["Highest"] = 25] = "Highest";
19
- Frequency[Frequency["None"] = 0] = "None";
20
- })(Frequency || (Frequency = {}));
21
- export var Speed;
22
- (function (Speed) {
23
- Speed[Speed["Slowest"] = 0.2] = "Slowest";
24
- Speed[Speed["Slower"] = 0.5] = "Slower";
25
- Speed[Speed["Slow"] = 1] = "Slow";
26
- Speed[Speed["Normal"] = 3] = "Normal";
27
- Speed[Speed["Fast"] = 5] = "Fast";
28
- Speed[Speed["Faster"] = 7] = "Faster";
29
- Speed[Speed["Fastest"] = 10] = "Fastest";
30
- })(Speed || (Speed = {}));
31
- /**
32
- * @title Move
33
- * @enum {Object}
34
- *
35
- * Move.right(repeat=1) | Movement of a number of pixels on the right
36
- * Move.left(repeat=1) | Movement of a number of pixels on the left
37
- * Move.up(repeat=1) | Movement of a number of pixels on the up
38
- * Move.down(repeat=1) | Movement of a number of pixels on the down
39
- * Move.random(repeat=1) | Movement of a number of pixels in a random direction
40
- * Move.towardPlayer(player, repeat=1) | Moves a number of pixels in the direction of the designated player
41
- * Move.awayFromPlayer(player, repeat=1) | Moves a number of pixels in the opposite direction of the designated player
42
- * Move.tileRight(repeat=1) | Movement of a number of tiles on the right
43
- * Move.tileLeft(repeat=1) | Movement of a number of tiles on the left
44
- * Move.tileUp(repeat=1) | Movement of a number of tiles on the up
45
- * Move.tileDown(repeat=1) | Movement of a number of tiles on the down
46
- * Move.tileRandom(repeat=1) | Movement of a number of tiles in a random direction
47
- * Move.tileTowardPlayer(player, repeat=1) | Moves a number of tiles in the direction of the designated player
48
- * Move.tileAwayFromPlayer(player, repeat=1) | Moves a number of tiles in the opposite direction of the designated player
49
- * Move.turnRight() | Turn to the right
50
- * Move.turnLeft() | Turn to the left
51
- * Move.turnUp() | Turn to the up
52
- * Move.turnDown() | Turn to the down
53
- * Move.turnRandom() | Turn to random direction
54
- * Move.turnAwayFromPlayer(player) | Turns in the opposite direction of the designated player
55
- * Move.turnTowardPlayer(player) | Turns in the direction of the designated player
56
- * @memberof Move
57
- * */
58
- class MoveList {
59
- repeatMove(direction, repeat) {
60
- return new Array(repeat).fill(direction);
61
- }
62
- repeatTileMove(direction, repeat, propMap) {
63
- return (player, map) => {
64
- const repeatTile = Math.floor(map[propMap] / player.speed) * repeat;
65
- return this[direction](repeatTile);
66
- };
67
- }
68
- right(repeat = 1) {
69
- return this.repeatMove(Direction.Right, repeat);
70
- }
71
- left(repeat = 1) {
72
- return this.repeatMove(Direction.Left, repeat);
73
- }
74
- up(repeat = 1) {
75
- return this.repeatMove(Direction.Up, repeat);
76
- }
77
- down(repeat = 1) {
78
- return this.repeatMove(Direction.Down, repeat);
79
- }
80
- wait(sec) {
81
- return wait(sec);
82
- }
83
- random(repeat = 1) {
84
- return new Array(repeat).fill(null).map(() => [
85
- Direction.Right,
86
- Direction.Left,
87
- Direction.Up,
88
- Direction.Down
89
- ][random(0, 3)]);
90
- }
91
- tileRight(repeat = 1) {
92
- return this.repeatTileMove('right', repeat, 'tileWidth');
93
- }
94
- tileLeft(repeat = 1) {
95
- return this.repeatTileMove('left', repeat, 'tileWidth');
96
- }
97
- tileUp(repeat = 1) {
98
- return this.repeatTileMove('up', repeat, 'tileHeight');
99
- }
100
- tileDown(repeat = 1) {
101
- return this.repeatTileMove('down', repeat, 'tileHeight');
102
- }
103
- tileRandom(repeat = 1) {
104
- return (player, map) => {
105
- let directions = [];
106
- for (let i = 0; i < repeat; i++) {
107
- const randFn = [
108
- this.tileRight(),
109
- this.tileLeft(),
110
- this.tileUp(),
111
- this.tileDown()
112
- ][random(0, 3)];
113
- directions = [
114
- ...directions,
115
- ...randFn(player, map)
116
- ];
117
- }
118
- return directions;
119
- };
120
- }
121
- _awayFromPlayerDirection(player, otherPlayer) {
122
- const directionOtherPlayer = otherPlayer.getDirection();
123
- let newDirection = 0;
124
- switch (directionOtherPlayer) {
125
- case Direction.Left:
126
- case Direction.Right:
127
- if (otherPlayer.position.x > player.position.x) {
128
- newDirection = Direction.Left;
129
- }
130
- else {
131
- newDirection = Direction.Right;
132
- }
133
- break;
134
- case Direction.Up:
135
- case Direction.Down:
136
- if (otherPlayer.position.y > player.position.y) {
137
- newDirection = Direction.Up;
138
- }
139
- else {
140
- newDirection = Direction.Down;
141
- }
142
- break;
143
- }
144
- return newDirection;
145
- }
146
- _towardPlayerDirection(player, otherPlayer) {
147
- const directionOtherPlayer = otherPlayer.getDirection();
148
- let newDirection = 0;
149
- switch (directionOtherPlayer) {
150
- case Direction.Left:
151
- case Direction.Right:
152
- if (otherPlayer.position.x > player.position.x) {
153
- newDirection = Direction.Right;
154
- }
155
- else {
156
- newDirection = Direction.Left;
157
- }
158
- break;
159
- case Direction.Up:
160
- case Direction.Down:
161
- if (otherPlayer.position.y > player.position.y) {
162
- newDirection = Direction.Down;
163
- }
164
- else {
165
- newDirection = Direction.Up;
166
- }
167
- break;
168
- }
169
- return newDirection;
170
- }
171
- _awayFromPlayer({ isTile, typeMov }, otherPlayer, repeat = 1) {
172
- const method = (dir) => {
173
- const direction = LiteralDirection[dir];
174
- return this[isTile ? 'tile' + capitalize(direction) : direction](repeat);
175
- };
176
- return (player, map) => {
177
- let newDirection = 0;
178
- switch (typeMov) {
179
- case 'away':
180
- newDirection = this._awayFromPlayerDirection(player, otherPlayer);
181
- break;
182
- case 'toward':
183
- newDirection = this._towardPlayerDirection(player, otherPlayer);
184
- break;
185
- }
186
- let direction = method(newDirection);
187
- if (isFunction(direction)) {
188
- direction = direction(player, map);
189
- }
190
- return direction;
191
- };
192
- }
193
- towardPlayer(player, repeat = 1) {
194
- return this._awayFromPlayer({ isTile: false, typeMov: 'toward' }, player, repeat);
195
- }
196
- tileTowardPlayer(player, repeat = 1) {
197
- return this._awayFromPlayer({ isTile: true, typeMov: 'toward' }, player, repeat);
198
- }
199
- awayFromPlayer(player, repeat = 1) {
200
- return this._awayFromPlayer({ isTile: false, typeMov: 'away' }, player, repeat);
201
- }
202
- tileAwayFromPlayer(player, repeat = 1) {
203
- return this._awayFromPlayer({ isTile: true, typeMov: 'away' }, player, repeat);
204
- }
205
- turnLeft() {
206
- return 'turn-' + Direction.Left;
207
- }
208
- turnRight() {
209
- return 'turn-' + Direction.Right;
210
- }
211
- turnUp() {
212
- return 'turn-' + Direction.Up;
213
- }
214
- turnDown() {
215
- return 'turn-' + Direction.Down;
216
- }
217
- turnRandom() {
218
- return [
219
- this.turnRight(),
220
- this.turnLeft(),
221
- this.turnUp(),
222
- this.turnDown()
223
- ][random(0, 3)];
224
- }
225
- turnAwayFromPlayer(otherPlayer) {
226
- return (player) => {
227
- const direction = this._awayFromPlayerDirection(player, otherPlayer);
228
- return 'turn-' + direction;
229
- };
230
- }
231
- turnTowardPlayer(otherPlayer) {
232
- return (player) => {
233
- const direction = this._towardPlayerDirection(player, otherPlayer);
234
- return 'turn-' + direction;
235
- };
236
- }
237
- }
238
- export const Move = new MoveList();
239
- export class MoveManager {
240
- /**
241
- * Gives an itinerary.
242
- *
243
- * You can create your own motion function:
244
- *
245
- * ```ts
246
- * import { Direction } from '@rpgjs/server'
247
- *
248
- * const customMove = () => {
249
- * return [Direction.Left, Direction.Up]
250
- * }
251
- *
252
- * player.moveRoutes([ customMove() ])
253
- * ```
254
- *
255
- * Your function can also return a function:
256
- *
257
- * ```ts
258
- * import { Direction, RpgPlayer } from '@rpgjs/server'
259
- *
260
- * // This function can be found in another file. By returning a function, you have access to the player who is making a move.
261
- * const customMove = (otherPlayer: RpgPlayer) => {
262
- * return (player: RpgPlayer, map) => {
263
- * return otherPlayer.position.x > player.position.x ? Direction.Left : Direction.Right
264
- * }
265
- * }
266
- *
267
- * player.moveRoutes([ customMove(otherPlayer) ])
268
- * ```
269
- *
270
- * the function contains two parameters:
271
- *
272
- * - `player`: the player concerned by the movement
273
- * - `map`: The information of the current map
274
- *
275
- * @title Give an itinerary
276
- * @method player.moveRoutes(routes)
277
- * @param {Array<Move>} routes
278
- * @returns {Promise}
279
- * @memberof MoveManager
280
- * @example
281
- *
282
- * ```ts
283
- * import { Move } from '@rpgjs/server'
284
- *
285
- * await player.moveRoutes([ Move.tileLeft(), Move.tileDown(2) ])
286
- * // The path is over when the promise is resolved
287
- * ```
288
- */
289
- moveRoutes(routes) {
290
- let count = 0;
291
- let frequence = 0;
292
- this.breakRoutes(); // break previous route
293
- return new Promise(async (resolve) => {
294
- this._finishRoute = resolve;
295
- routes = routes.map((route) => {
296
- if (isFunction(route)) {
297
- const map = this.getCurrentMap();
298
- if (!map) {
299
- return undefined;
300
- }
301
- return route.apply(route, [this, map]);
302
- }
303
- return route;
304
- });
305
- routes = arrayFlat(routes);
306
- const move = () => {
307
- // If movement continues while the player no longer exists or is no longer on the map
308
- if (!this) {
309
- return of(null);
310
- }
311
- // if map not exists
312
- if (!this.getCurrentMap()) {
313
- return of(null);
314
- }
315
- if (count >= this['nbPixelInTile']) {
316
- if (frequence < this.frequency) {
317
- frequence++;
318
- return of(null);
319
- }
320
- }
321
- frequence = 0;
322
- count++;
323
- const [route] = routes;
324
- if (route === undefined) {
325
- this.breakRoutes();
326
- return of(null);
327
- }
328
- let ob$ = new Observable();
329
- switch (route) {
330
- case Direction.Left:
331
- case Direction.Down:
332
- case Direction.Right:
333
- case Direction.Up:
334
- ob$ = from(this.moveByDirection(route, 1));
335
- break;
336
- case 'turn-' + Direction.Left:
337
- ob$ = of(this.changeDirection(Direction.Left));
338
- break;
339
- case 'turn-' + Direction.Right:
340
- ob$ = of(this.changeDirection(Direction.Right));
341
- break;
342
- case 'turn-' + Direction.Up:
343
- ob$ = of(this.changeDirection(Direction.Up));
344
- break;
345
- case 'turn-' + Direction.Down:
346
- ob$ = of(this.changeDirection(Direction.Down));
347
- break;
348
- }
349
- return ob$.pipe(tap(() => {
350
- routes.shift();
351
- }));
352
- };
353
- this.movingSubscription = this.server.tick
354
- .pipe(takeUntil(this._destroy$.pipe(tap(() => {
355
- this.breakRoutes(true);
356
- }))), switchMap(move))
357
- .subscribe();
358
- });
359
- }
360
- /**
361
- * Giving a path that repeats itself in a loop to a character
362
- *
363
- * You can stop the movement at any time with `breakRoutes()` and replay it with `replayRoutes()`.
364
- *
365
- * @title Infinite Move Routes
366
- * @method player.infiniteMoveRoute(routes)
367
- * @param {Array<Move>} routes
368
- * @returns {void}
369
- * @memberof MoveManager
370
- * @example
371
- *
372
- * ```ts
373
- * import { Move } from '@rpgjs/server'
374
- *
375
- * player.infiniteMoveRoute([ Move.tileRandom() ])
376
- * ```
377
- */
378
- infiniteMoveRoute(routes) {
379
- this._infiniteRoutes = routes;
380
- const move = (isBreaking) => {
381
- if (isBreaking)
382
- return;
383
- this.moveRoutes(routes).then(move);
384
- };
385
- move(false);
386
- }
387
- /**
388
- * Works only for infinite movements. You must first use the method `infiniteMoveRoute()`
389
- *
390
- * @title Stop an infinite movement
391
- * @method player.breakRoutes(force=false)
392
- * @param {boolean} [force] Forces the stop of the infinite movement
393
- * @returns {void}
394
- * @memberof MoveManager
395
- * @example
396
- *
397
- * ```ts
398
- * import { Move } from '@rpgjs/server'
399
- *
400
- * player.infiniteMoveRoute([ Move.tileRandom() ])
401
- * player.breakRoutes(true)
402
- * ```
403
- */
404
- breakRoutes(force = false) {
405
- if (this._finishRoute) {
406
- this.movingSubscription?.unsubscribe();
407
- this._finishRoute(force);
408
- }
409
- }
410
- /**
411
- * Works only for infinite movements. You must first use the method `infiniteMoveRoute()`
412
- * If the road was stopped with `breakRoutes()`, you can restart it with this method
413
- *
414
- * @title Replay an infinite movement
415
- * @method player.replayRoutes()
416
- * @returns {void}
417
- * @memberof MoveManager
418
- * @example
419
- *
420
- * ```ts
421
- * import { Move } from '@rpgjs/server'
422
- *
423
- * player.infiniteMoveRoute([ Move.tileRandom() ])
424
- * player.breakRoutes(true)
425
- * player.replayRoutes()
426
- * ```
427
- */
428
- replayRoutes() {
429
- if (this._infiniteRoutes)
430
- this.infiniteMoveRoute(this._infiniteRoutes);
431
- }
432
- moveTo(position, options) {
433
- return this['_moveTo'](this.server.tick, position, options);
434
- }
435
- // TODO
436
- setMoveMode(mode) {
437
- if (mode.checkCollision)
438
- this.checkCollision = mode.checkCollision;
439
- if (mode.clientMode)
440
- this.clientModeMove = mode.clientMode;
441
- if (mode.behavior)
442
- this.behavior = mode.behavior;
443
- this.emit(SocketEvents.CallMethod, {
444
- objectId: this.id,
445
- name: SocketMethods.ModeMove,
446
- params: [mode]
447
- });
448
- }
449
- }
450
- //# sourceMappingURL=MoveManager.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"MoveManager.js","sourceRoot":"","sources":["../../src/Player/MoveManager.ts"],"names":[],"mappings":"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"}