import { getDatacenterIdOfTick } from '../../util/timeline' import { setCurrentDatacenter } from '../topology/building' export const GO_TO_TICK = 'GO_TO_TICK' export const SET_LAST_SIMULATED_TICK = 'SET_LAST_SIMULATED_TICK' export function incrementTick() { return (dispatch, getState) => { const { currentTick } = getState() dispatch(goToTick(currentTick + 1)) } } export function goToTick(tick) { return (dispatch, getState) => { const state = getState() let sections = [] if (state.currentExperimentId !== -1) { const sectionIds = state.objects.path[ state.objects.experiment[state.currentExperimentId].pathId ].sectionIds if (sectionIds) { sections = sectionIds.map( sectionId => state.objects.section[sectionId], ) } } const newDatacenterId = getDatacenterIdOfTick(tick, sections) if (state.currentDatacenterId !== newDatacenterId) { dispatch(setCurrentDatacenter(newDatacenterId)) } dispatch({ type: GO_TO_TICK, tick, }) } } export function setLastSimulatedTick(tick) { return { type: SET_LAST_SIMULATED_TICK, tick, } }