chore: code reorganized
This commit is contained in:
67
src/game/utilities/assets.ts
Normal file
67
src/game/utilities/assets.ts
Normal 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 }
|
||||
]
|
25
src/game/utilities/fonts.ts
Normal file
25
src/game/utilities/fonts.ts
Normal 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
155
src/game/utilities/mocks.ts
Normal 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))
|
||||
}
|
20
src/game/utilities/scale.ts
Normal file
20
src/game/utilities/scale.ts
Normal 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
|
||||
}
|
Reference in New Issue
Block a user