New trading interface and moving bug fixes.

This commit is contained in:
2020-04-02 10:24:06 -07:00
parent 1dc5d53f0d
commit 16897679e3
8 changed files with 796 additions and 346 deletions

File diff suppressed because it is too large Load Diff

View File

@@ -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'

View File

@@ -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 };
}

View File

@@ -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

View File

@@ -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;
}