added more properties

# Conflicts:
#	front/src/Phaser/Game/GameScene.ts
This commit is contained in:
jonny 2021-05-01 19:44:14 +02:00
parent 3836d5037c
commit cd77af318d
2 changed files with 49 additions and 4 deletions

View File

@ -1,9 +1,28 @@
import * as tg from "generic-type-guard";
export const isPositionState = new tg.IsInterface().withProperties({
x: tg.isNumber,
y: tg.isNumber
}).get()
export const isPlayerState = new tg.IsInterface()
.withStringIndexSignature(
new tg.IsInterface().withProperties({
position: isPositionState,
pusherId: tg.isUnion(tg.isNumber, tg.isUndefined)
}).get()
).get()
export type PlayerStateObject = tg.GuardedType<typeof isPlayerState>;
export const isGameStateEvent =
new tg.IsInterface().withProperties({
roomId: tg.isString,
data:tg.isObject
data: tg.isObject,
mapUrl: tg.isString,
nickName: tg.isString,
uuid: tg.isUnion(tg.isString, tg.isUndefined),
players: isPlayerState,
startLayerName: tg.isUnion(tg.isString, tg.isNull)
}).get();
/**
* A message sent from the game to the iFrame when a user enters or leaves a zone marked with the "zone" property.

View File

@ -80,6 +80,7 @@ import { lazyLoadCompanionResource } from "../Companion/CompanionTexturesLoading
import {touchScreenManager} from "../../Touch/TouchScreenManager";
import {PinchManager} from "../UserInput/PinchManager";
import {joystickBaseImg, joystickBaseKey, joystickThumbImg, joystickThumbKey} from "../Components/MobileJoystick";
import { PlayerStateObject } from '../../Api/Events/ApiGameStateEvent';
export interface GameSceneInitInterface {
initPosition: PointInterface|null,
@ -841,10 +842,35 @@ ${escapedMessage}
this.iframeSubscriptionList.push(iframeListener.enablePlayerControlStream.subscribe(()=>{
this.userInputManager.restoreControls();
}));
this.iframeSubscriptionList.push(iframeListener.gameStateStream.subscribe(()=>{
this.iframeSubscriptionList.push(iframeListener.gameStateStream.subscribe(() => {
const playerObject: PlayerStateObject = {
[this.playerName]: {
position: {
x: this.CurrentPlayer.x,
y: this.CurrentPlayer.y
},
pusherId: this.connection?.getUserId()
}
}
for (const mapPlayer of this.MapPlayers.children.entries) {
const remotePlayer: RemotePlayer = mapPlayer as RemotePlayer;
playerObject[remotePlayer.PlayerValue] = {
position: {
x: remotePlayer.x,
y: remotePlayer.y
},
pusherId: remotePlayer.userId
}
}
iframeListener.sendFrozenGameStateEvent({
roomId:this.RoomId,
data: this.mapFile
mapUrl: this.MapUrlFile,
nickName: this.playerName,
startLayerName: this.startLayerName,
uuid: localUserStore.getLocalUser()?.uuid,
roomId: this.RoomId,
data: this.mapFile,
players: playerObject
})
}));