Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Binary file modified .yarn/install-state.gz
Binary file not shown.
4 changes: 2 additions & 2 deletions apps/pac-shield-e2e/src/map-load-test.spec.ts
Original file line number Diff line number Diff line change
Expand Up @@ -21,12 +21,12 @@ test('map should load successfully', async ({ page }) => {
// Verify no error messages
await expect(page.locator('text=Error loading game')).toBeHidden();

await page.getByRole('button', { name: 'Collapse' }).click();
// await page.getByRole('button', { name: 'Collapse' }).click();


await page.locator('div').filter({ hasText: /^homeKadena$/ }).locator('span').click();
// await page.locator('app-location-panel').getByRole('button').click();
await page.getByRole('tab', { name: 'FOS' }).click();
await page.getByRole('tab', { name: 'FOS' }).last().click();
await page.getByRole('button', { name: 'Activate' }).click();
await page.getByRole('combobox', { name: 'Assign to Team' }).locator('span').click();
await page.getByRole('option', { name: 'MOB Yokota, Japan (MOB_YOKOTA)' }).click();
Expand Down
34 changes: 17 additions & 17 deletions apps/pac-shield/src/app/features/game/game-board.component.html
Original file line number Diff line number Diff line change
Expand Up @@ -38,24 +38,23 @@
<!-- Game info overlay (Civ-style HUD) -->
@if (game$ | async; as game) {

<!-- Right side panel with stubbed dashboards -->
<div class="absolute top-2 right-2 z-[90] pointer-events-none">
<div class="pointer-events-auto">
<app-game-stats
[currentGameId]="gameId$ | async"
[currentUserTeam]="currentUserTeam$ | async"
[currentUserRole]="currentUserRole$ | async"
[loadDemoData]="true"
>
</app-game-stats>
</div>
<!-- Right side panel - Game Stats -->
<div class="absolute top-2 right-2 bottom-2 z-[90] pointer-events-none flex items-start justify-end">
<app-game-stats
class="pointer-events-auto"
[panelState]="gameStatsPanelState"
(panelStateChange)="onGameStatsPanelStateChange($event)"
[currentGameId]="gameId$ | async"
[currentUserTeam]="currentUserTeam$ | async"
[currentUserRole]="currentUserRole$ | async"
[loadDemoData]="true"
>
</app-game-stats>
</div>
}


<!-- Bottom left control panel - flex row layout -->
<div class="absolute left-0 sm:left-2 bottom-2 z-[95] pointer-events-auto w-full sm:w-auto right-0 sm:right-auto">
<div class="flex flex-col items-start sm:items-start gap-2 w-full">
<!-- Left side panel - Location Controls -->
<div class="absolute left-0 sm:left-2 bottom-2 z-[95] pointer-events-auto w-full sm:w-auto">
<div class="flex flex-col items-start gap-2 w-full">
<!-- Country Access Toggle -->
<app-country-access-toggle
(toggleVisibility)="onCountryAccessToggle($event)"
Expand All @@ -75,12 +74,13 @@
[panelState]="locationPanelState"
[initialSubview]="initialSubview"
(actionClicked)="onLocationAction($event)"
(panelStateChange)="locationPanelState = $event"
(panelStateChange)="onLocationPanelStateChange($event)"
(fosStatusChanged)="onFosStatusChanged($event)"
>
</app-location-panel>
</div>
</div>
}

<!-- Jamming Debug Panel (top right corner) - DISABLED -->
<!-- <div class="absolute right-2 top-2 z-[95] pointer-events-auto">
Expand Down
28 changes: 26 additions & 2 deletions apps/pac-shield/src/app/features/game/game-board.component.ts
Original file line number Diff line number Diff line change
Expand Up @@ -265,11 +265,19 @@ export class GameBoardComponent implements OnInit, AfterViewInit, OnDestroy {
*/
isGameMaster = false;

// Location panel deep-link control
// Panel state management
/**
* Controls whether the location panel starts collapsed.
* Controls whether the location panel is minimized, narrow, or full.
* Auto-minimizes when game stats panel goes full to prevent overlap.
*/
locationPanelState: 'minimized' | 'narrow' | 'full' = 'minimized';

/**
* Controls whether the game stats panel is minimized, narrow, or full.
* Auto-minimizes when location panel goes full to prevent overlap.
*/
gameStatsPanelState: 'minimized' | 'narrow' | 'full' = 'narrow';

/**
* Which subview of the location panel should be opened initially (when deep-linked).
* - 'none' leaves the default view
Expand Down Expand Up @@ -568,6 +576,22 @@ export class GameBoardComponent implements OnInit, AfterViewInit, OnDestroy {
}
}

/**
* Handle location panel state changes
* Panels on opposite sides, no auto-minimize needed
*/
onLocationPanelStateChange(newState: 'minimized' | 'narrow' | 'full'): void {
this.locationPanelState = newState;
}

/**
* Handle game stats panel state changes
* Panels on opposite sides, no auto-minimize needed
*/
onGameStatsPanelStateChange(newState: 'minimized' | 'narrow' | 'full'): void {
this.gameStatsPanelState = newState;
}

/**
* Setup event handlers for style loading completion
*
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,7 @@
[ngClass]="{
'w-auto': panelState === 'minimized',
'w-[calc(100vw-16px)] md:w-[clamp(400px,25vw,600px)]': panelState === 'narrow',
'w-[calc(100vw-16px)] h-[calc(100vh-16px-60px)]': panelState === 'full'
'w-[calc(100vw-16px)] h-full': panelState === 'full'
}">
<!-- Header -->
<div class="panel-header flex items-center justify-between p-3 pb-2 shrink-0">
Expand Down
30 changes: 15 additions & 15 deletions package.json
Original file line number Diff line number Diff line change
Expand Up @@ -36,7 +36,7 @@
"@ngrx/effects": "^20.0.1",
"@ngrx/store": "^20.0.1",
"@ngrx/store-devtools": "^20.0.1",
"@prisma/client": "^6.17.0",
"@prisma/client": "^6.17.1",
"@vercel/analytics": "^1.5.0",
"axios": "^1.6.0",
"class-transformer": "^0.5.1",
Expand All @@ -60,18 +60,18 @@
"@eslint/js": "^9.8.0",
"@nestjs/schematics": "^11.0.0",
"@nestjs/testing": "^11.0.0",
"@nx/angular": "21.6.4",
"@nx/devkit": "21.6.4",
"@nx/eslint": "21.6.4",
"@nx/eslint-plugin": "21.6.4",
"@nx/jest": "21.6.4",
"@nx/js": "21.6.4",
"@nx/nest": "21.6.4",
"@nx/node": "21.6.4",
"@nx/playwright": "21.6.4",
"@nx/web": "21.6.4",
"@nx/webpack": "21.6.4",
"@nx/workspace": "21.6.4",
"@nx/angular": "21.6.5",
"@nx/devkit": "21.6.5",
"@nx/eslint": "21.6.5",
"@nx/eslint-plugin": "21.6.5",
"@nx/jest": "21.6.5",
"@nx/js": "21.6.5",
"@nx/nest": "21.6.5",
"@nx/node": "21.6.5",
"@nx/playwright": "21.6.5",
"@nx/web": "21.6.5",
"@nx/webpack": "21.6.5",
"@nx/workspace": "21.6.5",
"@playwright/test": "^1.36.0",
"@schematics/angular": "20.3.4",
"@swc-node/register": "~1.9.1",
Expand All @@ -92,10 +92,10 @@
"jest-environment-node": "^30.0.2",
"jest-preset-angular": "~15.0.0",
"jest-util": "^30.0.2",
"nx": "21.6.4",
"nx": "21.6.5",
"postcss": "^8.4.5",
"prettier": "^2.6.2",
"prisma": "^6.17.0",
"prisma": "^6.17.1",
"tailwindcss": "^3.0.2",
"ts-jest": "^29.4.0",
"ts-node": "10.9.2",
Expand Down
Loading