@rpgjs/server 4.2.2 → 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 (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 +34 -17
  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 +16 -38
  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 +38 -14
  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 -163
  55. package/LICENSE +0 -19
  56. package/browser/manifest.json +0 -7
  57. package/browser/rpg.server.js +0 -22372
  58. package/browser/rpg.server.umd.cjs +0 -22403
  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 -414
  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 -16
  164. package/lib/express/server.js +0 -65
  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 -495
  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 -87
  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,6 +1,5 @@
1
1
  import { Gui } from './Gui';
2
2
  import { RpgPlayer } from '../Player/Player';
3
- import { IGui } from '../Interfaces/Gui';
4
3
  export declare enum DialogPosition {
5
4
  Top = "top",
6
5
  Bottom = "bottom",
@@ -19,7 +18,7 @@ export interface DialogOptions {
19
18
  typewriterEffect?: boolean;
20
19
  talkWith?: RpgPlayer;
21
20
  }
22
- export declare class DialogGui extends Gui implements IGui {
21
+ export declare class DialogGui extends Gui {
23
22
  constructor(player: RpgPlayer);
24
23
  openDialog(message: string, options: DialogOptions): Promise<any>;
25
24
  }
@@ -1,6 +1,5 @@
1
1
  import { RpgPlayer } from '../Player/Player';
2
- import { EventEmitter } from '@rpgjs/common';
3
- export declare class Gui extends EventEmitter {
2
+ export declare class Gui {
4
3
  id: string;
5
4
  protected player: RpgPlayer;
6
5
  private _close;
@@ -0,0 +1,22 @@
1
+ import { Constructor, RpgCommonPlayer } from '@rpgjs/common';
2
+ import { RpgPlayer } from './Player';
3
+ interface PlayerWithMixins extends RpgCommonPlayer {
4
+ parameters: any[];
5
+ getFormulas(name: string): any;
6
+ hasEffect(effect: string): boolean;
7
+ coefficientElements(attackerPlayer: RpgPlayer): number;
8
+ hp: number;
9
+ getFormulas(name: string): any;
10
+ hasEffect(effect: string): boolean;
11
+ }
12
+ export interface IBattleManager {
13
+ applyDamage(attackerPlayer: RpgPlayer, skill?: any): {
14
+ damage: number;
15
+ critical: boolean;
16
+ elementVulnerable: boolean;
17
+ guard: boolean;
18
+ superGuard: boolean;
19
+ };
20
+ }
21
+ export declare function WithBattleManager<TBase extends Constructor<PlayerWithMixins>>(Base: TBase): Constructor<IBattleManager> & TBase;
22
+ export {};
@@ -0,0 +1,18 @@
1
+ import { Constructor, RpgCommonPlayer } from '@rpgjs/common';
2
+ type ClassClass = any;
3
+ type ActorClass = any;
4
+ interface PlayerWithMixins extends RpgCommonPlayer {
5
+ databaseById(id: string): any;
6
+ addParameter(name: string, { start, end }: {
7
+ start: number;
8
+ end: number;
9
+ }): void;
10
+ addItem(item: any): void;
11
+ equip(item: any, equip: boolean): void;
12
+ }
13
+ export interface IClassManager {
14
+ setClass(_class: ClassClass | string): ClassClass;
15
+ setActor(actorClass: ActorClass | string): ActorClass;
16
+ }
17
+ export declare function WithClassManager<TBase extends Constructor<PlayerWithMixins>>(Base: TBase): Constructor<IClassManager> & TBase;
18
+ export {};
File without changes
@@ -0,0 +1,17 @@
1
+ import { Constructor, RpgCommonPlayer } from '@rpgjs/common';
2
+ import { ItemClass } from '@rpgjs/database';
3
+ /**
4
+ * Interface defining what MoveManager adds to a class
5
+ */
6
+ export interface IItemManager {
7
+ databaseById(id: string): ItemClass;
8
+ }
9
+ /**
10
+ * Move Manager mixin
11
+ *
12
+ * Adds methods to manage player movement
13
+ *
14
+ * @param Base - The base class to extend
15
+ * @returns A new class with move management capabilities
16
+ */
17
+ export declare function WithItemManager<TBase extends Constructor<RpgCommonPlayer>>(Base: TBase): Constructor<IItemManager> & TBase;
@@ -0,0 +1,177 @@
1
+ import { Constructor, RpgCommonPlayer, Direction, MovementStrategy, ProjectileType } from '@rpgjs/common';
2
+ import { RpgPlayer } from './Player';
3
+ export interface IMoveManager {
4
+ addMovement(strategy: MovementStrategy): void;
5
+ removeMovement(strategy: MovementStrategy): boolean;
6
+ clearMovements(): void;
7
+ hasActiveMovements(): boolean;
8
+ getActiveMovements(): MovementStrategy[];
9
+ moveTo(target: RpgCommonPlayer | {
10
+ x: number;
11
+ y: number;
12
+ }): void;
13
+ stopMoveTo(): void;
14
+ dash(direction: {
15
+ x: number;
16
+ y: number;
17
+ }, speed?: number, duration?: number): void;
18
+ knockback(direction: {
19
+ x: number;
20
+ y: number;
21
+ }, force?: number, duration?: number): void;
22
+ followPath(waypoints: Array<{
23
+ x: number;
24
+ y: number;
25
+ }>, speed?: number, loop?: boolean): void;
26
+ oscillate(direction: {
27
+ x: number;
28
+ y: number;
29
+ }, amplitude?: number, period?: number): void;
30
+ applyIceMovement(direction: {
31
+ x: number;
32
+ y: number;
33
+ }, maxSpeed?: number): void;
34
+ shootProjectile(type: ProjectileType, direction: {
35
+ x: number;
36
+ y: number;
37
+ }, speed?: number): void;
38
+ moveRoutes(routes: Routes): Promise<boolean>;
39
+ infiniteMoveRoute(routes: Routes): void;
40
+ breakRoutes(force?: boolean): void;
41
+ replayRoutes(): void;
42
+ }
43
+ type CallbackTileMove = (player: RpgPlayer, map: any) => Direction[];
44
+ type CallbackTurnMove = (player: RpgPlayer, map: any) => string;
45
+ type Routes = (string | Promise<any> | Direction | Direction[] | Function)[];
46
+ export declare enum Frequency {
47
+ Lowest = 600,
48
+ Lower = 400,
49
+ Low = 200,
50
+ High = 100,
51
+ Higher = 50,
52
+ Highest = 25,
53
+ None = 0
54
+ }
55
+ export declare enum Speed {
56
+ Slowest = 0.2,
57
+ Slower = 0.5,
58
+ Slow = 1,
59
+ Normal = 3,
60
+ Fast = 5,
61
+ Faster = 7,
62
+ Fastest = 10
63
+ }
64
+ /**
65
+ * @title Move
66
+ * @enum {Object}
67
+ *
68
+ * Move.right(repeat=1) | Movement of a number of pixels on the right
69
+ * Move.left(repeat=1) | Movement of a number of pixels on the left
70
+ * Move.up(repeat=1) | Movement of a number of pixels on the up
71
+ * Move.down(repeat=1) | Movement of a number of pixels on the down
72
+ * Move.random(repeat=1) | Movement of a number of pixels in a random direction
73
+ * Move.towardPlayer(player, repeat=1) | Moves a number of pixels in the direction of the designated player
74
+ * Move.awayFromPlayer(player, repeat=1) | Moves a number of pixels in the opposite direction of the designated player
75
+ * Move.tileRight(repeat=1) | Movement of a number of tiles on the right
76
+ * Move.tileLeft(repeat=1) | Movement of a number of tiles on the left
77
+ * Move.tileUp(repeat=1) | Movement of a number of tiles on the up
78
+ * Move.tileDown(repeat=1) | Movement of a number of tiles on the down
79
+ * Move.tileRandom(repeat=1) | Movement of a number of tiles in a random direction
80
+ * Move.tileTowardPlayer(player, repeat=1) | Moves a number of tiles in the direction of the designated player
81
+ * Move.tileAwayFromPlayer(player, repeat=1) | Moves a number of tiles in the opposite direction of the designated player
82
+ * Move.turnRight() | Turn to the right
83
+ * Move.turnLeft() | Turn to the left
84
+ * Move.turnUp() | Turn to the up
85
+ * Move.turnDown() | Turn to the down
86
+ * Move.turnRandom() | Turn to random direction
87
+ * Move.turnAwayFromPlayer(player) | Turns in the opposite direction of the designated player
88
+ * Move.turnTowardPlayer(player) | Turns in the direction of the designated player
89
+ * @memberof Move
90
+ * */
91
+ declare class MoveList {
92
+ repeatMove(direction: Direction, repeat: number): Direction[];
93
+ private repeatTileMove;
94
+ right(repeat?: number): Direction[];
95
+ left(repeat?: number): Direction[];
96
+ up(repeat?: number): Direction[];
97
+ down(repeat?: number): Direction[];
98
+ wait(sec: number): Promise<unknown>;
99
+ random(repeat?: number): Direction[];
100
+ tileRight(repeat?: number): CallbackTileMove;
101
+ tileLeft(repeat?: number): CallbackTileMove;
102
+ tileUp(repeat?: number): CallbackTileMove;
103
+ tileDown(repeat?: number): CallbackTileMove;
104
+ tileRandom(repeat?: number): CallbackTileMove;
105
+ private _awayFromPlayerDirection;
106
+ private _towardPlayerDirection;
107
+ private _awayFromPlayer;
108
+ towardPlayer(player: RpgPlayer, repeat?: number): (player: RpgPlayer, map: any) => any;
109
+ tileTowardPlayer(player: RpgPlayer, repeat?: number): (player: RpgPlayer, map: any) => any;
110
+ awayFromPlayer(player: RpgPlayer, repeat?: number): CallbackTileMove;
111
+ tileAwayFromPlayer(player: RpgPlayer, repeat?: number): CallbackTileMove;
112
+ turnLeft(): string;
113
+ turnRight(): string;
114
+ turnUp(): string;
115
+ turnDown(): string;
116
+ turnRandom(): string;
117
+ turnAwayFromPlayer(otherPlayer: RpgPlayer): CallbackTurnMove;
118
+ turnTowardPlayer(otherPlayer: RpgPlayer): CallbackTurnMove;
119
+ }
120
+ export declare const Move: MoveList;
121
+ /**
122
+ * Move Manager mixin
123
+ *
124
+ * Adds comprehensive movement management capabilities to a player class.
125
+ * Provides access to all available movement strategies and utility methods
126
+ * for common movement patterns.
127
+ *
128
+ * ## Features
129
+ * - **Strategy Management**: Add, remove, and query movement strategies
130
+ * - **Predefined Movements**: Quick access to common movement patterns
131
+ * - **Composite Movements**: Combine multiple strategies
132
+ * - **Physics Integration**: Seamless integration with Matter.js physics
133
+ *
134
+ * ## Available Movement Strategies
135
+ * - `LinearMove`: Constant velocity movement
136
+ * - `Dash`: Quick burst movement
137
+ * - `Knockback`: Push effect with decay
138
+ * - `PathFollow`: Follow waypoint sequences
139
+ * - `Oscillate`: Back-and-forth patterns
140
+ * - `SeekAvoid`: AI pathfinding with obstacle avoidance
141
+ * - `LinearRepulsion`: Smoother obstacle avoidance
142
+ * - `IceMovement`: Slippery surface physics
143
+ * - `ProjectileMovement`: Ballistic trajectories
144
+ * - `CompositeMovement`: Combine multiple strategies
145
+ *
146
+ * @param Base - The base class to extend
147
+ * @returns A new class with comprehensive movement management capabilities
148
+ *
149
+ * @example
150
+ * ```ts
151
+ * // Basic usage
152
+ * class MyPlayer extends WithMoveManager(RpgCommonPlayer) {
153
+ * onInput(direction: { x: number, y: number }) {
154
+ * // Apply dash movement on input
155
+ * this.dash(direction, 8, 200);
156
+ * }
157
+ *
158
+ * onIceTerrain() {
159
+ * // Switch to ice physics
160
+ * this.clearMovements();
161
+ * this.applyIceMovement({ x: 1, y: 0 }, 4);
162
+ * }
163
+ *
164
+ * createPatrol() {
165
+ * // Create patrol path
166
+ * const waypoints = [
167
+ * { x: 100, y: 100 },
168
+ * { x: 300, y: 100 },
169
+ * { x: 300, y: 300 }
170
+ * ];
171
+ * this.followPath(waypoints, 2, true);
172
+ * }
173
+ * }
174
+ * ```
175
+ */
176
+ export declare function WithMoveManager<TBase extends Constructor<RpgCommonPlayer>>(Base: TBase): Constructor<IMoveManager> & TBase;
177
+ export {};
@@ -0,0 +1,42 @@
1
+ import { Constructor, RpgCommonPlayer } from '@rpgjs/common';
2
+ export interface IWithParameterManager {
3
+ parameters: Map<string, any>;
4
+ hp: number;
5
+ sp: number;
6
+ exp: number;
7
+ level: number;
8
+ expForNextlevel: number;
9
+ param: {
10
+ [key: string]: number;
11
+ };
12
+ paramsModifier: {
13
+ [key: string]: {
14
+ value?: number;
15
+ rate?: number;
16
+ };
17
+ };
18
+ }
19
+ /**
20
+ * Mixin that adds parameter management functionality to a player class.
21
+ *
22
+ * This mixin provides comprehensive parameter management including:
23
+ * - Health Points (HP) and Skill Points (SP) management
24
+ * - Experience and level progression system
25
+ * - Custom parameter creation and modification
26
+ * - Parameter modifiers for temporary stat changes
27
+ *
28
+ * @template TBase - The base class constructor type
29
+ * @param Base - The base class to extend
30
+ * @returns A new class that extends the base with parameter management capabilities
31
+ *
32
+ * @example
33
+ * ```ts
34
+ * class MyPlayer extends WithParameterManager(BasePlayer) {
35
+ * constructor() {
36
+ * super();
37
+ * this.addParameter('strength', { start: 10, end: 100 });
38
+ * }
39
+ * }
40
+ * ```
41
+ */
42
+ export declare function WithParameterManager<TBase extends Constructor<RpgCommonPlayer>>(Base: TBase): TBase & Constructor<IWithParameterManager>;
@@ -0,0 +1,73 @@
1
+ import { RpgCommonPlayer, ShowAnimationParams, Constructor, ZoneOptions } from '@rpgjs/common';
2
+ import { IComponentManager } from './ComponentManager';
3
+ import { RpgMap } from '../rooms/map';
4
+ import { Context } from '@signe/di';
5
+ import { IGuiManager } from './GuiManager';
6
+ import { MockConnection } from '@signe/room';
7
+ import { IMoveManager } from './MoveManager';
8
+ import { IGoldManager } from './GoldManager';
9
+ import { IWithVariableManager } from './VariableManager';
10
+ import { IWithParameterManager } from './ParameterManager';
11
+ import { IWithSkillManager } from './SkillManager';
12
+ declare const RpgPlayer_base: Constructor<RpgCommonPlayer>;
13
+ /**
14
+ * RPG Player class with component management capabilities
15
+ */
16
+ export declare class RpgPlayer extends RpgPlayer_base {
17
+ map: RpgMap | null;
18
+ context?: Context;
19
+ conn: MockConnection | null;
20
+ events: import('@signe/reactive').WritableArraySignal<RpgEvent[]>;
21
+ constructor();
22
+ execMethod(method: string, methodData?: any[], target?: any): Promise<any>;
23
+ /**
24
+ * Change the map for this player
25
+ *
26
+ * @param mapId - The ID of the map to change to
27
+ * @param positions - Optional positions to place the player at
28
+ * @returns A promise that resolves when the map change is complete
29
+ *
30
+ * @example
31
+ * ```ts
32
+ * // Change player to map "town" at position {x: 10, y: 20}
33
+ * await player.changeMap("town", {x: 10, y: 20});
34
+ *
35
+ * // Change player to map "dungeon" at a named position
36
+ * await player.changeMap("dungeon", "entrance");
37
+ * ```
38
+ */
39
+ changeMap(mapId: string, positions?: {
40
+ x: number;
41
+ y: number;
42
+ z?: number;
43
+ } | string): Promise<any | null | boolean>;
44
+ teleport(positions: {
45
+ x: number;
46
+ y: number;
47
+ }): Promise<false | undefined>;
48
+ getCurrentMap<T extends RpgMap = RpgMap>(): T | null;
49
+ emit(type: string, value?: any): void;
50
+ showAnimation(params: ShowAnimationParams): void;
51
+ /**
52
+ * Run the change detection cycle. Normally, as soon as a hook is called in a class, the cycle is started. But you can start it manually
53
+ * The method calls the `onChanges` method on events and synchronizes all map data with the client.
54
+
55
+ * @title Run Sync Changes
56
+ * @method player.syncChanges()
57
+ * @returns {void}
58
+ * @memberof Player
59
+ */
60
+ syncChanges(): void;
61
+ databaseById(id: string): any;
62
+ private _eventChanges;
63
+ attachShape(id: string, options: ZoneOptions): void;
64
+ broadcastEffect(id: string, params: any): void;
65
+ showHit(text: string): void;
66
+ }
67
+ export declare class RpgEvent extends RpgPlayer {
68
+ execMethod(methodName: string, methodData?: any[], instance?: this): Promise<any>;
69
+ remove(): void;
70
+ }
71
+ export interface RpgPlayer extends RpgCommonPlayer, IComponentManager, IGuiManager, IMoveManager, IGoldManager, IWithVariableManager, IWithParameterManager, IWithSkillManager {
72
+ }
73
+ export {};
@@ -0,0 +1,23 @@
1
+ import { Constructor, RpgCommonPlayer } from '@rpgjs/common';
2
+ import { RpgPlayer } from './Player';
3
+ /**
4
+ * Interface defining dependencies from other mixins that SkillManager needs
5
+ */
6
+ interface SkillManagerDependencies {
7
+ sp: number;
8
+ skills(): any[];
9
+ hasEffect(effect: string): boolean;
10
+ databaseById(id: string): any;
11
+ applyStates(player: RpgPlayer, skill: any): void;
12
+ }
13
+ /**
14
+ * Interface defining what SkillManager adds to a class
15
+ */
16
+ export interface IWithSkillManager {
17
+ getSkill(skillClass: any | string): any;
18
+ learnSkill(skillId: any | string): any;
19
+ forgetSkill(skillId: any | string): any;
20
+ useSkill(skillId: any | string, otherPlayer?: RpgPlayer | RpgPlayer[]): any;
21
+ }
22
+ export declare function WithSkillManager<TBase extends Constructor<RpgCommonPlayer & SkillManagerDependencies>>(Base: TBase): Constructor<IWithSkillManager> & TBase;
23
+ export {};
@@ -0,0 +1,39 @@
1
+ import { Constructor, RpgCommonPlayer } from '@rpgjs/common';
2
+ import { WritableArraySignal } from '@signe/reactive';
3
+ import { RpgPlayer } from './Player';
4
+ interface StateManagerDependencies {
5
+ equipments(): any[];
6
+ databaseById(id: string | StateClass): any;
7
+ addState(stateClass: StateClass | string, chance?: number): object | null;
8
+ removeState(stateClass: StateClass | string, chance?: number): void;
9
+ }
10
+ /**
11
+ * Interface defining what MoveManager adds to a class
12
+ */
13
+ export interface IStateManager {
14
+ statesDefense: {
15
+ rate: number;
16
+ state: any;
17
+ }[];
18
+ statesEfficiency: WritableArraySignal<any[]>;
19
+ applyStates(player: RpgPlayer, states: {
20
+ addStates?: any[];
21
+ removeStates?: any[];
22
+ }): void;
23
+ getState(stateClass: StateClass | string): any;
24
+ addState(stateClass: StateClass | string, chance?: number): object | null;
25
+ removeState(stateClass: StateClass | string, chance?: number): void;
26
+ }
27
+ type StateClass = {
28
+ new (...args: any[]): any;
29
+ };
30
+ /**
31
+ * Move Manager mixin
32
+ *
33
+ * Adds methods to manage player movement
34
+ *
35
+ * @param Base - The base class to extend
36
+ * @returns A new class with move management capabilities
37
+ */
38
+ export declare function WithStateManager<TBase extends Constructor<RpgCommonPlayer & StateManagerDependencies>>(Base: TBase): Constructor<IStateManager> & TBase;
39
+ export {};
@@ -1,13 +1,16 @@
1
- import { ModuleType, RpgShape, Direction, Control } from '@rpgjs/common';
2
- import { RpgClassEvent, RpgEvent, RpgPlayer } from './Player/Player';
3
- import { RpgMap } from './Game/Map';
4
- import { RpgServerEngine } from './server';
5
- import { MapOptions } from './decorators/map';
6
- import { RpgClassMap } from './Scenes/Map';
7
- import { TiledMap } from '@rpgjs/tiled';
8
- import { WorldMap } from './Game/WorldMaps';
9
- import { MatchMakerOption, RpgMatchMaker } from './MatchMaker';
10
- import { IStoreState } from './Interfaces/StateStore';
1
+ import { RpgPlayer } from './Player/Player';
2
+ import { RpgMap } from './rooms/map';
3
+ import { RpgServerEngine } from './RpgServerEngine';
4
+ type RpgShape = any;
5
+ type RpgClassMap<T> = any;
6
+ type RpgClassEvent<T> = any;
7
+ type RpgEvent = any;
8
+ type MatchMakerOption = any;
9
+ type RpgMatchMaker = any;
10
+ type IStoreState = any;
11
+ type TiledMap = any;
12
+ type WorldMap = any;
13
+ type MapOptions = any;
11
14
  export interface RpgServerEngineHooks {
12
15
  /**
13
16
  * When the server starts
@@ -36,7 +39,7 @@ export interface RpgServerEngineHooks {
36
39
  *
37
40
  * @param {RpgServerEngine} server - The instance of the game server.
38
41
  * @param {SocketIO.Socket} socket - The socket instance for the connecting player. This can be used to access client-sent data, like tokens or other credentials.
39
- * @returns {Promise<string> | string} The function should return a promise that resolves to a player's unique identifier (e.g., user ID) if authentication is successful, or a string representing the user's ID. Alternatively, it can throw an error if authentication fails.
42
+ * @returns {Promise<string> | string | undefined} The function should return a promise that resolves to a player's unique identifier (e.g., user ID) if authentication is successful, or a string representing the user's ID. Alternatively, it can throw an error if authentication fails. If undefined is returned, the player id is generated.
40
43
  * @throws {string} Throwing an error will prevent the player from connecting, signifying a failed authentication attempt.
41
44
  *
42
45
  * @example
@@ -51,7 +54,7 @@ export interface RpgServerEngineHooks {
51
54
  * };
52
55
  * ```
53
56
  */
54
- auth?: (server: RpgServerEngine, socket: any) => Promise<string> | string | never;
57
+ auth?: (server: RpgServerEngine, socket: any) => Promise<string> | string | never | undefined;
55
58
  }
56
59
  export interface RpgPlayerHooks {
57
60
  /**
@@ -145,10 +148,7 @@ export interface RpgPlayerHooks {
145
148
  * @prop { (player: RpgPlayer, data: { input: Direction | Control | string, moving: boolean }) => any } [onInput]
146
149
  * @memberof RpgPlayerHooks
147
150
  */
148
- onInput?: (player: RpgPlayer, data: {
149
- input: Direction | Control | string;
150
- moving: boolean;
151
- }) => any;
151
+ onInput?: (player: RpgPlayer, data: any) => any;
152
152
  /**
153
153
  * When the player leaves the map
154
154
  *
@@ -210,6 +210,20 @@ export interface RpgPlayerHooks {
210
210
  */
211
211
  canChangeMap?: (player: RpgPlayer, nextMap: RpgClassMap<RpgMap>) => boolean | Promise<boolean>;
212
212
  }
213
+ export interface RpgEventHooks {
214
+ onInit?: (event: RpgEvent) => any;
215
+ onAction?: (event: RpgEvent, player: RpgPlayer) => any;
216
+ onBeforeCreated?: (object: any, map: RpgMap) => any;
217
+ onDetectInShape?: (event: RpgEvent, player: RpgPlayer, shape: RpgShape) => any;
218
+ onDetectOutShape?: (event: RpgEvent, player: RpgPlayer, shape: RpgShape) => any;
219
+ onInShape?: (event: RpgEvent, shape: RpgShape) => any;
220
+ onOutShape?: (event: RpgEvent, shape: RpgShape) => any;
221
+ onPlayerTouch?: (event: RpgEvent, player: RpgPlayer) => any;
222
+ onChanges?: (event: RpgEvent, player: RpgPlayer) => any;
223
+ }
224
+ export interface RpgMapHooks {
225
+ onBeforeUpdate<T = RpgMap>(mapData: any, map: T): T;
226
+ }
213
227
  export interface RpgServer {
214
228
  /**
215
229
  * Add hooks to the player or engine. All modules can listen to the hook
@@ -262,7 +276,7 @@ export interface RpgServer {
262
276
  * @prop { { client: null | Function, server: null | Function }[]} [imports]
263
277
  * @memberof RpgServer
264
278
  */
265
- imports?: ModuleType[];
279
+ imports?: any;
266
280
  /**
267
281
  * Object containing the hooks concerning the engine
268
282
  *
@@ -377,6 +391,8 @@ export interface RpgServer {
377
391
  * @memberof RpgServer
378
392
  * */
379
393
  maps?: RpgClassMap<RpgMap>[] | MapOptions[] | string[] | TiledMap[];
394
+ map?: RpgMapHooks;
395
+ event?: RpgEventHooks;
380
396
  /**
381
397
  * Array of all events. Each element is an `RpgEvent` class
382
398
  * Events can be used by placing a shape with the name of the event on Tiled Map Editor
@@ -477,3 +493,4 @@ export interface RpgServer {
477
493
  };
478
494
  };
479
495
  }
496
+ export {};
@@ -0,0 +1,5 @@
1
+ import { Server } from '@signe/room';
2
+ import { LobbyRoom } from './rooms/lobby';
3
+ export declare class RpgServerEngine extends Server {
4
+ rooms: (typeof LobbyRoom)[];
5
+ }
@@ -0,0 +1,2 @@
1
+ import { Context } from '@signe/di';
2
+ export declare const context: Context<any, any, Record<string, any>>;
@@ -0,0 +1,5 @@
1
+ import { Context } from '@signe/di';
2
+ export declare let context: Context | null;
3
+ export declare function inject<T>(service: (new (...args: any[]) => T) | string, _context?: Context): T;
4
+ export declare function setInject(_context: Context): void;
5
+ export declare function clearInject(): void;
@@ -0,0 +1,6 @@
1
+ import { Providers } from '@signe/di';
2
+ interface SetupOptions {
3
+ providers: Providers;
4
+ }
5
+ export declare function createServer(options: SetupOptions): any;
6
+ export {};
@@ -0,0 +1,9 @@
1
+ export * from './RpgServerEngine';
2
+ export * from './Player/MoveManager';
3
+ export * from './RpgServer';
4
+ export * from './core/setup';
5
+ export * from './core/inject';
6
+ export * from './Player/Player';
7
+ export * from './module';
8
+ export * from './rooms/map';
9
+ export * from './presets';