State Management, Simplifying Some Components #1

Merged
innocuous-symmetry merged 8 commits from state-mgmt-backtrack into master 2022-07-24 19:14:17 +00:00
Showing only changes of commit efc9955587 - Show all commits

View File

@@ -38,10 +38,8 @@ export const validateChips = (state: AppState): boolean => {
export const getChips = (state: AppState, setState: setStateType): boolean => {
/**
* features:
* identify player to receive currently selected chips
* update their inventory state
* update the total available resources
* change turn order
*/
let targetPlayer: PlayerData;
@@ -54,20 +52,45 @@ export const getChips = (state: AppState, setState: setStateType): boolean => {
setState((prev) => {
const { newPlayers, roundIncrement } = turnOrderUtil(state, targetPlayer);
const idx = newPlayers.indexOf(targetPlayer);
const resources = state.actions.getChips.selection;
let newResources = prev.gameboard.tradingResources;
if (resources) {
for (let value of resources) {
// update player inventory
for (let each in newPlayers[idx].inventory) {
if (value === each) {
newPlayers[idx].inventory[value] += 1;
}
}
// update globally available resources
for (let each in newResources) {
if (value === each) {
newResources[value] -= 1;
}
}
}
}
console.log(newPlayers[newPlayers.indexOf(targetPlayer)]);
return {
...prev,
round: (roundIncrement ? prev.round + 1 : prev.round),
gameboard: {
...prev.gameboard
...prev.gameboard,
tradingResources: newResources
},
players: newPlayers,
actions: initialActions
}
})
console.log(state.players);
return true;
}