fix timeouts

This commit is contained in:
ntr 2019-05-01 19:06:45 +10:00
parent 6436fd260c
commit 08b309de22
4 changed files with 27 additions and 8 deletions

View File

@ -13,13 +13,16 @@ const addState = connect(
if (!game) { if (!game) {
ws.clearGameStateTimeout(); ws.clearGameStateTimeout();
} else {
ws.startGameStateTimeout(game.id);
} }
if (!instance) { if (!instance) {
ws.clearInstanceStateTimeout(); ws.clearInstanceStateTimeout();
} else {
ws.startInstanceStateTimeout(instance.id);
} }
return { game, instance, account }; return { game, instance, account };
} }
); );

View File

@ -50,15 +50,14 @@ function GamePanel(props) {
} }
function backClick() { function backClick() {
quit(); if (game.phase === 'Finish') sendInstanceState(game.instance);
return sendInstanceState(game.instance); return quit();
} }
const header = ( const header = (
<div className="instance-hdr"> <div className="instance-hdr">
<button <button
className="game-back-btn instance-btn instance-ui-btn left" className="game-back-btn instance-btn instance-ui-btn left"
disabled={game.phase !== 'Finish'}
onClick={backClick}> onClick={backClick}>
Back Back
</button> </button>

View File

@ -100,7 +100,9 @@ function registerEvents(store) {
const player = v.players.find(p => p.id === account.id); const player = v.players.find(p => p.id === account.id);
if (player) store.dispatch(actions.setPlayer(player)); if (player) store.dispatch(actions.setPlayer(player));
if (!v) ws.clearInstanceStateTimeout(); if (!v) {
ws.clearInstanceStateTimeout();
}
return store.dispatch(actions.setInstance(v)); return store.dispatch(actions.setInstance(v));
} }

View File

@ -184,14 +184,18 @@ function createSocket(events) {
events.setCrypList(cryps); events.setCrypList(cryps);
} }
let gameStateTimeout;
function gameState(response) { function gameState(response) {
const [structName, game] = response; const [structName, game] = response;
clearTimeout(gameStateTimeout);
gameStateTimeout = setTimeout(() => sendGameState(game.id), 1000);
events.setGame(game); events.setGame(game);
} }
let gameStateTimeout;
function startGameStateTimeout(id) {
clearTimeout(gameStateTimeout);
gameStateTimeout = setTimeout(() => sendGameState(id), 1000);
return true;
}
function clearGameStateTimeout() { function clearGameStateTimeout() {
clearTimeout(gameStateTimeout); clearTimeout(gameStateTimeout);
} }
@ -206,14 +210,23 @@ function createSocket(events) {
} }
let instanceStateTimeout; let instanceStateTimeout;
function startInstanceStateTimeout(id) {
clearTimeout(instanceStateTimeout);
instanceStateTimeout = setTimeout(() => sendInstanceState(id), 1000);
return true;
}
function instanceState(response) { function instanceState(response) {
const [structName, i] = response; const [structName, i] = response;
clearTimeout(instanceStateTimeout); clearTimeout(instanceStateTimeout);
instanceStateTimeout = setTimeout(() => sendInstanceState(i.id), 1000); instanceStateTimeout = setTimeout(() => sendInstanceState(i.id), 1000);
console.log(instanceStateTimeout);
events.setInstance(i); events.setInstance(i);
return true;
} }
function clearInstanceStateTimeout() { function clearInstanceStateTimeout() {
console.log('instance state timeout cleared');
clearTimeout(instanceStateTimeout); clearTimeout(instanceStateTimeout);
} }
@ -353,6 +366,8 @@ function createSocket(events) {
sendVboxCombine, sendVboxCombine,
sendVboxDiscard, sendVboxDiscard,
sendVboxUnequip, sendVboxUnequip,
startInstanceStateTimeout,
startGameStateTimeout,
connect, connect,
}; };
} }