@rpgjs/client 3.1.0 → 3.3.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/Components/AbstractComponent.d.ts +31 -0
- package/lib/Components/AbstractComponent.js +104 -0
- package/lib/Components/AbstractComponent.js.map +1 -0
- package/lib/Components/BarComponent.d.ts +20 -0
- package/lib/Components/BarComponent.js +168 -0
- package/lib/Components/BarComponent.js.map +1 -0
- package/lib/Components/ColorComponent.d.ts +8 -6
- package/lib/Components/ColorComponent.js +25 -11
- package/lib/Components/ColorComponent.js.map +1 -1
- package/lib/Components/Component.d.ts +27 -6
- package/lib/Components/Component.js +216 -28
- package/lib/Components/Component.js.map +1 -1
- package/lib/Components/DebugComponent.d.ts +10 -0
- package/lib/Components/DebugComponent.js +33 -0
- package/lib/Components/DebugComponent.js.map +1 -0
- package/lib/Components/IComponent.d.ts +0 -0
- package/lib/Components/IComponent.js +2 -0
- package/lib/Components/IComponent.js.map +1 -0
- package/lib/Components/ImageComponent.d.ts +8 -6
- package/lib/Components/ImageComponent.js +19 -5
- package/lib/Components/ImageComponent.js.map +1 -1
- package/lib/Components/ShapeComponent.d.ts +10 -0
- package/lib/Components/ShapeComponent.js +57 -0
- package/lib/Components/ShapeComponent.js.map +1 -0
- package/lib/Components/TextComponent.d.ts +8 -3
- package/lib/Components/TextComponent.js +26 -4
- package/lib/Components/TextComponent.js.map +1 -1
- package/lib/Components/TileComponent.d.ts +7 -6
- package/lib/Components/TileComponent.js +21 -9
- package/lib/Components/TileComponent.js.map +1 -1
- package/lib/Effects/Animation.d.ts +21 -5
- package/lib/Effects/Animation.js +42 -15
- package/lib/Effects/Animation.js.map +1 -1
- package/lib/Effects/AnimationCharacter.d.ts +4 -1
- package/lib/Effects/AnimationCharacter.js +3 -0
- package/lib/Effects/AnimationCharacter.js.map +1 -1
- package/lib/GameEngine.d.ts +6 -7
- package/lib/GameEngine.js +31 -6
- package/lib/GameEngine.js.map +1 -1
- package/lib/KeyboardControls.d.ts +21 -10
- package/lib/KeyboardControls.js +29 -4
- package/lib/KeyboardControls.js.map +1 -1
- package/lib/RpgClientEngine.d.ts +22 -16
- package/lib/RpgClientEngine.js +40 -72
- package/lib/RpgClientEngine.js.map +1 -1
- package/lib/Scene/Map.d.ts +2 -1
- package/lib/Scene/Map.js.map +1 -1
- package/lib/Scene/Scene.d.ts +1 -1
- package/lib/Scene/Scene.js +0 -5
- package/lib/Scene/Scene.js.map +1 -1
- package/lib/Sound/Sound.d.ts +47 -28
- package/lib/Sound/Sound.js +4 -2
- package/lib/Sound/Sound.js.map +1 -1
- package/lib/Sprite/Character.d.ts +3 -0
- package/lib/Sprite/Character.js +14 -2
- package/lib/Sprite/Character.js.map +1 -1
- package/lib/Sprite/Spritesheet.d.ts +85 -48
- package/lib/Sprite/Spritesheet.js +4 -2
- package/lib/Sprite/Spritesheet.js.map +1 -1
- package/lib/Sprite/Spritesheets.d.ts +2 -1
- package/lib/Sprite/Spritesheets.js.map +1 -1
- package/lib/index.d.ts +19 -19
- package/lib/index.js +22 -22
- package/lib/index.js.map +1 -1
- package/package.json +6 -4
|
@@ -6,14 +6,26 @@ Object.defineProperty(exports, "__esModule", { value: true });
|
|
|
6
6
|
exports.TileComponent = void 0;
|
|
7
7
|
const Tile_1 = __importDefault(require("../Tilemap/Tile"));
|
|
8
8
|
const TileLayer_1 = __importDefault(require("../Tilemap/TileLayer"));
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
this.
|
|
14
|
-
this.
|
|
9
|
+
const AbstractComponent_1 = require("./AbstractComponent");
|
|
10
|
+
class TileComponent extends AbstractComponent_1.AbstractComponent {
|
|
11
|
+
constructor() {
|
|
12
|
+
super(...arguments);
|
|
13
|
+
this.cacheParams = [];
|
|
14
|
+
this.gid = 0;
|
|
15
15
|
}
|
|
16
|
-
|
|
16
|
+
onInit(cell) {
|
|
17
|
+
if (typeof this.value == 'number') {
|
|
18
|
+
this.gid = this.value;
|
|
19
|
+
}
|
|
20
|
+
else {
|
|
21
|
+
this.gid = this.value.gid;
|
|
22
|
+
}
|
|
23
|
+
this.updateRender({});
|
|
24
|
+
super.onInit(cell);
|
|
25
|
+
}
|
|
26
|
+
updateRender(object) {
|
|
27
|
+
var _a, _b, _c, _d;
|
|
28
|
+
this.removeChildren();
|
|
17
29
|
const scene = this.component.getScene();
|
|
18
30
|
const tilemap = scene.tilemap;
|
|
19
31
|
const tileset = TileLayer_1.default.findTileSet(this.gid, tilemap.tilesets);
|
|
@@ -21,8 +33,8 @@ class TileComponent extends PIXI.Container {
|
|
|
21
33
|
const tile = new Tile_1.default({
|
|
22
34
|
gid: this.gid
|
|
23
35
|
}, tileset);
|
|
24
|
-
tile.width = this.
|
|
25
|
-
tile.height = this.
|
|
36
|
+
tile.width = (_b = (_a = this.cell) === null || _a === void 0 ? void 0 : _a.width) !== null && _b !== void 0 ? _b : 0;
|
|
37
|
+
tile.height = (_d = (_c = this.cell) === null || _c === void 0 ? void 0 : _c.height) !== null && _d !== void 0 ? _d : 0;
|
|
26
38
|
this.addChild(tile);
|
|
27
39
|
}
|
|
28
40
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"TileComponent.js","sourceRoot":"","sources":["../../src/Components/TileComponent.ts"],"names":[],"mappings":";;;;;;
|
|
1
|
+
{"version":3,"file":"TileComponent.js","sourceRoot":"","sources":["../../src/Components/TileComponent.ts"],"names":[],"mappings":";;;;;;AAEA,2DAAkC;AAClC,qEAA4C;AAC5C,2DAAiE;AAGjE,MAAa,aAAc,SAAQ,qCAAsD;IAAzF;;QAEI,gBAAW,GAAa,EAAE,CAAA;QAC1B,QAAG,GAAW,CAAC,CAAA;IA6BnB,CAAC;IA3BG,MAAM,CAAC,IAAc;QACjB,IAAI,OAAO,IAAI,CAAC,KAAK,IAAI,QAAQ,EAAE;YAC/B,IAAI,CAAC,GAAG,GAAG,IAAI,CAAC,KAAK,CAAA;SACxB;aAAM;YACH,IAAI,CAAC,GAAG,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAA;SAC5B;QACD,IAAI,CAAC,YAAY,CAAC,EAAE,CAAC,CAAA;QACrB,KAAK,CAAC,MAAM,CAAC,IAAI,CAAC,CAAA;IACtB,CAAC;IAED,YAAY,CAAC,MAAW;;QACpB,IAAI,CAAC,cAAc,EAAE,CAAA;QACrB,MAAM,KAAK,GAAG,IAAI,CAAC,SAAS,CAAC,QAAQ,EAAY,CAAA;QACjD,MAAM,OAAO,GAAG,KAAK,CAAC,OAAO,CAAA;QAC7B,MAAM,OAAO,GAAG,mBAAS,CAAC,WAAW,CACjC,IAAI,CAAC,GAAG,EACR,OAAO,CAAC,QAAQ,CACnB,CAAA;QACD,IAAI,OAAO,EAAE;YACT,MAAM,IAAI,GAAG,IAAI,cAAI,CAAC;gBAClB,GAAG,EAAE,IAAI,CAAC,GAAG;aACT,EAAE,OAAO,CAAC,CAAA;YAClB,IAAI,CAAC,KAAK,GAAG,MAAA,MAAA,IAAI,CAAC,IAAI,0CAAE,KAAK,mCAAI,CAAC,CAAA;YAClC,IAAI,CAAC,MAAM,GAAG,MAAA,MAAA,IAAI,CAAC,IAAI,0CAAE,MAAM,mCAAI,CAAC,CAAA;YACpC,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAA;SACtB;IACL,CAAC;;AA/BL,sCAgCC;AA/BmB,gBAAE,GAAW,MAAM,CAAA"}
|
|
@@ -1,13 +1,24 @@
|
|
|
1
|
-
import { AnimationFrames, FrameOptions } from '../Sprite/Spritesheet';
|
|
1
|
+
import { SpritesheetOptions, TextureOptions, AnimationFrames, FrameOptions, TransformOptions } from '../Sprite/Spritesheet';
|
|
2
2
|
import { RpgComponent } from '../Components/Component';
|
|
3
|
+
import { Observable } from 'rxjs';
|
|
4
|
+
declare type Image = {
|
|
5
|
+
image: string;
|
|
6
|
+
};
|
|
7
|
+
declare type TextureOptionsMerging = TextureOptions & {
|
|
8
|
+
spriteWidth: number;
|
|
9
|
+
spriteHeight: number;
|
|
10
|
+
sound?: string;
|
|
11
|
+
} & Image & TransformOptions;
|
|
12
|
+
declare type FrameOptionsMerging = TextureOptionsMerging & FrameOptions;
|
|
13
|
+
declare type SpritesheetOptionsMerging = TextureOptionsMerging & SpritesheetOptions;
|
|
3
14
|
declare type AnimationDataFrames = {
|
|
4
15
|
container: PIXI.Container;
|
|
5
|
-
sprites:
|
|
16
|
+
sprites: FrameOptionsMerging[];
|
|
6
17
|
frames: PIXI.Texture[][];
|
|
7
18
|
name: string;
|
|
8
19
|
animations: AnimationFrames;
|
|
9
20
|
params: any[];
|
|
10
|
-
data:
|
|
21
|
+
data: TextureOptionsMerging;
|
|
11
22
|
};
|
|
12
23
|
export declare class Animation extends PIXI.Sprite {
|
|
13
24
|
id: string;
|
|
@@ -16,21 +27,26 @@ export declare class Animation extends PIXI.Sprite {
|
|
|
16
27
|
w: number;
|
|
17
28
|
h: number;
|
|
18
29
|
};
|
|
19
|
-
applyTransform:
|
|
20
|
-
private frames;
|
|
30
|
+
applyTransform: (frame: FrameOptionsMerging, data: TextureOptionsMerging, spritesheet: SpritesheetOptionsMerging) => Partial<FrameOptionsMerging>;
|
|
21
31
|
private spritesheet;
|
|
22
32
|
private currentAnimation;
|
|
23
33
|
private time;
|
|
24
34
|
private frameIndex;
|
|
25
35
|
private animations;
|
|
36
|
+
private _animation$;
|
|
37
|
+
readonly animation$: Observable<PIXI.Sprite | null>;
|
|
26
38
|
onFinish: () => void;
|
|
27
39
|
constructor(id: string);
|
|
28
40
|
private createTextures;
|
|
29
41
|
private createAnimations;
|
|
42
|
+
private getSpriteSize;
|
|
43
|
+
getSpriteHeight(): number;
|
|
44
|
+
getSpriteWidth(): number;
|
|
30
45
|
has(name: string): boolean;
|
|
31
46
|
get(name: string): AnimationDataFrames;
|
|
32
47
|
isPlaying(name?: string): boolean;
|
|
33
48
|
stop(): void;
|
|
34
49
|
play(name: string, params?: any[]): void;
|
|
50
|
+
update(deltaRatio: number): void;
|
|
35
51
|
}
|
|
36
52
|
export {};
|
package/lib/Effects/Animation.js
CHANGED
|
@@ -5,16 +5,19 @@ const common_1 = require("@rpgjs/common");
|
|
|
5
5
|
const Spritesheets_1 = require("../Sprite/Spritesheets");
|
|
6
6
|
const Logger_1 = require("../Logger");
|
|
7
7
|
const RpgSound_1 = require("../Sound/RpgSound");
|
|
8
|
+
const AnimationCharacter_1 = require("./AnimationCharacter");
|
|
9
|
+
const rxjs_1 = require("rxjs");
|
|
8
10
|
const { isFunction, arrayEquals } = common_1.Utils;
|
|
9
11
|
class Animation extends PIXI.Sprite {
|
|
10
12
|
constructor(id) {
|
|
11
13
|
super();
|
|
12
14
|
this.id = id;
|
|
13
|
-
this.frames = [];
|
|
14
15
|
this.currentAnimation = null;
|
|
15
16
|
this.time = 0;
|
|
16
17
|
this.frameIndex = 0;
|
|
17
18
|
this.animations = new Map();
|
|
19
|
+
this._animation$ = new rxjs_1.BehaviorSubject(null);
|
|
20
|
+
this.animation$ = this._animation$.asObservable();
|
|
18
21
|
this.spritesheet = Spritesheets_1.spritesheets.get(this.id);
|
|
19
22
|
if (!this.spritesheet) {
|
|
20
23
|
throw (0, Logger_1.log)(`Impossible to find the ${this.id} spritesheet. Did you put the right name or create the spritesheet?`);
|
|
@@ -24,8 +27,8 @@ class Animation extends PIXI.Sprite {
|
|
|
24
27
|
createTextures(options) {
|
|
25
28
|
const { width, height, framesHeight, framesWidth, image, offset } = options;
|
|
26
29
|
const { baseTexture } = PIXI.Texture.from(image);
|
|
27
|
-
const spriteWidth = options
|
|
28
|
-
const spriteHeight = options
|
|
30
|
+
const spriteWidth = options.spriteWidth;
|
|
31
|
+
const spriteHeight = options.spriteHeight;
|
|
29
32
|
const frames = [];
|
|
30
33
|
const offsetX = (offset && offset.x) || 0;
|
|
31
34
|
const offsetY = (offset && offset.y) || 0;
|
|
@@ -47,11 +50,15 @@ class Animation extends PIXI.Sprite {
|
|
|
47
50
|
}
|
|
48
51
|
createAnimations() {
|
|
49
52
|
const { textures } = this.spritesheet;
|
|
53
|
+
if (!textures) {
|
|
54
|
+
return;
|
|
55
|
+
}
|
|
50
56
|
for (let animationName in textures) {
|
|
51
|
-
const
|
|
57
|
+
const props = ['width', 'height', 'framesHeight', 'framesWidth', 'rectWidth', 'rectHeight', 'offset', 'image', 'sound'];
|
|
58
|
+
const parentObj = props
|
|
52
59
|
.reduce((prev, val) => (Object.assign(Object.assign({}, prev), { [val]: this.spritesheet[val] })), {});
|
|
53
60
|
const optionsTextures = Object.assign(Object.assign({}, parentObj), textures[animationName]);
|
|
54
|
-
const { rectWidth, width, framesWidth, rectHeight, height, framesHeight } = optionsTextures;
|
|
61
|
+
const { rectWidth, width = 0, framesWidth = 1, rectHeight, height = 0, framesHeight = 1 } = optionsTextures;
|
|
55
62
|
optionsTextures.spriteWidth = rectWidth ? rectWidth : width / framesWidth;
|
|
56
63
|
optionsTextures.spriteHeight = rectHeight ? rectHeight : height / framesHeight;
|
|
57
64
|
this.animations.set(animationName, {
|
|
@@ -65,6 +72,16 @@ class Animation extends PIXI.Sprite {
|
|
|
65
72
|
});
|
|
66
73
|
}
|
|
67
74
|
}
|
|
75
|
+
getSpriteSize(name) {
|
|
76
|
+
var _a, _b;
|
|
77
|
+
return ((_b = this.animations.get(((_a = this.currentAnimation) === null || _a === void 0 ? void 0 : _a.name) || AnimationCharacter_1.Animation.Stand)) === null || _b === void 0 ? void 0 : _b.data[name]) || 0;
|
|
78
|
+
}
|
|
79
|
+
getSpriteHeight() {
|
|
80
|
+
return this.getSpriteSize('spriteHeight');
|
|
81
|
+
}
|
|
82
|
+
getSpriteWidth() {
|
|
83
|
+
return this.getSpriteSize('spriteWidth');
|
|
84
|
+
}
|
|
68
85
|
has(name) {
|
|
69
86
|
return this.animations.has(name);
|
|
70
87
|
}
|
|
@@ -79,8 +96,9 @@ class Animation extends PIXI.Sprite {
|
|
|
79
96
|
return this.currentAnimation.name == name;
|
|
80
97
|
}
|
|
81
98
|
stop() {
|
|
99
|
+
var _a;
|
|
82
100
|
this.currentAnimation = null;
|
|
83
|
-
this.parent.removeChild(this);
|
|
101
|
+
(_a = this.parent) === null || _a === void 0 ? void 0 : _a.removeChild(this);
|
|
84
102
|
}
|
|
85
103
|
play(name, params = []) {
|
|
86
104
|
var _a;
|
|
@@ -108,14 +126,13 @@ class Animation extends PIXI.Sprite {
|
|
|
108
126
|
this.currentAnimation.container.addChild(sprite);
|
|
109
127
|
}
|
|
110
128
|
const sound = this.currentAnimation.data.sound;
|
|
111
|
-
if (
|
|
129
|
+
if (sound) {
|
|
112
130
|
RpgSound_1.RpgSound.get(sound).play();
|
|
113
131
|
}
|
|
114
132
|
this.addChild(this.currentAnimation.container);
|
|
115
133
|
// Updates immediately to avoid flickering
|
|
116
134
|
this.update(1);
|
|
117
135
|
}
|
|
118
|
-
/** @internal */
|
|
119
136
|
update(deltaRatio) {
|
|
120
137
|
if (!this.isPlaying() || !this.currentAnimation)
|
|
121
138
|
return;
|
|
@@ -143,22 +160,25 @@ class Animation extends PIXI.Sprite {
|
|
|
143
160
|
sprite[prop].set(...val);
|
|
144
161
|
}
|
|
145
162
|
};
|
|
146
|
-
|
|
163
|
+
function applyTransformValue(prop, alias) {
|
|
147
164
|
const optionProp = alias || prop;
|
|
148
165
|
const val = getVal(optionProp);
|
|
149
166
|
if (val !== undefined) {
|
|
150
167
|
sprite[prop] = val;
|
|
151
168
|
}
|
|
152
|
-
}
|
|
169
|
+
}
|
|
153
170
|
if (this.applyTransform) {
|
|
154
171
|
frame = Object.assign(Object.assign({}, frame), this.applyTransform(frame, data, this.spritesheet));
|
|
155
172
|
}
|
|
173
|
+
const realSize = getVal('spriteRealSize');
|
|
174
|
+
const heightOfSprite = typeof realSize == 'number' ? realSize : realSize === null || realSize === void 0 ? void 0 : realSize.height;
|
|
175
|
+
const widthOfSprite = typeof realSize == 'number' ? realSize : realSize === null || realSize === void 0 ? void 0 : realSize.width;
|
|
156
176
|
const applyAnchorBySize = () => {
|
|
157
|
-
|
|
158
|
-
|
|
159
|
-
|
|
160
|
-
const
|
|
161
|
-
const h =
|
|
177
|
+
if (heightOfSprite && this.hitbox) {
|
|
178
|
+
const { spriteWidth, spriteHeight } = data;
|
|
179
|
+
const w = ((spriteWidth - this.hitbox.w) / 2) / spriteWidth;
|
|
180
|
+
const gap = (spriteHeight - heightOfSprite) / 2;
|
|
181
|
+
const h = (spriteHeight - this.hitbox.h - gap) / spriteHeight;
|
|
162
182
|
sprite.anchor.set(w, h);
|
|
163
183
|
}
|
|
164
184
|
};
|
|
@@ -176,6 +196,13 @@ class Animation extends PIXI.Sprite {
|
|
|
176
196
|
applyTransformValue('angle');
|
|
177
197
|
applyTransformValue('rotation');
|
|
178
198
|
applyTransformValue('visible');
|
|
199
|
+
this._animation$.next({
|
|
200
|
+
spriteWidth: widthOfSprite || sprite.width,
|
|
201
|
+
spriteHeight: heightOfSprite || sprite.height,
|
|
202
|
+
anchor: sprite.anchor,
|
|
203
|
+
width: getVal('spriteWidth'),
|
|
204
|
+
height: getVal('spriteHeight')
|
|
205
|
+
});
|
|
179
206
|
}
|
|
180
207
|
if (!nextFrame) {
|
|
181
208
|
this.time = 0;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Animation.js","sourceRoot":"","sources":["../../src/Effects/Animation.ts"],"names":[],"mappings":";;;AAAA,0CAAqC;AACrC,yDAAqD;AAErD,sCAA+B;AAC/B,gDAA4C;
|
|
1
|
+
{"version":3,"file":"Animation.js","sourceRoot":"","sources":["../../src/Effects/Animation.ts"],"names":[],"mappings":";;;AAAA,0CAAqC;AACrC,yDAAqD;AAErD,sCAA+B;AAC/B,gDAA4C;AAE5C,6DAAiE;AACjE,+BAAkD;AAElD,MAAM,EAAE,UAAU,EAAE,WAAW,EAAE,GAAG,cAAK,CAAA;AAwBzC,MAAa,SAAU,SAAQ,IAAI,CAAC,MAAM;IAkBtC,YAAmB,EAAU;QACzB,KAAK,EAAE,CAAA;QADQ,OAAE,GAAF,EAAE,CAAQ;QATrB,qBAAgB,GAA+B,IAAI,CAAA;QACnD,SAAI,GAAW,CAAC,CAAA;QAChB,eAAU,GAAW,CAAC,CAAA;QACtB,eAAU,GAAqC,IAAI,GAAG,EAAE,CAAA;QACxD,gBAAW,GAAwC,IAAI,sBAAe,CAAC,IAAW,CAAC,CAAA;QAClF,eAAU,GAAmC,IAAI,CAAC,WAAW,CAAC,YAAY,EAAE,CAAA;QAMjF,IAAI,CAAC,WAAW,GAAG,2BAAY,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC,CAAA;QAC5C,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE;YACnB,MAAM,IAAA,YAAG,EAAC,0BAA0B,IAAI,CAAC,EAAE,qEAAqE,CAAC,CAAA;SACpH;QACD,IAAI,CAAC,gBAAgB,EAAE,CAAA;IAC3B,CAAC;IAEO,cAAc,CAAC,OAAwC;QAC3D,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,YAAY,EAAE,WAAW,EAAE,KAAK,EAAE,MAAM,EAAE,GAAG,OAAO,CAAA;QAC3E,MAAM,EAAE,WAAW,EAAE,GAAG,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,CAAA;QAChD,MAAM,WAAW,GAAG,OAAO,CAAC,WAAW,CAAA;QACvC,MAAM,YAAY,GAAG,OAAO,CAAC,YAAY,CAAA;QACzC,MAAM,MAAM,GAAqB,EAAE,CAAA;QACnC,MAAM,OAAO,GAAG,CAAC,MAAM,IAAI,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC,CAAA;QACzC,MAAM,OAAO,GAAG,CAAC,MAAM,IAAI,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC,CAAA;QACzC,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,YAAY,EAAE,CAAC,EAAE,EAAE;YACnC,MAAM,CAAC,CAAC,CAAC,GAAG,EAAE,CAAA;YACd,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,WAAW,EAAE,CAAC,EAAE,EAAE;gBAClC,MAAM,KAAK,GAAG,CAAC,GAAG,WAAW,GAAG,OAAO,CAAA;gBACvC,MAAM,KAAK,GAAG,CAAC,GAAG,YAAY,GAAG,OAAO,CAAA;gBACxC,IAAI,KAAK,GAAG,MAAM,EAAE;oBAChB,MAAM,IAAA,YAAG,EAAC,uDAAuD,IAAI,CAAC,EAAE,qFAAqF,CAAC,CAAA;iBACjK;gBACD,IAAI,KAAK,GAAG,KAAK,EAAE;oBACf,MAAM,IAAA,YAAG,EAAC,sDAAsD,IAAI,CAAC,EAAE,oFAAoF,CAAC,CAAA;iBAC/J;gBACD,MAAM,CAAC,CAAC,CAAC,CAAC,IAAI,CACV,IAAI,IAAI,CAAC,OAAO,CAAC,WAAW,EAAE,IAAI,IAAI,CAAC,SAAS,CAAC,KAAK,EAAE,KAAK,EAAE,WAAW,EAAE,YAAY,CAAC,CAAC,CAC7F,CAAA;aACJ;SACJ;QACD,OAAO,MAAM,CAAA;IACjB,CAAC;IAEO,gBAAgB;QACpB,MAAM,EAAE,QAAQ,EAAE,GAAG,IAAI,CAAC,WAAW,CAAA;QACrC,IAAI,CAAC,QAAQ,EAAE;YACX,OAAM;SACT;QACD,KAAK,IAAI,aAAa,IAAI,QAAQ,EAAE;YAChC,MAAM,KAAK,GAAoC,CAAC,OAAO,EAAE,QAAQ,EAAE,cAAc,EAAE,aAAa,EAAE,WAAW,EAAE,YAAY,EAAE,QAAQ,EAAE,OAAO,EAAE,OAAO,CAAC,CAAA;YACxJ,MAAM,SAAS,GAAG,KAAK;iBAClB,MAAM,CAAC,CAAC,IAAI,EAAE,GAAG,EAAE,EAAE,CAAC,iCAAM,IAAI,KAAE,CAAC,GAAG,CAAC,EAAE,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,IAAG,EAAE,EAAE,CAAC,CAAA;YAC3E,MAAM,eAAe,GAA0B,gCACxC,SAAS,GACT,QAAQ,CAAC,aAAa,CAAC,CACtB,CAAA;YACR,MAAM,EAAE,SAAS,EAAE,KAAK,GAAG,CAAC,EAAE,WAAW,GAAG,CAAC,EAAE,UAAU,EAAE,MAAM,GAAG,CAAC,EAAE,YAAY,GAAG,CAAC,EAAE,GAAG,eAAe,CAAA;YAC3G,eAAe,CAAC,WAAW,GAAG,SAAS,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,KAAK,GAAG,WAAW,CAAA;YACzE,eAAe,CAAC,YAAY,GAAG,UAAU,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,MAAM,GAAG,YAAY,CAAA;YAC9E,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,aAAa,EAAE;gBAC/B,SAAS,EAAE,IAAI,IAAI,CAAC,MAAM,EAAE;gBAC5B,MAAM,EAAE,IAAI,CAAC,cAAc,CAAC,eAAkD,CAAC;gBAC/E,IAAI,EAAE,aAAa;gBACnB,UAAU,EAAE,QAAQ,CAAC,aAAa,CAAC,CAAC,UAAU;gBAC9C,MAAM,EAAE,EAAE;gBACV,IAAI,EAAE,eAAe;gBACrB,OAAO,EAAE,EAAE;aACd,CAAC,CAAA;SACL;IACL,CAAC;IAEO,aAAa,CAAC,IAAoC;;QACtD,OAAO,CAAA,MAAA,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,CAAA,MAAA,IAAI,CAAC,gBAAgB,0CAAE,IAAI,KAAI,8BAAa,CAAC,KAAK,CAAC,0CAAE,IAAI,CAAC,IAAI,CAAC,KAAI,CAAC,CAAA;IACnG,CAAC;IAED,eAAe;QACX,OAAO,IAAI,CAAC,aAAa,CAAC,cAAc,CAAC,CAAA;IAC7C,CAAC;IAED,cAAc;QACV,OAAO,IAAI,CAAC,aAAa,CAAC,aAAa,CAAC,CAAA;IAC5C,CAAC;IAED,GAAG,CAAC,IAAY;QACZ,OAAO,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,IAAI,CAAC,CAAA;IACpC,CAAC;IAED,GAAG,CAAC,IAAY;QACZ,OAAO,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,IAAI,CAAwB,CAAA;IAC3D,CAAC;IAED,SAAS,CAAC,IAAa;QACnB,IAAI,CAAC,IAAI;YAAE,OAAO,CAAC,CAAC,IAAI,CAAC,gBAAgB,CAAA;QACzC,IAAI,IAAI,CAAC,gBAAgB,IAAI,IAAI;YAAE,OAAO,KAAK,CAAA;QAC/C,OAAO,IAAI,CAAC,gBAAgB,CAAC,IAAI,IAAI,IAAI,CAAA;IAC7C,CAAC;IAED,IAAI;;QACA,IAAI,CAAC,gBAAgB,GAAG,IAAI,CAAA;QAC5B,MAAA,IAAI,CAAC,MAAM,0CAAE,WAAW,CAAC,IAAI,CAAC,CAAA;IAClC,CAAC;IAED,IAAI,CAAC,IAAY,EAAE,SAAgB,EAAE;;QACjC,MAAM,UAAU,GAAG,MAAA,IAAI,CAAC,gBAAgB,0CAAE,MAAM,CAAA;QAEhD,IAAI,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,IAAI,WAAW,CAAC,MAAM,EAAE,UAAU,IAAI,EAAE,CAAC;YAAE,OAAM;QAEzE,MAAM,SAAS,GAAG,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,CAAA;QAEhC,IAAI,CAAC,SAAS,EAAE;YACZ,MAAM,IAAI,KAAK,CAAC,0BAA0B,IAAI,8CAA8C,IAAI,CAAC,EAAE,cAAc,CAAC,CAAA;SACrH;QAED,IAAI,CAAC,cAAc,EAAE,CAAA;QACrB,SAAS,CAAC,OAAO,GAAG,EAAE,CAAA;QACtB,IAAI,CAAC,gBAAgB,GAAG,SAAS,CAAA;QACjC,IAAI,CAAC,gBAAgB,CAAC,MAAM,GAAG,MAAM,CAAA;QACrC,IAAI,CAAC,IAAI,GAAG,CAAC,CAAA;QACb,IAAI,CAAC,UAAU,GAAG,CAAC,CAAA;QAEnB,IAAI,UAAU,GAAQ,SAAS,CAAC,UAAU,CAAC;QAC3C,UAAU,GAAG,UAAU,CAAC,UAAU,CAAC,CAAC,CAAC,CAAE,UAAuB,CAAC,GAAG,MAAM,CAAC,CAAC,CAAC,CAAC,UAAU,CAAA;QAEtF,IAAI,CAAC,gBAAgB,CAAC,SAAS,GAAG,IAAI,IAAI,CAAC,SAAS,EAAE,CAAA;QAEtD,KAAK,IAAI,SAAS,IAAK,UAAsC,EAAE;YAC3D,MAAM,MAAM,GAAG,IAAI,IAAI,CAAC,MAAM,EAAE,CAAA;YAChC,KAAK,IAAI,KAAK,IAAI,SAAS,EAAE;gBACzB,IAAI,CAAC,gBAAgB,CAAC,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,CAAA;aAC5C;YACD,IAAI,CAAC,gBAAgB,CAAC,SAAS,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAA;SACnD;QAED,MAAM,KAAK,GAAG,IAAI,CAAC,gBAAgB,CAAC,IAAI,CAAC,KAAK,CAAA;QAE9C,IAAI,KAAK,EAAE;YACP,mBAAQ,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,IAAI,EAAE,CAAA;SAC7B;QAED,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,gBAAgB,CAAC,SAAS,CAAC,CAAA;QAC9C,0CAA0C;QAC1C,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,CAAA;IAClB,CAAC;IAED,MAAM,CAAC,UAAkB;QACrB,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,IAAI,CAAC,IAAI,CAAC,gBAAgB;YAAE,OAAM;QAEvD,MAAM,EAAE,MAAM,EAAE,SAAS,EAAE,OAAO,EAAE,IAAI,EAAE,GAAG,IAAI,CAAC,gBAAgB,CAAA;QAClE,IAAI,KAAK,GAAG,OAAO,CAAC,IAAI,CAAC,UAAU,CAAC,CAAA;QACpC,MAAM,SAAS,GAAG,OAAO,CAAC,IAAI,CAAC,UAAU,GAAG,CAAC,CAAC,CAAA;QAE9C,IAAI,IAAI,CAAC,QAAQ,EAAE;YACf,MAAM,MAAM,GAAG,IAAI,CAAC,QAAQ,CAAA;YAC5B,MAAM,GAAG,GAAG,MAAM,aAAN,MAAM,uBAAN,MAAM,CAAE,qBAAqB,CAAC,QAAQ,CAAC,CAAA;YACnD,IAAI,GAAG,EAAE;gBACL,SAAS,CAAC,CAAC,GAAG,GAAG,CAAC,CAAC,CAAA;gBACnB,SAAS,CAAC,CAAC,GAAG,GAAG,CAAC,CAAC,CAAA;aACtB;SACJ;QAED,KAAK,IAAI,OAAO,IAAI,SAAS,CAAC,QAAQ,EAAE;YACpC,MAAM,MAAM,GAAG,OAAsB,CAAA;YAErC,IAAI,CAAC,KAAK,IAAI,KAAK,CAAC,MAAM,IAAI,SAAS,IAAI,KAAK,CAAC,MAAM,IAAI,SAAS,EAAE;gBAClE,SAAQ;aACX;YAED,MAAM,CAAC,OAAO,GAAG,MAAM,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,KAAK,CAAC,MAAM,CAAC,CAAA;YAEnD,MAAM,MAAM,GAAG,CAAmC,IAAO,EAAmC,EAAE,CAC1F,KAAK,CAAC,IAAI,CAAC,IAAI,IAAI,CAAC,IAAI,CAAC,IAAI,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,CAAA;YAEvD,MAAM,cAAc,GAAG,CAA0C,IAAO,EAAQ,EAAE;gBAC9E,MAAM,GAAG,GAAG,MAAM,CAAI,IAAI,CAAC,CAAA;gBAC3B,IAAI,GAAG,EAAE;oBACL,MAAM,CAAC,IAAc,CAAC,CAAC,GAAG,CAAC,GAAG,GAAI,CAAC,CAAA;iBACtC;YACL,CAAC,CAAA;YAID,SAAS,mBAAmB,CAAmC,IAAO,EAAE,KAAS;gBAC7E,MAAM,UAAU,GAAG,KAAK,IAAI,IAAI,CAAA;gBAChC,MAAM,GAAG,GAAG,MAAM,CAAI,UAAU,CAAC,CAAA;gBACjC,IAAI,GAAG,KAAK,SAAS,EAAE;oBACnB,MAAM,CAAC,IAAc,CAAC,GAAG,GAAG,CAAA;iBAC/B;YACL,CAAC;YAED,IAAI,IAAI,CAAC,cAAc,EAAE;gBACrB,KAAK,mCACE,KAAK,GACL,IAAI,CAAC,cAAc,CAAC,KAAK,EAAE,IAAI,EAAE,IAAI,CAAC,WAAW,CAAC,CACxD,CAAA;aAEJ;YAED,MAAM,QAAQ,GAAG,MAAM,CAAmB,gBAAgB,CAAC,CAAA;YAC3D,MAAM,cAAc,GAAG,OAAO,QAAQ,IAAI,QAAQ,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,QAAQ,aAAR,QAAQ,uBAAR,QAAQ,CAAE,MAAM,CAAA;YAChF,MAAM,aAAa,GAAG,OAAO,QAAQ,IAAI,QAAQ,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,QAAQ,aAAR,QAAQ,uBAAR,QAAQ,CAAE,KAAK,CAAA;YAE9E,MAAM,iBAAiB,GAAG,GAAG,EAAE;gBAC3B,IAAI,cAAc,IAAI,IAAI,CAAC,MAAM,EAAE;oBAC/B,MAAM,EAAE,WAAW,EAAE,YAAY,EAAE,GAAG,IAAI,CAAA;oBAC1C,MAAM,CAAC,GAAG,CAAC,CAAC,WAAW,GAAG,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,GAAG,WAAW,CAAA;oBAC3D,MAAM,GAAG,GAAG,CAAC,YAAY,GAAG,cAAc,CAAC,GAAG,CAAC,CAAA;oBAC/C,MAAM,CAAC,GAAG,CAAC,YAAY,GAAG,IAAI,CAAC,MAAM,CAAC,CAAC,GAAG,GAAG,CAAC,GAAG,YAAY,CAAA;oBAC7D,MAAM,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC,CAAA;iBAC1B;YACL,CAAC,CAAA;YAED,IAAI,KAAK,CAAC,KAAK,EAAE;gBACb,mBAAQ,CAAC,GAAG,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,IAAI,EAAE,CAAA;aACnC;YAED,iBAAiB,EAAE,CAAA;YAEnB,cAAc,CAAC,QAAQ,CAAC,CAAA;YACxB,cAAc,CAAC,OAAO,CAAC,CAAA;YACvB,cAAc,CAAC,MAAM,CAAC,CAAA;YACtB,cAAc,CAAC,OAAO,CAAC,CAAA;YAEvB,mBAAmB,CAAC,OAAO,EAAE,SAAS,CAAC,CAAA;YACvC,mBAAmB,CAAC,GAAG,CAAC,CAAA;YACxB,mBAAmB,CAAC,GAAG,CAAC,CAAA;YACxB,mBAAmB,CAAC,OAAO,CAAC,CAAA;YAC5B,mBAAmB,CAAC,UAAU,CAAC,CAAA;YAC/B,mBAAmB,CAAC,SAAS,CAAC,CAAA;YAE9B,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC;gBAClB,WAAW,EAAE,aAAa,IAAI,MAAM,CAAC,KAAK;gBAC1C,YAAY,EAAE,cAAc,IAAI,MAAM,CAAC,MAAM;gBAC7C,MAAM,EAAE,MAAM,CAAC,MAAM;gBACrB,KAAK,EAAE,MAAM,CAAM,aAAa,CAAC;gBACjC,MAAM,EAAE,MAAM,CAAM,cAAc,CAAC;aAC/B,CAAC,CAAA;SACZ;QAED,IAAI,CAAC,SAAS,EAAE;YACZ,IAAI,CAAC,IAAI,GAAG,CAAC,CAAA;YACb,IAAI,CAAC,UAAU,GAAG,CAAC,CAAA;YACnB,IAAI,IAAI,CAAC,QAAQ;gBAAE,IAAI,CAAC,QAAQ,EAAE,CAAA;YAClC,OAAM;SACT;QAED,IAAI,CAAC,IAAI,IAAI,UAAU,CAAA;QAEvB,IAAI,IAAI,CAAC,IAAI,IAAI,SAAS,CAAC,IAAI,EAAE;YAC7B,IAAI,CAAC,UAAU,EAAE,CAAA;SACpB;IACL,CAAC;CACJ;AAtQD,8BAsQC"}
|
|
@@ -5,5 +5,8 @@ var Animation;
|
|
|
5
5
|
(function (Animation) {
|
|
6
6
|
Animation["Stand"] = "stand";
|
|
7
7
|
Animation["Walk"] = "walk";
|
|
8
|
+
Animation["Attack"] = "attack";
|
|
9
|
+
Animation["Defense"] = "defense";
|
|
10
|
+
Animation["Skill"] = "skill";
|
|
8
11
|
})(Animation = exports.Animation || (exports.Animation = {}));
|
|
9
12
|
//# sourceMappingURL=AnimationCharacter.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"AnimationCharacter.js","sourceRoot":"","sources":["../../src/Effects/AnimationCharacter.ts"],"names":[],"mappings":";;;AAAA,IAAY,
|
|
1
|
+
{"version":3,"file":"AnimationCharacter.js","sourceRoot":"","sources":["../../src/Effects/AnimationCharacter.ts"],"names":[],"mappings":";;;AAAA,IAAY,SAMX;AAND,WAAY,SAAS;IACjB,4BAAe,CAAA;IACf,0BAAa,CAAA;IACb,8BAAiB,CAAA;IACjB,gCAAmB,CAAA;IACnB,4BAAe,CAAA;AACnB,CAAC,EANW,SAAS,GAAT,iBAAS,KAAT,iBAAS,QAMpB"}
|
package/lib/GameEngine.d.ts
CHANGED
|
@@ -2,10 +2,7 @@ import { RpgCommonGame, RpgCommonPlayer, RpgShape } from "@rpgjs/common";
|
|
|
2
2
|
import { Observable } from "rxjs";
|
|
3
3
|
import { RpgRenderer } from "./Renderer";
|
|
4
4
|
import { RpgClientEngine } from "./RpgClientEngine";
|
|
5
|
-
|
|
6
|
-
object: any;
|
|
7
|
-
paramsChanged: any;
|
|
8
|
-
};
|
|
5
|
+
import { ObjectFixture } from "@rpgjs/types";
|
|
9
6
|
export declare class GameEngineClient extends RpgCommonGame {
|
|
10
7
|
playerId: string;
|
|
11
8
|
standalone: boolean;
|
|
@@ -13,6 +10,7 @@ export declare class GameEngineClient extends RpgCommonGame {
|
|
|
13
10
|
renderer: RpgRenderer;
|
|
14
11
|
private _objects;
|
|
15
12
|
private _obsObjects;
|
|
13
|
+
private _obsObjectsDeleteNotifier$;
|
|
16
14
|
private _shapes;
|
|
17
15
|
private _objectsChanged;
|
|
18
16
|
world: {
|
|
@@ -22,7 +20,7 @@ export declare class GameEngineClient extends RpgCommonGame {
|
|
|
22
20
|
getObject: (id: string) => RpgCommonPlayer | null;
|
|
23
21
|
getShape: (id: string) => RpgShape | null;
|
|
24
22
|
getAll: (id: string) => RpgCommonPlayer | RpgShape | null;
|
|
25
|
-
removeObject: (id:
|
|
23
|
+
removeObject: (id: string) => boolean;
|
|
26
24
|
getObjectsOfGroup: () => any;
|
|
27
25
|
getShapesOfGroup: () => {
|
|
28
26
|
[id: string]: ObjectFixture;
|
|
@@ -56,9 +54,10 @@ export declare class GameEngineClient extends RpgCommonGame {
|
|
|
56
54
|
getShape(id: string): ObjectFixture | null;
|
|
57
55
|
getObjectAndShape(id: string): ObjectFixture | null;
|
|
58
56
|
resetObjects(): void;
|
|
57
|
+
getDeleteNotifier(id: string): Observable<void>;
|
|
59
58
|
private _remove;
|
|
60
|
-
removeObject(id:
|
|
61
|
-
removeShape(id:
|
|
59
|
+
removeObject(id: string): boolean;
|
|
60
|
+
removeShape(id: string): boolean;
|
|
62
61
|
removeObjectAndShape(id: string): boolean;
|
|
63
62
|
static toArray(obj: any, prop: string): void;
|
|
64
63
|
updateObject(obj: any): {
|
package/lib/GameEngine.js
CHANGED
|
@@ -9,6 +9,7 @@ class GameEngineClient extends common_1.RpgCommonGame {
|
|
|
9
9
|
super(common_1.GameSide.Client);
|
|
10
10
|
this._objects = new rxjs_1.BehaviorSubject({});
|
|
11
11
|
this._obsObjects = {};
|
|
12
|
+
this._obsObjectsDeleteNotifier$ = {};
|
|
12
13
|
this._shapes = new rxjs_1.BehaviorSubject({});
|
|
13
14
|
this._objectsChanged = new rxjs_1.BehaviorSubject({});
|
|
14
15
|
this.world = {
|
|
@@ -92,11 +93,17 @@ class GameEngineClient extends common_1.RpgCommonGame {
|
|
|
92
93
|
this._objects.next({});
|
|
93
94
|
this._shapes.next({});
|
|
94
95
|
}
|
|
96
|
+
getDeleteNotifier(id) {
|
|
97
|
+
return this._obsObjectsDeleteNotifier$[id].asObservable();
|
|
98
|
+
}
|
|
95
99
|
_remove(prop, id) {
|
|
96
100
|
const logic = prop == '_objects' ? this.getObject(id) : this.getShape(id);
|
|
97
101
|
if (logic) {
|
|
98
102
|
const objects = Object.assign({}, this[prop].value); // clone
|
|
99
103
|
delete objects[id];
|
|
104
|
+
this._obsObjectsDeleteNotifier$[id].next();
|
|
105
|
+
this._obsObjectsDeleteNotifier$[id].complete();
|
|
106
|
+
this._obsObjects[id].complete();
|
|
100
107
|
delete this._obsObjects[id];
|
|
101
108
|
this[prop].next(objects);
|
|
102
109
|
return true;
|
|
@@ -121,13 +128,31 @@ class GameEngineClient extends common_1.RpgCommonGame {
|
|
|
121
128
|
}
|
|
122
129
|
updateObject(obj) {
|
|
123
130
|
const { playerId: id, params, localEvent, paramsChanged, isShape } = obj;
|
|
124
|
-
|
|
131
|
+
const layoutToArray = (params) => {
|
|
132
|
+
const layout = params.layout;
|
|
133
|
+
if (layout) {
|
|
134
|
+
['center', 'top', 'right', 'bottom', 'left'].forEach((key) => {
|
|
135
|
+
if (!layout[key])
|
|
136
|
+
return;
|
|
137
|
+
GameEngineClient.toArray(layout[key], 'lines');
|
|
138
|
+
if (!layout[key].lines)
|
|
139
|
+
return;
|
|
140
|
+
layout[key].lines.map(layout => {
|
|
141
|
+
GameEngineClient.toArray(layout, 'col');
|
|
142
|
+
});
|
|
143
|
+
});
|
|
144
|
+
}
|
|
145
|
+
};
|
|
146
|
+
layoutToArray(params);
|
|
125
147
|
GameEngineClient.toArray(params, 'polygon');
|
|
126
148
|
const isMe = () => id == this.playerId;
|
|
127
149
|
let logic;
|
|
128
150
|
let teleported = false;
|
|
129
151
|
let propName = '_objects';
|
|
130
|
-
const createObsForObject = (data) =>
|
|
152
|
+
const createObsForObject = (data) => {
|
|
153
|
+
this._obsObjectsDeleteNotifier$[id] = new rxjs_1.Subject();
|
|
154
|
+
this._obsObjects[id] = new rxjs_1.BehaviorSubject(data);
|
|
155
|
+
};
|
|
131
156
|
if (isShape) {
|
|
132
157
|
propName = '_shapes';
|
|
133
158
|
logic = this.world.getShape(id);
|
|
@@ -163,15 +188,15 @@ class GameEngineClient extends common_1.RpgCommonGame {
|
|
|
163
188
|
if (!localEvent &&
|
|
164
189
|
(key == 'position' ||
|
|
165
190
|
(key == 'direction' && paramsChanged && paramsChanged.position))) {
|
|
166
|
-
if (isMe())
|
|
191
|
+
if (isMe() && logic.canMove)
|
|
167
192
|
continue;
|
|
168
193
|
}
|
|
169
194
|
logic[key] = params[key];
|
|
170
195
|
}
|
|
171
196
|
if (paramsChanged) {
|
|
172
|
-
|
|
173
|
-
if (paramsChanged.
|
|
174
|
-
logic.componentChanged = paramsChanged.
|
|
197
|
+
layoutToArray(paramsChanged);
|
|
198
|
+
if (paramsChanged.layout)
|
|
199
|
+
logic.componentChanged = paramsChanged.layout;
|
|
175
200
|
if (paramsChanged.teleported) {
|
|
176
201
|
teleported = true;
|
|
177
202
|
logic.position = Object.assign({}, params.position); // clone
|
package/lib/GameEngine.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"GameEngine.js","sourceRoot":"","sources":["../src/GameEngine.ts"],"names":[],"mappings":";;;AAAA,
|
|
1
|
+
{"version":3,"file":"GameEngine.js","sourceRoot":"","sources":["../src/GameEngine.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,16 +1,8 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { ControlOptions, Controls } from '@rpgjs/types';
|
|
2
2
|
import { RpgClientEngine } from './RpgClientEngine';
|
|
3
|
-
export interface ControlOptions {
|
|
4
|
-
repeat?: boolean;
|
|
5
|
-
bind: string | string[] | Input | Input[];
|
|
6
|
-
method?: Function;
|
|
7
|
-
}
|
|
8
|
-
export interface Controls {
|
|
9
|
-
[controlName: string]: ControlOptions;
|
|
10
|
-
}
|
|
11
3
|
declare type BoundKey = {
|
|
12
4
|
actionName: string;
|
|
13
|
-
options:
|
|
5
|
+
options: ControlOptions;
|
|
14
6
|
parameters?: any;
|
|
15
7
|
};
|
|
16
8
|
export declare class KeyboardControls {
|
|
@@ -101,6 +93,9 @@ export declare class KeyboardControls {
|
|
|
101
93
|
* * repeat {boolean} The key can be held down to repeat the action. (false by default)
|
|
102
94
|
* * bind {string | string[]} To which key is linked the control
|
|
103
95
|
* * method {Function} Function to be triggered. If you do not set this property, the name of the control is sent directly to the server.
|
|
96
|
+
* * delay {object|number} (since v3.2.0) Indicates how long (in milliseconds) the player can press the key again to perform the action
|
|
97
|
+
* * delay.duration
|
|
98
|
+
* * delay.otherControls {string | string[]} Indicates the other controls that will also have the delay at the same time
|
|
104
99
|
*
|
|
105
100
|
* ```ts
|
|
106
101
|
* import { Control, Input } from '@rpgjs/client'
|
|
@@ -141,6 +136,21 @@ export declare class KeyboardControls {
|
|
|
141
136
|
method({ actionName }) {
|
|
142
137
|
console.log('cool', actionName)
|
|
143
138
|
}
|
|
139
|
+
},
|
|
140
|
+
|
|
141
|
+
// The player can redo the action after 400ms
|
|
142
|
+
mycustom3: {
|
|
143
|
+
bind: Input.C,
|
|
144
|
+
delay: 400 // ms
|
|
145
|
+
},
|
|
146
|
+
|
|
147
|
+
// The player can redo the action (mycustom4) and the directions after 400ms
|
|
148
|
+
mycustom4: {
|
|
149
|
+
bind: Input.C,
|
|
150
|
+
delay: {
|
|
151
|
+
duration: 400,
|
|
152
|
+
otherControls: [Control.Up, Control.Down, Control.Left, Control.Right]
|
|
153
|
+
}
|
|
144
154
|
}
|
|
145
155
|
})
|
|
146
156
|
*
|
|
@@ -159,5 +169,6 @@ export declare class KeyboardControls {
|
|
|
159
169
|
* @memberof KeyboardControls
|
|
160
170
|
*/
|
|
161
171
|
setInputs(inputs: Controls): void;
|
|
172
|
+
get options(): Controls;
|
|
162
173
|
}
|
|
163
174
|
export {};
|
package/lib/KeyboardControls.js
CHANGED
|
@@ -212,10 +212,13 @@ class KeyboardControls {
|
|
|
212
212
|
return;
|
|
213
213
|
const boundKeys = Object.keys(this.boundKeys);
|
|
214
214
|
const applyInput = (keyName) => {
|
|
215
|
-
|
|
216
|
-
if (
|
|
215
|
+
const keyState = this.keyState[keyName];
|
|
216
|
+
if (!keyState)
|
|
217
|
+
return;
|
|
218
|
+
const { isDown, count } = keyState;
|
|
219
|
+
if (isDown) {
|
|
217
220
|
const { repeat, method } = this.boundKeys[keyName].options;
|
|
218
|
-
if (repeat ||
|
|
221
|
+
if ((repeat || count == 0)) {
|
|
219
222
|
let parameters = this.boundKeys[keyName].parameters;
|
|
220
223
|
if (typeof parameters === "function") {
|
|
221
224
|
parameters = parameters();
|
|
@@ -306,8 +309,9 @@ class KeyboardControls {
|
|
|
306
309
|
}
|
|
307
310
|
this.keyState[keyName].isDown = isDown;
|
|
308
311
|
// key up, reset press count
|
|
309
|
-
if (!isDown)
|
|
312
|
+
if (!isDown) {
|
|
310
313
|
this.keyState[keyName].count = 0;
|
|
314
|
+
}
|
|
311
315
|
// keep reference to the last key pressed to avoid duplicates
|
|
312
316
|
this.lastKeyPressed = isDown ? e.keyCode : null;
|
|
313
317
|
}
|
|
@@ -410,6 +414,9 @@ class KeyboardControls {
|
|
|
410
414
|
* * repeat {boolean} The key can be held down to repeat the action. (false by default)
|
|
411
415
|
* * bind {string | string[]} To which key is linked the control
|
|
412
416
|
* * method {Function} Function to be triggered. If you do not set this property, the name of the control is sent directly to the server.
|
|
417
|
+
* * delay {object|number} (since v3.2.0) Indicates how long (in milliseconds) the player can press the key again to perform the action
|
|
418
|
+
* * delay.duration
|
|
419
|
+
* * delay.otherControls {string | string[]} Indicates the other controls that will also have the delay at the same time
|
|
413
420
|
*
|
|
414
421
|
* ```ts
|
|
415
422
|
* import { Control, Input } from '@rpgjs/client'
|
|
@@ -450,6 +457,21 @@ class KeyboardControls {
|
|
|
450
457
|
method({ actionName }) {
|
|
451
458
|
console.log('cool', actionName)
|
|
452
459
|
}
|
|
460
|
+
},
|
|
461
|
+
|
|
462
|
+
// The player can redo the action after 400ms
|
|
463
|
+
mycustom3: {
|
|
464
|
+
bind: Input.C,
|
|
465
|
+
delay: 400 // ms
|
|
466
|
+
},
|
|
467
|
+
|
|
468
|
+
// The player can redo the action (mycustom4) and the directions after 400ms
|
|
469
|
+
mycustom4: {
|
|
470
|
+
bind: Input.C,
|
|
471
|
+
delay: {
|
|
472
|
+
duration: 400,
|
|
473
|
+
otherControls: [Control.Up, Control.Down, Control.Left, Control.Right]
|
|
474
|
+
}
|
|
453
475
|
}
|
|
454
476
|
})
|
|
455
477
|
*
|
|
@@ -487,6 +509,9 @@ class KeyboardControls {
|
|
|
487
509
|
}
|
|
488
510
|
this._controlsOptions = inputs;
|
|
489
511
|
}
|
|
512
|
+
get options() {
|
|
513
|
+
return this._controlsOptions;
|
|
514
|
+
}
|
|
490
515
|
}
|
|
491
516
|
exports.KeyboardControls = KeyboardControls;
|
|
492
517
|
//# sourceMappingURL=KeyboardControls.js.map
|