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) {
ws.clearGameStateTimeout();
} else {
ws.startGameStateTimeout(game.id);
}
if (!instance) {
ws.clearInstanceStateTimeout();
} else {
ws.startInstanceStateTimeout(instance.id);
}
return { game, instance, account };
}
);

View File

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

View File

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

View File

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