Compare commits
2 Commits
419b36c22f
...
da90e012fc
Author | SHA1 | Date | |
---|---|---|---|
da90e012fc | |||
c4e35ac3ae |
@ -120,11 +120,11 @@ const Hand: React.FC<HandProps> = ({ buildActive, setBuildActive, setCardActive
|
||||
}
|
||||
return B.turn - A.turn; /* Put playable cards on top */
|
||||
})
|
||||
.map((card: any) => (
|
||||
.map((card: any, idx: number) => (
|
||||
<Development
|
||||
onClick={() => cardClicked(card)}
|
||||
card={card}
|
||||
key={`${type}-${card.card}`}
|
||||
key={`${type}-${card.card}-${card.turn ?? "t"}-${idx}`}
|
||||
type={`${type}-${card.card}`}
|
||||
/>
|
||||
));
|
||||
|
File diff suppressed because it is too large
Load Diff
@ -20,11 +20,15 @@ export interface Player {
|
||||
cities: number;
|
||||
longestRoad: number;
|
||||
mustDiscard?: number;
|
||||
/* Resources */
|
||||
sheep: number;
|
||||
wheat: number;
|
||||
stone: number;
|
||||
brick: number;
|
||||
wood: number;
|
||||
desert: number; /* Not used -- for Typescript compliance */
|
||||
bank: number; /* Not used -- for Typescript compliance */
|
||||
/* End Resources */
|
||||
army: number;
|
||||
points: number;
|
||||
ports: number;
|
||||
@ -38,6 +42,11 @@ export interface Player {
|
||||
turnStart: number;
|
||||
totalTime: number;
|
||||
banks: ResourceType[];
|
||||
/* Offer */
|
||||
gives: OfferItem[];
|
||||
gets: OfferItem[];
|
||||
offerRejected: Record<PlayerColor, boolean>;
|
||||
/* End Offer */
|
||||
}
|
||||
|
||||
export type CornerType = "settlement" | "city" | "none";
|
||||
@ -72,20 +81,21 @@ export interface Turn {
|
||||
limits?: any;
|
||||
roll?: number;
|
||||
volcano?: number | null | undefined;
|
||||
free?: boolean;
|
||||
freeRoads?: number;
|
||||
free: boolean;
|
||||
freeRoads: number;
|
||||
select?: Record<string, number>;
|
||||
active?: string;
|
||||
robberInAction?: boolean;
|
||||
placedRobber?: number;
|
||||
offer?: Offer;
|
||||
active: "volcano" | "robber" | "road-building" | "offer" | null;
|
||||
robberInAction: boolean;
|
||||
placedRobber: boolean;
|
||||
developmentPurchased: boolean;
|
||||
offer: Offer | null;
|
||||
[key: string]: any;
|
||||
}
|
||||
|
||||
export interface DevelopmentCard {
|
||||
card?: number | string;
|
||||
type?: string;
|
||||
[key: string]: any;
|
||||
turn?: number;
|
||||
}
|
||||
|
||||
// Import from schema for DRY compliance
|
||||
@ -105,8 +115,8 @@ export interface PersistentSessionData {
|
||||
resources?: number;
|
||||
}
|
||||
|
||||
export type PlayerColor = "R" | "B" | "O" | "W" | "robber" | "unassigned";
|
||||
export const PLAYER_COLORS: PlayerColor[] = ["R", "B", "O", "W", "robber", "unassigned"];
|
||||
export type PlayerColor = "R" | "B" | "O" | "W" | "robber" | "bank" | "unassigned";
|
||||
export const PLAYER_COLORS: PlayerColor[] = ["R", "B", "O", "W", "robber", "bank", "unassigned"];
|
||||
|
||||
/**
|
||||
* Runtime Session type = Persistent + Transient
|
||||
@ -115,14 +125,15 @@ export const PLAYER_COLORS: PlayerColor[] = ["R", "B", "O", "W", "robber", "unas
|
||||
export type Session = PersistentSessionData & TransientSessionState;
|
||||
|
||||
export interface OfferItem {
|
||||
type: string; // 'bank' or resource key or other
|
||||
type: ResourceType; // 'bank' or resource key or other
|
||||
count: number;
|
||||
}
|
||||
|
||||
export interface Offer {
|
||||
gets: OfferItem[];
|
||||
gives: OfferItem[];
|
||||
[key: string]: any;
|
||||
name: string;
|
||||
color: PlayerColor; // Omit for bank trades
|
||||
}
|
||||
|
||||
export type ResourceType = "wood" | "brick" | "sheep" | "wheat" | "stone" | "desert" | "bank";
|
||||
|
Loading…
x
Reference in New Issue
Block a user