Refactoring Error Screen

This commit is contained in:
CEC
2022-04-12 10:23:36 +02:00
parent a689756d85
commit 748baa9bbc
19 changed files with 315 additions and 61 deletions
+13
View File
@@ -25,6 +25,7 @@ import {
TokenExpiredMessage,
WorldConnexionMessage,
ErrorMessage as ErrorMessageTsProto,
ErrorV2Message as ErrorV2MessageTsProto,
UserMovedMessage as UserMovedMessageTsProto,
GroupUpdateMessage as GroupUpdateMessageTsProto,
GroupDeleteMessage as GroupDeleteMessageTsProto,
@@ -46,6 +47,8 @@ import { Subject } from "rxjs";
import { selectCharacterSceneVisibleStore } from "../Stores/SelectCharacterStore";
import { gameManager } from "../Phaser/Game/GameManager";
import { SelectCharacterScene, SelectCharacterSceneName } from "../Phaser/Login/SelectCharacterScene";
import {errorScreenStore} from "../Stores/ErrorScreenStore";
import {WAError} from "../Phaser/Reconnecting/WAError";
const manualPingDelay = 20000;
@@ -61,6 +64,9 @@ export class RoomConnection implements RoomConnection {
private readonly _errorMessageStream = new Subject<ErrorMessageTsProto>();
public readonly errorMessageStream = this._errorMessageStream.asObservable();
private readonly _errorV2MessageStream = new Subject<ErrorV2MessageTsProto>();
public readonly errorV2MessageStream = this._errorV2MessageStream.asObservable();
private readonly _roomJoinedMessageStream = new Subject<{
connection: RoomConnection;
room: RoomJoinedMessageInterface;
@@ -475,6 +481,13 @@ export class RoomConnection implements RoomConnection {
console.error("An error occurred server side: " + message.errorMessage.message);
break;
}
case "errorV2Message": {
this._errorV2MessageStream.next(message.errorV2Message);
if(message.errorV2Message.code !== 'retry') this.closed = true;
console.error("An error occurred server side: " + message.errorV2Message.code);
errorScreenStore.setError(message.errorV2Message as unknown as WAError);
break;
}
default: {
// Security check: if we forget a "case", the line below will catch the error at compile-time.
const tmp: never = message;