Skip to content

Commit 0e5389e

Browse files
committed
Better reveal
1 parent 2ac3049 commit 0e5389e

File tree

11 files changed

+68
-77
lines changed

11 files changed

+68
-77
lines changed

cards/Civic Recruiter.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -16,7 +16,7 @@ export const card: PartialCardInfoComputation = (util, cache, game, card) => ({
1616
yield util.addCard({
1717
source: card,
1818
target,
19-
name: "Random Citizen",
19+
state: util.defaultCardState("Random Citizen", target.id),
2020
player: util.findCard(game, card).player,
2121
zone: "board",
2222
});

cards/Emissary of Mirrors.ts

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -21,13 +21,13 @@ export const card: PartialCardInfoComputation = (util, cache, game, card) => ({
2121
return {
2222
onTarget: function* (action) {
2323
if (action.type == "game/revealCard") {
24-
const name = util.getCard(game, affectedCard).name;
24+
const state = util.getCard(game, affectedCard);
2525
const player = util.self(game, card);
2626
if (util.opponent(game, action.payload.target) == player) {
2727
yield util.addCard({
2828
source: card,
2929
target: util.cid(),
30-
name: name,
30+
state,
3131
player: player,
3232
zone: "deck",
3333
});

cards/New Hire.ts

Lines changed: 3 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -8,22 +8,15 @@ export const card: PartialCardInfoComputation = (util, cache, game, card) => ({
88
onTarget: function* (action) {
99
if (action.type == "game/removeCard") {
1010
const target = util.cid();
11+
const state = util.defaultCardState("Random Citizen", target.id);
12+
state.modifiers.push({ name: "purple", card, props: {} });
1113
yield util.addCard({
1214
source: card,
1315
target,
14-
name: "Random Citizen",
16+
state,
1517
player: util.self(game, card),
1618
zone: "deck",
1719
});
18-
19-
yield util.modifyCard({
20-
source: card,
21-
target,
22-
modifier: {
23-
name: "purple",
24-
card,
25-
},
26-
});
2720
}
2821

2922
return false;

cards/Rogue Reporter.ts

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -14,8 +14,7 @@ export const card: PartialCardInfoComputation = (util, cache, game, card) => ({
1414
});
1515

1616
if (cards.length > 0) {
17-
const { player, zone } = util.findCard(game, cards[0]);
18-
yield util.revealCard({ source: card, target: cards[0], player, zone });
17+
yield util.revealCard({ source: card, target: cards[0] });
1918
}
2019
},
2120
});

cards/Smokestack Guide.ts

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -7,15 +7,15 @@ export const card: PartialCardInfoComputation = (util, cache, game, card) => ({
77
colors: ["orange"],
88
play: function* () {
99
const target = util.cid();
10+
const state = util.defaultCardState("Random Citizen", target.id);
11+
state.modifiers.push({ card, name: "orange", props: {} });
1012
yield util.addCard({
1113
source: card,
1214
target,
13-
name: "Random Citizen",
15+
state,
1416
player: util.findCard(game, card).player,
1517
zone: "board",
1618
});
17-
18-
yield util.modifyCard({ source: card, target, modifier: { card, name: "orange" } });
1919
},
2020
modifiers: {
2121
orange: (info, modifier, card) => ({

cards/Trade Secrets.ts

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -27,8 +27,7 @@ export const card: PartialCardInfoComputation = (util, cache, game, card) => ({
2727
});
2828

2929
if (deckards.length > 0) {
30-
const { player, zone } = util.findCard(game, deckards[0]);
31-
yield util.revealCard({ source: card, target: deckards[0], player, zone });
30+
yield util.revealCard({ source: card, target: deckards[0] });
3231
}
3332
},
3433
});

cards/Undercity Tavernkeep.ts

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -13,15 +13,15 @@ export const card: PartialCardInfoComputation = (util, cache, game, card) => ({
1313

1414
if (card.props.turns == 1) {
1515
const target = util.cid();
16+
const state = util.defaultCardState("Random Citizen", target.id);
17+
state.modifiers.push({ card, name: "purple", props: {} })
1618
yield util.addCard({
1719
source: card,
1820
target,
19-
name: "Random Citizen",
21+
state,
2022
player: util.findCard(game, card).player,
2123
zone: "deck",
2224
});
23-
24-
yield util.modifyCard({ source: card, target, modifier: { card, name: "purple" } });
2525
}
2626
},
2727
modifiers: {

client/cards.ts

Lines changed: 1 addition & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -67,10 +67,6 @@ export async function loadCard(card: { name: string }) {
6767

6868
export async function loadCardsFromAction(action: AnyAction) {
6969
if (action.type == "game/addCard") {
70-
await loadCard({ name: action.payload.name });
71-
}
72-
73-
if (action.type == "game/revealCard" && action.payload.target?.name) {
74-
await loadCard({ name: action.payload.target.name });
70+
await loadCard({ name: action.payload.state.name });
7571
}
7672
}

common/gameSlice.ts

Lines changed: 25 additions & 39 deletions
Original file line numberDiff line numberDiff line change
@@ -43,31 +43,31 @@ export function initialGameState(): GameState {
4343
}
4444

4545
// export type GameAction = PayloadAction<GameParams, `game/${keyof typeof gameReducers}`>;
46-
export type GameAction = PayloadAction<{ source: Target | undefined; target?: Target }> & (
47-
| PayloadAction<
48-
TargetParams,
49-
| "game/activateCard"
50-
| "game/removeCard"
51-
| "game/enterCard"
52-
| "game/bounceCard"
53-
| "game/refreshCard"
54-
| "game/exhaustCard"
55-
>
56-
| PayloadAction<NoActionParams, "game/endTurn" | "game/reset">
57-
| PayloadAction<RevealCardParams, "game/revealCard">
58-
| PayloadAction<UndoneActionParams, "game/undone">
59-
| PayloadAction<AddCardParams, "game/addCard">
60-
| PayloadAction<PlayCardParams, "game/playCard">
61-
| PayloadAction<StealCardParams, "game/stealCard">
62-
| PayloadAction<SetPropParams, "game/setProp">
63-
| PayloadAction<ChangeMoneyParams, "game/addMoney" | "game/removeMoney">
64-
| PayloadAction<ModifyCardParams, "game/modifyCard">
65-
);
46+
export type GameAction = PayloadAction<{ source: Target | undefined; target?: Target }> &
47+
(
48+
| PayloadAction<
49+
TargetParams,
50+
| "game/activateCard"
51+
| "game/removeCard"
52+
| "game/enterCard"
53+
| "game/bounceCard"
54+
| "game/refreshCard"
55+
| "game/exhaustCard"
56+
>
57+
| PayloadAction<NoActionParams, "game/endTurn" | "game/reset">
58+
| PayloadAction<TargetParams, "game/revealCard">
59+
| PayloadAction<UndoneActionParams, "game/undone">
60+
| PayloadAction<AddCardParams, "game/addCard">
61+
| PayloadAction<PlayCardParams, "game/playCard">
62+
| PayloadAction<StealCardParams, "game/stealCard">
63+
| PayloadAction<SetPropParams, "game/setProp">
64+
| PayloadAction<ChangeMoneyParams, "game/addMoney" | "game/removeMoney">
65+
| PayloadAction<ModifyCardParams, "game/modifyCard">
66+
);
6667

6768
export type GameParams =
6869
| TargetParams
6970
| NoActionParams
70-
| RevealCardParams
7171
| UndoneActionParams
7272
| AddCardParams
7373
| PlayCardParams
@@ -93,7 +93,7 @@ export type UndoneActionParams = SourceParams & {
9393
export type AddCardParams = TargetParams & {
9494
zone: Zone;
9595
player: PlayerId;
96-
name: string;
96+
state: CardState;
9797
};
9898

9999
export type PlayCardParams = TargetParams & {
@@ -104,12 +104,6 @@ export type StealCardParams = TargetParams & {
104104
zone: Zone;
105105
};
106106

107-
export type RevealCardParams = TargetParams & {
108-
player: PlayerId;
109-
zone: Zone;
110-
target: CardState;
111-
};
112-
113107
export type SetPropParams = TargetParams & {
114108
name: string;
115109
value: any;
@@ -206,11 +200,7 @@ export const gameReducers = {
206200
},
207201
addCard: (state: GameState, action: PayloadAction<AddCardParams>) => {
208202
state.history.push(action as GameAction);
209-
const card = defaultCardState(action.payload.name, action.payload.target.id);
210-
if (action.payload.source) {
211-
card.hidden = getCard(state, action.payload.source)?.hidden ?? true;
212-
}
213-
state.players[action.payload.player][action.payload.zone].push(card);
203+
state.players[action.payload.player][action.payload.zone].push(action.payload.state);
214204
},
215205
playCard: (state: GameState, action: PayloadAction<PlayCardParams>) => {
216206
state.history.push(action as GameAction);
@@ -272,15 +262,11 @@ export const gameReducers = {
272262
clearBoard(state, player);
273263
}
274264
},
275-
revealCard: (state: GameState, action: PayloadAction<RevealCardParams>) => {
265+
revealCard: (state: GameState, action: PayloadAction<TargetParams>) => {
276266
state.history.push(action as GameAction);
277-
const info = updateCard(state, action.payload.target, (card) => {
278-
Object.assign(card, action.payload.target);
267+
updateCard(state, action.payload.target, (card) => {
279268
card.hidden = false;
280269
});
281-
if (!info) {
282-
state.players[action.payload.player][action.payload.zone].push({ ...action.payload.target, hidden: false });
283-
}
284270
},
285271
refreshCard: (state: GameState, action: PayloadAction<TargetParams>) => {
286272
state.history.push(action as GameAction);

common/util.ts

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -316,8 +316,7 @@ export function* revealRandom(
316316
}
317317

318318
for (const target of cards) {
319-
const { player, zone } = findCard(game, target)!;
320-
yield revealCard({ source: card, target, player, zone });
319+
yield revealCard({ source: card, target });
321320
}
322321

323322
return cards;
@@ -368,6 +367,7 @@ const util = {
368367
modifyCard,
369368
addMoney,
370369
removeMoney,
370+
defaultCardState,
371371
findCard: findCard as (game: GameState, card: Target) => { player: PlayerId; zone: Zone; index: number },
372372
getCard: getCard as (game: GameState, card: Target) => CardState,
373373
opponentOf,

0 commit comments

Comments
 (0)