timeout events

This commit is contained in:
ntr 2019-05-01 20:59:23 +10:00
parent 92007a8c37
commit 49a9db6d9b
3 changed files with 11 additions and 23 deletions

View File

@ -10,19 +10,6 @@ const InstanceContainer = require('./instance.container');
const addState = connect( const addState = connect(
state => { state => {
const { game, instance, ws, account } = state; const { game, instance, ws, account } = state;
if (!game) {
ws.clearGameStateTimeout();
} else {
ws.startGameStateTimeout(game.id);
}
if (!instance) {
ws.clearInstanceStateTimeout();
} else {
ws.startInstanceStateTimeout(instance.id);
}
return { game, instance, account }; return { game, instance, account };
} }
); );

View File

@ -6,6 +6,15 @@ const { TIMES } = require('./constants');
const { getCombatSequence } = require('./utils'); const { getCombatSequence } = require('./utils');
function registerEvents(store) { function registerEvents(store) {
// timeout handlers
store.subscribe(() => {
const { game, instance, ws} = store.getState();
if (!game) ws.clearGameStateTimeout();
if (!instance) ws.clearInstanceStateTimeout();
});
function setCryps(cryps) { function setCryps(cryps) {
console.log('EVENT ->', 'cryps', cryps); console.log('EVENT ->', 'cryps', cryps);
} }
@ -21,8 +30,7 @@ function registerEvents(store) {
function setGame(game) { function setGame(game) {
const { game: currentGame, ws } = store.getState(); const { game: currentGame, ws } = store.getState();
if (!game) ws.clearGameStateTimeout(); if (game) ws.startGameStateTimeout(game.id);
if (game && currentGame) { if (game && currentGame) {
if (game.resolved.length !== currentGame.resolved.length) { if (game.resolved.length !== currentGame.resolved.length) {
// stop fetching the game state til animations are done // stop fetching the game state til animations are done
@ -99,10 +107,8 @@ function registerEvents(store) {
const { account, ws } = store.getState(); const { account, ws } = store.getState();
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.startInstanceStateTimeout(v.id);
if (!v) {
ws.clearInstanceStateTimeout();
}
return store.dispatch(actions.setInstance(v)); return store.dispatch(actions.setInstance(v));
} }

View File

@ -218,19 +218,14 @@ function createSocket(events) {
function instanceState(response) { function instanceState(response) {
const [structName, i] = response; const [structName, i] = response;
clearTimeout(instanceStateTimeout);
instanceStateTimeout = setTimeout(() => sendInstanceState(i.id), 1000);
console.log(instanceStateTimeout);
events.setInstance(i); events.setInstance(i);
return true; return true;
} }
function clearInstanceStateTimeout() { function clearInstanceStateTimeout() {
console.log('instance state timeout cleared');
clearTimeout(instanceStateTimeout); clearTimeout(instanceStateTimeout);
} }
function instanceScores(response) { function instanceScores(response) {
const [structName, scores] = response; const [structName, scores] = response;
events.setScores(scores); events.setScores(scores);