chore: code reorganized

This commit is contained in:
Jose Conde
2024-07-05 15:37:29 +02:00
parent 39ee278c27
commit c40dcd74db
20 changed files with 80 additions and 53 deletions

View File

@ -0,0 +1,67 @@
import tileBack from '@/assets/images/tiles/back.png'
import tile0_0 from '@/assets/images/tiles/0-0.png'
import tile1_0 from '@/assets/images/tiles/1-0.png'
import tile1_1 from '@/assets/images/tiles/1-1.png'
import tile2_0 from '@/assets/images/tiles/2-0.png'
import tile2_1 from '@/assets/images/tiles/2-1.png'
import tile2_2 from '@/assets/images/tiles/2-2.png'
import tile3_0 from '@/assets/images/tiles/3-0.png'
import tile3_1 from '@/assets/images/tiles/3-1.png'
import tile3_2 from '@/assets/images/tiles/3-2.png'
import tile3_3 from '@/assets/images/tiles/3-3.png'
import tile4_0 from '@/assets/images/tiles/4-0.png'
import tile4_1 from '@/assets/images/tiles/4-1.png'
import tile4_2 from '@/assets/images/tiles/4-2.png'
import tile4_3 from '@/assets/images/tiles/4-3.png'
import tile4_4 from '@/assets/images/tiles/4-4.png'
import tile5_0 from '@/assets/images/tiles/5-0.png'
import tile5_1 from '@/assets/images/tiles/5-1.png'
import tile5_2 from '@/assets/images/tiles/5-2.png'
import tile5_3 from '@/assets/images/tiles/5-3.png'
import tile5_4 from '@/assets/images/tiles/5-4.png'
import tile5_5 from '@/assets/images/tiles/5-5.png'
import tile6_0 from '@/assets/images/tiles/6-0.png'
import tile6_1 from '@/assets/images/tiles/6-1.png'
import tile6_2 from '@/assets/images/tiles/6-2.png'
import tile6_3 from '@/assets/images/tiles/6-3.png'
import tile6_4 from '@/assets/images/tiles/6-4.png'
import tile6_5 from '@/assets/images/tiles/6-5.png'
import tile6_6 from '@/assets/images/tiles/6-6.png'
import dot from '@/assets/images/circle.png'
import bgWood_1 from '@/assets/images/backgrounds/wood-1.jpg'
import bg_1 from '@/assets/images/backgrounds/bg-1.png'
export const assets = [
{ alias: 'tile-back', src: tileBack },
{ alias: 'tile-0_0', src: tile0_0 },
{ alias: 'tile-1_0', src: tile1_0 },
{ alias: 'tile-1_1', src: tile1_1 },
{ alias: 'tile-2_0', src: tile2_0 },
{ alias: 'tile-2_1', src: tile2_1 },
{ alias: 'tile-2_2', src: tile2_2 },
{ alias: 'tile-3_0', src: tile3_0 },
{ alias: 'tile-3_1', src: tile3_1 },
{ alias: 'tile-3_2', src: tile3_2 },
{ alias: 'tile-3_3', src: tile3_3 },
{ alias: 'tile-4_0', src: tile4_0 },
{ alias: 'tile-4_1', src: tile4_1 },
{ alias: 'tile-4_2', src: tile4_2 },
{ alias: 'tile-4_3', src: tile4_3 },
{ alias: 'tile-4_4', src: tile4_4 },
{ alias: 'tile-5_0', src: tile5_0 },
{ alias: 'tile-5_1', src: tile5_1 },
{ alias: 'tile-5_2', src: tile5_2 },
{ alias: 'tile-5_3', src: tile5_3 },
{ alias: 'tile-5_4', src: tile5_4 },
{ alias: 'tile-5_5', src: tile5_5 },
{ alias: 'tile-6_0', src: tile6_0 },
{ alias: 'tile-6_1', src: tile6_1 },
{ alias: 'tile-6_2', src: tile6_2 },
{ alias: 'tile-6_3', src: tile6_3 },
{ alias: 'tile-6_4', src: tile6_4 },
{ alias: 'tile-6_5', src: tile6_5 },
{ alias: 'tile-6_6', src: tile6_6 },
{ alias: 'dot', src: dot },
{ alias: 'bg-wood-1', src: bgWood_1 },
{ alias: 'bg-1', src: bg_1 }
]

View File

@ -0,0 +1,25 @@
import { Text, TextStyle } from 'pixi.js'
export const dropShadowStyle = {
alpha: 0.5,
angle: 0.3,
blur: 5,
distance: 4
}
export const mainText = new TextStyle({
dropShadow: dropShadowStyle,
fill: '#b71a1a',
fontFamily: 'Arial, Helvetica, sans-serif',
fontWeight: 'bold',
letterSpacing: 1,
stroke: '#658f56'
})
export function createText(str: string, x: number, y: number, style: TextStyle = mainText) {
const text = new Text({ text: str, style })
text.anchor.set(0.5, 0.5)
text.x = x
text.y = y
return text
}

155
src/game/utilities/mocks.ts Normal file
View File

