added isActivatable() method to implement through interface
This commit is contained in:
parent
2322f5f76d
commit
989897cb01
@ -37,6 +37,7 @@ export abstract class Character extends Container implements OutlineableInterfac
|
|||||||
protected lastDirection: PlayerAnimationDirections = PlayerAnimationDirections.Down;
|
protected lastDirection: PlayerAnimationDirections = PlayerAnimationDirections.Down;
|
||||||
//private teleportation: Sprite;
|
//private teleportation: Sprite;
|
||||||
private invisible: boolean;
|
private invisible: boolean;
|
||||||
|
private clickable: boolean;
|
||||||
public companion?: Companion;
|
public companion?: Companion;
|
||||||
private emote: Phaser.GameObjects.DOMElement | null = null;
|
private emote: Phaser.GameObjects.DOMElement | null = null;
|
||||||
private emoteTween: Phaser.Tweens.Tween | null = null;
|
private emoteTween: Phaser.Tweens.Tween | null = null;
|
||||||
@ -62,6 +63,7 @@ export abstract class Character extends Container implements OutlineableInterfac
|
|||||||
this.scene = scene;
|
this.scene = scene;
|
||||||
this.playerName = name;
|
this.playerName = name;
|
||||||
this.invisible = true;
|
this.invisible = true;
|
||||||
|
this.clickable = false;
|
||||||
|
|
||||||
this.sprites = new Map<string, Sprite>();
|
this.sprites = new Map<string, Sprite>();
|
||||||
this._pictureStore = writable(undefined);
|
this._pictureStore = writable(undefined);
|
||||||
@ -98,13 +100,7 @@ export abstract class Character extends Container implements OutlineableInterfac
|
|||||||
this.playerNameText.setOrigin(0.5).setDepth(DEPTH_INGAME_TEXT_INDEX);
|
this.playerNameText.setOrigin(0.5).setDepth(DEPTH_INGAME_TEXT_INDEX);
|
||||||
this.add(this.playerNameText);
|
this.add(this.playerNameText);
|
||||||
|
|
||||||
if (isClickable) {
|
this.setClickable(isClickable);
|
||||||
this.setInteractive({
|
|
||||||
hitArea: new Phaser.Geom.Circle(0, 0, interactiveRadius),
|
|
||||||
hitAreaCallback: Phaser.Geom.Circle.Contains, //eslint-disable-line @typescript-eslint/unbound-method
|
|
||||||
useHandCursor: true,
|
|
||||||
});
|
|
||||||
}
|
|
||||||
|
|
||||||
this.outlineColorStoreUnsubscribe = this.outlineColorStore.subscribe((color) => {
|
this.outlineColorStoreUnsubscribe = this.outlineColorStore.subscribe((color) => {
|
||||||
if (color === undefined) {
|
if (color === undefined) {
|
||||||
@ -135,6 +131,10 @@ export abstract class Character extends Container implements OutlineableInterfac
|
|||||||
}
|
}
|
||||||
|
|
||||||
public setClickable(clickable: boolean = true): void {
|
public setClickable(clickable: boolean = true): void {
|
||||||
|
if (this.clickable === clickable) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
this.clickable = clickable;
|
||||||
if (clickable) {
|
if (clickable) {
|
||||||
this.setInteractive({
|
this.setInteractive({
|
||||||
hitArea: new Phaser.Geom.Circle(0, 0, interactiveRadius),
|
hitArea: new Phaser.Geom.Circle(0, 0, interactiveRadius),
|
||||||
@ -146,6 +146,10 @@ export abstract class Character extends Container implements OutlineableInterfac
|
|||||||
this.disableInteractive();
|
this.disableInteractive();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public isClickable() {
|
||||||
|
return this.clickable;
|
||||||
|
}
|
||||||
|
|
||||||
public getPosition(): { x: number, y: number } {
|
public getPosition(): { x: number, y: number } {
|
||||||
return { x: this.x, y: this.y };
|
return { x: this.x, y: this.y };
|
||||||
}
|
}
|
||||||
|
@ -61,6 +61,13 @@ export class RemotePlayer extends Character implements ActivatableInterface {
|
|||||||
});
|
});
|
||||||
|
|
||||||
this.bindEventHandlers();
|
this.bindEventHandlers();
|
||||||
|
|
||||||
|
this.registerActionsMenuAction({
|
||||||
|
actionName: "ddd",
|
||||||
|
callback: () => {
|
||||||
|
console.log('ddd');
|
||||||
|
},
|
||||||
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
public updatePosition(position: PointInterface): void {
|
public updatePosition(position: PointInterface): void {
|
||||||
@ -98,6 +105,10 @@ export class RemotePlayer extends Character implements ActivatableInterface {
|
|||||||
super.destroy();
|
super.destroy();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public isActivatable(): boolean {
|
||||||
|
return this.isClickable();
|
||||||
|
}
|
||||||
|
|
||||||
private updateIsClickable(): void {
|
private updateIsClickable(): void {
|
||||||
this.setClickable(this.registeredActions.length > 0);
|
this.setClickable(this.registeredActions.length > 0);
|
||||||
}
|
}
|
||||||
|
@ -1,6 +1,7 @@
|
|||||||
|
|
||||||
export interface ActivatableInterface {
|
export interface ActivatableInterface {
|
||||||
readonly activationRadius: number;
|
readonly activationRadius: number;
|
||||||
|
isActivatable: () => boolean;
|
||||||
activate: () => void;
|
activate: () => void;
|
||||||
getPosition: () => { x: number, y: number };
|
getPosition: () => { x: number, y: number };
|
||||||
}
|
}
|
||||||
|
@ -70,7 +70,7 @@ export class ActivatablesManager {
|
|||||||
let closestObject: ActivatableInterface | undefined = undefined;
|
let closestObject: ActivatableInterface | undefined = undefined;
|
||||||
|
|
||||||
for (const [object, distance] of this.activatableObjectsDistances.entries()) {
|
for (const [object, distance] of this.activatableObjectsDistances.entries()) {
|
||||||
if (object.activationRadius > distance && shortestDistance > distance) {
|
if (object.isActivatable() && object.activationRadius > distance && shortestDistance > distance) {
|
||||||
shortestDistance = distance;
|
shortestDistance = distance;
|
||||||
closestObject = object;
|
closestObject = object;
|
||||||
}
|
}
|
||||||
|
@ -75,6 +75,10 @@ export class ActionableItem implements ActivatableInterface{
|
|||||||
return this.sprite.scene.plugins.get("rexOutlinePipeline") as unknown as OutlinePipelinePlugin | undefined;
|
return this.sprite.scene.plugins.get("rexOutlinePipeline") as unknown as OutlinePipelinePlugin | undefined;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public isActivatable(): boolean {
|
||||||
|
return this.isSelectable;
|
||||||
|
}
|
||||||
|
|
||||||
public activate(): void {
|
public activate(): void {
|
||||||
this.onActivateCallback(this);
|
this.onActivateCallback(this);
|
||||||
}
|
}
|
||||||
|
@ -53,7 +53,10 @@ export class GameSceneUserInputHandler implements UserInputHandlerInterface {
|
|||||||
public handlePointerDownEvent(pointer: Phaser.Input.Pointer, gameObjects: Phaser.GameObjects.GameObject[]): void {}
|
public handlePointerDownEvent(pointer: Phaser.Input.Pointer, gameObjects: Phaser.GameObjects.GameObject[]): void {}
|
||||||
|
|
||||||
public handleSpaceKeyUpEvent(event: Event): Event {
|
public handleSpaceKeyUpEvent(event: Event): Event {
|
||||||
this.gameScene.getActivatablesManager().getSelectedActivatableObject()?.activate();
|
const activatable = this.gameScene.getActivatablesManager().getSelectedActivatableObject();
|
||||||
|
if (activatable && activatable.isActivatable()) {
|
||||||
|
activatable.activate();
|
||||||
|
}
|
||||||
return event;
|
return event;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -1,188 +0,0 @@
|
|||||||
{ "compressionlevel":-1,
|
|
||||||
"height":30,
|
|
||||||
"infinite":false,
|
|
||||||
"layers":[
|
|
||||||
{
|
|
||||||
"data":[1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1],
|
|
||||||
"height":30,
|
|
||||||
"id":1,
|
|
||||||
"name":"floor",
|
|
||||||
"opacity":1,
|
|
||||||
"properties":[
|
|
||||||
{
|
|
||||||
"name":"openWebsite",
|
|
||||||
"type":"string",
|
|
||||||
"value":"script.php"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"name":"openWebsiteAllowApi",
|
|
||||||
"type":"bool",
|
|
||||||
"value":true
|
|
||||||
}],
|
|
||||||
"type":"tilelayer",
|
|
||||||
"visible":true,
|
|
||||||
"width":30,
|
|
||||||
"x":0,
|
|
||||||
"y":0
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"data":[24, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 24, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0],
|
|
||||||
"height":30,
|
|
||||||
"id":6,
|
|
||||||
"name":"furnitures",
|
|
||||||
"opacity":1,
|
|
||||||
"type":"tilelayer",
|
|
||||||
"visible":true,
|
|
||||||
"width":30,
|
|
||||||
"x":0,
|
|
||||||
"y":0
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"data":[0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 12, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0],
|
|
||||||
"height":30,
|
|
||||||
"id":2,
|
|
||||||
"name":"start",
|
|
||||||
"opacity":1,
|
|
||||||
"type":"tilelayer",
|
|
||||||
"visible":true,
|
|
||||||
"width":30,
|
|
||||||
"x":0,
|
|
||||||
"y":0
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"draworder":"topdown",
|
|
||||||
"id":3,
|
|
||||||
"name":"floorLayer",
|
|
||||||
"objects":[
|
|
||||||
{
|
|
||||||
"height":115.775966464835,
|
|
||||||
"id":1,
|
|
||||||
"name":"",
|
|
||||||
"rotation":0,
|
|
||||||
"text":
|
|
||||||
{
|
|
||||||
"fontfamily":"MS Shell Dlg 2",
|
|
||||||
"pixelsize":21,
|
|
||||||
"text":"Set Viewport - Move the camera to the given point. It will be locked if Lock checkbox is checked",
|
|
||||||
"wrap":true
|
|
||||||
},
|
|
||||||
"type":"",
|
|
||||||
"visible":true,
|
|
||||||
"width":315.4375,
|
|
||||||
"x":68.4021076998051,
|
|
||||||
"y":160.733918128655
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"height":115.776,
|
|
||||||
"id":4,
|
|
||||||
"name":"",
|
|
||||||
"rotation":0,
|
|
||||||
"text":
|
|
||||||
{
|
|
||||||
"fontfamily":"MS Shell Dlg 2",
|
|
||||||
"pixelsize":21,
|
|
||||||
"text":"Follow Player - Camera will start following the player if doesn't do this already",
|
|
||||||
"wrap":true
|
|
||||||
},
|
|
||||||
"type":"",
|
|
||||||
"visible":true,
|
|
||||||
"width":315.438,
|
|
||||||
"x":64.7309301350722,
|
|
||||||
"y":256.224715416861
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"height":30.8202477876106,
|
|
||||||
"id":8,
|
|
||||||
"name":"",
|
|
||||||
"rotation":0,
|
|
||||||
"text":
|
|
||||||
{
|
|
||||||
"fontfamily":"MS Shell Dlg 2",
|
|
||||||
"pixelsize":21,
|
|
||||||
"text":"x: 16 y: 16",
|
|
||||||
"wrap":true
|
|
||||||
},
|
|
||||||
"type":"",
|
|
||||||
"visible":true,
|
|
||||||
"width":111.991330228225,
|
|
||||||
"x":39.0206367023754,
|
|
||||||
"y":2.47529762459247
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"height":30.8202,
|
|
||||||
"id":9,
|
|
||||||
"name":"",
|
|
||||||
"rotation":0,
|
|
||||||
"text":
|
|
||||||
{
|
|
||||||
"fontfamily":"MS Shell Dlg 2",
|
|
||||||
"pixelsize":21,
|
|
||||||
"text":"x: 464 y: 432",
|
|
||||||
"wrap":true
|
|
||||||
},
|
|
||||||
"type":"",
|
|
||||||
"visible":true,
|
|
||||||
"width":149.997520726595,
|
|
||||||
"x":483.920662086633,
|
|
||||||
"y":417.193532976246
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"height":113.333333333333,
|
|
||||||
"id":10,
|
|
||||||
"name":"",
|
|
||||||
"rotation":0,
|
|
||||||
"text":
|
|
||||||
{
|
|
||||||
"fontfamily":"MS Shell Dlg 2",
|
|
||||||
"pixelsize":21,
|
|
||||||
"text":"Top: 256\/512 Center: 496\/655 Width: 480 Height: 286",
|
|
||||||
"wrap":true
|
|
||||||
},
|
|
||||||
"type":"",
|
|
||||||
"visible":true,
|
|
||||||
"width":172,
|
|
||||||
"x":256,
|
|
||||||
"y":512
|
|
||||||
}],
|
|
||||||
"opacity":1,
|
|
||||||
"type":"objectgroup",
|
|
||||||
"visible":true,
|
|
||||||
"x":0,
|
|
||||||
"y":0
|
|
||||||
}],
|
|
||||||
"nextlayerid":7,
|
|
||||||
"nextobjectid":11,
|
|
||||||
"orientation":"orthogonal",
|
|
||||||
"properties":[
|
|
||||||
{
|
|
||||||
"name":"openWebsite",
|
|
||||||
"type":"string",
|
|
||||||
"value":"script.php"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"name":"openWebsiteAllowApi",
|
|
||||||
"type":"bool",
|
|
||||||
"value":true
|
|
||||||
}],
|
|
||||||
"renderorder":"right-down",
|
|
||||||
"tiledversion":"1.7.2",
|
|
||||||
"tileheight":32,
|
|
||||||
"tilesets":[
|
|
||||||
{
|
|
||||||
"columns":11,
|
|
||||||
"firstgid":1,
|
|
||||||
"image":"..\/tileset1.png",
|
|
||||||
"imageheight":352,
|
|
||||||
"imagewidth":352,
|
|
||||||
"margin":0,
|
|
||||||
"name":"tileset1",
|
|
||||||
"spacing":0,
|
|
||||||
"tilecount":121,
|
|
||||||
"tileheight":32,
|
|
||||||
"tilewidth":32
|
|
||||||
}],
|
|
||||||
"tilewidth":32,
|
|
||||||
"type":"map",
|
|
||||||
"version":"1.6",
|
|
||||||
"width":30
|
|
||||||
}
|
|
@ -1,50 +0,0 @@
|
|||||||
<!doctype html>
|
|
||||||
<html lang="en">
|
|
||||||
<head>
|
|
||||||
<script src="<?php echo $_SERVER["FRONT_URL"] ?>/iframe_api.js"></script>
|
|
||||||
<script>
|
|
||||||
window.addEventListener('load', () => {
|
|
||||||
//@ts-ignore
|
|
||||||
WA.camera.onCameraUpdate((worldView) => console.log(worldView));
|
|
||||||
WA.onInit().then(() => {
|
|
||||||
console.log('After WA init');
|
|
||||||
const setCameraButton = document.getElementById('setCameraButton');
|
|
||||||
const followPlayerButton = document.getElementById('followPlayerButton');
|
|
||||||
const xField = document.getElementById('x');
|
|
||||||
const yField = document.getElementById('y');
|
|
||||||
const widthField = document.getElementById('width');
|
|
||||||
const heightField = document.getElementById('height');
|
|
||||||
const smoothField = document.getElementById('smooth');
|
|
||||||
const lockField = document.getElementById('lock');
|
|
||||||
|
|
||||||
setCameraButton.addEventListener('click', () => {
|
|
||||||
WA.camera.set(
|
|
||||||
parseInt(xField.value),
|
|
||||||
parseInt(yField.value),
|
|
||||||
widthField.value ? parseInt(widthField.value) : undefined,
|
|
||||||
heightField.value ? parseInt(heightField.value) : undefined,
|
|
||||||
lockField.checked,
|
|
||||||
smoothField.checked,
|
|
||||||
);
|
|
||||||
});
|
|
||||||
|
|
||||||
followPlayerButton.addEventListener('click', () => {
|
|
||||||
WA.camera.followPlayer(smoothField.checked);
|
|
||||||
});
|
|
||||||
});
|
|
||||||
})
|
|
||||||
</script>
|
|
||||||
</head>
|
|
||||||
<body>
|
|
||||||
X: <input type="text" id="x" value="496" /><br/>
|
|
||||||
Y: <input type="text" id="y" value="655" /><br/>
|
|
||||||
width: <input type="text" id="width" value="480" /><br/>
|
|
||||||
height: <input type="text" id="height" value="286" /><br/>
|
|
||||||
Smooth: <input type="checkbox" id="smooth" value=1 /><br/>
|
|
||||||
Lock: <input type="checkbox" id="lock" value=1 /><br/>
|
|
||||||
|
|
||||||
<button id="setCameraButton">Set Camera</button>
|
|
||||||
<button id="followPlayerButton">Follow Player</button>
|
|
||||||
|
|
||||||
</body>
|
|
||||||
</html>
|
|
Loading…
Reference in New Issue
Block a user