Reset state on client connection instead of as a special manipulation of the local server.

This commit is contained in:
Tangent Wantwight 2020-05-09 22:08:22 -04:00
parent 7c06ab473d
commit c620e4c982
3 changed files with 8 additions and 6 deletions

View File

@ -92,6 +92,11 @@ export abstract class LockstepClient<LocalInput, GlobalInput, State> {
} }
}); });
// talkback should exist at this point, send reset message
if(this.serverTalkback) {
this.serverTalkback(1, {t: MessageTypes.SET_STATE, s: {}});
}
// disposal // disposal
return () => { return () => {
this.serverTalkback?.(2); this.serverTalkback?.(2);

View File

@ -39,6 +39,9 @@ export class LoopbackServer<LocalInput, State> {
this.inputBuffer[playerNumber] = message.i; this.inputBuffer[playerNumber] = message.i;
} }
break; break;
case MessageTypes.SET_STATE:
this.broadcast(1, { t: MessageTypes.SET_STATE, u: -1, s: message.s });
break;
} }
} }
@ -52,8 +55,4 @@ export class LoopbackServer<LocalInput, State> {
return message; return message;
} }
} }
public resetState(newState: Partial<State>) {
this.broadcast(1, { t: MessageTypes.SET_STATE, u: -1, s: newState });
}
} }

View File

@ -20,6 +20,4 @@ const server = new LoopbackServer<KeyName[], Data>();
Select(".GameCanvas").forEachCanvas((c, cx, keys) => new Main(c, cx, keys, server)); Select(".GameCanvas").forEachCanvas((c, cx, keys) => new Main(c, cx, keys, server));
server.resetState({});
BindTests(); BindTests();