board-game-engine-react 0.0.14 → 0.0.16
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
|
@@ -1,24 +1,5 @@
|
|
|
1
1
|
import React, { useEffect, useContext, createContext, useReducer, useState } from 'react';
|
|
2
2
|
|
|
3
|
-
function _mergeNamespaces(n, m) {
|
|
4
|
-
m.forEach(function (e) {
|
|
5
|
-
e && typeof e !== 'string' && !Array.isArray(e) && Object.keys(e).forEach(function (k) {
|
|
6
|
-
if (k !== 'default' && !(k in n)) {
|
|
7
|
-
var d = Object.getOwnPropertyDescriptor(e, k);
|
|
8
|
-
Object.defineProperty(n, k, d.get ? d : {
|
|
9
|
-
enumerable: true,
|
|
10
|
-
get: function () { return e[k]; }
|
|
11
|
-
});
|
|
12
|
-
}
|
|
13
|
-
});
|
|
14
|
-
});
|
|
15
|
-
return Object.freeze(n);
|
|
16
|
-
}
|
|
17
|
-
|
|
18
|
-
function getDefaultExportFromCjs (x) {
|
|
19
|
-
return x && x.__esModule && Object.prototype.hasOwnProperty.call(x, 'default') ? x['default'] : x;
|
|
20
|
-
}
|
|
21
|
-
|
|
22
3
|
function _defineProperty(e, r, t) {
|
|
23
4
|
return (r = _toPropertyKey(r)) in e ? Object.defineProperty(e, r, {
|
|
24
5
|
value: t,
|
|
@@ -83,9 +64,9 @@ function _toPropertyKey(t) {
|
|
|
83
64
|
return "symbol" == typeof i ? i : i + "";
|
|
84
65
|
}
|
|
85
66
|
|
|
86
|
-
var boardGameEngine$
|
|
67
|
+
var boardGameEngine$1 = {exports: {}};
|
|
87
68
|
|
|
88
|
-
const _excluded=["redact"],_excluded2=["credentials"],_excluded3=["credentials"],_excluded4=["deltalog"],_excluded5=["fn","arg"],_excluded6=["transients"],_excluded7=["playerID"],_excluded8=["master"],_excluded9=["socket","socketOpts","server"],_excluded0=["state"];var boardGameEngine
|
|
69
|
+
const _excluded=["redact"],_excluded2=["credentials"],_excluded3=["credentials"],_excluded4=["deltalog"],_excluded5=["fn","arg"],_excluded6=["transients"],_excluded7=["playerID"],_excluded8=["master"],_excluded9=["socket","socketOpts","server"],_excluded0=["state"];var boardGameEngine=boardGameEngine$1.exports;var hasRequiredBoardGameEngine;function requireBoardGameEngine(){if(hasRequiredBoardGameEngine)return boardGameEngine$1.exports;hasRequiredBoardGameEngine=1;(function(module,exports){(function webpackUniversalModuleDefinition(root,factory){module.exports=factory();})(boardGameEngine,()=>{return/******/(()=>{// webpackBootstrap
|
|
89
70
|
/******/var __webpack_modules__={/***/4039(__unused_webpack_module,exports,__webpack_require__){Object.defineProperty(exports,"__esModule",{value:true});var turnOrder=__webpack_require__(9014);__webpack_require__(5878);__webpack_require__(1946);__webpack_require__(9001);/*
|
|
90
71
|
* Copyright 2018 The boardgame.io Authors
|
|
91
72
|
*
|
|
@@ -1614,9 +1595,9 @@ return playOrder[playOrderPos]+'';}/**
|
|
|
1614
1595
|
* Creates initial state and metadata for a new match.
|
|
1615
1596
|
* If the provided `setupData` doesn’t pass the game’s validation,
|
|
1616
1597
|
* an error object is returned instead.
|
|
1617
|
-
*/const createMatch=_ref2=>{let{game,numPlayers,setupData,unlisted}=_ref2;if(!numPlayers||typeof numPlayers!=='number')numPlayers=2;const setupDataError=game.validateSetupData&&game.validateSetupData(setupData,numPlayers);if(setupDataError!==undefined)return {setupDataError};const metadata=createMetadata({game,numPlayers,setupData,unlisted});const initialState=(0, _initialize11d626ca.I)({game,numPlayers,setupData});return {metadata,initialState};};exports.c=createMatch;/***/},/***/4245(__unused_webpack_module,exports,__webpack_require__){Object.defineProperty(exports,"__esModule",{value:true});exports.Client=void 0;var _client=__webpack_require__(4688);var _debug=__webpack_require__(504);var _multiplayer=__webpack_require__(9843);var _wackson=__webpack_require__(7627);var _gameFactory=_interopRequireDefault(__webpack_require__(4913));var _registry=__webpack_require__(3883);var _simulateMove=_interopRequireDefault(__webpack_require__(3276));var _getCurrentMoves=_interopRequireDefault(__webpack_require__(4171));var _resolveProperties=_interopRequireDefault(__webpack_require__(7208));var _checkConditions=_interopRequireDefault(__webpack_require__(7611));var _preparePayload=_interopRequireDefault(__webpack_require__(380));var _getSteps=_interopRequireDefault(__webpack_require__(2146));var _createPayload=_interopRequireDefault(__webpack_require__(9965));function _interopRequireDefault(e){return e&&e.__esModule?e:{default:e};}class Client{constructor(options){this.options=options;this.game=options.boardgameIOGame||(0, _gameFactory.default)(JSON.parse(options.gameRules),options.gameName);if(!options.boardgameIOGame){this.moveBuilder={targets:[],stepIndex:0,eliminatedMoves:[]};this.optimisticWinner=null;}}connect(){const{server,numPlayers,debug={collapseOnLoad:true,impl:_debug.Debug},gameId,boardgamePlayerID,clientToken,singlePlayer=!clientToken}=this.options;try{const clientOptions=singlePlayer?{game:this.game,numPlayers,debug}:{game:this.game,multiplayer:(0,_multiplayer.SocketIO)({server,socketOpts:{transports:['websocket','polling']}}),matchID:gameId,playerID:boardgamePlayerID,credentials:clientToken,debug};this.client=(0,_client.Client)(clientOptions);this.client.subscribe(()=>this.update());this.client.start();return this;}catch(error){console.error('Failed to join game:',error);}}update(){this.options.onClientUpdate?.();}getState(){const clientState=this.client?.getState();if(!clientState)return {};if(this.options.boardgameIOGame){return {state:clientState,gameover:clientState?.ctx?.gameover,moves:this.client.moves};}const state=_objectSpread2(_objectSpread2({},clientState),{},{G:(0, _wackson.deserialize)(JSON.stringify(clientState.G),_registry.registry),originalG:clientState.G});const gameover=state?.ctx?.gameover;const moves=!gameover?Object.entries((0, _getCurrentMoves.default)(state,this.client)).reduce((acc,_ref)=>{let[moveName,rawMove]=_ref;const move=payload=>{this.client.moves[moveName]((0, _preparePayload.default)(payload));};move.moveInstance=rawMove.moveInstance;return _objectSpread2(_objectSpread2({},acc),{},{[moveName]:move});},{}):[];const possibleMoves=getPossibleMoves(state,moves,this.moveBuilder);const allClickable=possibleMoves.allClickable;const possibleMoveMeta=possibleMoves.possibleMoveMeta;return {state,gameover,moves,allClickable,possibleMoveMeta};}doStep(_target){if(this.options.boardgameIOGame)return;const{state,moves,possibleMoveMeta}=this.getState();const target=_target.abstract?_target:state.G.bank.locate(_target.entityId);const newEliminated=Object.entries(possibleMoveMeta).filter(_ref2=>{let[_,meta]=_ref2;return !hasTarget(meta.clickableForMove,target);}).map(_ref3=>{let[name]=_ref3;return name;}).concat(this.moveBuilder.eliminatedMoves);if(newEliminated.length===Object.keys(moves).length){console.error('invalid move with target:',target?.rule);return;}const remainingMoveEntries=Object.entries(possibleMoveMeta).filter(_ref4=>{let[name]=_ref4;return !newEliminated.includes(name);});if(isMoveCompleted(state,moves,remainingMoveEntries,this.moveBuilder.stepIndex)){const[moveName]=remainingMoveEntries[0];const move=moves[moveName];const payload=(0, _createPayload.default)(state,move.moveInstance.rule,[...this.moveBuilder.targets,target],{moveInstance:move.moveInstance});this.optimisticWinner=getWinnerAfterMove(state,this.game,move.moveInstance,payload);move(payload);this.moveBuilder={targets:[],stepIndex:0,eliminatedMoves:[]};}else {this.moveBuilder={eliminatedMoves:newEliminated,stepIndex:this.moveBuilder.stepIndex+1,targets:[...this.moveBuilder.targets,target]};}this.update();}reset(){if(this.options.boardgameIOGame)return;this.moveBuilder={targets:[],stepIndex:0,eliminatedMoves:[]};this.optimisticWinner=null;this.update();}undoStep(){if(this.options.boardgameIOGame)return;if(this.moveBuilder.targets.length){this.moveBuilder={targets:this.moveBuilder.targets.slice(0,-1),stepIndex:Math.max(0,this.moveBuilder.stepIndex-1),eliminatedMoves:[]};}this.update();}}exports.Client=Client;function hasTarget(clickableSet,target){if(!target.abstract)return clickableSet.has(target);return [...clickableSet].some(item=>item.abstract&&item.value===target.value);}function getPossibleMoves(bgioState,moves,moveBuilder){const{eliminatedMoves,stepIndex}=moveBuilder;const possibleMoveMeta={};const allClickable=new Set();Object.entries(moves).filter(_ref5=>{let[moveName]=_ref5;return !eliminatedMoves.includes(moveName);}).forEach(_ref6=>{let[moveName,move]=_ref6;const moveRule=(0, _resolveProperties.default)(bgioState,_objectSpread2(_objectSpread2({},move.moveInstance.rule),{},{moveName}));const context={moveInstance:move.moveInstance,moveArguments:moveRule.arguments};const targets=moveBuilder.targets.map(t=>t.abstract?t:bgioState.G.bank.locate(t.entityId));const payload=(0, _createPayload.default)(bgioState,moveRule,targets,context);context.moveArguments=_objectSpread2(_objectSpread2({},context.moveArguments),payload.arguments);const moveIsAllowed=(0, _checkConditions.default)(bgioState,moveRule,{},context).conditionsAreMet;const moveSteps=(0, _getSteps.default)(bgioState,moveRule);const clickableForMove=new Set(moveIsAllowed&&moveSteps?.[stepIndex]?.getClickable(context)||[]);possibleMoveMeta[moveName]={clickableForMove};clickableForMove.forEach(entity=>allClickable.add(entity));});return {possibleMoveMeta,allClickable};}function isMoveCompleted(state,moves,remainingMoveEntries,stepIndex){return remainingMoveEntries.length===1&&(0, _getSteps.default)(state,moves[remainingMoveEntries[0][0]].moveInstance.rule).length===stepIndex+1;}function getWinnerAfterMove(state,game,moveInstance,movePayload){const simulatedG=(0, _simulateMove.default)(state,(0, _preparePayload.default)(movePayload),{moveInstance});return game.endIf?.(_objectSpread2(_objectSpread2({},state),{},{G:JSON.parse((0, _wackson.serialize)(simulatedG))}));}/***/},/***/784(module,exports,__webpack_require__){Object.defineProperty(exports,"__esModule",{value:true});exports["default"]=void 0;var _resolveProperties=_interopRequireDefault(__webpack_require__(7208));function _interopRequireDefault(e){return e&&e.__esModule?e:{default:e};}// lazily create entities as needed, and also function as an index of entities created
|
|
1598
|
+
*/const createMatch=_ref2=>{let{game,numPlayers,setupData,unlisted}=_ref2;if(!numPlayers||typeof numPlayers!=='number')numPlayers=2;const setupDataError=game.validateSetupData&&game.validateSetupData(setupData,numPlayers);if(setupDataError!==undefined)return {setupDataError};const metadata=createMetadata({game,numPlayers,setupData,unlisted});const initialState=(0, _initialize11d626ca.I)({game,numPlayers,setupData});return {metadata,initialState};};exports.c=createMatch;/***/},/***/4245(__unused_webpack_module,exports,__webpack_require__){Object.defineProperty(exports,"__esModule",{value:true});exports.Client=void 0;var _client=__webpack_require__(4688);var _debug=__webpack_require__(504);var _multiplayer=__webpack_require__(9843);var _wackson=__webpack_require__(7627);var _gameFactory=_interopRequireDefault(__webpack_require__(4913));var _registry=__webpack_require__(3883);var _simulateMove=_interopRequireDefault(__webpack_require__(3276));var _getCurrentMoves=_interopRequireDefault(__webpack_require__(4171));var _resolveProperties=_interopRequireDefault(__webpack_require__(7208));var _checkConditions=_interopRequireDefault(__webpack_require__(7611));var _preparePayload=_interopRequireDefault(__webpack_require__(380));var _getSteps=_interopRequireDefault(__webpack_require__(2146));var _createPayload=_interopRequireDefault(__webpack_require__(9965));function _interopRequireDefault(e){return e&&e.__esModule?e:{default:e};}class Client{constructor(options){this.options=options;this.game=options.boardgameIOGame||(0, _gameFactory.default)(JSON.parse(options.gameRules),options.gameName);if(!options.boardgameIOGame){this.moveBuilder={targets:[],stepIndex:0,eliminatedMoves:[]};this.optimisticWinner=null;}}connect(){const{server,numPlayers,debug={collapseOnLoad:true,impl:_debug.Debug},gameId,boardgamePlayerID,clientToken,singlePlayer=!clientToken}=this.options;try{const clientOptions=singlePlayer?{game:this.game,numPlayers,debug}:{game:this.game,multiplayer:(0,_multiplayer.SocketIO)({server,socketOpts:{transports:['websocket','polling']}}),matchID:gameId,playerID:boardgamePlayerID,credentials:clientToken,debug};this.client=(0,_client.Client)(clientOptions);this.client.subscribe(()=>this.update());this.client.start();return this;}catch(error){console.error('Failed to join game:',error?.message??error);if(error?.stack)console.error(error.stack);}}update(){this.options.onClientUpdate?.();}getState(){const clientState=this.client?.getState();if(!clientState)return {};if(this.options.boardgameIOGame){return {state:clientState,gameover:clientState?.ctx?.gameover,moves:this.client.moves};}const state=_objectSpread2(_objectSpread2({},clientState),{},{G:(0, _wackson.deserialize)(JSON.stringify(clientState.G),_registry.registry),originalG:clientState.G});const gameover=state?.ctx?.gameover;const moves=!gameover?Object.entries((0, _getCurrentMoves.default)(state,this.client)).reduce((acc,_ref)=>{let[moveName,rawMove]=_ref;const move=payload=>{this.client.moves[moveName]((0, _preparePayload.default)(payload));};move.moveInstance=rawMove.moveInstance;return _objectSpread2(_objectSpread2({},acc),{},{[moveName]:move});},{}):[];const possibleMoves=getPossibleMoves(state,moves,this.moveBuilder);const allClickable=possibleMoves.allClickable;const possibleMoveMeta=possibleMoves.possibleMoveMeta;return {state,gameover,moves,allClickable,possibleMoveMeta};}doStep(_target){if(this.options.boardgameIOGame)return;const{state,moves,possibleMoveMeta}=this.getState();const target=_target.abstract?_target:state.G.bank.locate(_target.entityId);const newEliminated=Object.entries(possibleMoveMeta).filter(_ref2=>{let[_,meta]=_ref2;return !hasTarget(meta.clickableForMove,target);}).map(_ref3=>{let[name]=_ref3;return name;}).concat(this.moveBuilder.eliminatedMoves);if(newEliminated.length===Object.keys(moves).length){console.error('invalid move with target:',target?.rule);return;}const remainingMoveEntries=Object.entries(possibleMoveMeta).filter(_ref4=>{let[name]=_ref4;return !newEliminated.includes(name);});if(isMoveCompleted(state,moves,remainingMoveEntries,this.moveBuilder.stepIndex)){const[moveName]=remainingMoveEntries[0];const move=moves[moveName];const payload=(0, _createPayload.default)(state,move.moveInstance.rule,[...this.moveBuilder.targets,target],{moveInstance:move.moveInstance});this.optimisticWinner=getWinnerAfterMove(state,this.game,move.moveInstance,payload);move(payload);this.moveBuilder={targets:[],stepIndex:0,eliminatedMoves:[]};}else {this.moveBuilder={eliminatedMoves:newEliminated,stepIndex:this.moveBuilder.stepIndex+1,targets:[...this.moveBuilder.targets,target]};}this.update();}reset(){if(this.options.boardgameIOGame)return;this.moveBuilder={targets:[],stepIndex:0,eliminatedMoves:[]};this.optimisticWinner=null;this.update();}undoStep(){if(this.options.boardgameIOGame)return;if(this.moveBuilder.targets.length){this.moveBuilder={targets:this.moveBuilder.targets.slice(0,-1),stepIndex:Math.max(0,this.moveBuilder.stepIndex-1),eliminatedMoves:[]};}this.update();}}exports.Client=Client;function hasTarget(clickableSet,target){if(!target.abstract)return clickableSet.has(target);return [...clickableSet].some(item=>item.abstract&&item.value===target.value);}function getPossibleMoves(bgioState,moves,moveBuilder){const{eliminatedMoves,stepIndex}=moveBuilder;const possibleMoveMeta={};const allClickable=new Set();Object.entries(moves).filter(_ref5=>{let[moveName]=_ref5;return !eliminatedMoves.includes(moveName);}).forEach(_ref6=>{let[moveName,move]=_ref6;const moveRule=(0, _resolveProperties.default)(bgioState,_objectSpread2(_objectSpread2({},move.moveInstance.rule),{},{moveName}));const context={moveInstance:move.moveInstance,moveArguments:moveRule.arguments};const targets=moveBuilder.targets.map(t=>t.abstract?t:bgioState.G.bank.locate(t.entityId));const payload=(0, _createPayload.default)(bgioState,moveRule,targets,context);context.moveArguments=_objectSpread2(_objectSpread2({},context.moveArguments),payload.arguments);const moveIsAllowed=(0, _checkConditions.default)(bgioState,moveRule,{},context).conditionsAreMet;const moveSteps=(0, _getSteps.default)(bgioState,moveRule);const clickableForMove=new Set(moveIsAllowed&&moveSteps?.[stepIndex]?.getClickable(context)||[]);possibleMoveMeta[moveName]={clickableForMove};clickableForMove.forEach(entity=>allClickable.add(entity));});return {possibleMoveMeta,allClickable};}function isMoveCompleted(state,moves,remainingMoveEntries,stepIndex){return remainingMoveEntries.length===1&&(0, _getSteps.default)(state,moves[remainingMoveEntries[0][0]].moveInstance.rule).length===stepIndex+1;}function getWinnerAfterMove(state,game,moveInstance,movePayload){const simulatedG=(0, _simulateMove.default)(state,(0, _preparePayload.default)(movePayload),{moveInstance});return game.endIf?.(_objectSpread2(_objectSpread2({},state),{},{G:JSON.parse((0, _wackson.serialize)(simulatedG))}));}/***/},/***/784(module,exports,__webpack_require__){Object.defineProperty(exports,"__esModule",{value:true});exports["default"]=void 0;var _resolveProperties=_interopRequireDefault(__webpack_require__(7208));function _interopRequireDefault(e){return e&&e.__esModule?e:{default:e};}// lazily create entities as needed, and also function as an index of entities created
|
|
1618
1599
|
class BankSlot{constructor(rule,bank){this.bank=bank;this.rule=rule;this.pool=[];this.remaining=+rule.count||1;}getOne(bgioArguments,options,context){return this.getMultiple(bgioArguments,1,options,context)[0];}getMultiple(bgioArguments){let count=arguments.length>1&&arguments[1]!==undefined?arguments[1]:Infinity;let options=arguments.length>2&&arguments[2]!==undefined?arguments[2]:{};let context=arguments.length>3?arguments[3]:undefined;const toReturn=[];if(this.remaining===Infinity&&count===Infinity){throw new Error(`Cannot get infinite pieces from slot with infinite remaining: ${this.rule.name}`);}if(count!==Infinity&&count>this.remaining){throw new Error(`Requested ${count} pieces but only ${this.remaining} available in slot: ${this.rule.name}`);}// Determine actual count to fetch
|
|
1619
|
-
const actualCount=count===Infinity?this.remaining:count;if(this.remaining!==Infinity){this.remaining-=actualCount;}const fromPool=Math.min(actualCount,this.pool.length);toReturn.push(...this.pool.splice(0,fromPool));const remainder=actualCount-fromPool;if(remainder>0){toReturn.push(...Array.from(new Array(remainder)).map(()=>this.bank.createEntity(this.rule)));}if(options.state){const newState=(0, _resolveProperties.default)(bgioArguments,options.state,context);toReturn.forEach(entity=>{entity.state=_objectSpread2(_objectSpread2({},entity.state),newState);});}return toReturn;}returnToBank(entity){if(entity.rule.state){entity.state=entity.rule.state;}else {delete entity.state;}if(this.remaining!==undefined){this.remaining+=1;}this.pool.push(entity);}}exports["default"]=BankSlot;module.exports=exports.default;/***/},/***/6103(module,exports,__webpack_require__){Object.defineProperty(exports,"__esModule",{value:true});exports["default"]=void 0;var _find=_interopRequireDefault(__webpack_require__(7309));var _filter=_interopRequireDefault(__webpack_require__(7612));var _checkConditions=_interopRequireDefault(__webpack_require__(7611));var _registry=__webpack_require__(3883);var _bankSlot=_interopRequireDefault(__webpack_require__(784));function _interopRequireDefault(e){return e&&e.__esModule?e:{default:e};}class Bank{constructor(entityRules){this.currentEntityId=0;this.tracker={};this.slots=entityRules.map(rule=>new _bankSlot.default(rule,this));}createEntity(){let definition=arguments.length>0&&arguments[0]!==undefined?arguments[0]:{};let options=arguments.length>1?arguments[1]:undefined;const entity=new _registry.registry[definition.
|
|
1600
|
+
const actualCount=count===Infinity?this.remaining:count;if(this.remaining!==Infinity){this.remaining-=actualCount;}const fromPool=Math.min(actualCount,this.pool.length);toReturn.push(...this.pool.splice(0,fromPool));const remainder=actualCount-fromPool;if(remainder>0){toReturn.push(...Array.from(new Array(remainder)).map(()=>this.bank.createEntity(this.rule)));}if(options.state){const newState=(0, _resolveProperties.default)(bgioArguments,options.state,context);toReturn.forEach(entity=>{entity.state=_objectSpread2(_objectSpread2({},entity.state),newState);});}return toReturn;}returnToBank(entity){if(entity.rule.state){entity.state=entity.rule.state;}else {delete entity.state;}if(this.remaining!==undefined){this.remaining+=1;}this.pool.push(entity);}}exports["default"]=BankSlot;module.exports=exports.default;/***/},/***/6103(module,exports,__webpack_require__){Object.defineProperty(exports,"__esModule",{value:true});exports["default"]=void 0;var _find=_interopRequireDefault(__webpack_require__(7309));var _filter=_interopRequireDefault(__webpack_require__(7612));var _checkConditions=_interopRequireDefault(__webpack_require__(7611));var _registry=__webpack_require__(3883);var _bankSlot=_interopRequireDefault(__webpack_require__(784));function _interopRequireDefault(e){return e&&e.__esModule?e:{default:e};}class Bank{constructor(entityRules){this.currentEntityId=0;this.tracker={};this.slots=entityRules.map(rule=>new _bankSlot.default(rule,this));}createEntity(){let definition=arguments.length>0&&arguments[0]!==undefined?arguments[0]:{};let options=arguments.length>1?arguments[1]:undefined;const entity=new _registry.registry[definition.entityType||'Entity'](_objectSpread2({bank:this,fromBank:true},options),definition,this.currentEntityId++);this.track(entity);return entity;}track(entity){this.tracker[entity.entityId]=entity;}locate(entityId){return this.tracker[entityId];}findAll(bgioArguments,rule,context){if(!rule.conditions){throw new Error(`Cannot find entity with no conditions. Rule: ${JSON.stringify(rule)}`);}return (0, _filter.default)(Object.values(this.tracker),entity=>(0, _checkConditions.default)(bgioArguments,rule,{target:entity},context).conditionsAreMet);}findOne(bgioArguments,rule,context){return this.findAll(bgioArguments,rule,context)[0];}find(bgioArguments,rule,context){return rule.matchMultiple?this.findAll(bgioArguments,rule,context):this.findOne(bgioArguments,rule,context);}findParent(entity){return (0, _find.default)(this.tracker,ent=>ent.entities?.includes(entity)||ent.spaces?.includes(entity));}getOne(bgioArguments,rule,context){const slot=this.getSlot(bgioArguments,rule,context);if(!slot){console.error(`No matching slot for ${JSON.stringify(rule)}`);}return slot.getOne(bgioArguments,{state:rule.state},context);}getMultiple(bgioArguments,rule,count,context){const slots=this.getSlots(bgioArguments,rule,context);if(!slots.length){console.error(`No matching slots for ${JSON.stringify(rule)}`);}return slots.reduce((acc,slot)=>[...acc,...slot.getMultiple(bgioArguments,count,{state:rule.state})],[]);}getSlot(bgioArguments,rule,context){return this.slots.find(slot=>(0, _checkConditions.default)(bgioArguments,rule,{target:slot},context).conditionsAreMet);}getSlots(bgioArguments,rule,context){return this.slots.filter(slot=>(0, _checkConditions.default)(bgioArguments,rule,{target:slot},context).conditionsAreMet);}returnToBank(bgioArguments,entity){this.findParent(entity).remove(entity);this.getSlot(bgioArguments,entity.rule).returnToBank(entity);delete this.tracker[entity.entityId];}}exports["default"]=Bank;module.exports=exports.default;/***/},/***/2606(module,exports,__webpack_require__){Object.defineProperty(exports,"__esModule",{value:true});exports["default"]=void 0;var _space=_interopRequireDefault(__webpack_require__(1325));function _interopRequireDefault(e){return e&&e.__esModule?e:{default:e};}class Board extends _space.default{}exports["default"]=Board;module.exports=exports.default;/***/},/***/2130(module,exports,__webpack_require__){Object.defineProperty(exports,"__esModule",{value:true});exports["default"]=conditionFactory;var _isCondition=_interopRequireDefault(__webpack_require__(7350));var _notCondition=_interopRequireDefault(__webpack_require__(8801));var _orCondition=_interopRequireDefault(__webpack_require__(9299));var _someCondition=_interopRequireDefault(__webpack_require__(218));var _everyCondition=_interopRequireDefault(__webpack_require__(5163));var _containsCondition=_interopRequireDefault(__webpack_require__(7823));var _containsSameCondition=_interopRequireDefault(__webpack_require__(3546));var _inLineCondition=_interopRequireDefault(__webpack_require__(4372));var _hasLineCondition=_interopRequireDefault(__webpack_require__(1839));var _isFullCondition=_interopRequireDefault(__webpack_require__(7278));var _wouldCondition=_interopRequireDefault(__webpack_require__(441));var _noPossibleMovesCondition=_interopRequireDefault(__webpack_require__(2726));var _evaluateCondition=_interopRequireDefault(__webpack_require__(8401));var _positionCondition=_interopRequireDefault(__webpack_require__(6017));function _interopRequireDefault(e){return e&&e.__esModule?e:{default:e};}// import BingoCondition from "./bingo-condition.js";
|
|
1620
1601
|
// import RelativeMoveCondition from "./relative-move-condition.js";
|
|
1621
1602
|
function conditionFactory(rule){if(rule.conditionType==="Is"){return new _isCondition.default(rule);}else if(rule.conditionType==="Not"){return new _notCondition.default(rule);}else if(rule.conditionType==="Or"){return new _orCondition.default(rule);}else if(rule.conditionType==="Some"){return new _someCondition.default(rule);}else if(rule.conditionType==="Contains"){return new _containsCondition.default(rule);}else if(rule.conditionType==="ContainsSame"){return new _containsSameCondition.default(rule);}else if(rule.conditionType==="Every"){return new _everyCondition.default(rule);}else if(rule.conditionType==="InLine"){return new _inLineCondition.default(rule);}else if(rule.conditionType==="HasLine"){return new _hasLineCondition.default(rule);}else if(rule.conditionType==="IsFull"){return new _isFullCondition.default(rule);}else if(rule.conditionType==="Would"){return new _wouldCondition.default(rule);}else if(rule.conditionType==="NoPossibleMoves"){return new _noPossibleMovesCondition.default(rule);}else if(rule.conditionType==="Evaluate"){return new _evaluateCondition.default(rule);}else if(rule.conditionType==="Position"){return new _positionCondition.default(rule);// } else if (rule.conditionType === "bingo") {
|
|
1622
1603
|
// return new BingoCondition(rule);
|
|
@@ -1625,9 +1606,9 @@ function conditionFactory(rule){if(rule.conditionType==="Is"){return new _isCond
|
|
|
1625
1606
|
}}module.exports=exports.default;/***/},/***/4881(module,exports,__webpack_require__){Object.defineProperty(exports,"__esModule",{value:true});exports["default"]=void 0;var _resolveProperties=_interopRequireDefault(__webpack_require__(7208));function _interopRequireDefault(e){return e&&e.__esModule?e:{default:e};}class Condition{constructor(rule){this.rule=rule;}check(bgioArguments,payload,context){const conditionPayload=_objectSpread2({},payload);const newContext=_objectSpread2({},context);if(conditionPayload.target){newContext.originalTarget=conditionPayload.target;}const rule=(0, _resolveProperties.default)(bgioArguments,this.rule,newContext);// We don't simply defer to payload target because of Parent and RelativePath
|
|
1626
1607
|
// target types, for instance, which retarget to another entity
|
|
1627
1608
|
if(rule.target!==undefined){conditionPayload.target=rule.target;}// Nonexistent entities never fulfill conditions (including "Not" conditions!)
|
|
1628
|
-
if(this.rule.target!==undefined&&!conditionPayload.target){return {conditionIsMet:false};}return this.checkCondition(bgioArguments,rule,conditionPayload,newContext);}isMet(){return this.check(...arguments).conditionIsMet;}}exports["default"]=Condition;module.exports=exports.default;/***/},/***/7823(module,exports,__webpack_require__){Object.defineProperty(exports,"__esModule",{value:true});exports["default"]=void 0;_interopRequireDefault(__webpack_require__(1505));var _condition=_interopRequireDefault(__webpack_require__(4881));var _checkConditions=_interopRequireDefault(__webpack_require__(7611));function _interopRequireDefault(e){return e&&e.__esModule?e:{default:e};}class ContainsCondition extends _condition.default{checkCondition(bgioArguments,rule,payload,context){const{target}=payload;if(!target){return {matches:[],conditionIsMet:false};}else {const candidates=target.entities??target.spaces;const matches=candidates?.filter(entity=>(0, _checkConditions.default)(bgioArguments,rule,{target:entity},context).conditionsAreMet)??[];return {matches,conditionIsMet:!!matches.length};}}}exports["default"]=ContainsCondition;module.exports=exports.default;/***/},/***/3546(module,exports,__webpack_require__){Object.defineProperty(exports,"__esModule",{value:true});exports["default"]=void 0;var _pick=_interopRequireDefault(__webpack_require__(4383));var _conditionFactory=_interopRequireDefault(__webpack_require__(2130));var _condition=_interopRequireDefault(__webpack_require__(4881));function _interopRequireDefault(e){return e&&e.__esModule?e:{default:e};}class ContainsSame extends _condition.default{checkCondition(bgioArguments,rule,_ref){let{targets}=_ref;if(targets.length===1&&targets[0].entities?.length){return {conditionIsMet:true};}const[first,...restEntities]=targets;const conditionIsMet=first.entities.some(entity=>{const condition=(0, _conditionFactory.default)({conditionType:"Contains",conditions:[{conditionType:'Is',matcher:(0, _pick.default)(entity.rule,rule.properties)}]});return restEntities.every(ent=>{return condition.isMet(bgioArguments,{target:ent});});});return {conditionIsMet};}}exports["default"]=ContainsSame;module.exports=exports.default;/***/},/***/8401(module,exports,__webpack_require__){Object.defineProperty(exports,"__esModule",{value:true});exports["default"]=void 0;_interopRequireDefault(__webpack_require__(1505));var _condition=_interopRequireDefault(__webpack_require__(4881));var _resolveExpression=_interopRequireDefault(__webpack_require__(8123));function _interopRequireDefault(e){return e&&e.__esModule?e:{default:e};}class Evaluate extends _condition.default{checkCondition(bgioArguments,rule,payload,context){const newContext=_objectSpread2({},context);if(payload?.target){newContext.target=payload.target;}const result=(0, _resolveExpression.default)(bgioArguments,rule,newContext);return {result,conditionIsMet:!!result};}}exports["default"]=Evaluate;module.exports=exports.default;/***/},/***/5163(module,exports,__webpack_require__){Object.defineProperty(exports,"__esModule",{value:true});exports["default"]=void 0;var _condition=_interopRequireDefault(__webpack_require__(4881));var _checkConditions=_interopRequireDefault(__webpack_require__(7611));function _interopRequireDefault(e){return e&&e.__esModule?e:{default:e};}class EveryCondition extends _condition.default{checkCondition(bgioArguments,rule,_ref,context){let{target:targets}=_ref;const results=targets.map(target=>{const loopContext=_objectSpread2(_objectSpread2({},context),{},{loopTarget:target});return (0, _checkConditions.default)(bgioArguments,rule,undefined,loopContext);});return {conditionIsMet:results.every(r=>r.conditionsAreMet),results};}}exports["default"]=EveryCondition;module.exports=exports.default;/***/},/***/1839(module,exports,__webpack_require__){Object.defineProperty(exports,"__esModule",{value:true});exports["default"]=void 0;var _condition=_interopRequireDefault(__webpack_require__(4881));var _gridContainsSequence=_interopRequireDefault(__webpack_require__(1138));function _interopRequireDefault(e){return e&&e.__esModule?e:{default:e};}class HasLineCondition extends _condition.default{checkCondition(bgioArguments,rule,payload,context){const{matches}=(0, _gridContainsSequence.default)(bgioArguments,payload.target,rule.sequence,context);return {matches,conditionIsMet:!!matches.length};}}exports["default"]=HasLineCondition;module.exports=exports.default;/***/},/***/4372(module,exports,__webpack_require__){Object.defineProperty(exports,"__esModule",{value:true});exports["default"]=void 0;var _condition=_interopRequireDefault(__webpack_require__(4881));var _gridContainsSequence=_interopRequireDefault(__webpack_require__(1138));function _interopRequireDefault(e){return e&&e.__esModule?e:{default:e};}class InLineCondition extends _condition.default{checkCondition(bgioArguments,rule,payload,context){const{G}=bgioArguments;const{target}=payload;const parent=G.bank.findParent(payload.target);const{matches:allMatches}=(0, _gridContainsSequence.default)(bgioArguments,parent,rule.sequence,context);const matches=allMatches.filter(sequence=>sequence.some(space=>space===target));return {matches,conditionIsMet:!!matches.length};}}exports["default"]=InLineCondition;module.exports=exports.default;/***/},/***/7350(module,exports,__webpack_require__){Object.defineProperty(exports,"__esModule",{value:true});exports["default"]=void 0;var _condition=_interopRequireDefault(__webpack_require__(4881));var _entityMatches=_interopRequireDefault(__webpack_require__(6413));function _interopRequireDefault(e){return e&&e.__esModule?e:{default:e};}class Is extends _condition.default{checkCondition(bgioArguments,rule,_ref,context){let{target}=_ref;if(this.rule.entity&&target!==rule.entity){return {target,conditionIsMet:false};}return {target,conditionIsMet:(0, _entityMatches.default)(bgioArguments,rule.matcher,target,context)};}}exports["default"]=Is;module.exports=exports.default;/***/},/***/7278(module,exports,__webpack_require__){Object.defineProperty(exports,"__esModule",{value:true});exports["default"]=void 0;var _condition=_interopRequireDefault(__webpack_require__(4881));function _interopRequireDefault(e){return e&&e.__esModule?e:{default:e};}class IsFull extends _condition.default{checkCondition(bgioArguments,rule,payload,context){return {conditionIsMet:payload.target.spaces.every(space=>space.entities.length)};}}exports["default"]=IsFull;module.exports=exports.default;/***/},/***/2726(module,exports,__webpack_require__){Object.defineProperty(exports,"__esModule",{value:true});exports["default"]=void 0;var _condition=_interopRequireDefault(__webpack_require__(4881));var _anyValidMoves=_interopRequireDefault(__webpack_require__(3538));var _getCurrentMoves=_interopRequireDefault(__webpack_require__(4171));function _interopRequireDefault(e){return e&&e.__esModule?e:{default:e};}class NoPossibleMoves extends _condition.default{checkCondition(bgioArguments,_,__,context){return {conditionIsMet:!(0, _anyValidMoves.default)(bgioArguments,(0, _getCurrentMoves.default)(bgioArguments,context))};}}exports["default"]=NoPossibleMoves;module.exports=exports.default;/***/},/***/8801(module,exports,__webpack_require__){Object.defineProperty(exports,"__esModule",{value:true});exports["default"]=void 0;var _condition=_interopRequireDefault(__webpack_require__(4881));var _checkConditions=_interopRequireDefault(__webpack_require__(7611));function _interopRequireDefault(e){return e&&e.__esModule?e:{default:e};}class NotCondition extends _condition.default{checkCondition(bgioArguments,rule,payload,context){const result=(0, _checkConditions.default)(bgioArguments,rule,payload,context);return {conditionIsMet:!result.conditionsAreMet};}}exports["default"]=NotCondition;module.exports=exports.default;/***/},/***/9299(module,exports,__webpack_require__){Object.defineProperty(exports,"__esModule",{value:true});exports["default"]=void 0;var _condition=_interopRequireDefault(__webpack_require__(4881));var _findMetCondition=_interopRequireDefault(__webpack_require__(2742));function _interopRequireDefault(e){return e&&e.__esModule?e:{default:e};}class Or extends _condition.default{checkCondition(bgioArguments,rule,payload,context){const result=(0, _findMetCondition.default)(bgioArguments,rule,payload,context);return {conditionIsMet:!!result};}}exports["default"]=Or;module.exports=exports.default;/***/},/***/6017(module,exports,__webpack_require__){Object.defineProperty(exports,"__esModule",{value:true});exports["default"]=void 0;var _condition=_interopRequireDefault(__webpack_require__(4881));function _interopRequireDefault(e){return e&&e.__esModule?e:{default:e};}class Position extends _condition.default{checkCondition(bgioArguments,rule,_ref){let{target}=_ref;const parent=bgioArguments.G.bank.findParent(target);let conditionIsMet;if(rule.position==='First'){conditionIsMet=parent.entities.indexOf(target)===0;}return {conditionIsMet};}}exports["default"]=Position;module.exports=exports.default;/***/},/***/218(module,exports,__webpack_require__){Object.defineProperty(exports,"__esModule",{value:true});exports["default"]=void 0;var _condition=_interopRequireDefault(__webpack_require__(4881));var _checkConditions=_interopRequireDefault(__webpack_require__(7611));function _interopRequireDefault(e){return e&&e.__esModule?e:{default:e};}class SomeCondition extends _condition.default{checkCondition(bgioArguments,rule,_ref,context){let{target:targets}=_ref;const result=targets.find(target=>{const loopContext=_objectSpread2(_objectSpread2({},context),{},{loopTarget:target});return (0, _checkConditions.default)(bgioArguments,rule,undefined,loopContext).conditionsAreMet;});return {conditionIsMet:!!result,result};}}exports["default"]=SomeCondition;module.exports=exports.default;/***/},/***/441(module,exports,__webpack_require__){Object.defineProperty(exports,"__esModule",{value:true});exports["default"]=void 0;var _condition=_interopRequireDefault(__webpack_require__(4881));var _checkConditions=_interopRequireDefault(__webpack_require__(7611));var _simulateMove=_interopRequireDefault(__webpack_require__(3276));function _interopRequireDefault(e){return e&&e.__esModule?e:{default:e};}// relying on target order is not perfect;
|
|
1609
|
+
if(this.rule.target!==undefined&&!conditionPayload.target){return {conditionIsMet:false};}return this.checkCondition(bgioArguments,rule,conditionPayload,newContext);}isMet(){return this.check(...arguments).conditionIsMet;}}exports["default"]=Condition;module.exports=exports.default;/***/},/***/7823(module,exports,__webpack_require__){Object.defineProperty(exports,"__esModule",{value:true});exports["default"]=void 0;_interopRequireDefault(__webpack_require__(1505));var _condition=_interopRequireDefault(__webpack_require__(4881));var _checkConditions=_interopRequireDefault(__webpack_require__(7611));function _interopRequireDefault(e){return e&&e.__esModule?e:{default:e};}class ContainsCondition extends _condition.default{checkCondition(bgioArguments,rule,payload,context){const{target}=payload;if(!target){return {matches:[],conditionIsMet:false};}else {const candidates=target.entities??target.spaces;const matches=candidates?.filter(entity=>(0, _checkConditions.default)(bgioArguments,rule,{target:entity},context).conditionsAreMet)??[];return {matches,conditionIsMet:!!matches.length};}}}exports["default"]=ContainsCondition;module.exports=exports.default;/***/},/***/3546(module,exports,__webpack_require__){Object.defineProperty(exports,"__esModule",{value:true});exports["default"]=void 0;var _pick=_interopRequireDefault(__webpack_require__(4383));var _conditionFactory=_interopRequireDefault(__webpack_require__(2130));var _condition=_interopRequireDefault(__webpack_require__(4881));function _interopRequireDefault(e){return e&&e.__esModule?e:{default:e};}class ContainsSame extends _condition.default{checkCondition(bgioArguments,rule,_ref){let{targets}=_ref;if(targets.length===1&&targets[0].entities?.length){return {conditionIsMet:true};}const[first,...restEntities]=targets;const conditionIsMet=first.entities.some(entity=>{const condition=(0, _conditionFactory.default)({conditionType:"Contains",conditions:[{conditionType:'Is',matcher:(0, _pick.default)(entity.rule,rule.properties)}]});return restEntities.every(ent=>{return condition.isMet(bgioArguments,{target:ent});});});return {conditionIsMet};}}exports["default"]=ContainsSame;module.exports=exports.default;/***/},/***/8401(module,exports,__webpack_require__){Object.defineProperty(exports,"__esModule",{value:true});exports["default"]=void 0;_interopRequireDefault(__webpack_require__(1505));var _condition=_interopRequireDefault(__webpack_require__(4881));var _resolveExpression=_interopRequireDefault(__webpack_require__(8123));function _interopRequireDefault(e){return e&&e.__esModule?e:{default:e};}class Evaluate extends _condition.default{checkCondition(bgioArguments,rule,payload,context){const newContext=_objectSpread2({},context);if(payload?.target){newContext.target=payload.target;}const result=(0, _resolveExpression.default)(bgioArguments,rule,newContext);return {result,conditionIsMet:!!result};}}exports["default"]=Evaluate;module.exports=exports.default;/***/},/***/5163(module,exports,__webpack_require__){Object.defineProperty(exports,"__esModule",{value:true});exports["default"]=void 0;var _condition=_interopRequireDefault(__webpack_require__(4881));var _checkConditions=_interopRequireDefault(__webpack_require__(7611));function _interopRequireDefault(e){return e&&e.__esModule?e:{default:e};}class EveryCondition extends _condition.default{checkCondition(bgioArguments,rule,_ref,context){let{target:targets}=_ref;const results=targets.map(target=>{const loopContext=_objectSpread2(_objectSpread2({},context),{},{loopTarget:target});return (0, _checkConditions.default)(bgioArguments,rule,undefined,loopContext);});return {conditionIsMet:results.every(r=>r.conditionsAreMet),results};}}exports["default"]=EveryCondition;module.exports=exports.default;/***/},/***/1839(module,exports,__webpack_require__){Object.defineProperty(exports,"__esModule",{value:true});exports["default"]=void 0;var _condition=_interopRequireDefault(__webpack_require__(4881));var _gridContainsSequence=_interopRequireDefault(__webpack_require__(1138));function _interopRequireDefault(e){return e&&e.__esModule?e:{default:e};}class HasLineCondition extends _condition.default{checkCondition(bgioArguments,rule,payload,context){const{matches}=(0, _gridContainsSequence.default)(bgioArguments,payload.target,rule.sequence,context);return {matches,conditionIsMet:!!matches.length};}}exports["default"]=HasLineCondition;module.exports=exports.default;/***/},/***/4372(module,exports,__webpack_require__){Object.defineProperty(exports,"__esModule",{value:true});exports["default"]=void 0;var _condition=_interopRequireDefault(__webpack_require__(4881));var _gridContainsSequence=_interopRequireDefault(__webpack_require__(1138));function _interopRequireDefault(e){return e&&e.__esModule?e:{default:e};}class InLineCondition extends _condition.default{checkCondition(bgioArguments,rule,payload,context){const{G}=bgioArguments;const{target}=payload;const parent=G.bank.findParent(payload.target);const{matches:allMatches}=(0, _gridContainsSequence.default)(bgioArguments,parent,rule.sequence,context);const matches=allMatches.filter(sequence=>sequence.some(space=>space===target));return {matches,conditionIsMet:!!matches.length};}}exports["default"]=InLineCondition;module.exports=exports.default;/***/},/***/7350(module,exports,__webpack_require__){Object.defineProperty(exports,"__esModule",{value:true});exports["default"]=void 0;var _condition=_interopRequireDefault(__webpack_require__(4881));var _entityMatches=_interopRequireDefault(__webpack_require__(6413));function _interopRequireDefault(e){return e&&e.__esModule?e:{default:e};}class Is extends _condition.default{checkCondition(bgioArguments,rule,_ref,context){let{target}=_ref;if(this.rule.entity&&target!==rule.entity){return {target,conditionIsMet:false};}return {target,conditionIsMet:(0, _entityMatches.default)(bgioArguments,rule.matcher,target,context)};}}exports["default"]=Is;module.exports=exports.default;/***/},/***/7278(module,exports,__webpack_require__){Object.defineProperty(exports,"__esModule",{value:true});exports["default"]=void 0;var _condition=_interopRequireDefault(__webpack_require__(4881));function _interopRequireDefault(e){return e&&e.__esModule?e:{default:e};}class IsFull extends _condition.default{checkCondition(bgioArguments,rule,payload,context){return {conditionIsMet:payload.target.spaces.every(space=>space?.entities.length)};}}exports["default"]=IsFull;module.exports=exports.default;/***/},/***/2726(module,exports,__webpack_require__){Object.defineProperty(exports,"__esModule",{value:true});exports["default"]=void 0;var _condition=_interopRequireDefault(__webpack_require__(4881));var _anyValidMoves=_interopRequireDefault(__webpack_require__(3538));var _getCurrentMoves=_interopRequireDefault(__webpack_require__(4171));function _interopRequireDefault(e){return e&&e.__esModule?e:{default:e};}class NoPossibleMoves extends _condition.default{checkCondition(bgioArguments,_,__,context){return {conditionIsMet:!(0, _anyValidMoves.default)(bgioArguments,(0, _getCurrentMoves.default)(bgioArguments,context))};}}exports["default"]=NoPossibleMoves;module.exports=exports.default;/***/},/***/8801(module,exports,__webpack_require__){Object.defineProperty(exports,"__esModule",{value:true});exports["default"]=void 0;var _condition=_interopRequireDefault(__webpack_require__(4881));var _checkConditions=_interopRequireDefault(__webpack_require__(7611));function _interopRequireDefault(e){return e&&e.__esModule?e:{default:e};}class NotCondition extends _condition.default{checkCondition(bgioArguments,rule,payload,context){const result=(0, _checkConditions.default)(bgioArguments,rule,payload,context);return {conditionIsMet:!result.conditionsAreMet};}}exports["default"]=NotCondition;module.exports=exports.default;/***/},/***/9299(module,exports,__webpack_require__){Object.defineProperty(exports,"__esModule",{value:true});exports["default"]=void 0;var _condition=_interopRequireDefault(__webpack_require__(4881));var _findMetCondition=_interopRequireDefault(__webpack_require__(2742));function _interopRequireDefault(e){return e&&e.__esModule?e:{default:e};}class Or extends _condition.default{checkCondition(bgioArguments,rule,payload,context){const result=(0, _findMetCondition.default)(bgioArguments,rule,payload,context);return {conditionIsMet:!!result};}}exports["default"]=Or;module.exports=exports.default;/***/},/***/6017(module,exports,__webpack_require__){Object.defineProperty(exports,"__esModule",{value:true});exports["default"]=void 0;var _condition=_interopRequireDefault(__webpack_require__(4881));function _interopRequireDefault(e){return e&&e.__esModule?e:{default:e};}class Position extends _condition.default{checkCondition(bgioArguments,rule,_ref){let{target}=_ref;const parent=bgioArguments.G.bank.findParent(target);let conditionIsMet;if(rule.position==='First'){conditionIsMet=parent.entities.indexOf(target)===0;}return {conditionIsMet};}}exports["default"]=Position;module.exports=exports.default;/***/},/***/218(module,exports,__webpack_require__){Object.defineProperty(exports,"__esModule",{value:true});exports["default"]=void 0;var _condition=_interopRequireDefault(__webpack_require__(4881));var _checkConditions=_interopRequireDefault(__webpack_require__(7611));function _interopRequireDefault(e){return e&&e.__esModule?e:{default:e};}class SomeCondition extends _condition.default{checkCondition(bgioArguments,rule,_ref,context){let{target:targets}=_ref;const result=targets.find(target=>{const loopContext=_objectSpread2(_objectSpread2({},context),{},{loopTarget:target});return (0, _checkConditions.default)(bgioArguments,rule,undefined,loopContext).conditionsAreMet;});return {conditionIsMet:!!result,result};}}exports["default"]=SomeCondition;module.exports=exports.default;/***/},/***/441(module,exports,__webpack_require__){Object.defineProperty(exports,"__esModule",{value:true});exports["default"]=void 0;var _condition=_interopRequireDefault(__webpack_require__(4881));var _checkConditions=_interopRequireDefault(__webpack_require__(7611));var _simulateMove=_interopRequireDefault(__webpack_require__(3276));function _interopRequireDefault(e){return e&&e.__esModule?e:{default:e};}// relying on target order is not perfect;
|
|
1629
1610
|
// I think we'll want to switch to named arguments
|
|
1630
|
-
const argNameMap={PlaceNew:['destination'],RemoveEntity:['entity'],MoveEntity:['entity','destination'],TakeFrom:['source','destination'],SetState:['entity','state']};class WouldCondition extends _condition.default{checkCondition(bgioArguments,rule,_ref,context){let{target,targets=[target]}=_ref;const payload={arguments:targets.reduce((acc,target,i)=>_objectSpread2(_objectSpread2({},acc),{},{[argNameMap[context.moveInstance.rule.
|
|
1611
|
+
const argNameMap={PlaceNew:['destination'],RemoveEntity:['entity'],MoveEntity:['entity','destination'],TakeFrom:['source','destination'],SetState:['entity','state']};class WouldCondition extends _condition.default{checkCondition(bgioArguments,rule,_ref,context){let{target,targets=[target]}=_ref;const payload={arguments:targets.reduce((acc,target,i)=>_objectSpread2(_objectSpread2({},acc),{},{[argNameMap[context.moveInstance.rule.moveType][i]]:target}),{})};const simulatedG=(0, _simulateMove.default)(bgioArguments,payload,context);let simulatedConditionsPayload={};if(target){simulatedConditionsPayload={target:simulatedG.bank.locate(target.entityId)};}else if(targets){simulatedConditionsPayload={targets:targets.map(t=>simulatedG.bank.locate(t.entityId))};}const conditionResults=(0, _checkConditions.default)(_objectSpread2(_objectSpread2({},bgioArguments),{},{G:simulatedG}),rule,simulatedConditionsPayload,context);const conditionIsMet=conditionResults.conditionsAreMet;// optimization: don't bother restoring on failure
|
|
1631
1612
|
const results=conditionIsMet?restoreReferences(conditionResults.results,entityId=>bgioArguments.G.bank.locate(entityId)):conditionResults.results;return {results,conditionIsMet};}}// references to simulated object are useless
|
|
1632
1613
|
exports["default"]=WouldCondition;function restoreReferences(obj,getOriginalEntity){let seen=arguments.length>2&&arguments[2]!==undefined?arguments[2]:new WeakSet();if(typeof obj!=='object'||obj===null){return obj;}if(seen.has(obj)){return obj;}seen.add(obj);if(obj.entityId!==undefined){return getOriginalEntity(obj.entityId);}if(Array.isArray(obj)){return obj.map(item=>restoreReferences(item,getOriginalEntity,seen));}else {const restored={};for(const key in obj){if(obj.hasOwnProperty(key)){restored[key]=restoreReferences(obj[key],getOriginalEntity,seen);}}return restored;}}module.exports=exports.default;/***/},/***/4511(module,exports){Object.defineProperty(exports,"__esModule",{value:true});exports["default"]=void 0;class Entity{constructor(options,rule,id){if(!options?.fromBank){throw new Error(`Do not create entities directly. Go through the Bank. rule: ${JSON.stringify(rule)}`);}this.rule=rule;this.entityId=id;this.state={};if(this.rule.stateGroups){Object.entries(this.rule.stateGroups).forEach(_ref=>{let[stateGroupName,stateGroupValues]=_ref;const stateGroupValueName=options?.initialStateGroups?.[stateGroupName]??Object.keys(stateGroupValues)[0];Object.assign(this.state,stateGroupValues[stateGroupValueName]);});}if(this.rule.state){Object.assign(this.state,this.rule.state);}}get attributes(){return _objectSpread2(_objectSpread2(_objectSpread2({},this.rule),this),this.state);}}exports["default"]=Entity;module.exports=exports.default;/***/},/***/6677(module,exports,__webpack_require__){Object.defineProperty(exports,"__esModule",{value:true});exports["default"]=expandGameRules;_interopRequireDefault(__webpack_require__(8055));var _find=_interopRequireDefault(__webpack_require__(7309));var _jsonTransformer=_interopRequireDefault(__webpack_require__(6730));function _interopRequireDefault(e){return e&&e.__esModule?e:{default:e};}// for later when we implement deep replacement
|
|
1633
1614
|
// { type: 'IsEmpty' } = { type: 'not', conditions: [{ type: 'Contains' }],
|
|
@@ -1643,9 +1624,9 @@ exports["default"]=WouldCondition;function restoreReferences(obj,getOriginalEnti
|
|
|
1643
1624
|
// ]
|
|
1644
1625
|
// Things we always want, don't need to configure, and
|
|
1645
1626
|
// want to treat as first-class citizens
|
|
1646
|
-
const invariantEntities=[{
|
|
1627
|
+
const invariantEntities=[{entityType:"Space",count:"Infinity"},{entityType:"Board",name:'sharedBoard'},{name:"playerMarker",perPlayer:true,count:"Infinity"}];function expandEntities(rules){rules.entities=[...invariantEntities,...(rules.entities||[])];}function expandInitialPlacements(rules,entities){if(rules.sharedBoard){const sharedBoardPlacements=rules.sharedBoard.map(matcher=>({entity:matcher,destination:{name:'sharedBoard'}}));if(!rules.initialPlacements)rules.initialPlacements=[];rules.initialPlacements.unshift(...sharedBoardPlacements);}if(rules.personalBoard){entities.push({entityType:"Board",name:'personalBoard',perPlayer:true});const personalBoardPlacements=rules.personalBoard.map(matcher=>({entity:matcher,destination:{name:'personalBoard'}}));if(!rules.initialPlacements)rules.initialPlacements=[];rules.initialPlacements.unshift(...personalBoardPlacements);}if(rules.initialPlacements){const initialPlacementMoves=rules.initialPlacements.map(placement=>{// probably going to need to separate this even in the shorthand. maybe
|
|
1647
1628
|
// combine, then search entity rule and extract state variables instead?
|
|
1648
|
-
const _placement$entity=placement.entity,{state}=_placement$entity,matcher=_objectWithoutProperties(_placement$entity,_excluded0);const entityDefinition=(0, _find.default)(entities,matcher);if(placement.destination.name==='personalBoard'){return {
|
|
1629
|
+
const _placement$entity=placement.entity,{state}=_placement$entity,matcher=_objectWithoutProperties(_placement$entity,_excluded0);const entityDefinition=(0, _find.default)(entities,matcher);if(placement.destination.name==='personalBoard'){return {moveType:'ForEach',arguments:{targets:{type:'ctxPath',path:['playOrder']}},move:{moveType:'PlaceNew',entity:{state,conditions:[{conditionType:'Is',matcher:_objectSpread2(_objectSpread2({},matcher),entityDefinition.perPlayer?{player:{type:'contextPath',path:['loopTarget']}}:{})}]},arguments:{destination:{conditions:[{conditionType:'Is',matcher:_objectSpread2(_objectSpread2({},placement.destination),{},{player:{type:'contextPath',path:['loopTarget']}})}]}}}};}else {return {moveType:'PlaceNew',entity:{state,conditions:[{conditionType:'Is',matcher}]},arguments:{destination:{conditions:[{conditionType:'Is',matcher:placement.destination}]}}};}});if(!rules.initialMoves)rules.initialMoves=[];rules.initialMoves.unshift(...initialPlacementMoves);delete rules.initialPlacements;}}const keyMappings=[];const simpleReplacements=[['isCurrentPlayer',{conditionType:'Is',matcher:{player:{type:'ctxPath',path:['currentPlayer']}}}],['isEmpty',{conditionType:'Not',conditions:[{conditionType:'Contains'}]}],['ownerOfFirstResultEntity',// might have to more tightly couple this to HasLine condition
|
|
1649
1630
|
{"type":"contextPath","path":["results",0,"matches",0,0,"entities",0,"attributes","player"]}]];const transformationRules=[{test:val=>val&&typeof val==='object',replace:val=>{keyMappings.forEach(_ref=>{let[oldKey,newKey]=_ref;if(val.hasOwnProperty(oldKey)){val[newKey]=val[oldKey];delete val[oldKey];}});return val;}},{test:val=>typeof val==='string',replace:val=>{for(let i=0,len=simpleReplacements.length;i<len;i++){if(val===simpleReplacements[i][0]){return simpleReplacements[i][1];}}return val;}},{test:val=>val?.conditions,replace:val=>{if(!Array.isArray(val.conditions)){val.conditions=[val.conditions];}return val;}},{test:val=>val?.conditions,replace:val=>{// make "Is" the default condition
|
|
1650
1631
|
for(let i=0,len=val.conditions.length;i<len;i++){if(!val.conditions[i].conditionType){val.conditions[i]={conditionType:'Is',matcher:val.conditions[i]};}}return val;}},{test:val=>typeof val?.target==='string',replace:val=>_objectSpread2(_objectSpread2({},val),{},{target:{conditions:[{conditionType:'Is',matcher:{name:val.target}}]}})}];function expandGameRules(gameRules){const rules=(0, _jsonTransformer.default)(gameRules,transformationRules);if(!rules.sharedBoard){rules.sharedBoard=rules.entities;}if(!rules.turn){rules.turn={minMoves:1,maxMoves:1};}expandEntities(rules);expandInitialPlacements(rules,rules.entities);if(rules.phases){Object.entries(rules.phases).forEach(phaseRule=>{expandInitialPlacements(phaseRule,rules.entities);});}if(gameRules.numPlayers){gameRules.minPlayers=gameRules.maxPlayers=gameRules.numPlayers;}return rules;}module.exports=exports.default;/***/},/***/4913(module,exports,__webpack_require__){Object.defineProperty(exports,"__esModule",{value:true});exports["default"]=gameFactory;var _wackson=__webpack_require__(7627);var _moveFactory=_interopRequireDefault(__webpack_require__(510));var _bank=_interopRequireDefault(__webpack_require__(6103));var _expandGameRules=_interopRequireDefault(__webpack_require__(6677));var _getScenarioResults=_interopRequireDefault(__webpack_require__(236));var _doMoves=_interopRequireDefault(__webpack_require__(2796));var _deserializeBgioArguments=_interopRequireDefault(__webpack_require__(3358));function _interopRequireDefault(e){return e&&e.__esModule?e:{default:e};}function gameFactory(gameRules,gameName){const game={name:gameName};const rules=(0, _expandGameRules.default)(gameRules);game.setup=bgioArguments=>{const{ctx}=bgioArguments;const initialState={_meta:{passedPlayers:[],previousPayloads:{}}};const entityDefinitions=expandEntityDefinitions(rules.entities,ctx);initialState.bank=new _bank.default(entityDefinitions);initialState.sharedBoard=initialState.bank.getOne(bgioArguments,{conditions:[{conditionType:'Is',matcher:{name:"sharedBoard"}}]});if(rules.personalBoard){initialState.personalBoards=bgioArguments.ctx.playOrder.map(playerID=>initialState.bank.getOne(bgioArguments,{conditions:[{conditionType:'Is',matcher:{name:"personalBoard",player:playerID}}]}));}rules.initialMoves?.forEach(moveRule=>{(0, _moveFactory.default)(moveRule,game).moveInstance.doMove(_objectSpread2(_objectSpread2({},bgioArguments),{},{G:initialState}));});return JSON.parse((0, _wackson.serialize)(initialState));};if(rules.moves){game.moves=createMoves(rules.moves,game);}if(rules.turn){game.turn=createTurn(rules.turn,game);}if(rules.phases){game.phases=Object.entries(rules.phases).reduce((acc,_ref)=>{let[name,phaseRule]=_ref;return _objectSpread2(_objectSpread2({},acc),{},{[name]:createPhase(phaseRule,game)});},{});}if(rules.endIf){game.endIf=bgioArguments=>{const newBgioArguments=(0, _deserializeBgioArguments.default)(bgioArguments);return (0, _getScenarioResults.default)(newBgioArguments,rules.endIf);};}if(!gameRules.DEBUG_DISABLE_SECRET_STATE){game.playerView=bgioArguments=>{const{G,playerID}=(0, _deserializeBgioArguments.default)(bgioArguments);Object.values(G.bank.tracker).forEach(entity=>{if(entity.rule.contentsHiddenFrom==='All'||entity.rule.contentsHiddenFrom==='Others'&&(playerID!==entity.rule.player||playerID==undefined)){// may want to hide entities inside spaces instead?
|
|
1651
1632
|
if(entity.spaces){entity.spaces=entity.rule.hideLength?[]:entity.spaces.map(()=>G.bank.createEntity());}if(entity.entities){entity.entities=entity.rule.hideLength?[]:entity.entities.map(()=>G.bank.createEntity());}}});return JSON.parse((0, _wackson.serialize)(G));};}return game;}// create a new entity for each variant
|
|
@@ -1656,13 +1637,13 @@ if(entityCopy.variants){const variants=entityCopy.variants;delete entityCopy.var
|
|
|
1656
1637
|
newBgioArguments.G._meta.passedPlayers=newBgioArguments.G._meta.passedPlayers.filter(p=>p!==newBgioArguments.ctx.currentPlayer);(0, _doMoves.default)(newBgioArguments,turnRule.initialMoves,{game});(0, _doMoves.default)(newBgioArguments,stageRule?.initialMoves,{game});return JSON.parse((0, _wackson.serialize)(newBgioArguments.G));};if(turnRule.stages){Object.entries(turnRule.stages).forEach(_ref2=>{let[stageName,stageRule]=_ref2;if(stageRule.moves){turn.stages[stageName].moves=createMoves(stageRule.moves,game);}});}if(turnRule.order?.playOrder==='RotateFirst'){turnRule.order.first=()=>0;turnRule.order.next=_ref3=>{let{ctx}=_ref3;return (ctx.playOrderPos+1)%ctx.numPlayers;};turn.order.playOrder=_ref4=>{let{ctx,G}=_ref4;return G._meta.isAfterFirstPhase?[...ctx.playOrder.slice(1),ctx.playOrder[0]]:ctx.playOrder;};}return turn;}function createPhase(phaseRule,game){const phase=_objectSpread2({},phaseRule);if(phaseRule.turn){phase.turn=createTurn(phaseRule.turn,game);}if(phaseRule.moves){phase.moves=createMoves(phaseRule.moves,game);}phase.onBegin=bgioArguments=>{const newBgioArguments=(0, _deserializeBgioArguments.default)(bgioArguments);(0, _doMoves.default)(newBgioArguments,phaseRule.initialMoves,{game});newBgioArguments.G._meta.currentPhaseHasBeenSetUp=true;newBgioArguments.G._meta.nextPhase=phaseRule.next;return JSON.parse((0, _wackson.serialize)(newBgioArguments.G));};if(phaseRule.endIf){phase.endIf=bgioArguments=>{const newBgioArguments=(0, _deserializeBgioArguments.default)(bgioArguments);if(newBgioArguments.G._meta.currentPhaseHasBeenSetUp){const result=(0, _getScenarioResults.default)(newBgioArguments,phaseRule.endIf);if(result){return result;}}};}phase.onEnd=_ref5=>{let{G}=_ref5;G._meta.currentPhaseHasBeenSetUp=false;G._meta.isAfterFirstPhase=true;};return phase;}function createMoves(moves,game){return Object.entries(moves).reduce((acc,_ref6)=>{let[name,moveDefinition]=_ref6;return _objectSpread2(_objectSpread2({},acc),{},{[name]:(0, _moveFactory.default)(_objectSpread2(_objectSpread2({},moveDefinition),{},{name}),game)});},{});}module.exports=exports.default;/***/},/***/8243(module,exports,__webpack_require__){Object.defineProperty(exports,"__esModule",{value:true});exports["default"]=void 0;var _move=_interopRequireDefault(__webpack_require__(6973));function _interopRequireDefault(e){return e&&e.__esModule?e:{default:e};}class EndTurn extends _move.default{do(bgioArguments){bgioArguments.events.endTurn();}}exports["default"]=EndTurn;module.exports=exports.default;/***/},/***/3459(module,exports,__webpack_require__){Object.defineProperty(exports,"__esModule",{value:true});exports["default"]=void 0;var _move=_interopRequireDefault(__webpack_require__(6973));var _moveFactory=__webpack_require__(510);function _interopRequireDefault(e){return e&&e.__esModule?e:{default:e};}class ForEach extends _move.default{do(bgioArguments,rule,_ref,context){let{arguments:{targets}}=_ref;targets.forEach(target=>{const loopContext=_objectSpread2(_objectSpread2({},context),{},{loopTarget:target});(0, _moveFactory.getMoveInstance)(rule.move).doMove(bgioArguments,undefined,loopContext);});}}exports["default"]=ForEach;module.exports=exports.default;/***/},/***/5885(module,exports,__webpack_require__){Object.defineProperty(exports,"__esModule",{value:true});exports["default"]=void 0;var _move=_interopRequireDefault(__webpack_require__(6973));function _interopRequireDefault(e){return e&&e.__esModule?e:{default:e};}class MoveEntity extends _move.default{do(bgioArguments,rule,_ref){let{arguments:{entity,destination}}=_ref;// todo: move all such things to always be multiple
|
|
1657
1638
|
if(Array.isArray(entity)){entity.forEach(e=>{bgioArguments.G.bank.findParent(e)?.remove(e);destination.placeEntity(e,rule.position);});}else {bgioArguments.G.bank.findParent(entity)?.remove(entity);destination.placeEntity(entity,rule.position);}}}exports["default"]=MoveEntity;module.exports=exports.default;/***/},/***/510(__unused_webpack_module,exports,__webpack_require__){Object.defineProperty(exports,"__esModule",{value:true});exports["default"]=moveFactory;exports.getMoveInstance=getMoveInstance;var _wackson=__webpack_require__(7627);var _core=__webpack_require__(4039);var _registry=__webpack_require__(3883);var _deserializeBgioArguments=_interopRequireDefault(__webpack_require__(3358));var _moveEntity=_interopRequireDefault(__webpack_require__(5885));var _removeEntity=_interopRequireDefault(__webpack_require__(2414));var _placeNew=_interopRequireDefault(__webpack_require__(6642));var _takeFrom=_interopRequireDefault(__webpack_require__(4888));var _setState=_interopRequireDefault(__webpack_require__(9421));var _setActivePlayers=_interopRequireDefault(__webpack_require__(2790));var _endTurn=_interopRequireDefault(__webpack_require__(8243));var _passTurn=_interopRequireDefault(__webpack_require__(3409));var _forEach=_interopRequireDefault(__webpack_require__(3459));var _pass=_interopRequireDefault(__webpack_require__(5953));var _shuffle=_interopRequireDefault(__webpack_require__(2763));function _interopRequireDefault(e){return e&&e.__esModule?e:{default:e};}function moveFactory(moveRule,game){const moveInstance=getMoveInstance(moveRule);// accepts serialized G and payload, returns serialized
|
|
1658
1639
|
const compatibleMove=function(bgioArguments,serializablePayload){const newBgioArguments=(0, _deserializeBgioArguments.default)(bgioArguments);const{G}=newBgioArguments;const payload=revivePayload(serializablePayload,G);const context={moveInstance,game};const moveConditionResults=moveInstance.doMove(newBgioArguments,payload,context);context.moveConditionResults=[moveConditionResults];if(moveConditionResults!==_core.INVALID_MOVE&&moveRule.then){for(let automaticMoveRule of moveRule.then){const result=getMoveInstance(automaticMoveRule).doMove(newBgioArguments,{},_objectSpread2({},context)// spread here so prevArguments doesn't change for sibling
|
|
1659
|
-
);context.moveConditionResults.push(result);}}return JSON.parse((0, _wackson.serialize)(G));};compatibleMove.moveInstance=moveInstance;return compatibleMove;}function revivePayload(serializablePayload,G){if(serializablePayload){const payload=(0, _wackson.deserialize)(JSON.stringify(serializablePayload),_registry.registry);payload.arguments=Object.entries(payload.arguments).reduce((acc,_ref)=>{let[key,argOrEntityId]=_ref;return _objectSpread2(_objectSpread2({},acc),{},{[key]:typeof argOrEntityId==='number'?G.bank.locate(argOrEntityId):argOrEntityId});},{});return payload;}else {return serializablePayload;}}function getMoveInstance(moveRule){switch(moveRule.
|
|
1640
|
+
);context.moveConditionResults.push(result);}}return JSON.parse((0, _wackson.serialize)(G));};compatibleMove.moveInstance=moveInstance;return compatibleMove;}function revivePayload(serializablePayload,G){if(serializablePayload){const payload=(0, _wackson.deserialize)(JSON.stringify(serializablePayload),_registry.registry);payload.arguments=Object.entries(payload.arguments).reduce((acc,_ref)=>{let[key,argOrEntityId]=_ref;return _objectSpread2(_objectSpread2({},acc),{},{[key]:typeof argOrEntityId==='number'?G.bank.locate(argOrEntityId):argOrEntityId});},{});return payload;}else {return serializablePayload;}}function getMoveInstance(moveRule){switch(moveRule.moveType){case'MoveEntity':return new _moveEntity.default(moveRule);case'PlaceNew':return new _placeNew.default(moveRule);case'RemoveEntity':return new _removeEntity.default(moveRule);case'TakeFrom':return new _takeFrom.default(moveRule);case'SetState':return new _setState.default(moveRule);case'ForEach':return new _forEach.default(moveRule);case'Pass':return new _pass.default(moveRule);case'Shuffle':return new _shuffle.default(moveRule);case'SetActivePlayers':return new _setActivePlayers.default(moveRule);case'EndTurn':return new _endTurn.default(moveRule);case'PassTurn':return new _passTurn.default(moveRule);}}/***/},/***/6973(module,exports,__webpack_require__){Object.defineProperty(exports,"__esModule",{value:true});exports["default"]=void 0;var _core=__webpack_require__(4039);var _checkConditions=_interopRequireDefault(__webpack_require__(7611));var _resolveProperties=_interopRequireDefault(__webpack_require__(7208));function _interopRequireDefault(e){return e&&e.__esModule?e:{default:e};}class Move{constructor(rule){this.rule=this.transformRule(rule);}checkValidity(bgioArguments,payload,context){const argRuleEntries=Object.entries(this.rule.arguments??{});if(!argRuleEntries.every(_ref=>{let[argName]=_ref;const arg=payload.arguments[argName];return arg!==undefined&&(!Array.isArray(arg)||arg.length);})){// not the best return value but we don't want to do expensive checks
|
|
1660
1641
|
// when we know the operation is doomed. At least for now.
|
|
1661
1642
|
return false;}const argumentResults={};for(let i=0,len=argRuleEntries.length;i<len;i++){const[argName,argRule]=argRuleEntries[i];const payloadArg=payload.arguments[argName];const args=Array.isArray(payloadArg)?payloadArg:[payloadArg];const argResults=[];for(let j=0,len=args.length;j<len;j++){const arg=args[j];const result=(0, _checkConditions.default)(bgioArguments,argRule,{target:arg},_objectSpread2(_objectSpread2({},context),{},{moveArguments:payload.arguments}));argResults.push(result);if(!result.conditionsAreMet){break;}}const argConditionsAreMet=argResults.at(-1).conditionsAreMet;argumentResults[argName]={results:argResults,conditionsAreMet:argConditionsAreMet};if(!argConditionsAreMet){break;}}const moveResults=(0, _checkConditions.default)(bgioArguments,{conditions:this.rule.conditions},undefined,_objectSpread2(_objectSpread2({},context),{},{moveArguments:payload.arguments}));return {argumentResults,moveResults,conditionsAreMet:moveResults.conditionsAreMet&&Object.values(argumentResults).every(a=>a.conditionsAreMet)};}isValid(bgioArguments,payload,context){const conditionResults=this.checkValidity(bgioArguments,payload,context);return conditionResults.conditionsAreMet;}doMove(bgioArguments,payload,context){let{skipCheck=false}=arguments.length>3&&arguments[3]!==undefined?arguments[3]:{};const rule=(0, _resolveProperties.default)(bgioArguments,this.rule,context);const resolvedPayload=_objectSpread2(_objectSpread2({},payload),{},{arguments:Object.entries(rule.arguments??{}).reduce((acc,_ref2)=>{let[argName,arg]=_ref2;return _objectSpread2(_objectSpread2({},acc),{},{[argName]:payload?.arguments?.[argName]??arg});},{})});// does not store automatic moves, do we need that?
|
|
1662
1643
|
if(rule.name){bgioArguments.G._meta.previousPayloads[rule.name]=resolvedPayload;}let conditionResults;if(!skipCheck){conditionResults=this.checkValidity(bgioArguments,resolvedPayload,context);}if(!skipCheck&&!conditionResults.conditionsAreMet){return _core.INVALID_MOVE;}else {this.do(bgioArguments,rule,resolvedPayload,context);if(context){context.previousArguments=resolvedPayload.arguments;}}return {conditionResults};}transformRule(rule){const args=rule.arguments;for(let key in args){const arg=args[key];if(!arg.playerChoice){arg.resolveAsEntity=true;}}return rule;}}exports["default"]=Move;module.exports=exports.default;/***/},/***/3409(module,exports,__webpack_require__){Object.defineProperty(exports,"__esModule",{value:true});exports["default"]=void 0;var _move=_interopRequireDefault(__webpack_require__(6973));function _interopRequireDefault(e){return e&&e.__esModule?e:{default:e};}class PassTurn extends _move.default{do(bgioArguments){if(bgioArguments.G._meta.passedPlayers.length<bgioArguments.ctx.numPlayers){bgioArguments.G._meta.passedPlayers.push(bgioArguments.ctx.currentPlayer);bgioArguments.events.pass();}}}exports["default"]=PassTurn;module.exports=exports.default;/***/},/***/5953(module,exports,__webpack_require__){Object.defineProperty(exports,"__esModule",{value:true});exports["default"]=void 0;var _move=_interopRequireDefault(__webpack_require__(6973));function _interopRequireDefault(e){return e&&e.__esModule?e:{default:e};}class Pass extends _move.default{do(bgioArguments){bgioArguments.events.endTurn();}}exports["default"]=Pass;module.exports=exports.default;/***/},/***/6642(module,exports,__webpack_require__){Object.defineProperty(exports,"__esModule",{value:true});exports["default"]=void 0;var _move=_interopRequireDefault(__webpack_require__(6973));function _interopRequireDefault(e){return e&&e.__esModule?e:{default:e};}class PlaceNew extends _move.default{do(bgioArguments,rule,_ref,context){let{arguments:{destination}}=_ref;const entities=rule.matchMultiple?bgioArguments.G.bank.getMultiple(bgioArguments,_objectSpread2(_objectSpread2({},rule.entity),{},{conditions:[...(rule.entity?.conditions||[]),...(rule.conditions||[])]}),rule.count,context):[bgioArguments.G.bank.getOne(bgioArguments,_objectSpread2(_objectSpread2({},rule.entity),{},{conditions:[...(rule.entity?.conditions||[]),...(rule.conditions||[])]}),context)];entities.forEach(entity=>{destination.placeEntity(entity,rule.position);});}}exports["default"]=PlaceNew;module.exports=exports.default;/***/},/***/2414(module,exports,__webpack_require__){Object.defineProperty(exports,"__esModule",{value:true});exports["default"]=void 0;var _move=_interopRequireDefault(__webpack_require__(6973));function _interopRequireDefault(e){return e&&e.__esModule?e:{default:e};}class RemoveEntity extends _move.default{do(bgioArguments,rule,_ref){let{arguments:{entity}}=_ref;bgioArguments.G.bank.returnToBank(bgioArguments,entity);}}exports["default"]=RemoveEntity;module.exports=exports.default;/***/},/***/2790(module,exports,__webpack_require__){Object.defineProperty(exports,"__esModule",{value:true});exports["default"]=void 0;var _move=_interopRequireDefault(__webpack_require__(6973));var _doMoves=_interopRequireDefault(__webpack_require__(2796));function _interopRequireDefault(e){return e&&e.__esModule?e:{default:e};}class SetActivePlayers extends _move.default{do(bgioArguments,rule,_,context){bgioArguments.events.setActivePlayers(rule.options);// this is going to need to be expanded to handle more complex things
|
|
1663
1644
|
// than "move current player to new stage"
|
|
1664
1645
|
const phaseName=bgioArguments.ctx.phase;const stageName=rule.options.currentPlayer?.stage;const phaseOrRoot=context.game.phases?.[phaseName]??context.game;const stage=phaseOrRoot?.turn?.stages?.[stageName];(0, _doMoves.default)(bgioArguments,stage?.initialMoves,_objectSpread2(_objectSpread2({},context),{},{stageName}));}}exports["default"]=SetActivePlayers;module.exports=exports.default;/***/},/***/9421(module,exports,__webpack_require__){Object.defineProperty(exports,"__esModule",{value:true});exports["default"]=void 0;var _move=_interopRequireDefault(__webpack_require__(6973));function _interopRequireDefault(e){return e&&e.__esModule?e:{default:e};}// todo: invariant conditions like "is one of the allowed values"
|
|
1665
|
-
class SetState extends _move.default{do(_,__,_ref){let{arguments:{entity,state}}=_ref;entity.state=_objectSpread2(_objectSpread2({},entity.state),{},{[state.property]:state.value});}}exports["default"]=SetState;module.exports=exports.default;/***/},/***/2763(module,exports,__webpack_require__){Object.defineProperty(exports,"__esModule",{value:true});exports["default"]=void 0;var _move=_interopRequireDefault(__webpack_require__(6973));function _interopRequireDefault(e){return e&&e.__esModule?e:{default:e};}class Shuffle extends _move.default{do(bgioArguments,_,_ref){let{arguments:{target}}=_ref;target.entities=bgioArguments.random.Shuffle(target.entities);}}exports["default"]=Shuffle;module.exports=exports.default;/***/},/***/4888(module,exports,__webpack_require__){Object.defineProperty(exports,"__esModule",{value:true});exports["default"]=void 0;var _move=_interopRequireDefault(__webpack_require__(6973));function _interopRequireDefault(e){return e&&e.__esModule?e:{default:e};}class TakeFrom extends _move.default{do(bgioArguments,rule,_ref){let{arguments:{source,destination}}=_ref;destination.placeEntity(source.takeOne(rule.arguments.source.position));}}exports["default"]=TakeFrom;module.exports=exports.default;/***/},/***/7913(module,exports,__webpack_require__){Object.defineProperty(exports,"__esModule",{value:true});exports["default"]=void 0;var _chunk=_interopRequireDefault(__webpack_require__(1013));var _spaceGroup=_interopRequireDefault(__webpack_require__(9209));function _interopRequireDefault(e){return e&&e.__esModule?e:{default:e};}class Grid extends _spaceGroup.default{getSpacesCount(){return this.rule.width*this.rule.height;}getRows(){return (0, _chunk.default)(this.spaces,this.rule.width);}getCoordinates(index){const{width}=this.rule;return [index%width,Math.floor(index/width)];}getIndex(_ref){let[x,y]=_ref;const{width}=this.rule;return y*width+x;}getSpace(coordinates){return this.spaces[this.getIndex(coordinates)];}getRelativeCoordinates(_ref2,_ref3){let[oldX,oldY]=_ref2;let[relativeX,relativeY]=_ref3;const newCoordinates=[oldX+relativeX,oldY+relativeY];return this.areCoordinatesValid(newCoordinates)?newCoordinates:null;}areCoordinatesValid(_ref4){let[x,y]=_ref4;return x>=0&&y>=0&&x<this.rule.width&&y<this.rule.height;}}exports["default"]=Grid;module.exports=exports.default;/***/},/***/9209(module,exports,__webpack_require__){Object.defineProperty(exports,"__esModule",{value:true});exports["default"]=void 0;var _entity=_interopRequireDefault(__webpack_require__(4511));function _interopRequireDefault(e){return e&&e.__esModule?e:{default:e};}class SpaceGroup extends _entity.default{constructor(options){for(var _len=arguments.length,rest=new Array(_len>1?_len-1:0),_key=1;_key<_len;_key++){rest[_key-1]=arguments[_key];}super(options,...rest);this.spaces=this.makeSpaces(options.bank);}makeSpaces(bank){return Array(this.getSpacesCount()).fill().map((_,i)=>bank.createEntity({
|
|
1646
|
+
class SetState extends _move.default{do(_,__,_ref){let{arguments:{entity,state}}=_ref;entity.state=_objectSpread2(_objectSpread2({},entity.state),{},{[state.property]:state.value});}}exports["default"]=SetState;module.exports=exports.default;/***/},/***/2763(module,exports,__webpack_require__){Object.defineProperty(exports,"__esModule",{value:true});exports["default"]=void 0;var _move=_interopRequireDefault(__webpack_require__(6973));function _interopRequireDefault(e){return e&&e.__esModule?e:{default:e};}class Shuffle extends _move.default{do(bgioArguments,_,_ref){let{arguments:{target}}=_ref;target.entities=bgioArguments.random.Shuffle(target.entities);}}exports["default"]=Shuffle;module.exports=exports.default;/***/},/***/4888(module,exports,__webpack_require__){Object.defineProperty(exports,"__esModule",{value:true});exports["default"]=void 0;var _move=_interopRequireDefault(__webpack_require__(6973));function _interopRequireDefault(e){return e&&e.__esModule?e:{default:e};}class TakeFrom extends _move.default{do(bgioArguments,rule,_ref){let{arguments:{source,destination}}=_ref;destination.placeEntity(source.takeOne(rule.arguments.source.position));}}exports["default"]=TakeFrom;module.exports=exports.default;/***/},/***/7913(module,exports,__webpack_require__){Object.defineProperty(exports,"__esModule",{value:true});exports["default"]=void 0;var _chunk=_interopRequireDefault(__webpack_require__(1013));var _spaceGroup=_interopRequireDefault(__webpack_require__(9209));function _interopRequireDefault(e){return e&&e.__esModule?e:{default:e};}class Grid extends _spaceGroup.default{getSpacesCount(){return this.rule.width*this.rule.height;}getRows(){return (0, _chunk.default)(this.spaces,this.rule.width);}getCoordinates(index){const{width}=this.rule;return [index%width,Math.floor(index/width)];}getIndex(_ref){let[x,y]=_ref;const{width}=this.rule;return y*width+x;}getSpace(coordinates){return this.spaces[this.getIndex(coordinates)];}getRelativeCoordinates(_ref2,_ref3){let[oldX,oldY]=_ref2;let[relativeX,relativeY]=_ref3;const newCoordinates=[oldX+relativeX,oldY+relativeY];return this.areCoordinatesValid(newCoordinates)?newCoordinates:null;}areCoordinatesValid(_ref4){let[x,y]=_ref4;return x>=0&&y>=0&&x<this.rule.width&&y<this.rule.height;}}exports["default"]=Grid;module.exports=exports.default;/***/},/***/9209(module,exports,__webpack_require__){Object.defineProperty(exports,"__esModule",{value:true});exports["default"]=void 0;var _entity=_interopRequireDefault(__webpack_require__(4511));function _interopRequireDefault(e){return e&&e.__esModule?e:{default:e};}class SpaceGroup extends _entity.default{constructor(options){for(var _len=arguments.length,rest=new Array(_len>1?_len-1:0),_key=1;_key<_len;_key++){rest[_key-1]=arguments[_key];}super(options,...rest);this.spaces=this.makeSpaces(options.bank);}makeSpaces(bank){return Array(this.getSpacesCount()).fill().map((_,i)=>bank.createEntity({entityType:'Space',index:i}));}getEmptySpaces(){return this.spaces.filter(space=>space.isEmpty());}getSpace(index){return this.spaces[index];}getEntities(index){return this.getSpace(index).entities;}placeEntity(index,entity){this.getSpace(index).placeEntity(entity);}}exports["default"]=SpaceGroup;module.exports=exports.default;/***/},/***/1325(module,exports,__webpack_require__){Object.defineProperty(exports,"__esModule",{value:true});exports["default"]=void 0;var _entity=_interopRequireDefault(__webpack_require__(4511));function _interopRequireDefault(e){return e&&e.__esModule?e:{default:e};}class Space extends _entity.default{constructor(){super(...arguments);this.entities=[];}placeEntity(entity){let position=arguments.length>1&&arguments[1]!==undefined?arguments[1]:'Last';if(position==='Last'){this.entities.push(entity);}else if(position==='First'){this.entities.unshift(entity);}}remove(entity){this.entities.splice(this.entities.indexOf(entity),1);}takeOne(){let position=arguments.length>0&&arguments[0]!==undefined?arguments[0]:'First';if(position==='First'){return this.entities.splice(0,1)[0];}}isEmpty(){return this.entities.length===0;}}exports["default"]=Space;module.exports=exports.default;/***/},/***/3883(__unused_webpack_module,exports,__webpack_require__){Object.defineProperty(exports,"__esModule",{value:true});exports.registry=void 0;var _board=_interopRequireDefault(__webpack_require__(2606));var _spaceGroup=_interopRequireDefault(__webpack_require__(9209));var _space=_interopRequireDefault(__webpack_require__(1325));var _grid=_interopRequireDefault(__webpack_require__(7913));var _bank=_interopRequireDefault(__webpack_require__(6103));var _bankSlot=_interopRequireDefault(__webpack_require__(784));var _entity=_interopRequireDefault(__webpack_require__(4511));function _interopRequireDefault(e){return e&&e.__esModule?e:{default:e};}exports.registry={Board:_board.default,SpaceGroup:_spaceGroup.default,Space:_space.default,Grid:_grid.default,Bank:_bank.default,BankSlot:_bankSlot.default,Entity:_entity.default};/***/},/***/3538(module,exports,__webpack_require__){Object.defineProperty(exports,"__esModule",{value:true});exports["default"]=areThereValidMoves;var _isPlainObject=_interopRequireDefault(__webpack_require__(1331));var _resolveProperties=_interopRequireDefault(__webpack_require__(7208));var _resolveEntity=_interopRequireDefault(__webpack_require__(4198));function _interopRequireDefault(e){return e&&e.__esModule?e:{default:e};}// Recursively find all contextPath references to moveArguments
|
|
1666
1647
|
function findMoveArgumentReferences(obj){let refs=arguments.length>1&&arguments[1]!==undefined?arguments[1]:new Set();if(!obj||typeof obj!=='object'){return refs;}// Check if this is a contextPath reference to moveArguments
|
|
1667
1648
|
if(obj.type==='contextPath'&&Array.isArray(obj.path)){if(obj.path[0]==='moveArguments'&&obj.path[1]){refs.add(obj.path[1]);}}// Recurse into object properties and array elements
|
|
1668
1649
|
for(const value of Object.values(obj)){findMoveArgumentReferences(value,refs);}return refs;}// Build a dependency graph and return topologically sorted argument names
|
|
@@ -1685,7 +1666,7 @@ return findValidCombination(bgioArguments,moveInstance,ruleArguments,orderedArgN
|
|
|
1685
1666
|
function getCurrentMoves(state,_ref){let{game,playerID,stageName}=_ref;const phaseName=state.ctx.phase;// currentPlayer used for single player editor mode
|
|
1686
1667
|
const stageNameToUse=stageName??state.ctx.activePlayers?.[playerID??state.ctx.currentPlayer];const phaseOrRoot=game.phases?.[phaseName]??game;const stageOrPhaseOrRoot=phaseOrRoot.turn?.stages?.[stageNameToUse]??phaseOrRoot;return stageOrPhaseOrRoot.moves??{};}module.exports=exports.default;/***/},/***/236(module,exports,__webpack_require__){Object.defineProperty(exports,"__esModule",{value:true});exports["default"]=getScenarioResults;var _checkConditions=_interopRequireDefault(__webpack_require__(7611));var _resolveProperties=_interopRequireDefault(__webpack_require__(7208));function _interopRequireDefault(e){return e&&e.__esModule?e:{default:e};}function getScenarioResults(bgioArguments,scenarios,context){let match;for(const scenario of scenarios){const conditionResults=(0, _checkConditions.default)(bgioArguments,scenario);if(conditionResults.conditionsAreMet){match={scenario,conditionResults};break;}}if(match?.scenario?.result){return (0, _resolveProperties.default)(bgioArguments,match.scenario.result,{results:match.conditionResults.results});}else {return match;}}module.exports=exports.default;/***/},/***/2146(module,exports){Object.defineProperty(exports,"__esModule",{value:true});exports["default"]=getSteps;// controls order of what players need to click first
|
|
1687
1668
|
const argNamesMap={PlaceNew:['destination'],RemoveEntity:['entity'],MoveEntity:['entity','destination'],TakeFrom:['source','destination'],SetState:['entity','state']};// this might not be where special handling for setstate wants to live
|
|
1688
|
-
function getSteps(bgioState,moveRule){return argNamesMap[moveRule.
|
|
1669
|
+
function getSteps(bgioState,moveRule){return argNamesMap[moveRule.moveType].filter(argName=>moveRule.arguments[argName].playerChoice).map(argName=>({argName,getClickable:argName==='state'?()=>moveRule.arguments[argName].possibleValues.map(value=>_objectSpread2(_objectSpread2({abstract:true},moveRule.arguments[argName]),{},{value})):context=>bgioState.G.bank.findAll(bgioState,moveRule.arguments[argName],context)}));}module.exports=exports.default;/***/},/***/6648(module,exports){Object.defineProperty(exports,"__esModule",{value:true});exports["default"]=get;function get(obj,pathArray){let current=obj;for(const step of pathArray){if(current===undefined){return current;}if(step?.flatten){if(!Array.isArray(current)){return undefined;}current=current.flat();if(step.map){current=current.map(item=>get(item,step.map));}}else {current=current[step];}}return current;}module.exports=exports.default;/***/},/***/1138(module,exports,__webpack_require__){Object.defineProperty(exports,"__esModule",{value:true});exports["default"]=gridContainsSequence;_interopRequireDefault(__webpack_require__(1505));var _checkConditions=_interopRequireDefault(__webpack_require__(7611));function _interopRequireDefault(e){return e&&e.__esModule?e:{default:e};}// claude ai did most of this
|
|
1689
1670
|
// We'll check reverse directions along each line
|
|
1690
1671
|
const directions=[[1,0],// horizontal
|
|
1691
1672
|
[0,1],// vertical
|
|
@@ -1938,7 +1919,7 @@ Hash.prototype.clear=hashClear;Hash.prototype['delete']=hashDelete;Hash.prototyp
|
|
|
1938
1919
|
* @constructor
|
|
1939
1920
|
* @param {Array} [entries] The key-value pairs to cache.
|
|
1940
1921
|
*/function ListCache(entries){var index=-1,length=entries==null?0:entries.length;this.clear();while(++index<length){var entry=entries[index];this.set(entry[0],entry[1]);}}// Add methods to `ListCache`.
|
|
1941
|
-
ListCache.prototype.clear=listCacheClear;ListCache.prototype['delete']=listCacheDelete;ListCache.prototype.get=listCacheGet;ListCache.prototype.has=listCacheHas;ListCache.prototype.set=listCacheSet;module.exports=ListCache;/***/},/***/
|
|
1922
|
+
ListCache.prototype.clear=listCacheClear;ListCache.prototype['delete']=listCacheDelete;ListCache.prototype.get=listCacheGet;ListCache.prototype.has=listCacheHas;ListCache.prototype.set=listCacheSet;module.exports=ListCache;/***/},/***/8223(module,__unused_webpack_exports,__webpack_require__){var getNative=__webpack_require__(6110),root=__webpack_require__(9325);/* Built-in method references that are verified to be native. */var Map=getNative(root,'Map');module.exports=Map;/***/},/***/3661(module,__unused_webpack_exports,__webpack_require__){var mapCacheClear=__webpack_require__(3040),mapCacheDelete=__webpack_require__(7670),mapCacheGet=__webpack_require__(289),mapCacheHas=__webpack_require__(4509),mapCacheSet=__webpack_require__(2949);/**
|
|
1942
1923
|
* Creates a map cache object to store key-value pairs.
|
|
1943
1924
|
*
|
|
1944
1925
|
* @private
|
|
@@ -2565,7 +2546,7 @@ if(objCtor!=othCtor&&'constructor'in object&&'constructor'in other&&!(typeof obj
|
|
|
2565
2546
|
* @private
|
|
2566
2547
|
* @param {Object} object The object to query.
|
|
2567
2548
|
* @returns {Array} Returns the array of symbols.
|
|
2568
|
-
*/var getSymbolsIn=!nativeGetSymbols?stubArray:function(object){var result=[];while(object){arrayPush(result,getSymbols(object));object=getPrototype(object);}return result;};module.exports=getSymbolsIn;/***/},/***/5861(module,__unused_webpack_exports,__webpack_require__){var DataView=__webpack_require__(5580),Map=__webpack_require__(
|
|
2549
|
+
*/var getSymbolsIn=!nativeGetSymbols?stubArray:function(object){var result=[];while(object){arrayPush(result,getSymbols(object));object=getPrototype(object);}return result;};module.exports=getSymbolsIn;/***/},/***/5861(module,__unused_webpack_exports,__webpack_require__){var DataView=__webpack_require__(5580),Map=__webpack_require__(8223),Promise=__webpack_require__(2804),Set=__webpack_require__(6545),WeakMap=__webpack_require__(8303),baseGetTag=__webpack_require__(2552),toSource=__webpack_require__(7473);/** `Object#toString` result references. */var mapTag='[object Map]',objectTag='[object Object]',promiseTag='[object Promise]',setTag='[object Set]',weakMapTag='[object WeakMap]';var dataViewTag='[object DataView]';/** Used to detect maps, sets, and weakmaps. */var dataViewCtorString=toSource(DataView),mapCtorString=toSource(Map),promiseCtorString=toSource(Promise),setCtorString=toSource(Set),weakMapCtorString=toSource(WeakMap);/**
|
|
2569
2550
|
* Gets the `toStringTag` of `value`.
|
|
2570
2551
|
*
|
|
2571
2552
|
* @private
|
|
@@ -2744,7 +2725,7 @@ if(length&&typeof array[0]=='string'&&hasOwnProperty.call(array,'index')){result
|
|
|
2744
2725
|
* @param {string} key The key of the value to set.
|
|
2745
2726
|
* @param {*} value The value to set.
|
|
2746
2727
|
* @returns {Object} Returns the list cache instance.
|
|
2747
|
-
*/function listCacheSet(key,value){var data=this.__data__,index=assocIndexOf(data,key);if(index<0){++this.size;data.push([key,value]);}else {data[index][1]=value;}return this;}module.exports=listCacheSet;/***/},/***/3040(module,__unused_webpack_exports,__webpack_require__){var Hash=__webpack_require__(1549),ListCache=__webpack_require__(79),Map=__webpack_require__(
|
|
2728
|
+
*/function listCacheSet(key,value){var data=this.__data__,index=assocIndexOf(data,key);if(index<0){++this.size;data.push([key,value]);}else {data[index][1]=value;}return this;}module.exports=listCacheSet;/***/},/***/3040(module,__unused_webpack_exports,__webpack_require__){var Hash=__webpack_require__(1549),ListCache=__webpack_require__(79),Map=__webpack_require__(8223);/**
|
|
2748
2729
|
* Removes all key-value entries from the map.
|
|
2749
2730
|
*
|
|
2750
2731
|
* @private
|
|
@@ -2907,7 +2888,7 @@ return freeProcess&&freeProcess.binding&&freeProcess.binding('util');}catch(e){}
|
|
|
2907
2888
|
* @memberOf Stack
|
|
2908
2889
|
* @param {string} key The key of the entry to check.
|
|
2909
2890
|
* @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.
|
|
2910
|
-
*/function stackHas(key){return this.__data__.has(key);}module.exports=stackHas;/***/},/***/945(module,__unused_webpack_exports,__webpack_require__){var ListCache=__webpack_require__(79),Map=__webpack_require__(
|
|
2891
|
+
*/function stackHas(key){return this.__data__.has(key);}module.exports=stackHas;/***/},/***/945(module,__unused_webpack_exports,__webpack_require__){var ListCache=__webpack_require__(79),Map=__webpack_require__(8223),MapCache=__webpack_require__(3661);/** Used as the size to enable large array optimizations. */var LARGE_ARRAY_SIZE=200;/**
|
|
2911
2892
|
* Sets the stack `key` to `value`.
|
|
2912
2893
|
*
|
|
2913
2894
|
* @private
|
|
@@ -4343,7 +4324,7 @@ let value=false;try{value=typeof XMLHttpRequest!=='undefined'&&'withCredentials'
|
|
|
4343
4324
|
*
|
|
4344
4325
|
* @author Steven Levithan <stevenlevithan.com> (MIT license)
|
|
4345
4326
|
* @api private
|
|
4346
|
-
*/const re=/^(?:(?![^:@\/?#]+:[^:@\/]*@)(http|https|ws|wss):\/\/)?((?:(([^:@\/?#]*)(?::([^:@\/?#]*))?)?@)?((?:[a-f0-9]{0,4}:){2,7}[a-f0-9]{0,4}|[^:\/?#]*)(?::(\d*))?)(((\/(?:[^?#](?![^?#\/]*\.[^?#\/.]+(?:[?#]|$)))*\/?)?([^?#\/]*))(?:\?([^#]*))?(?:#(.*))?)/;const parts=['source','protocol','authority','userInfo','user','password','host','port','relative','path','directory','file','query','anchor'];function parse(str){if(str.length>8000){throw "URI too long";}const src=str,b=str.indexOf('['),e=str.indexOf(']');if(b!=-1&&e!=-1){str=str.substring(0,b)+str.substring(b,e).replace(/:/g,';')+str.substring(e,str.length);}let m=re.exec(str||''),uri={},i=14;while(i--){uri[parts[i]]=m[i]||'';}if(b!=-1&&e!=-1){uri.source=src;uri.host=uri.host.substring(1,uri.host.length-1).replace(/;/g,':');uri.authority=uri.authority.replace('[','').replace(']','').replace(/;/g,':');uri.ipv6uri=true;}uri.pathNames=pathNames(uri,uri['path']);uri.queryKey=queryKey(uri,uri['query']);return uri;}function pathNames(obj,path){const regx=/\/{2,9}/g,names=path.replace(regx,"/").split("/");if(path.slice(0,1)=='/'||path.length===0){names.splice(0,1);}if(path.slice(-1)=='/'){names.splice(names.length-1,1);}return names;}function queryKey(uri,query){const data={};query.replace(/(?:^|&)([^&=]*)=?([^&]*)/g,function($0,$1,$2){if($1){data[$1]=$2;}});return data;}/***/},/***/4624(__unused_webpack_module,exports){Object.defineProperty(exports,"__esModule",{value:true});exports.defaultBinaryType=exports.globalThisShim=exports.nextTick=void 0;exports.createCookieJar=createCookieJar;exports.nextTick=(()=>{const isPromiseAvailable=typeof Promise==="function"&&typeof Promise.resolve==="function";if(isPromiseAvailable){return cb=>Promise.resolve().then(cb);}else {return (cb,setTimeoutFn)=>setTimeoutFn(cb,0);}})();exports.globalThisShim=(()=>{if(typeof self!=="undefined"){return self;}else if(typeof window!=="undefined"){return window;}else {return Function("return this")();}})();exports.defaultBinaryType="arraybuffer";function createCookieJar(){}/***/},/***/4956(__unused_webpack_module,exports,__webpack_require__){Object.defineProperty(exports,"__esModule",{value:true});exports.WebTransport=exports.WebSocket=exports.NodeWebSocket=exports.XHR=exports.NodeXHR=exports.Fetch=exports.nextTick=exports.parse=exports.installTimerFunctions=exports.transports=exports.TransportError=exports.Transport=exports.protocol=exports.SocketWithUpgrade=exports.SocketWithoutUpgrade=exports.Socket=void 0;const socket_js_1=__webpack_require__(
|
|
4327
|
+
*/const re=/^(?:(?![^:@\/?#]+:[^:@\/]*@)(http|https|ws|wss):\/\/)?((?:(([^:@\/?#]*)(?::([^:@\/?#]*))?)?@)?((?:[a-f0-9]{0,4}:){2,7}[a-f0-9]{0,4}|[^:\/?#]*)(?::(\d*))?)(((\/(?:[^?#](?![^?#\/]*\.[^?#\/.]+(?:[?#]|$)))*\/?)?([^?#\/]*))(?:\?([^#]*))?(?:#(.*))?)/;const parts=['source','protocol','authority','userInfo','user','password','host','port','relative','path','directory','file','query','anchor'];function parse(str){if(str.length>8000){throw "URI too long";}const src=str,b=str.indexOf('['),e=str.indexOf(']');if(b!=-1&&e!=-1){str=str.substring(0,b)+str.substring(b,e).replace(/:/g,';')+str.substring(e,str.length);}let m=re.exec(str||''),uri={},i=14;while(i--){uri[parts[i]]=m[i]||'';}if(b!=-1&&e!=-1){uri.source=src;uri.host=uri.host.substring(1,uri.host.length-1).replace(/;/g,':');uri.authority=uri.authority.replace('[','').replace(']','').replace(/;/g,':');uri.ipv6uri=true;}uri.pathNames=pathNames(uri,uri['path']);uri.queryKey=queryKey(uri,uri['query']);return uri;}function pathNames(obj,path){const regx=/\/{2,9}/g,names=path.replace(regx,"/").split("/");if(path.slice(0,1)=='/'||path.length===0){names.splice(0,1);}if(path.slice(-1)=='/'){names.splice(names.length-1,1);}return names;}function queryKey(uri,query){const data={};query.replace(/(?:^|&)([^&=]*)=?([^&]*)/g,function($0,$1,$2){if($1){data[$1]=$2;}});return data;}/***/},/***/4624(__unused_webpack_module,exports){Object.defineProperty(exports,"__esModule",{value:true});exports.defaultBinaryType=exports.globalThisShim=exports.nextTick=void 0;exports.createCookieJar=createCookieJar;exports.nextTick=(()=>{const isPromiseAvailable=typeof Promise==="function"&&typeof Promise.resolve==="function";if(isPromiseAvailable){return cb=>Promise.resolve().then(cb);}else {return (cb,setTimeoutFn)=>setTimeoutFn(cb,0);}})();exports.globalThisShim=(()=>{if(typeof self!=="undefined"){return self;}else if(typeof window!=="undefined"){return window;}else {return Function("return this")();}})();exports.defaultBinaryType="arraybuffer";function createCookieJar(){}/***/},/***/4956(__unused_webpack_module,exports,__webpack_require__){Object.defineProperty(exports,"__esModule",{value:true});exports.WebTransport=exports.WebSocket=exports.NodeWebSocket=exports.XHR=exports.NodeXHR=exports.Fetch=exports.nextTick=exports.parse=exports.installTimerFunctions=exports.transports=exports.TransportError=exports.Transport=exports.protocol=exports.SocketWithUpgrade=exports.SocketWithoutUpgrade=exports.Socket=void 0;const socket_js_1=__webpack_require__(604);Object.defineProperty(exports,"Socket",{enumerable:true,get:function(){return socket_js_1.Socket;}});var socket_js_2=__webpack_require__(604);Object.defineProperty(exports,"SocketWithoutUpgrade",{enumerable:true,get:function(){return socket_js_2.SocketWithoutUpgrade;}});Object.defineProperty(exports,"SocketWithUpgrade",{enumerable:true,get:function(){return socket_js_2.SocketWithUpgrade;}});exports.protocol=socket_js_1.Socket.protocol;var transport_js_1=__webpack_require__(4689);Object.defineProperty(exports,"Transport",{enumerable:true,get:function(){return transport_js_1.Transport;}});Object.defineProperty(exports,"TransportError",{enumerable:true,get:function(){return transport_js_1.TransportError;}});var index_js_1=__webpack_require__(9419);Object.defineProperty(exports,"transports",{enumerable:true,get:function(){return index_js_1.transports;}});var util_js_1=__webpack_require__(5374);Object.defineProperty(exports,"installTimerFunctions",{enumerable:true,get:function(){return util_js_1.installTimerFunctions;}});var parseuri_js_1=__webpack_require__(1015);Object.defineProperty(exports,"parse",{enumerable:true,get:function(){return parseuri_js_1.parse;}});var globals_node_js_1=__webpack_require__(4624);Object.defineProperty(exports,"nextTick",{enumerable:true,get:function(){return globals_node_js_1.nextTick;}});var polling_fetch_js_1=__webpack_require__(8209);Object.defineProperty(exports,"Fetch",{enumerable:true,get:function(){return polling_fetch_js_1.Fetch;}});var polling_xhr_node_js_1=__webpack_require__(2071);Object.defineProperty(exports,"NodeXHR",{enumerable:true,get:function(){return polling_xhr_node_js_1.XHR;}});var polling_xhr_js_1=__webpack_require__(2071);Object.defineProperty(exports,"XHR",{enumerable:true,get:function(){return polling_xhr_js_1.XHR;}});var websocket_node_js_1=__webpack_require__(8716);Object.defineProperty(exports,"NodeWebSocket",{enumerable:true,get:function(){return websocket_node_js_1.WS;}});var websocket_js_1=__webpack_require__(8716);Object.defineProperty(exports,"WebSocket",{enumerable:true,get:function(){return websocket_js_1.WS;}});var webtransport_js_1=__webpack_require__(4480);Object.defineProperty(exports,"WebTransport",{enumerable:true,get:function(){return webtransport_js_1.WT;}});/***/},/***/604(__unused_webpack_module,exports,__webpack_require__){var __importDefault=this&&this.__importDefault||function(mod){return mod&&mod.__esModule?mod:{"default":mod};};Object.defineProperty(exports,"__esModule",{value:true});exports.Socket=exports.SocketWithUpgrade=exports.SocketWithoutUpgrade=void 0;const index_js_1=__webpack_require__(9419);const util_js_1=__webpack_require__(5374);const parseqs_js_1=__webpack_require__(8661);const parseuri_js_1=__webpack_require__(1015);const component_emitter_1=__webpack_require__(4454);const engine_io_parser_1=__webpack_require__(6376);const globals_node_js_1=__webpack_require__(4624);const debug_1=__importDefault(__webpack_require__(7833));// debug()
|
|
4347
4328
|
const debug=(0, debug_1.default)("engine.io-client:socket");// debug()
|
|
4348
4329
|
const withEventListeners=typeof addEventListener==="function"&&typeof removeEventListener==="function";const OFFLINE_EVENT_LISTENERS=[];if(withEventListeners){// within a ServiceWorker, any event handler for the 'offline' event must be added on the initial evaluation of the
|
|
4349
4330
|
// script, so we create one single event listener here which will forward the event to the socket instances
|
|
@@ -5566,15 +5547,9 @@ var index={Parser:Parser,Expression:Expression};/* harmony default export */cons
|
|
|
5566
5547
|
/******/return module.exports;/******/}/******//************************************************************************//******//* webpack/runtime/define property getters *//******/(()=>{/******/// define getter functions for harmony exports
|
|
5567
5548
|
/******/__webpack_require__.d=(exports,definition)=>{/******/for(var key in definition){/******/if(__webpack_require__.o(definition,key)&&!__webpack_require__.o(exports,key)){/******/Object.defineProperty(exports,key,{enumerable:true,get:definition[key]});/******/}/******/}/******/};/******/})();/******//******//* webpack/runtime/global *//******/(()=>{/******/__webpack_require__.g=function(){/******/if(typeof globalThis==='object')return globalThis;/******/try{/******/return this||new Function('return this')();/******/}catch(e){/******/if(typeof window==='object')return window;/******/}/******/}();/******/})();/******//******//* webpack/runtime/hasOwnProperty shorthand *//******/(()=>{/******/__webpack_require__.o=(obj,prop)=>Object.prototype.hasOwnProperty.call(obj,prop);/******/})();/******//******//* webpack/runtime/make namespace object *//******/(()=>{/******/// define __esModule on exports
|
|
5568
5549
|
/******/__webpack_require__.r=exports=>{/******/if(typeof Symbol!=='undefined'&&Symbol.toStringTag){/******/Object.defineProperty(exports,Symbol.toStringTag,{value:'Module'});/******/}/******/Object.defineProperty(exports,'__esModule',{value:true});/******/};/******/})();/******//******//* webpack/runtime/node module decorator *//******/(()=>{/******/__webpack_require__.nmd=module=>{/******/module.paths=[];/******/if(!module.children)module.children=[];/******/return module;/******/};/******/})();/******//************************************************************************/var __webpack_exports__={};// This entry needs to be wrapped in an IIFE because it needs to be in strict mode.
|
|
5569
|
-
(()=>{var exports=__webpack_exports__;Object.defineProperty(exports,"__esModule",{value:true});Object.defineProperty(exports,"Client",{enumerable:true,get:function(){return _client.Client;}});Object.defineProperty(exports,"gameFactory",{enumerable:true,get:function(){return _gameFactory.default;}});var
|
|
5550
|
+
(()=>{var exports=__webpack_exports__;Object.defineProperty(exports,"__esModule",{value:true});Object.defineProperty(exports,"Client",{enumerable:true,get:function(){return _client.Client;}});Object.defineProperty(exports,"gameFactory",{enumerable:true,get:function(){return _gameFactory.default;}});var _gameFactory=_interopRequireDefault(__webpack_require__(4913));var _client=__webpack_require__(4245);function _interopRequireDefault(e){return e&&e.__esModule?e:{default:e};}})();/******/return __webpack_exports__;/******/})();});})(boardGameEngine$1,boardGameEngine$1.exports);return boardGameEngine$1.exports;}
|
|
5570
5551
|
|
|
5571
5552
|
var boardGameEngineExports = requireBoardGameEngine();
|
|
5572
|
-
var boardGameEngine = /*@__PURE__*/getDefaultExportFromCjs(boardGameEngineExports);
|
|
5573
|
-
|
|
5574
|
-
var BoardGameEngine = /*#__PURE__*/_mergeNamespaces({
|
|
5575
|
-
__proto__: null,
|
|
5576
|
-
'default': boardGameEngine
|
|
5577
|
-
}, [boardGameEngineExports]);
|
|
5578
5553
|
|
|
5579
5554
|
const GameContext = /*#__PURE__*/createContext({
|
|
5580
5555
|
clickTarget: () => {}
|
|
@@ -5810,7 +5785,6 @@ function Game({
|
|
|
5810
5785
|
}))) : loading;
|
|
5811
5786
|
}
|
|
5812
5787
|
|
|
5813
|
-
console.log('BoardGameEngine', BoardGameEngine);
|
|
5814
5788
|
const Client$1 = boardGameEngineExports.Client;
|
|
5815
5789
|
const useGameserverConnection = ({
|
|
5816
5790
|
server,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
:root{--dark-orange: #F58F29;--dark-amethyst: #380036;--lipstick-red: #EC0B43}html,body,#storybook-root,.story{height:100%}.button{border:3px solid var(--dark-amethyst);display:inline-block;padding:.5em;font-size:1.5em;font-family:inherit;text-decoration:none;cursor:pointer;border-radius:.3em;box-shadow:0 4px 6px rgba(0,0,0,0.15);margin:.5em}.button--style-b{background-color:var(--dark-amethyst);color:white}.button--style-c{background-color:var(--lipstick-red);color:white}.button--x-small{font-size:.9em;padding:.3em .5em;border-radius:.2em}.game{color:black}.shared-board,.personal-board{padding:1em 0
|
|
1
|
+
:root{--dark-orange: #F58F29;--dark-amethyst: #380036;--lipstick-red: #EC0B43}html,body,#storybook-root,.story{height:100%}.button{border:3px solid var(--dark-amethyst);display:inline-block;padding:.5em;font-size:1.5em;font-family:inherit;text-decoration:none;cursor:pointer;border-radius:.3em;box-shadow:0 4px 6px rgba(0,0,0,0.15);margin:.5em}.button--style-b{background-color:var(--dark-amethyst);color:white}.button--style-c{background-color:var(--lipstick-red);color:white}.button--x-small{font-size:.9em;padding:.3em .5em;border-radius:.2em}.game{color:black}.shared-board,.personal-board{padding:1em 0}.grid{border:1px solid black;box-sizing:border-box;background-color:#333;max-width:500px}.grid__cell{border:1px solid black;background-color:#fff;aspect-ratio:1;display:flex;align-items:center;justify-content:center;color:#666;position:relative;overflow:auto}.grid__cell .space{height:100%;width:100%}.space{box-sizing:border-box;min-width:10px;min-height:10px}.space:not(:has(.entity)):not(.grid__cell>:only-child){border:1px solid grey}.space--clickable{background-color:rgba(144,238,144,0.4)}.space--targeted{background-color:grey}.space__entity-grid{box-sizing:border-box;align-items:center;justify-content:center}.space__entity-grid__cell{box-sizing:border-box;overflow:auto}.entity{padding:.2em;min-height:20px;min-width:20px;box-sizing:border-box;border:1px solid black;overflow:hidden;font-size:.5em;font-family:"Nunito", sans-serif;font-weight:bold;display:inline-block}.entity.player-0{background-color:pink}.entity--clickable{background-color:rgba(144,238,144,0.4)}.entity.player-0.entity--clickable{background-color:#f0e0d8}.entity.player-1{background-color:lightblue}.entity.player-1.entity--clickable{background-color:paleturquoise}.debug-panel .pane{max-width:420px !important}.game-status{text-align:center;position:absolute;top:50%;left:0;transform:translateY(-50%);width:100%;border-top:1em;border-bottom:1em;padding:1em;background-color:var(--dark-orange);color:black;box-sizing:border-box;font-size:3em}.debug-panel .visibility-toggle{top:70px !important}.debug-panel .visibility-toggle svg{display:none}.debug-panel .visibility-toggle .icon::after{position:relative;left:3px;content:"⚙️";font-size:20px;display:block;width:20px;height:20px}.debug-panel .menu{position:relative;top:70px !important}
|