New trading interface and moving bug fixes.
This commit is contained in:
File diff suppressed because it is too large
Load Diff
@@ -38,3 +38,4 @@ export const ALERT_HANDLED = 'alert-handled'
|
||||
export const AUTO_SKIP = 'auto-skip'
|
||||
export const MESSAGE = 'message'
|
||||
export const SET_HARVEST_TABLE = 'set-harvest-table'
|
||||
export const SET_MOVING_SKIP = 'set-moving-skip'
|
||||
|
||||
@@ -20,13 +20,14 @@ import { UPDATE_GAME, UPDATE_PLAYER, GAME_STATE, SET_SELECTED_CARD, SET_CARDS,
|
||||
SPACE_PUSH_PLAYER, SPACE_CLEAR_PLAYERS, SET_OLD_MESSAGES, MESSAGE_PANEL_SPACE,
|
||||
MP_MOUSE, SET_MP_DIMS, MARK_ACTION_CHANGE_HANDLED, SET_NEXT_ACTION,
|
||||
MOVE_PLAYER, NEXT_UI_ACTION, NEXT_UI_ACTION_SILENT, ALERT, ALERT_HANDLED,
|
||||
AUTO_SKIP, MESSAGE, SET_HARVEST_TABLE, SET_CARD_ERROR } from './actionTypes.js'
|
||||
AUTO_SKIP, MESSAGE, SET_HARVEST_TABLE, SET_CARD_ERROR,
|
||||
SET_MOVING_SKIP } from './actionTypes.js'
|
||||
|
||||
export { updateGame, updatePlayer, gameState, setSelectedCard, setCards,
|
||||
spacePushPlayer, spaceClearPlayers, setOldMessages, setMessagePanelSpace,
|
||||
mpMouse, setMPDims, movePlayer, setNextAction, nextUIAction,
|
||||
markActionChangeHandled, nextUIActionSilent, alert, alertHandled,
|
||||
autoSkip, message, setHarvestTable, setCardError }
|
||||
autoSkip, message, setHarvestTable, setCardError, setMovingSkip }
|
||||
|
||||
function updateGame(update) {
|
||||
return { type: UPDATE_GAME,
|
||||
@@ -130,3 +131,7 @@ function message(message) {
|
||||
function setHarvestTable(table) {
|
||||
return { type: SET_HARVEST_TABLE, table };
|
||||
}
|
||||
|
||||
function setMovingSkip(skip) {
|
||||
return { type: SET_MOVING_SKIP, skip };
|
||||
}
|
||||
|
||||
@@ -24,7 +24,8 @@ import * as websocket from '../../websocket.js'
|
||||
import { updateGame, updatePlayer, gameState, setSelectedCard, setCards,
|
||||
movePlayer, setOldMessages, markActionChangeHandled,
|
||||
mpMouse, rolled, setNextAction, nextUIAction, nextUIActionSilent, alert,
|
||||
autoSkip, message, alertHandled, setHarvestTable, setCardError } from './actions.js'
|
||||
autoSkip, message, alertHandled, setHarvestTable,
|
||||
setCardError, setMovingSkip } from './actions.js'
|
||||
import { itemCard, fateCard } from 'game.js'
|
||||
|
||||
export { initialize, buy, roll, endTurn, loan, trade, submitTradeAccept,
|
||||
@@ -189,7 +190,9 @@ function initialize(st, sc) {
|
||||
let lastAction = false,
|
||||
lastAutoSkip = false,
|
||||
rollMessage = '',
|
||||
rollTimer = false;
|
||||
rollTimer = false,
|
||||
movingAction = { from: 99, to: 99 },
|
||||
movingTimer = 0;
|
||||
const unsubscribe = store.subscribe(
|
||||
() => {
|
||||
const state = store.getState();
|
||||
@@ -265,6 +268,50 @@ function initialize(st, sc) {
|
||||
break;
|
||||
}
|
||||
}
|
||||
if ((state.farm.ui.action === 'move' || state.farm.ui.action === 'goto') &&
|
||||
movingAction.from !== state.farm.ui.actionValue.from &&
|
||||
movingAction.to !== state.farm.ui.actionValue.to) {
|
||||
movingAction = state.farm.ui.actionValue;
|
||||
const movingProc = (player, from, to) => {
|
||||
let currentPos = from < 0 ? from + 49 : from;
|
||||
const color = player.color;
|
||||
const hurtBack = to === 2 && from === 11 ? true : false;
|
||||
const delta = currentPos === 48 ? -48 : hurtBack ? -1 : 1;
|
||||
store.dispatch(movePlayer(currentPos + delta, currentPos, color));
|
||||
currentPos += delta;
|
||||
|
||||
const tick = () => {
|
||||
if (store.getState().farm.ui.movingSkip ||
|
||||
store.getState().farm.ui.autoSkip === 'moving') {
|
||||
store.dispatch(setMovingSkip(false));
|
||||
store.dispatch(movePlayer(to, currentPos, color));
|
||||
currentPos = to;
|
||||
} else {
|
||||
const delta = currentPos === 48 ? -48 : hurtBack ? -1 : 1;
|
||||
store.dispatch(movePlayer(currentPos + delta, currentPos, color));
|
||||
currentPos += delta;
|
||||
}
|
||||
if (currentPos === to) {
|
||||
clearInterval(movingTimer);
|
||||
movingTimer = 0;
|
||||
}
|
||||
}
|
||||
|
||||
if (currentPos !== to) {
|
||||
movingTimer = setInterval(tick, 500);
|
||||
}
|
||||
}
|
||||
movingProc(state.farm.player.name === state.farm.game.currentPlayer ?
|
||||
state.farm.player : state.farm.game.otherPlayers
|
||||
.find(p => p.player.name === state.farm.game.currentPlayer).player,
|
||||
movingAction.from, movingAction.to);
|
||||
} else if (state.farm.ui.action !== 'move' && state.farm.ui.action !== 'goto') {
|
||||
if (movingTimer) {
|
||||
clearInterval(movingTimer);
|
||||
movingTimer = 0;
|
||||
movingAction = { from: 99, to: 99 };
|
||||
}
|
||||
}
|
||||
});
|
||||
|
||||
// mpDims.mouseX = e.clientX
|
||||
|
||||
@@ -21,7 +21,8 @@ import { UPDATE_GAME, UPDATE_PLAYER, GAME_STATE, SET_SELECTED_CARD, SET_CARDS,
|
||||
SET_OLD_MESSAGES, MESSAGE_PANEL_SPACE, MP_MOUSE,
|
||||
SET_MP_DIMS, MOVE_PLAYER, SET_NEXT_ACTION, NEXT_UI_ACTION,
|
||||
MARK_ACTION_CHANGE_HANDLED, NEXT_UI_ACTION_SILENT, ALERT, ALERT_HANDLED,
|
||||
AUTO_SKIP, MESSAGE, SET_HARVEST_TABLE, SET_CARD_ERROR } from './actionTypes.js'
|
||||
AUTO_SKIP, MESSAGE, SET_HARVEST_TABLE, SET_CARD_ERROR,
|
||||
SET_MOVING_SKIP } from './actionTypes.js'
|
||||
import { GAME_STATES } from '../../constants.js'
|
||||
import { spaceContent, corners } from 'game.js'
|
||||
|
||||
@@ -121,6 +122,7 @@ const initialState = {
|
||||
unhandledAlert: false,
|
||||
autoSkip: false,
|
||||
playerSpaces: {},
|
||||
movingSkip: false,
|
||||
harvestTable: false },
|
||||
spaces: spaces,
|
||||
space: null,
|
||||
@@ -219,6 +221,8 @@ export default function(state = initialState, action) {
|
||||
return { ...state, ui: { ...state.ui, message: action.message }};
|
||||
case SET_HARVEST_TABLE:
|
||||
return { ...state, ui: { ...state.ui, harvestTable: action.table }};
|
||||
case SET_MOVING_SKIP:
|
||||
return { ...state, ui: { ...state.ui, movingSkip: action.skip }};
|
||||
default:
|
||||
return state;
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user