@gamepark/its-a-wonderful-world 3.0.12 → 3.0.13
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.
- package/dist/GameState.d.ts +13 -14
- package/dist/GameState.js +1 -2
- package/dist/GameView.d.ts +11 -12
- package/dist/GameView.js +1 -2
- package/dist/ItsAWonderfulWorld.d.ts +59 -0
- package/dist/ItsAWonderfulWorld.js +488 -0
- package/dist/ItsAWonderfulWorldOptions.js +2 -2
- package/dist/ItsAWonderfulWorldOptions.js.map +1 -1
- package/dist/ItsAWonderfulWorldRules.d.ts.map +1 -1
- package/dist/ItsAWonderfulWorldRules.js.map +1 -1
- package/dist/Options.d.ts +15 -15
- package/dist/Options.js +76 -77
- package/dist/Phase.d.ts +6 -7
- package/dist/Phase.js +7 -8
- package/dist/Player.d.ts +24 -25
- package/dist/Player.js +1 -2
- package/dist/PlayerView.d.ts +7 -8
- package/dist/PlayerView.js +1 -2
- package/dist/Production.d.ts.map +1 -1
- package/dist/Production.js.map +1 -1
- package/dist/Scoring.d.ts.map +1 -1
- package/dist/Scoring.js +9 -12
- package/dist/Scoring.js.map +1 -1
- package/dist/canUndo.d.ts +9 -10
- package/dist/canUndo.js +57 -71
- package/dist/material/Character.d.ts +1 -1
- package/dist/material/Character.d.ts.map +1 -1
- package/dist/material/Character.js.map +1 -1
- package/dist/material/Construction.d.ts +7 -7
- package/dist/material/Construction.js +1 -2
- package/dist/material/DevelopmentDetails.d.ts +2 -2
- package/dist/material/DevelopmentDetails.d.ts.map +1 -1
- package/dist/material/Empire.d.ts +11 -12
- package/dist/material/Empire.js +1 -2
- package/dist/material/EmpireDetails.d.ts +2 -2
- package/dist/material/EmpireDetails.d.ts.map +1 -1
- package/dist/material/EmpireName.d.ts +11 -12
- package/dist/material/EmpireName.js +13 -14
- package/dist/material/Resource.d.ts +1 -1
- package/dist/material/Resource.d.ts.map +1 -1
- package/dist/material/Resource.js.map +1 -1
- package/dist/moves/ChooseDevelopmentCard.d.ts +18 -19
- package/dist/moves/ChooseDevelopmentCard.js +35 -36
- package/dist/moves/CompleteConstruction.d.ts +14 -15
- package/dist/moves/CompleteConstruction.js +21 -22
- package/dist/moves/Concede.d.ts +10 -11
- package/dist/moves/Concede.js +12 -13
- package/dist/moves/DealDevelopmentCards.d.ts +16 -17
- package/dist/moves/DealDevelopmentCards.js +86 -87
- package/dist/moves/DiscardLeftoverCards.d.ts +15 -16
- package/dist/moves/DiscardLeftoverCards.js +23 -24
- package/dist/moves/Move.d.ts +18 -19
- package/dist/moves/Move.js +1 -2
- package/dist/moves/MoveType.d.ts +19 -20
- package/dist/moves/MoveType.js +20 -21
- package/dist/moves/MoveView.d.ts +8 -9
- package/dist/moves/MoveView.js +1 -2
- package/dist/moves/PassCards.d.ts +19 -20
- package/dist/moves/PassCards.js +41 -42
- package/dist/moves/PlaceCharacter.d.ts +17 -18
- package/dist/moves/PlaceCharacter.js +14 -15
- package/dist/moves/PlaceResource.d.ts +26 -27
- package/dist/moves/PlaceResource.js +44 -45
- package/dist/moves/Produce.d.ts +13 -14
- package/dist/moves/Produce.js +56 -57
- package/dist/moves/ReceiveCharacter.d.ts +15 -16
- package/dist/moves/ReceiveCharacter.js +19 -20
- package/dist/moves/Recycle.d.ts +14 -15
- package/dist/moves/Recycle.js +24 -25
- package/dist/moves/RevealChosenCards.d.ts +23 -24
- package/dist/moves/RevealChosenCards.js +51 -52
- package/dist/moves/SlateForConstruction.d.ts +14 -15
- package/dist/moves/SlateForConstruction.js +16 -17
- package/dist/moves/StartPhase.d.ts +11 -12
- package/dist/moves/StartPhase.js +15 -16
- package/dist/moves/TellYouAreReady.d.ts +13 -14
- package/dist/moves/TellYouAreReady.js +13 -14
- package/dist/moves/TransformIntoKrystallium.d.ts +10 -11
- package/dist/moves/TransformIntoKrystallium.js +14 -15
- package/dist/rules/ChooseDevelopmentCardRule.d.ts.map +1 -1
- package/dist/rules/ChooseDevelopmentCardRule.js +1 -3
- package/dist/rules/ChooseDevelopmentCardRule.js.map +1 -1
- package/dist/rules/ConstructionRule.d.ts.map +1 -1
- package/dist/rules/ConstructionRule.js +6 -6
- package/dist/rules/ConstructionRule.js.map +1 -1
- package/dist/rules/ExplorationProductionRule.d.ts.map +1 -1
- package/dist/rules/ExplorationProductionRule.js.map +1 -1
- package/dist/typeguards.d.ts +7 -8
- package/dist/typeguards.js +9 -10
- package/package.json +13 -12
- package/LICENCE.md +0 -108
- package/dist/GameState.d.ts.map +0 -1
- package/dist/GameState.js.map +0 -1
- package/dist/GameView.d.ts.map +0 -1
- package/dist/GameView.js.map +0 -1
- package/dist/Options.d.ts.map +0 -1
- package/dist/Options.js.map +0 -1
- package/dist/Phase.d.ts.map +0 -1
- package/dist/Phase.js.map +0 -1
- package/dist/Player.d.ts.map +0 -1
- package/dist/Player.js.map +0 -1
- package/dist/PlayerView.d.ts.map +0 -1
- package/dist/PlayerView.js.map +0 -1
- package/dist/canUndo.d.ts.map +0 -1
- package/dist/canUndo.js.map +0 -1
- package/dist/material/Construction.d.ts.map +0 -1
- package/dist/material/Construction.js.map +0 -1
- package/dist/material/CorruptionAndAscensionDevelopments.d.ts +0 -15
- package/dist/material/CorruptionAndAscensionDevelopments.d.ts.map +0 -1
- package/dist/material/CorruptionAndAscensionDevelopments.js +0 -84
- package/dist/material/CorruptionAndAscensionDevelopments.js.map +0 -1
- package/dist/material/Empire.d.ts.map +0 -1
- package/dist/material/Empire.js.map +0 -1
- package/dist/material/EmpireName.d.ts.map +0 -1
- package/dist/material/EmpireName.js.map +0 -1
- package/dist/moves/ChooseDevelopmentCard.d.ts.map +0 -1
- package/dist/moves/ChooseDevelopmentCard.js.map +0 -1
- package/dist/moves/CompleteConstruction.d.ts.map +0 -1
- package/dist/moves/CompleteConstruction.js.map +0 -1
- package/dist/moves/Concede.d.ts.map +0 -1
- package/dist/moves/Concede.js.map +0 -1
- package/dist/moves/DealDevelopmentCards.d.ts.map +0 -1
- package/dist/moves/DealDevelopmentCards.js.map +0 -1
- package/dist/moves/DiscardLeftoverCards.d.ts.map +0 -1
- package/dist/moves/DiscardLeftoverCards.js.map +0 -1
- package/dist/moves/Move.d.ts.map +0 -1
- package/dist/moves/Move.js.map +0 -1
- package/dist/moves/MoveType.d.ts.map +0 -1
- package/dist/moves/MoveType.js.map +0 -1
- package/dist/moves/MoveView.d.ts.map +0 -1
- package/dist/moves/MoveView.js.map +0 -1
- package/dist/moves/PassCards.d.ts.map +0 -1
- package/dist/moves/PassCards.js.map +0 -1
- package/dist/moves/PlaceCharacter.d.ts.map +0 -1
- package/dist/moves/PlaceCharacter.js.map +0 -1
- package/dist/moves/PlaceResource.d.ts.map +0 -1
- package/dist/moves/PlaceResource.js.map +0 -1
- package/dist/moves/Produce.d.ts.map +0 -1
- package/dist/moves/Produce.js.map +0 -1
- package/dist/moves/ReceiveCharacter.d.ts.map +0 -1
- package/dist/moves/ReceiveCharacter.js.map +0 -1
- package/dist/moves/Recycle.d.ts.map +0 -1
- package/dist/moves/Recycle.js.map +0 -1
- package/dist/moves/RevealChosenCards.d.ts.map +0 -1
- package/dist/moves/RevealChosenCards.js.map +0 -1
- package/dist/moves/SlateForConstruction.d.ts.map +0 -1
- package/dist/moves/SlateForConstruction.js.map +0 -1
- package/dist/moves/StartPhase.d.ts.map +0 -1
- package/dist/moves/StartPhase.js.map +0 -1
- package/dist/moves/TellYouAreReady.d.ts.map +0 -1
- package/dist/moves/TellYouAreReady.js.map +0 -1
- package/dist/moves/TransformIntoKrystallium.d.ts.map +0 -1
- package/dist/moves/TransformIntoKrystallium.js.map +0 -1
- package/dist/typeguards.d.ts.map +0 -1
- package/dist/typeguards.js.map +0 -1
package/dist/moves/Produce.js
CHANGED
|
@@ -1,57 +1,56 @@
|
|
|
1
|
-
import Character, { ChooseCharacter } from '../material/Character';
|
|
2
|
-
import Resource from '../material/Resource';
|
|
3
|
-
import { getProduction } from '../Production';
|
|
4
|
-
import MoveType from './MoveType';
|
|
5
|
-
export const produceMove = (resource) => ({ type: MoveType.Produce, resource });
|
|
6
|
-
export function produce(state, move) {
|
|
7
|
-
state.productionStep = move.resource;
|
|
8
|
-
const rankPlayersProduction = [];
|
|
9
|
-
for (const player of state.players) {
|
|
10
|
-
const production = getProduction(player, move.resource);
|
|
11
|
-
player.availableResources = new Array(production).fill(move.resource);
|
|
12
|
-
player.ready = false;
|
|
13
|
-
if (production > 0) {
|
|
14
|
-
for (let i = 0; i <= rankPlayersProduction.length; i++) {
|
|
15
|
-
if (i === rankPlayersProduction.length) {
|
|
16
|
-
rankPlayersProduction.push({ production, players: [player] });
|
|
17
|
-
break;
|
|
18
|
-
}
|
|
19
|
-
const rank = rankPlayersProduction[i];
|
|
20
|
-
if (rank.production === production) {
|
|
21
|
-
rank.players.push(player);
|
|
22
|
-
break;
|
|
23
|
-
}
|
|
24
|
-
if (rank.production < production) {
|
|
25
|
-
rankPlayersProduction.splice(i, 0, { production, players: [player] });
|
|
26
|
-
break;
|
|
27
|
-
}
|
|
28
|
-
}
|
|
29
|
-
}
|
|
30
|
-
}
|
|
31
|
-
const supremacySeats = state.players.length >= 6 ? 2 : 1;
|
|
32
|
-
const supremacyPlayers = [];
|
|
33
|
-
for (const rank of rankPlayersProduction) {
|
|
34
|
-
if (supremacyPlayers.length + rank.players.length > supremacySeats)
|
|
35
|
-
break;
|
|
36
|
-
supremacyPlayers.push(...rank.players);
|
|
37
|
-
}
|
|
38
|
-
for (const player of supremacyPlayers) {
|
|
39
|
-
switch (move.resource) {
|
|
40
|
-
case Resource.Materials:
|
|
41
|
-
case Resource.Gold:
|
|
42
|
-
player.bonuses.push(Character.Financier);
|
|
43
|
-
break;
|
|
44
|
-
case Resource.Energy:
|
|
45
|
-
case Resource.Exploration:
|
|
46
|
-
player.bonuses.push(Character.General);
|
|
47
|
-
break;
|
|
48
|
-
default:
|
|
49
|
-
player.bonuses.push(ChooseCharacter);
|
|
50
|
-
break;
|
|
51
|
-
}
|
|
52
|
-
}
|
|
53
|
-
}
|
|
54
|
-
export function isProduce(move) {
|
|
55
|
-
return move.type === MoveType.Produce;
|
|
56
|
-
}
|
|
57
|
-
//# sourceMappingURL=Produce.js.map
|
|
1
|
+
import Character, { ChooseCharacter } from '../material/Character';
|
|
2
|
+
import Resource from '../material/Resource';
|
|
3
|
+
import { getProduction } from '../Production';
|
|
4
|
+
import MoveType from './MoveType';
|
|
5
|
+
export const produceMove = (resource) => ({ type: MoveType.Produce, resource });
|
|
6
|
+
export function produce(state, move) {
|
|
7
|
+
state.productionStep = move.resource;
|
|
8
|
+
const rankPlayersProduction = [];
|
|
9
|
+
for (const player of state.players) {
|
|
10
|
+
const production = getProduction(player, move.resource);
|
|
11
|
+
player.availableResources = new Array(production).fill(move.resource);
|
|
12
|
+
player.ready = false;
|
|
13
|
+
if (production > 0) {
|
|
14
|
+
for (let i = 0; i <= rankPlayersProduction.length; i++) {
|
|
15
|
+
if (i === rankPlayersProduction.length) {
|
|
16
|
+
rankPlayersProduction.push({ production, players: [player] });
|
|
17
|
+
break;
|
|
18
|
+
}
|
|
19
|
+
const rank = rankPlayersProduction[i];
|
|
20
|
+
if (rank.production === production) {
|
|
21
|
+
rank.players.push(player);
|
|
22
|
+
break;
|
|
23
|
+
}
|
|
24
|
+
if (rank.production < production) {
|
|
25
|
+
rankPlayersProduction.splice(i, 0, { production, players: [player] });
|
|
26
|
+
break;
|
|
27
|
+
}
|
|
28
|
+
}
|
|
29
|
+
}
|
|
30
|
+
}
|
|
31
|
+
const supremacySeats = state.players.length >= 6 ? 2 : 1;
|
|
32
|
+
const supremacyPlayers = [];
|
|
33
|
+
for (const rank of rankPlayersProduction) {
|
|
34
|
+
if (supremacyPlayers.length + rank.players.length > supremacySeats)
|
|
35
|
+
break;
|
|
36
|
+
supremacyPlayers.push(...rank.players);
|
|
37
|
+
}
|
|
38
|
+
for (const player of supremacyPlayers) {
|
|
39
|
+
switch (move.resource) {
|
|
40
|
+
case Resource.Materials:
|
|
41
|
+
case Resource.Gold:
|
|
42
|
+
player.bonuses.push(Character.Financier);
|
|
43
|
+
break;
|
|
44
|
+
case Resource.Energy:
|
|
45
|
+
case Resource.Exploration:
|
|
46
|
+
player.bonuses.push(Character.General);
|
|
47
|
+
break;
|
|
48
|
+
default:
|
|
49
|
+
player.bonuses.push(ChooseCharacter);
|
|
50
|
+
break;
|
|
51
|
+
}
|
|
52
|
+
}
|
|
53
|
+
}
|
|
54
|
+
export function isProduce(move) {
|
|
55
|
+
return move.type === MoveType.Produce;
|
|
56
|
+
}
|
|
@@ -1,16 +1,15 @@
|
|
|
1
|
-
import GameState from '../GameState';
|
|
2
|
-
import GameView from '../GameView';
|
|
3
|
-
import Character from '../material/Character';
|
|
4
|
-
import EmpireName from '../material/EmpireName';
|
|
5
|
-
import Move from './Move';
|
|
6
|
-
import MoveType from './MoveType';
|
|
7
|
-
import MoveView from './MoveView';
|
|
8
|
-
export default interface ReceiveCharacter {
|
|
9
|
-
type: typeof MoveType.ReceiveCharacter;
|
|
10
|
-
playerId: EmpireName;
|
|
11
|
-
character: Character;
|
|
12
|
-
}
|
|
13
|
-
export declare const receiveCharacterMove: (playerId: EmpireName, character: Character) => ReceiveCharacter;
|
|
14
|
-
export declare function receiveCharacter(state: GameState | GameView, move: ReceiveCharacter): void;
|
|
15
|
-
export declare function isReceiveCharacter(move: Move | MoveView): move is ReceiveCharacter;
|
|
16
|
-
//# sourceMappingURL=ReceiveCharacter.d.ts.map
|
|
1
|
+
import GameState from '../GameState';
|
|
2
|
+
import GameView from '../GameView';
|
|
3
|
+
import Character from '../material/Character';
|
|
4
|
+
import EmpireName from '../material/EmpireName';
|
|
5
|
+
import Move from './Move';
|
|
6
|
+
import MoveType from './MoveType';
|
|
7
|
+
import MoveView from './MoveView';
|
|
8
|
+
export default interface ReceiveCharacter {
|
|
9
|
+
type: typeof MoveType.ReceiveCharacter;
|
|
10
|
+
playerId: EmpireName;
|
|
11
|
+
character: Character;
|
|
12
|
+
}
|
|
13
|
+
export declare const receiveCharacterMove: (playerId: EmpireName, character: Character) => ReceiveCharacter;
|
|
14
|
+
export declare function receiveCharacter(state: GameState | GameView, move: ReceiveCharacter): void;
|
|
15
|
+
export declare function isReceiveCharacter(move: Move | MoveView): move is ReceiveCharacter;
|
|
@@ -1,20 +1,19 @@
|
|
|
1
|
-
import { ChooseCharacter } from '../material/Character';
|
|
2
|
-
import MoveType from './MoveType';
|
|
3
|
-
export const receiveCharacterMove = (playerId, character) => ({
|
|
4
|
-
type: MoveType.ReceiveCharacter, playerId, character
|
|
5
|
-
});
|
|
6
|
-
export function receiveCharacter(state, move) {
|
|
7
|
-
const player = state.players.find(player => player.empire === move.playerId);
|
|
8
|
-
if (!player)
|
|
9
|
-
return console.error('Cannot apply', move, 'on', state, ': could not find player');
|
|
10
|
-
player.characters[move.character]++;
|
|
11
|
-
let bonusIndex = player.bonuses.indexOf(move.character);
|
|
12
|
-
if (bonusIndex === -1) {
|
|
13
|
-
bonusIndex = player.bonuses.indexOf(ChooseCharacter);
|
|
14
|
-
}
|
|
15
|
-
player.bonuses.splice(bonusIndex, 1);
|
|
16
|
-
}
|
|
17
|
-
export function isReceiveCharacter(move) {
|
|
18
|
-
return move.type === MoveType.ReceiveCharacter;
|
|
19
|
-
}
|
|
20
|
-
//# sourceMappingURL=ReceiveCharacter.js.map
|
|
1
|
+
import { ChooseCharacter } from '../material/Character';
|
|
2
|
+
import MoveType from './MoveType';
|
|
3
|
+
export const receiveCharacterMove = (playerId, character) => ({
|
|
4
|
+
type: MoveType.ReceiveCharacter, playerId, character
|
|
5
|
+
});
|
|
6
|
+
export function receiveCharacter(state, move) {
|
|
7
|
+
const player = state.players.find(player => player.empire === move.playerId);
|
|
8
|
+
if (!player)
|
|
9
|
+
return console.error('Cannot apply', move, 'on', state, ': could not find player');
|
|
10
|
+
player.characters[move.character]++;
|
|
11
|
+
let bonusIndex = player.bonuses.indexOf(move.character);
|
|
12
|
+
if (bonusIndex === -1) {
|
|
13
|
+
bonusIndex = player.bonuses.indexOf(ChooseCharacter);
|
|
14
|
+
}
|
|
15
|
+
player.bonuses.splice(bonusIndex, 1);
|
|
16
|
+
}
|
|
17
|
+
export function isReceiveCharacter(move) {
|
|
18
|
+
return move.type === MoveType.ReceiveCharacter;
|
|
19
|
+
}
|
package/dist/moves/Recycle.d.ts
CHANGED
|
@@ -1,15 +1,14 @@
|
|
|
1
|
-
import GameState from '../GameState';
|
|
2
|
-
import GameView from '../GameView';
|
|
3
|
-
import EmpireName from '../material/EmpireName';
|
|
4
|
-
import Move from './Move';
|
|
5
|
-
import MoveType from './MoveType';
|
|
6
|
-
import MoveView from './MoveView';
|
|
7
|
-
export default interface Recycle {
|
|
8
|
-
type: typeof MoveType.Recycle;
|
|
9
|
-
playerId: EmpireName;
|
|
10
|
-
card: number;
|
|
11
|
-
}
|
|
12
|
-
export declare const recycleMove: (playerId: EmpireName, card: number) => Recycle;
|
|
13
|
-
export declare function recycle(state: GameState | GameView, move: Recycle): void;
|
|
14
|
-
export declare function isRecycle(move: Move | MoveView): move is Recycle;
|
|
15
|
-
//# sourceMappingURL=Recycle.d.ts.map
|
|
1
|
+
import GameState from '../GameState';
|
|
2
|
+
import GameView from '../GameView';
|
|
3
|
+
import EmpireName from '../material/EmpireName';
|
|
4
|
+
import Move from './Move';
|
|
5
|
+
import MoveType from './MoveType';
|
|
6
|
+
import MoveView from './MoveView';
|
|
7
|
+
export default interface Recycle {
|
|
8
|
+
type: typeof MoveType.Recycle;
|
|
9
|
+
playerId: EmpireName;
|
|
10
|
+
card: number;
|
|
11
|
+
}
|
|
12
|
+
export declare const recycleMove: (playerId: EmpireName, card: number) => Recycle;
|
|
13
|
+
export declare function recycle(state: GameState | GameView, move: Recycle): void;
|
|
14
|
+
export declare function isRecycle(move: Move | MoveView): move is Recycle;
|
package/dist/moves/Recycle.js
CHANGED
|
@@ -1,25 +1,24 @@
|
|
|
1
|
-
import { getCardDetails } from '../material/Developments';
|
|
2
|
-
import MoveType from './MoveType';
|
|
3
|
-
export const recycleMove = (playerId, card) => ({
|
|
4
|
-
type: MoveType.Recycle, playerId, card
|
|
5
|
-
});
|
|
6
|
-
export function recycle(state, move) {
|
|
7
|
-
const player = state.players.find(player => player.empire === move.playerId);
|
|
8
|
-
if (!player)
|
|
9
|
-
return console.error('Cannot apply', move, 'on', state, ': could not find player');
|
|
10
|
-
const indexInDraftArea = player.draftArea.findIndex(card => card === move.card);
|
|
11
|
-
const development = getCardDetails(move.card);
|
|
12
|
-
if (indexInDraftArea !== -1) {
|
|
13
|
-
player.draftArea.splice(indexInDraftArea, 1);
|
|
14
|
-
player.availableResources.push(development.recyclingBonus);
|
|
15
|
-
}
|
|
16
|
-
else {
|
|
17
|
-
player.constructionArea = player.constructionArea.filter(construction => construction.card !== move.card);
|
|
18
|
-
player.bonuses.push(development.recyclingBonus);
|
|
19
|
-
}
|
|
20
|
-
state.discard.push(move.card);
|
|
21
|
-
}
|
|
22
|
-
export function isRecycle(move) {
|
|
23
|
-
return move.type === MoveType.Recycle;
|
|
24
|
-
}
|
|
25
|
-
//# sourceMappingURL=Recycle.js.map
|
|
1
|
+
import { getCardDetails } from '../material/Developments';
|
|
2
|
+
import MoveType from './MoveType';
|
|
3
|
+
export const recycleMove = (playerId, card) => ({
|
|
4
|
+
type: MoveType.Recycle, playerId, card
|
|
5
|
+
});
|
|
6
|
+
export function recycle(state, move) {
|
|
7
|
+
const player = state.players.find(player => player.empire === move.playerId);
|
|
8
|
+
if (!player)
|
|
9
|
+
return console.error('Cannot apply', move, 'on', state, ': could not find player');
|
|
10
|
+
const indexInDraftArea = player.draftArea.findIndex(card => card === move.card);
|
|
11
|
+
const development = getCardDetails(move.card);
|
|
12
|
+
if (indexInDraftArea !== -1) {
|
|
13
|
+
player.draftArea.splice(indexInDraftArea, 1);
|
|
14
|
+
player.availableResources.push(development.recyclingBonus);
|
|
15
|
+
}
|
|
16
|
+
else {
|
|
17
|
+
player.constructionArea = player.constructionArea.filter(construction => construction.card !== move.card);
|
|
18
|
+
player.bonuses.push(development.recyclingBonus);
|
|
19
|
+
}
|
|
20
|
+
state.discard.push(move.card);
|
|
21
|
+
}
|
|
22
|
+
export function isRecycle(move) {
|
|
23
|
+
return move.type === MoveType.Recycle;
|
|
24
|
+
}
|
|
@@ -1,24 +1,23 @@
|
|
|
1
|
-
import GameState from '../GameState';
|
|
2
|
-
import GameView from '../GameView';
|
|
3
|
-
import EmpireName from '../material/EmpireName';
|
|
4
|
-
import Move from './Move';
|
|
5
|
-
import MoveType from './MoveType';
|
|
6
|
-
type RevealChosenCards = {
|
|
7
|
-
type: typeof MoveType.RevealChosenCards;
|
|
8
|
-
};
|
|
9
|
-
export default RevealChosenCards;
|
|
10
|
-
export type RevealChosenCardsView = RevealChosenCards & {
|
|
11
|
-
revealedCards: {
|
|
12
|
-
[key in EmpireName]?: {
|
|
13
|
-
card: number;
|
|
14
|
-
index: number;
|
|
15
|
-
};
|
|
16
|
-
};
|
|
17
|
-
};
|
|
18
|
-
export declare const revealChosenCardsMove: RevealChosenCards;
|
|
19
|
-
export declare function revealChosenCards(state: GameState): void;
|
|
20
|
-
export declare function revealChosenCardsInView(state: GameView, move: RevealChosenCardsView): void;
|
|
21
|
-
export declare function isRevealChosenCards(move: Move): move is (RevealChosenCards | RevealChosenCardsView);
|
|
22
|
-
export declare function isRevealChosenCardsView(move: RevealChosenCards | RevealChosenCardsView): move is RevealChosenCardsView;
|
|
23
|
-
export declare function getRevealChosenCardsView(state: GameState): RevealChosenCardsView;
|
|
24
|
-
//# sourceMappingURL=RevealChosenCards.d.ts.map
|
|
1
|
+
import GameState from '../GameState';
|
|
2
|
+
import GameView from '../GameView';
|
|
3
|
+
import EmpireName from '../material/EmpireName';
|
|
4
|
+
import Move from './Move';
|
|
5
|
+
import MoveType from './MoveType';
|
|
6
|
+
type RevealChosenCards = {
|
|
7
|
+
type: typeof MoveType.RevealChosenCards;
|
|
8
|
+
};
|
|
9
|
+
export default RevealChosenCards;
|
|
10
|
+
export type RevealChosenCardsView = RevealChosenCards & {
|
|
11
|
+
revealedCards: {
|
|
12
|
+
[key in EmpireName]?: {
|
|
13
|
+
card: number;
|
|
14
|
+
index: number;
|
|
15
|
+
};
|
|
16
|
+
};
|
|
17
|
+
};
|
|
18
|
+
export declare const revealChosenCardsMove: RevealChosenCards;
|
|
19
|
+
export declare function revealChosenCards(state: GameState): void;
|
|
20
|
+
export declare function revealChosenCardsInView(state: GameView, move: RevealChosenCardsView): void;
|
|
21
|
+
export declare function isRevealChosenCards(move: Move): move is (RevealChosenCards | RevealChosenCardsView);
|
|
22
|
+
export declare function isRevealChosenCardsView(move: RevealChosenCards | RevealChosenCardsView): move is RevealChosenCardsView;
|
|
23
|
+
export declare function getRevealChosenCardsView(state: GameState): RevealChosenCardsView;
|
|
@@ -1,52 +1,51 @@
|
|
|
1
|
-
import { numberOfCardsToDraft } from '../
|
|
2
|
-
import { getCardDetails } from '../material/Developments';
|
|
3
|
-
import { isPlayer, isPlayerView } from '../typeguards';
|
|
4
|
-
import MoveType from './MoveType';
|
|
5
|
-
export const revealChosenCardsMove = { type: MoveType.RevealChosenCards };
|
|
6
|
-
export function revealChosenCards(state) {
|
|
7
|
-
state.players.forEach(player => {
|
|
8
|
-
if (player.chosenCard !== undefined) {
|
|
9
|
-
player.hand = player.hand.filter(card => card !== player.chosenCard);
|
|
10
|
-
player.draftArea.push(player.chosenCard);
|
|
11
|
-
delete player.chosenCard;
|
|
12
|
-
if (player.draftArea.length < numberOfCardsToDraft) {
|
|
13
|
-
player.cardsToPass = player.hand;
|
|
14
|
-
}
|
|
15
|
-
}
|
|
16
|
-
});
|
|
17
|
-
}
|
|
18
|
-
export function revealChosenCardsInView(state, move) {
|
|
19
|
-
state.players.forEach(player => {
|
|
20
|
-
const revealedCard = move.revealedCards[player.empire];
|
|
21
|
-
if (!revealedCard || revealedCard.card === undefined)
|
|
22
|
-
return;
|
|
23
|
-
player.draftArea.push(revealedCard.card);
|
|
24
|
-
if (isPlayer(player)) {
|
|
25
|
-
player.hand = player.hand.filter(card => card !== revealedCard.card);
|
|
26
|
-
delete player.chosenCard;
|
|
27
|
-
}
|
|
28
|
-
else {
|
|
29
|
-
player.hiddenHand.splice(player.hiddenHand.indexOf(getCardDetails(revealedCard.card).deck), 1);
|
|
30
|
-
player.ready = false;
|
|
31
|
-
}
|
|
32
|
-
if (player.draftArea.length < numberOfCardsToDraft) {
|
|
33
|
-
player.cardsToPass = isPlayerView(player) ? player.hiddenHand : player.hand;
|
|
34
|
-
}
|
|
35
|
-
});
|
|
36
|
-
}
|
|
37
|
-
export function isRevealChosenCards(move) {
|
|
38
|
-
return move.type === MoveType.RevealChosenCards;
|
|
39
|
-
}
|
|
40
|
-
export function isRevealChosenCardsView(move) {
|
|
41
|
-
return move.revealedCards !== undefined;
|
|
42
|
-
}
|
|
43
|
-
export function getRevealChosenCardsView(state) {
|
|
44
|
-
const revealedCards = state.players.reduce((revealedCards, player) => {
|
|
45
|
-
if (player.chosenCard !== undefined) {
|
|
46
|
-
revealedCards[player.empire] = { card: player.chosenCard, index: player.hand.indexOf(player.chosenCard) };
|
|
47
|
-
}
|
|
48
|
-
return revealedCards;
|
|
49
|
-
}, {});
|
|
50
|
-
return { type: MoveType.RevealChosenCards, revealedCards };
|
|
51
|
-
}
|
|
52
|
-
//# sourceMappingURL=RevealChosenCards.js.map
|
|
1
|
+
import { numberOfCardsToDraft } from '../ItsAWonderfulWorld';
|
|
2
|
+
import { getCardDetails } from '../material/Developments';
|
|
3
|
+
import { isPlayer, isPlayerView } from '../typeguards';
|
|
4
|
+
import MoveType from './MoveType';
|
|
5
|
+
export const revealChosenCardsMove = { type: MoveType.RevealChosenCards };
|
|
6
|
+
export function revealChosenCards(state) {
|
|
7
|
+
state.players.forEach(player => {
|
|
8
|
+
if (player.chosenCard !== undefined) {
|
|
9
|
+
player.hand = player.hand.filter(card => card !== player.chosenCard);
|
|
10
|
+
player.draftArea.push(player.chosenCard);
|
|
11
|
+
delete player.chosenCard;
|
|
12
|
+
if (player.draftArea.length < numberOfCardsToDraft) {
|
|
13
|
+
player.cardsToPass = player.hand;
|
|
14
|
+
}
|
|
15
|
+
}
|
|
16
|
+
});
|
|
17
|
+
}
|
|
18
|
+
export function revealChosenCardsInView(state, move) {
|
|
19
|
+
state.players.forEach(player => {
|
|
20
|
+
const revealedCard = move.revealedCards[player.empire];
|
|
21
|
+
if (!revealedCard || revealedCard.card === undefined)
|
|
22
|
+
return;
|
|
23
|
+
player.draftArea.push(revealedCard.card);
|
|
24
|
+
if (isPlayer(player)) {
|
|
25
|
+
player.hand = player.hand.filter(card => card !== revealedCard.card);
|
|
26
|
+
delete player.chosenCard;
|
|
27
|
+
}
|
|
28
|
+
else {
|
|
29
|
+
player.hiddenHand.splice(player.hiddenHand.indexOf(getCardDetails(revealedCard.card).deck), 1);
|
|
30
|
+
player.ready = false;
|
|
31
|
+
}
|
|
32
|
+
if (player.draftArea.length < numberOfCardsToDraft) {
|
|
33
|
+
player.cardsToPass = isPlayerView(player) ? player.hiddenHand : player.hand;
|
|
34
|
+
}
|
|
35
|
+
});
|
|
36
|
+
}
|
|
37
|
+
export function isRevealChosenCards(move) {
|
|
38
|
+
return move.type === MoveType.RevealChosenCards;
|
|
39
|
+
}
|
|
40
|
+
export function isRevealChosenCardsView(move) {
|
|
41
|
+
return move.revealedCards !== undefined;
|
|
42
|
+
}
|
|
43
|
+
export function getRevealChosenCardsView(state) {
|
|
44
|
+
const revealedCards = state.players.reduce((revealedCards, player) => {
|
|
45
|
+
if (player.chosenCard !== undefined) {
|
|
46
|
+
revealedCards[player.empire] = { card: player.chosenCard, index: player.hand.indexOf(player.chosenCard) };
|
|
47
|
+
}
|
|
48
|
+
return revealedCards;
|
|
49
|
+
}, {});
|
|
50
|
+
return { type: MoveType.RevealChosenCards, revealedCards };
|
|
51
|
+
}
|
|
@@ -1,15 +1,14 @@
|
|
|
1
|
-
import GameState from '../GameState';
|
|
2
|
-
import GameView from '../GameView';
|
|
3
|
-
import EmpireName from '../material/EmpireName';
|
|
4
|
-
import Move from './Move';
|
|
5
|
-
import MoveType from './MoveType';
|
|
6
|
-
import MoveView from './MoveView';
|
|
7
|
-
export default interface SlateForConstruction {
|
|
8
|
-
type: typeof MoveType.SlateForConstruction;
|
|
9
|
-
playerId: EmpireName;
|
|
10
|
-
card: number;
|
|
11
|
-
}
|
|
12
|
-
export declare const slateForConstructionMove: (playerId: EmpireName, card: number) => SlateForConstruction;
|
|
13
|
-
export declare function slateForConstruction(state: GameState | GameView, move: SlateForConstruction): void;
|
|
14
|
-
export declare function isSlateForConstruction(move: Move | MoveView): move is SlateForConstruction;
|
|
15
|
-
//# sourceMappingURL=SlateForConstruction.d.ts.map
|
|
1
|
+
import GameState from '../GameState';
|
|
2
|
+
import GameView from '../GameView';
|
|
3
|
+
import EmpireName from '../material/EmpireName';
|
|
4
|
+
import Move from './Move';
|
|
5
|
+
import MoveType from './MoveType';
|
|
6
|
+
import MoveView from './MoveView';
|
|
7
|
+
export default interface SlateForConstruction {
|
|
8
|
+
type: typeof MoveType.SlateForConstruction;
|
|
9
|
+
playerId: EmpireName;
|
|
10
|
+
card: number;
|
|
11
|
+
}
|
|
12
|
+
export declare const slateForConstructionMove: (playerId: EmpireName, card: number) => SlateForConstruction;
|
|
13
|
+
export declare function slateForConstruction(state: GameState | GameView, move: SlateForConstruction): void;
|
|
14
|
+
export declare function isSlateForConstruction(move: Move | MoveView): move is SlateForConstruction;
|
|
@@ -1,17 +1,16 @@
|
|
|
1
|
-
import { totalCost } from '../material/DevelopmentDetails';
|
|
2
|
-
import { getCardDetails } from '../material/Developments';
|
|
3
|
-
import MoveType from './MoveType';
|
|
4
|
-
export const slateForConstructionMove = (playerId, card) => ({
|
|
5
|
-
type: MoveType.SlateForConstruction, playerId, card
|
|
6
|
-
});
|
|
7
|
-
export function slateForConstruction(state, move) {
|
|
8
|
-
const player = state.players.find(player => player.empire === move.playerId);
|
|
9
|
-
if (!player)
|
|
10
|
-
return console.error('Cannot apply', move, 'on', state, ': could not find player');
|
|
11
|
-
player.draftArea = player.draftArea.filter(card => card !== move.card);
|
|
12
|
-
player.constructionArea.push({ card: move.card, costSpaces: Array(totalCost(getCardDetails(move.card))).fill(null) });
|
|
13
|
-
}
|
|
14
|
-
export function isSlateForConstruction(move) {
|
|
15
|
-
return move.type === MoveType.SlateForConstruction;
|
|
16
|
-
}
|
|
17
|
-
//# sourceMappingURL=SlateForConstruction.js.map
|
|
1
|
+
import { totalCost } from '../material/DevelopmentDetails';
|
|
2
|
+
import { getCardDetails } from '../material/Developments';
|
|
3
|
+
import MoveType from './MoveType';
|
|
4
|
+
export const slateForConstructionMove = (playerId, card) => ({
|
|
5
|
+
type: MoveType.SlateForConstruction, playerId, card
|
|
6
|
+
});
|
|
7
|
+
export function slateForConstruction(state, move) {
|
|
8
|
+
const player = state.players.find(player => player.empire === move.playerId);
|
|
9
|
+
if (!player)
|
|
10
|
+
return console.error('Cannot apply', move, 'on', state, ': could not find player');
|
|
11
|
+
player.draftArea = player.draftArea.filter(card => card !== move.card);
|
|
12
|
+
player.constructionArea.push({ card: move.card, costSpaces: Array(totalCost(getCardDetails(move.card))).fill(null) });
|
|
13
|
+
}
|
|
14
|
+
export function isSlateForConstruction(move) {
|
|
15
|
+
return move.type === MoveType.SlateForConstruction;
|
|
16
|
+
}
|
|
@@ -1,12 +1,11 @@
|
|
|
1
|
-
import GameState from '../GameState';
|
|
2
|
-
import GameView from '../GameView';
|
|
3
|
-
import Phase from '../Phase';
|
|
4
|
-
import MoveType from './MoveType';
|
|
5
|
-
type StartPhase = {
|
|
6
|
-
type: typeof MoveType.StartPhase;
|
|
7
|
-
phase: Phase;
|
|
8
|
-
};
|
|
9
|
-
export default StartPhase;
|
|
10
|
-
export declare const startPhaseMove: (phase: Phase) => StartPhase;
|
|
11
|
-
export declare function startPhase(state: GameState | GameView, move: StartPhase): void;
|
|
12
|
-
//# sourceMappingURL=StartPhase.d.ts.map
|
|
1
|
+
import GameState from '../GameState';
|
|
2
|
+
import GameView from '../GameView';
|
|
3
|
+
import Phase from '../Phase';
|
|
4
|
+
import MoveType from './MoveType';
|
|
5
|
+
type StartPhase = {
|
|
6
|
+
type: typeof MoveType.StartPhase;
|
|
7
|
+
phase: Phase;
|
|
8
|
+
};
|
|
9
|
+
export default StartPhase;
|
|
10
|
+
export declare const startPhaseMove: (phase: Phase) => StartPhase;
|
|
11
|
+
export declare function startPhase(state: GameState | GameView, move: StartPhase): void;
|
package/dist/moves/StartPhase.js
CHANGED
|
@@ -1,16 +1,15 @@
|
|
|
1
|
-
import Phase from '../Phase';
|
|
2
|
-
import MoveType from './MoveType';
|
|
3
|
-
export const startPhaseMove = (phase) => ({
|
|
4
|
-
type: MoveType.StartPhase, phase
|
|
5
|
-
});
|
|
6
|
-
export function startPhase(state, move) {
|
|
7
|
-
state.phase = move.phase;
|
|
8
|
-
for (const player of state.players) {
|
|
9
|
-
player.ready = false;
|
|
10
|
-
}
|
|
11
|
-
if (move.phase === Phase.Draft) {
|
|
12
|
-
delete state.productionStep;
|
|
13
|
-
state.round++;
|
|
14
|
-
}
|
|
15
|
-
}
|
|
16
|
-
//# sourceMappingURL=StartPhase.js.map
|
|
1
|
+
import Phase from '../Phase';
|
|
2
|
+
import MoveType from './MoveType';
|
|
3
|
+
export const startPhaseMove = (phase) => ({
|
|
4
|
+
type: MoveType.StartPhase, phase
|
|
5
|
+
});
|
|
6
|
+
export function startPhase(state, move) {
|
|
7
|
+
state.phase = move.phase;
|
|
8
|
+
for (const player of state.players) {
|
|
9
|
+
player.ready = false;
|
|
10
|
+
}
|
|
11
|
+
if (move.phase === Phase.Draft) {
|
|
12
|
+
delete state.productionStep;
|
|
13
|
+
state.round++;
|
|
14
|
+
}
|
|
15
|
+
}
|
|
@@ -1,14 +1,13 @@
|
|
|
1
|
-
import GameState from '../GameState';
|
|
2
|
-
import GameView from '../GameView';
|
|
3
|
-
import EmpireName from '../material/EmpireName';
|
|
4
|
-
import Move from './Move';
|
|
5
|
-
import MoveType from './MoveType';
|
|
6
|
-
import MoveView from './MoveView';
|
|
7
|
-
export default interface TellYouAreReady {
|
|
8
|
-
type: typeof MoveType.TellYouAreReady;
|
|
9
|
-
playerId: EmpireName;
|
|
10
|
-
}
|
|
11
|
-
export declare const tellYouAreReadyMove: (playerId: EmpireName) => TellYouAreReady;
|
|
12
|
-
export declare function tellYouAreReady(state: GameState | GameView, move: TellYouAreReady): void;
|
|
13
|
-
export declare function isTellYouAreReady(move: Move | MoveView): move is TellYouAreReady;
|
|
14
|
-
//# sourceMappingURL=TellYouAreReady.d.ts.map
|
|
1
|
+
import GameState from '../GameState';
|
|
2
|
+
import GameView from '../GameView';
|
|
3
|
+
import EmpireName from '../material/EmpireName';
|
|
4
|
+
import Move from './Move';
|
|
5
|
+
import MoveType from './MoveType';
|
|
6
|
+
import MoveView from './MoveView';
|
|
7
|
+
export default interface TellYouAreReady {
|
|
8
|
+
type: typeof MoveType.TellYouAreReady;
|
|
9
|
+
playerId: EmpireName;
|
|
10
|
+
}
|
|
11
|
+
export declare const tellYouAreReadyMove: (playerId: EmpireName) => TellYouAreReady;
|
|
12
|
+
export declare function tellYouAreReady(state: GameState | GameView, move: TellYouAreReady): void;
|
|
13
|
+
export declare function isTellYouAreReady(move: Move | MoveView): move is TellYouAreReady;
|
|
@@ -1,14 +1,13 @@
|
|
|
1
|
-
import MoveType from './MoveType';
|
|
2
|
-
export const tellYouAreReadyMove = (playerId) => ({
|
|
3
|
-
type: MoveType.TellYouAreReady, playerId
|
|
4
|
-
});
|
|
5
|
-
export function tellYouAreReady(state, move) {
|
|
6
|
-
const player = state.players.find(player => player.empire === move.playerId);
|
|
7
|
-
if (!player)
|
|
8
|
-
return console.error('Cannot apply', move, 'on', state, ': could not find player');
|
|
9
|
-
player.ready = true;
|
|
10
|
-
}
|
|
11
|
-
export function isTellYouAreReady(move) {
|
|
12
|
-
return move.type === MoveType.TellYouAreReady;
|
|
13
|
-
}
|
|
14
|
-
//# sourceMappingURL=TellYouAreReady.js.map
|
|
1
|
+
import MoveType from './MoveType';
|
|
2
|
+
export const tellYouAreReadyMove = (playerId) => ({
|
|
3
|
+
type: MoveType.TellYouAreReady, playerId
|
|
4
|
+
});
|
|
5
|
+
export function tellYouAreReady(state, move) {
|
|
6
|
+
const player = state.players.find(player => player.empire === move.playerId);
|
|
7
|
+
if (!player)
|
|
8
|
+
return console.error('Cannot apply', move, 'on', state, ': could not find player');
|
|
9
|
+
player.ready = true;
|
|
10
|
+
}
|
|
11
|
+
export function isTellYouAreReady(move) {
|
|
12
|
+
return move.type === MoveType.TellYouAreReady;
|
|
13
|
+
}
|
|
@@ -1,11 +1,10 @@
|
|
|
1
|
-
import GameState from '../GameState';
|
|
2
|
-
import GameView from '../GameView';
|
|
3
|
-
import EmpireName from '../material/EmpireName';
|
|
4
|
-
import MoveType from './MoveType';
|
|
5
|
-
export default interface TransformIntoKrystallium {
|
|
6
|
-
type: typeof MoveType.TransformIntoKrystallium;
|
|
7
|
-
playerId: EmpireName;
|
|
8
|
-
}
|
|
9
|
-
export declare const transformIntoKrystalliumMove: (playerId: EmpireName) => TransformIntoKrystallium;
|
|
10
|
-
export declare function transformIntoKrystallium(state: GameState | GameView, move: TransformIntoKrystallium): void;
|
|
11
|
-
//# sourceMappingURL=TransformIntoKrystallium.d.ts.map
|
|
1
|
+
import GameState from '../GameState';
|
|
2
|
+
import GameView from '../GameView';
|
|
3
|
+
import EmpireName from '../material/EmpireName';
|
|
4
|
+
import MoveType from './MoveType';
|
|
5
|
+
export default interface TransformIntoKrystallium {
|
|
6
|
+
type: typeof MoveType.TransformIntoKrystallium;
|
|
7
|
+
playerId: EmpireName;
|
|
8
|
+
}
|
|
9
|
+
export declare const transformIntoKrystalliumMove: (playerId: EmpireName) => TransformIntoKrystallium;
|
|
10
|
+
export declare function transformIntoKrystallium(state: GameState | GameView, move: TransformIntoKrystallium): void;
|