@ -0,0 +1,155 @@
import { Tile } from '../Tile'
import type { GameState, Movement } from '../../common/interfaces'
import type { Game } from '../Game'
import { wait } from '../../common/helpers'
export const playerState = {
id: '6fddcf4f-eaa9-4c87-a599-2af944477091',
name: 'arhuako',
score: 0,
hand: [
{
id: '20ce403a-dccc-472e-94b2-90ba8feac538',
pips: [4, 5],
flipped: false
},
{
id: 'a0cd790b-34bb-40fe-9b25-8dc590729e15',
pips: [1, 2],
flipped: false
},
{
id: 'f516ef48-99f2-4add-96eb-877f03bf0cb1',
pips: [6, 6],
flipped: false
},
{
id: 'dd91e12d-4be1-40e2-b1b1-128a0bc3dad7',
pips: [0, 1],
flipped: false
},
{
id: 'c472f1e8-14e4-4a5b-bef0-df0e78f01c39',
pips: [1, 5],
flipped: false
},
{
id: 'c28c55e1-820f-43b1-9366-d4b20d7f62a6',
pips: [1, 3],
flipped: false
},
{
id: '6d812874-8610-43e3-8331-6b25584e759e',
pips: [0, 5],
flipped: false
}
]
}
export const gameState_0: GameState = {
id: 'f043051e-6850-444f-857c-b889220fc187',
lastMove: {
tile: {
id: 'c3f6b525-2e6f-455a-b355-9b8c8f5075f0',
pips: [6, 6]
},
type: 'both',
playerId: '137b68a6-f26c-43f5-badf-e5ae406fd059',
id: 'c71943a5-1fef-4418-bd66-39767ac36817'
},
gameInProgress: true,
winner: null,
tileSelectionPhase: false,
gameBlocked: false,
gameTied: false,
gameId: 'd76c4f98-1f26-4390-9e8d-2d727876b710',
tilesInBoneyard: [],
players: [
{
id: 'f639f263-e415-428c-bdd2-113f00f3c392',
name: 'arhuako',
score: 0,
hand: [
'51399f92-7555-4ffc-91ed-f6b5b9041a54',
'e9c40c13-c821-4bad-810c-12e7cb79b47d',
'95e8412b-1938-48d5-9647-cb8617659db0',
'54948d0a-b7a4-416c-a3f7-6602cfff1851',
'a40e6a76-c2e1-4692-82b3-603a4412a6a9',
'cb7827df-fe19-4c28-a786-a47e07c2d368',
'6d5a31d3-b734-4312-b8fd-1b5efa3fc258'
]
},
{
id: '77b2c512-d9e5-45f3-850f-99baab1befdf',
name: 'Alice (AI)',
score: 0,
hand: [
'066fd011-cabe-483b-a985-c649f4908356',
'01434825-eb3c-4baf-8ad1-cc055f982e75',
'c085c90f-f69c-4f83-acb6-87c576927366',
'1b5d5b46-a41c-4e69-9a02-efff9adbc201',
'74833dcc-1526-4c6c-a64c-a7807e647e77',
'fb7e6976-67a9-496f-9758-0b172aa069dd',
'58b612f0-cf40-4b5f-ba05-8a089f19b43a'
]
},
{
id: '137b68a6-f26c-43f5-badf-e5ae406fd059',
name: 'Bob (AI)',
score: 0,
hand: [
'9d5dcb97-7478-4030-a0f6-4e7080a5b8e0',
'a07e1aaf-e651-4678-a61c-414f4324d8e8',
'4db7aebb-ab4b-4709-b208-b39176e8d70a',
'd1733f9c-86a6-4597-b1ff-ec44e9a375d1',
'cf6e2c1c-57f8-4342-8ff4-8046971f99db',
'33cec060-7f40-4af9-9182-f98cbacbae10'
]
},
{
id: '188c1d69-8c5c-4fec-a08b-dc5fa09d49fd',
name: 'Charlie (AI)',
score: 0,
hand: [
'58433be6-e8d9-4ed2-bbdc-4328425a3687',
'3e24a6cd-02ea-436a-a3e4-41ae62c717d0',
'2a2723d1-6c46-4718-a1c2-fa8d2c148ac8',
'd521de5e-1db1-4a2e-971d-f91cc761342c',
'13d943d7-b694-4419-82f5-729117878d01',
'afcf2509-acfb-47ed-ade7-d08f1a20afd2',
'f50f3589-41ab-4d99-919e-c4c7a71ef5b0'
]
}
],
currentPlayer: {
id: '188c1d69-8c5c-4fec-a08b-dc5fa09d49fd',
name: 'arhuako'
},
tilesInBoard: [
{
id: 'c3f6b525-2e6f-455a-b355-9b8c8f5075f0',
pips: [6, 6]
}
],
boardFreeEnds: [6, 6]
}
export function getMovement(
pips: [number, number] = [6, 6],
side: string = 'left',
scale: number = 1
): Movement {
const tile = new Tile('string', undefined, pips, scale)
tile.orientation = 'north'
return {
id: 'movemnetid',
type: side,
tile,
playerId: 'string'
}
}
export async function mockMove(game: Game, pips: [number, number], side: string = 'left') {
await wait(1000)
game.board.updateBoard(getMovement(pips, side, game.board.scale))
}

View File

@ -0,0 +1,20 @@
export type ScaleFunction = Function & {
inverse: Function
}
/**
*
* @param domain example: [0, 100]
* @param range examaple: [0, width]
*/
export function Scale(domain: number[], range: number[]): ScaleFunction {
function Fn(value: number): number {
return ((value - domain[0]) * (range[1] - range[0])) / (domain[1] - domain[0]) + range[0]
}
Fn.inverse = function (value: number): number {
return ((value - range[0]) * (domain[1] - domain[0])) / (range[1] - range[0]) + domain[0]
}
return Fn
}