feat: facilitate chess boards

This commit is contained in:
Julien Calixte
2025-08-09 15:28:35 +02:00
parent 4d5fc5abb3
commit 09e408bd4a
2 changed files with 51 additions and 16 deletions

View File

@@ -8,7 +8,7 @@ export const boardGames: BoardGame[] = [
{ {
name: 'Chessboard Engraving', name: 'Chessboard Engraving',
tasks: [ tasks: [
{ name: 'Cut the board base', tools: chooseTools('board-cutter') }, { name: 'Cut the board base', tools: chooseTools('cutter') },
{ {
name: 'Apply lamination', name: 'Apply lamination',
tools: chooseTools('laminator', 'painter') tools: chooseTools('laminator', 'painter')
@@ -19,12 +19,8 @@ export const boardGames: BoardGame[] = [
name: 'Piece Creation', name: 'Piece Creation',
tasks: [ tasks: [
{ {
name: 'Mold pawns', name: 'Mold pieces',
tools: chooseTools('mini-mold', 'painter') tools: chooseTools('mini-mold', 'cutter')
},
{
name: 'Engrave royalty',
tools: chooseTools('dice-engraver', 'mini-mold')
}, },
{ {
name: 'Paint pieces', name: 'Paint pieces',
@@ -68,7 +64,7 @@ export const boardGames: BoardGame[] = [
tasks: [ tasks: [
{ {
name: 'Cut dungeon tiles', name: 'Cut dungeon tiles',
tools: chooseTools('board-cutter', 'laminator') tools: chooseTools('cutter', 'laminator')
} }
] ]
} }
@@ -82,7 +78,7 @@ export const boardGames: BoardGame[] = [
tasks: [ tasks: [
{ {
name: 'Print scenario deck', name: 'Print scenario deck',
tools: chooseTools('card-printer', 'rulebook-dzn') tools: chooseTools('card-prisnter', 'rulebook-dzn')
}, },
{ {
name: 'Apply finish', name: 'Apply finish',
@@ -113,7 +109,7 @@ export const boardGames: BoardGame[] = [
tasks: [ tasks: [
{ {
name: 'Print map base', name: 'Print map base',
tools: chooseTools('board-cutter', 'laminator') tools: chooseTools('cutter', 'laminator')
}, },
{ {
name: 'Add compass', name: 'Add compass',
@@ -171,7 +167,7 @@ export const boardGames: BoardGame[] = [
tasks: [ tasks: [
{ {
name: 'Print jungle layout', name: 'Print jungle layout',
tools: chooseTools('board-cutter', 'painter') tools: chooseTools('cutter', 'painter')
}, },
{ {
name: 'Seal board', name: 'Seal board',
@@ -216,7 +212,7 @@ export const boardGames: BoardGame[] = [
tasks: [ tasks: [
{ {
name: 'Cut castle walls', name: 'Cut castle walls',
tools: chooseTools('board-cutter', 'painter') tools: chooseTools('cutter', 'painter')
}, },
{ {
name: 'Reinforce walls', name: 'Reinforce walls',

View File

@@ -4,15 +4,54 @@ export const tools: Tool[] = [
{ name: 'Card Printer', id: 'card-printer', reference: '', cooldown: 5 }, { name: 'Card Printer', id: 'card-printer', reference: '', cooldown: 5 },
{ name: 'Miniature Mold', id: 'mini-mold', reference: '', cooldown: 15 }, { name: 'Miniature Mold', id: 'mini-mold', reference: '', cooldown: 15 },
{ name: 'Dice Engraver', id: 'dice-engraver', reference: '', cooldown: 10 }, { name: 'Dice Engraver', id: 'dice-engraver', reference: '', cooldown: 10 },
{ name: 'Board Cutter', id: 'board-cutter', reference: '', cooldown: 8 }, { name: 'Cutter', id: 'cutter', reference: '', cooldown: 8 },
{ name: 'Rulebook Designer', id: 'rulebook-dzn', reference: '', cooldown: 6 }, { name: 'Rulebook Designer', id: 'rulebook-dzn', reference: '', cooldown: 6 },
{ name: 'Box Assembler', id: 'box-asm', reference: '', cooldown: 4 }, { name: 'Box Assembler', id: 'box-asm', reference: '', cooldown: 4 },
{ name: 'Component Painter', id: 'painter', reference: '', cooldown: 12 }, { name: 'Component Painter', id: 'painter', reference: '', cooldown: 12 },
{ name: 'Lamination Machine', id: 'laminator', reference: '', cooldown: 7 } { name: 'Lamination Machine', id: 'laminator', reference: '', cooldown: 7 },
// Additional realistic tools
{
name: 'Shrink Wrap Machine',
id: 'shrink-wrap',
reference: '',
cooldown: 9
},
{
name: 'Punch Board Cutter',
id: 'punch-cutter',
reference: '',
cooldown: 11
},
{
name: 'Sticker Applicator',
id: 'sticker-applicator',
reference: '',
cooldown: 6
},
{
name: 'Foil Stamping Press',
id: 'foil-stamp',
reference: '',
cooldown: 13
},
{
name: 'Scanner',
id: 'scanner',
reference: '',
cooldown: 5
},
{
name: 'Instruction Sheet Folder',
id: 'sheet-folder',
reference: '',
cooldown: 7
},
{ name: 'Plastic Bag Sealer', id: 'bag-sealer', reference: '', cooldown: 4 },
{ name: 'Barcode Printer', id: 'barcode-printer', reference: '', cooldown: 8 }
] ]
export type NonEmptyArray<T> = [T, ...T[]] export type NonEmptyArray<T> = [T, ...T[]]
export const idToTools = (id: string): Tool => tools.find((t) => t.id === id)! export const idToTools = (id: string): Tool => tools.find((t) => t.id === id)!
export const chooseTools = (...ides: string[]): NonEmptyArray<Tool> => export const chooseTools = (...ids: string[]): NonEmptyArray<Tool> =>
ides.map(idToTools) as NonEmptyArray<Tool> ids.map(idToTools) as NonEmptyArray<Tool>