@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.
- package/{lib → dist}/Gui/DialogGui.d.ts +1 -2
- package/{lib → dist}/Gui/Gui.d.ts +1 -2
- package/dist/Player/BattleManager.d.ts +22 -0
- package/dist/Player/ClassManager.d.ts +18 -0
- package/dist/Player/Event.d.ts +0 -0
- package/dist/Player/ItemManager.d.ts +17 -0
- package/dist/Player/MoveManager.d.ts +177 -0
- package/dist/Player/ParameterManager.d.ts +42 -0
- package/dist/Player/Player.d.ts +73 -0
- package/dist/Player/SkillManager.d.ts +23 -0
- package/dist/Player/StateManager.d.ts +39 -0
- package/{lib → dist}/RpgServer.d.ts +34 -17
- package/dist/RpgServerEngine.d.ts +5 -0
- package/dist/core/context.d.ts +2 -0
- package/dist/core/inject.d.ts +5 -0
- package/dist/core/setup.d.ts +6 -0
- package/dist/index.d.ts +9 -0
- package/dist/index.js +29673 -0
- package/dist/index.js.map +1 -0
- package/dist/module.d.ts +2 -0
- package/dist/rooms/lobby.d.ts +6 -0
- package/dist/rooms/map.d.ts +110 -0
- package/package.json +16 -38
- package/src/Gui/DialogGui.ts +3 -4
- package/src/Gui/Gui.ts +4 -6
- package/src/Player/BattleManager.ts +108 -99
- package/src/Player/ClassManager.ts +47 -46
- package/src/Player/ComponentManager.ts +26 -535
- package/src/Player/EffectManager.ts +44 -59
- package/src/Player/ElementManager.ts +70 -72
- package/src/Player/Event.ts +0 -0
- package/src/Player/GoldManager.ts +24 -6
- package/src/Player/GuiManager.ts +106 -97
- package/src/Player/ItemFixture.ts +22 -17
- package/src/Player/ItemManager.ts +234 -225
- package/src/Player/MoveManager.ts +1047 -457
- package/src/Player/ParameterManager.ts +59 -37
- package/src/Player/Player.ts +272 -1058
- package/src/Player/SkillManager.ts +146 -137
- package/src/Player/StateManager.ts +124 -98
- package/src/Player/VariableManager.ts +23 -3
- package/src/RpgServer.ts +38 -14
- package/src/RpgServerEngine.ts +7 -0
- package/src/core/context.ts +3 -0
- package/src/core/inject.ts +17 -0
- package/src/core/setup.ts +20 -0
- package/src/index.ts +9 -31
- package/src/module.ts +32 -0
- package/src/presets/index.ts +1 -3
- package/src/rooms/lobby.ts +24 -0
- package/src/rooms/map.ts +311 -0
- package/tsconfig.json +26 -23
- package/vite.config.ts +21 -0
- package/CHANGELOG.md +0 -163
- package/LICENSE +0 -19
- package/browser/manifest.json +0 -7
- package/browser/rpg.server.js +0 -22372
- package/browser/rpg.server.umd.cjs +0 -22403
- package/lib/Game/EventManager.d.ts +0 -54
- package/lib/Game/EventManager.js +0 -107
- package/lib/Game/EventManager.js.map +0 -1
- package/lib/Game/Map.d.ts +0 -191
- package/lib/Game/Map.js +0 -414
- package/lib/Game/Map.js.map +0 -1
- package/lib/Game/WorldMaps.d.ts +0 -17
- package/lib/Game/WorldMaps.js +0 -28
- package/lib/Game/WorldMaps.js.map +0 -1
- package/lib/Gui/DialogGui.js +0 -57
- package/lib/Gui/DialogGui.js.map +0 -1
- package/lib/Gui/Gui.js +0 -37
- package/lib/Gui/Gui.js.map +0 -1
- package/lib/Gui/MenuGui.js +0 -23
- package/lib/Gui/MenuGui.js.map +0 -1
- package/lib/Gui/NotificationGui.js +0 -8
- package/lib/Gui/NotificationGui.js.map +0 -1
- package/lib/Gui/ShopGui.js +0 -40
- package/lib/Gui/ShopGui.js.map +0 -1
- package/lib/Gui/index.js +0 -7
- package/lib/Gui/index.js.map +0 -1
- package/lib/Interfaces/Gui.d.ts +0 -4
- package/lib/Interfaces/Gui.js +0 -2
- package/lib/Interfaces/Gui.js.map +0 -1
- package/lib/Interfaces/StateStore.d.ts +0 -5
- package/lib/Interfaces/StateStore.js +0 -2
- package/lib/Interfaces/StateStore.js.map +0 -1
- package/lib/MatchMaker.d.ts +0 -24
- package/lib/MatchMaker.js +0 -42
- package/lib/MatchMaker.js.map +0 -1
- package/lib/Monitor/index.d.ts +0 -17
- package/lib/Monitor/index.js +0 -72
- package/lib/Monitor/index.js.map +0 -1
- package/lib/Player/BattleManager.d.ts +0 -36
- package/lib/Player/BattleManager.js +0 -101
- package/lib/Player/BattleManager.js.map +0 -1
- package/lib/Player/ClassManager.d.ts +0 -47
- package/lib/Player/ClassManager.js +0 -65
- package/lib/Player/ClassManager.js.map +0 -1
- package/lib/Player/ComponentManager.d.ts +0 -397
- package/lib/Player/ComponentManager.js +0 -505
- package/lib/Player/ComponentManager.js.map +0 -1
- package/lib/Player/EffectManager.d.ts +0 -46
- package/lib/Player/EffectManager.js +0 -75
- package/lib/Player/EffectManager.js.map +0 -1
- package/lib/Player/ElementManager.d.ts +0 -108
- package/lib/Player/ElementManager.js +0 -120
- package/lib/Player/ElementManager.js.map +0 -1
- package/lib/Player/GoldManager.d.ts +0 -17
- package/lib/Player/GoldManager.js +0 -27
- package/lib/Player/GoldManager.js.map +0 -1
- package/lib/Player/GuiManager.d.ts +0 -247
- package/lib/Player/GuiManager.js +0 -291
- package/lib/Player/GuiManager.js.map +0 -1
- package/lib/Player/ItemFixture.d.ts +0 -7
- package/lib/Player/ItemFixture.js +0 -19
- package/lib/Player/ItemFixture.js.map +0 -1
- package/lib/Player/ItemManager.d.ts +0 -331
- package/lib/Player/ItemManager.js +0 -475
- package/lib/Player/ItemManager.js.map +0 -1
- package/lib/Player/MoveManager.d.ts +0 -333
- package/lib/Player/MoveManager.js +0 -450
- package/lib/Player/MoveManager.js.map +0 -1
- package/lib/Player/ParameterManager.d.ts +0 -316
- package/lib/Player/ParameterManager.js +0 -408
- package/lib/Player/ParameterManager.js.map +0 -1
- package/lib/Player/Player.d.ts +0 -828
- package/lib/Player/Player.js +0 -927
- package/lib/Player/Player.js.map +0 -1
- package/lib/Player/SkillManager.d.ts +0 -163
- package/lib/Player/SkillManager.js +0 -223
- package/lib/Player/SkillManager.js.map +0 -1
- package/lib/Player/StateManager.d.ts +0 -185
- package/lib/Player/StateManager.js +0 -228
- package/lib/Player/StateManager.js.map +0 -1
- package/lib/Player/VariableManager.d.ts +0 -46
- package/lib/Player/VariableManager.js +0 -52
- package/lib/Player/VariableManager.js.map +0 -1
- package/lib/Query.d.ts +0 -127
- package/lib/Query.js +0 -159
- package/lib/Query.js.map +0 -1
- package/lib/RpgServer.js +0 -2
- package/lib/RpgServer.js.map +0 -1
- package/lib/Scenes/Map.d.ts +0 -136
- package/lib/Scenes/Map.js +0 -273
- package/lib/Scenes/Map.js.map +0 -1
- package/lib/decorators/event.d.ts +0 -43
- package/lib/decorators/event.js +0 -13
- package/lib/decorators/event.js.map +0 -1
- package/lib/decorators/map.d.ts +0 -178
- package/lib/decorators/map.js +0 -43
- package/lib/decorators/map.js.map +0 -1
- package/lib/entry-point.d.ts +0 -34
- package/lib/entry-point.js +0 -70
- package/lib/entry-point.js.map +0 -1
- package/lib/express/api.d.ts +0 -3
- package/lib/express/api.js +0 -105
- package/lib/express/api.js.map +0 -1
- package/lib/express/errors/NotAuthorized.d.ts +0 -4
- package/lib/express/errors/NotAuthorized.js +0 -7
- package/lib/express/errors/NotAuthorized.js.map +0 -1
- package/lib/express/errors/NotFound.d.ts +0 -4
- package/lib/express/errors/NotFound.js +0 -7
- package/lib/express/errors/NotFound.js.map +0 -1
- package/lib/express/server.d.ts +0 -16
- package/lib/express/server.js +0 -65
- package/lib/express/server.js.map +0 -1
- package/lib/index.d.ts +0 -20
- package/lib/index.js +0 -19
- package/lib/index.js.map +0 -1
- package/lib/inject.d.ts +0 -22
- package/lib/inject.js +0 -29
- package/lib/inject.js.map +0 -1
- package/lib/logs/index.js +0 -6
- package/lib/logs/index.js.map +0 -1
- package/lib/logs/item.js +0 -34
- package/lib/logs/item.js.map +0 -1
- package/lib/logs/log.js +0 -7
- package/lib/logs/log.js.map +0 -1
- package/lib/logs/skill.js +0 -19
- package/lib/logs/skill.js.map +0 -1
- package/lib/logs/state.js +0 -13
- package/lib/logs/state.js.map +0 -1
- package/lib/models/Item.d.ts +0 -10
- package/lib/models/Item.js +0 -2
- package/lib/models/Item.js.map +0 -1
- package/lib/presets/index.js +0 -65
- package/lib/presets/index.js.map +0 -1
- package/lib/server.d.ts +0 -137
- package/lib/server.js +0 -443
- package/lib/server.js.map +0 -1
- package/rpg.toml +0 -14
- package/src/Game/EventManager.ts +0 -125
- package/src/Game/Map.ts +0 -495
- package/src/Game/WorldMaps.ts +0 -45
- package/src/Interfaces/Gui.ts +0 -4
- package/src/Interfaces/StateStore.ts +0 -5
- package/src/MatchMaker.ts +0 -65
- package/src/Monitor/index.ts +0 -78
- package/src/Query.ts +0 -172
- package/src/Scenes/Map.ts +0 -310
- package/src/decorators/event.ts +0 -58
- package/src/decorators/map.ts +0 -226
- package/src/entry-point.ts +0 -111
- package/src/express/api.ts +0 -118
- package/src/express/errors/NotAuthorized.ts +0 -6
- package/src/express/errors/NotFound.ts +0 -6
- package/src/express/server.ts +0 -87
- package/src/inject.ts +0 -33
- package/src/models/Item.ts +0 -11
- package/src/server.ts +0 -459
- /package/{lib → dist}/Gui/MenuGui.d.ts +0 -0
- /package/{lib → dist}/Gui/NotificationGui.d.ts +0 -0
- /package/{lib → dist}/Gui/ShopGui.d.ts +0 -0
- /package/{lib → dist}/Gui/index.d.ts +0 -0
- /package/{lib → dist}/logs/index.d.ts +0 -0
- /package/{lib → dist}/logs/item.d.ts +0 -0
- /package/{lib → dist}/logs/log.d.ts +0 -0
- /package/{lib → dist}/logs/skill.d.ts +0 -0
- /package/{lib → dist}/logs/state.d.ts +0 -0
- /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
|
|
21
|
+
export declare class DialogGui extends Gui {
|
|
23
22
|
constructor(player: RpgPlayer);
|
|
24
23
|
openDialog(message: string, options: DialogOptions): Promise<any>;
|
|
25
24
|
}
|
|
@@ -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 {
|
|
2
|
-
import {
|
|
3
|
-
import {
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
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?:
|
|
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 { 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;
|
package/dist/index.d.ts
ADDED
|
@@ -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';
|