From 5b4f97c99cf143379850d05d9543ceb42d480cfe Mon Sep 17 00:00:00 2001 From: nmcnew Date: Sat, 5 Oct 2024 15:00:18 -0600 Subject: [PATCH] WIP: Creating cells and brackets --- src/lib/DTOs/PlayerCellDto.ts | 11 +- src/lib/components/HeadToHeadCell.svelte | 34 +-- src/lib/components/PlayerCell.svelte | 5 +- src/routes/playground/cells/+page.server.ts | 223 +++++++++----------- src/routes/playground/cells/+page.svelte | 8 +- 5 files changed, 125 insertions(+), 156 deletions(-) diff --git a/src/lib/DTOs/PlayerCellDto.ts b/src/lib/DTOs/PlayerCellDto.ts index e9c6af4..e32db30 100644 --- a/src/lib/DTOs/PlayerCellDto.ts +++ b/src/lib/DTOs/PlayerCellDto.ts @@ -1,12 +1,15 @@ export default interface PlayerCellDto { name: string, + playerId: string, prefix?: string, character?: string, + seed: number, } -export interface Set { - +export interface PlayerSet { + player1: PlayerCellDto, + player2: PlayerCellDto, + winner?: PlayerCellDto, + matchId: string, } export class Round { - constructor(seededPlayers: Array) { - } } diff --git a/src/lib/components/HeadToHeadCell.svelte b/src/lib/components/HeadToHeadCell.svelte index 2ffbe14..fc9fa41 100644 --- a/src/lib/components/HeadToHeadCell.svelte +++ b/src/lib/components/HeadToHeadCell.svelte @@ -1,31 +1,35 @@
- ╭ Match {setId} ╮ + ╭ Match {playerSet.matchId} ╮
-
+
- +
-
{player1Seed}
+
{playerSet.player1.seed}
-
+
- +
-
{player2Seed}
+
{playerSet.player2.seed}
diff --git a/src/lib/components/PlayerCell.svelte b/src/lib/components/PlayerCell.svelte index aff85b3..23e6aeb 100644 --- a/src/lib/components/PlayerCell.svelte +++ b/src/lib/components/PlayerCell.svelte @@ -2,12 +2,13 @@ import type PlayerCellDto from '$lib/DTOs/PlayerCellDto'; interface PlayerCellProps { playerCell: PlayerCellDto; + isWinner?: boolean; } - let { playerCell }: PlayerCellProps = $props(); + let { playerCell, isWinner }: PlayerCellProps = $props(); {#if playerCell.prefix != null} - {playerCell.prefix} | + {playerCell.prefix} | {/if} {playerCell.name} {#if playerCell.character != null} diff --git a/src/routes/playground/cells/+page.server.ts b/src/routes/playground/cells/+page.server.ts index fafa26a..239c95b 100644 --- a/src/routes/playground/cells/+page.server.ts +++ b/src/routes/playground/cells/+page.server.ts @@ -1,137 +1,104 @@ import type { PageServerLoad } from './$types'; import type PlayerCellDto from '$lib/DTOs/PlayerCellDto'; +import type { PlayerSet } from '$lib/DTOs/PlayerCellDto'; export const load: PageServerLoad = async ({ params }) => { - const playerCells: Array = [ - { name: 'Alice' }, - { name: 'Bob', prefix: 'B', character: 'Knight' }, - { name: 'Charlie', prefix: 'C' }, - { name: 'Diana', character: 'Archer' }, - { name: 'Ethan', prefix: 'E', character: 'Mage' }, - { name: 'Fiona' }, { name: 'George', prefix: 'G' }, - { name: 'Hannah', character: 'Warrior' }, - { name: 'Ian', prefix: 'I', character: 'Rogue' }, - { name: 'Jasmine' }, - { name: 'Kevin', prefix: 'K', character: 'Paladin' }, - { name: 'Laura', character: 'Cleric' }, - { name: 'Mike', prefix: 'M' }, - { name: 'Nina', character: 'Druid' }, - { name: 'Oscar', prefix: 'O', character: 'Sorcerer' }, - { name: 'Paula' }, - { name: 'Quentin', prefix: 'Q' }, - { name: 'Rachel', character: 'Bard' }, - { name: 'Sam', prefix: 'S', character: 'Monk' }, - { name: 'Tina' }, - { name: 'Ulysses', prefix: 'U', character: 'Necromancer' }, - { name: 'Vera', character: 'Ranger' }, - { name: 'Walter', prefix: 'W' }, - { name: 'Xena', character: 'Assassin' }, - { name: 'Yara', prefix: 'Y', character: 'Summoner' }, - { name: 'Zack' }, - { name: 'Amber', prefix: 'Am', character: 'Beastmaster' }, - { name: 'Blake', character: 'Elementalist' }, - { name: 'Carmen', prefix: 'Cm', character: 'Guardian' }, - { name: 'Derek' }, - { name: 'Elena', prefix: 'El', character: 'Invoker' }, - { name: 'Frank', character: 'Alchemist' }, - { name: 'Grace', prefix: 'Gr' }, - { name: 'Henry', character: 'Tracker' }, - { name: 'Isla', prefix: 'Is', character: 'Enchanter' }, - { name: 'Jack' }, - { name: 'Kara', prefix: 'Kr', character: 'Berserker' }, - { name: 'Liam', character: 'Shadowcaster' }, - { name: 'Maya', prefix: 'My' }, - { name: 'Noah', character: 'Invoker' }, - { name: 'Olivia', prefix: 'Ol', character: 'Mystic' }, - { name: 'Peter' }, - { name: 'Queenie', prefix: 'Qu', character: 'Spellblade' }, - { name: 'Ryan', character: 'Templar' }, - { name: 'Sophia', prefix: 'So' }, - { name: 'Thomas', character: 'Warlord' }, - { name: 'Uma', prefix: 'Um', character: 'Shadowdancer' }, - { name: 'Victor' }, - { name: 'Wendy', prefix: 'We', character: 'Elementalist' }, - { name: 'Xander', character: 'Runemaster' }, - { name: 'Yvonne', prefix: 'Yv' }, - { name: 'Zoe', character: 'Chronomancer' }, - { name: 'Aaron', prefix: 'Aa', character: 'Battle Mage' }, - { name: 'Bella' }, - { name: 'Caleb', prefix: 'Ca', character: 'Guardian' }, - { name: 'Delilah', character: 'Invoker' }, - { name: 'Eli', prefix: 'El', character: 'Sorcerer' }, - { name: 'Faith' }, - { name: 'Gavin', prefix: 'Ga', character: 'Paladin' }, - { name: 'Hailey', character: 'Druid' }, - { name: 'Isaac', prefix: 'Is', character: 'Rogue' }, - { name: 'Julia' }, - { name: 'Kyle', prefix: 'Ky', character: 'Warrior' }, - { name: 'Lily', character: 'Bard' } + const characterClasses = [ + "Warrior", + "Mage", + "Archer", + "Rogue", + "Paladin", + "Sorcerer", + "Druid", + "Monk", + "Necromancer", + "Bard", + "Knight", + "Assassin", + "Barbarian", + "Cleric", + "Wizard", + "Ranger", + "Enchanter", + "Samurai", + "Alchemist", + "Summoner", + "Beastmaster", + "Elementalist", + "Dark Knight", + "Guardian", + "Illusionist", + "Pirate", + "Shadowblade", + "Berserker", + "Healer", + "Sorceress", + "Tempest", + "Sage", + "Priestess", + "Gladiator", + "Mystic", + "Elemental", + "Arcane", + "Swordsman", + "Invoker", + "Warlock", + "Dancer", + "Enforcer", + "Runemaster", + "Shaman", + "Spiritbinder", + "Templar", + "Mystic", + "Sorcerer", + "Valkyrie", + "Paladin", + "Warrior", + "Bard", + "Monk", + "Assassin", + "Cleric", + "Ranger", + "Druid", ]; - const round1Matches: Array<{ - player1: PlayerCellDto; - player2: PlayerCellDto; - seed1: number; - seed2: number; - matchId: string; - }> = new Array(); - const round2Matches: Array<{ - player1: PlayerCellDto; - player2: PlayerCellDto; - seed1: number; - seed2: number; - matchId: string; - }> = new Array(); - const round3Matches: Array<{ - player1: PlayerCellDto; - player2: PlayerCellDto; - seed1: number; - seed2: number; - matchId: string; - }> = new Array(); - const round4Matches: Array<{ - player1: PlayerCellDto; - player2: PlayerCellDto; - seed1: number; - seed2: number; - matchId: string; - }> = new Array(); - for (let i = 0; i < playerCells.length / 2; i++) { - round1Matches.push({ - player1: playerCells[i], - player2: playerCells[playerCells.length / 2 + i], - seed1: i + 1, - seed2: playerCells.length - i, - matchId: `A${i + 1}` - }); + const names = [ + "Alice", "Bob", "Charlie", "Diana", "Ethan", "Fiona", "George", "Hannah", + "Ian", "Julia", "Kevin", "Laura", "Michael", "Nina", "Oscar", "Paula", + "Quentin", "Rachel", "Steven", "Tina", "Uma", "Victor", "Wendy", "Xander", + "Yvonne", "Zach", "Aaron", "Bella", "Caleb", "Daisy", "Eli", "Faith", + "Gavin", "Hazel", "Isaac", "Jasmine", "Kyle", "Lily", "Mason", "Nora", + "Owen", "Piper", "Quincy", "Riley", "Sean", "Tara", "Ulysses", "Valerie", + "Walter", "Xenia", "Yusuf", "Zara", "Adam", "Bianca", "Connor", "Delilah", + "Evan", "Faye", "Grant", "Hailey", "Ivan", "Jenna", "Kevin", "Lara" + ]; + + const prefixes = "ABCDEFGHIJKLMNOPQRSTUVWXYZ"; + + const generatePlayerCell = (index: number): PlayerCellDto => { + const prefix = prefixes[index % prefixes.length]; + return { + name: names[index], + playerId: `p${String(index + 1).padStart(3, "0")}`, + prefix: prefix, + character: characterClasses[index % characterClasses.length], + seed: index + 1, // Ensures unique seed + }; + }; + + const round1: Array = new Array(); + for (let i = 0; i < 32; i++) { + const player1 = generatePlayerCell(i * 2); + const set: PlayerSet = { + player1, + player2: generatePlayerCell(i * 2 + 1), + winner: player1, + matchId: `A${i + 1}`, + } + round1.push(set); } - for (let i = 0; i < playerCells.length / 4; i++) { - round2Matches.push({ - player1: playerCells[i], - player2: playerCells[playerCells.length / 4 + i], - seed1: i + 1, - seed2: playerCells.length / 2 - i, - matchId: `A${i + 33}` - }); - } - for (let i = 0; i < playerCells.length / 8; i++) { - round3Matches.push({ - player1: playerCells[i], - player2: playerCells[playerCells.length / 8 + i], - seed1: i + 1, - seed2: playerCells.length / 4 - i, - matchId: `A${i + (round1Matches.length + round2Matches.length)}` - }); - } - for (let i = 0; i < playerCells.length / 16; i++) { - round4Matches.push({ - player1: playerCells[i], - player2: playerCells[playerCells.length / 16 + i], - seed1: i + 1, - seed2: playerCells.length / 8 - i, - matchId: `A${i + (round1Matches.length + round2Matches.length + round3Matches.length)}` - }); - } - return { rounds: [round1Matches, round2Matches, round3Matches, round4Matches] }; + + return { rounds: [round1,] }; }; diff --git a/src/routes/playground/cells/+page.svelte b/src/routes/playground/cells/+page.svelte index 9ee18c0..6d8ab3d 100644 --- a/src/routes/playground/cells/+page.svelte +++ b/src/routes/playground/cells/+page.svelte @@ -9,13 +9,7 @@ {#each data.rounds as round}
{#each round as match} - + {/each}
{/each}