mirror of
https://github.com/kierankihn/uno-game.git
synced 2025-12-27 02:13:18 +08:00
- Introduced `scale` property across components for responsive design. - Adjusted dimensions and positions dynamically based on scale. - Enhanced flexibility for varying display resolutions.
89 lines
2.7 KiB
Plaintext
89 lines
2.7 KiB
Plaintext
import { ConnectPage } from "ConnectPage.slint";
|
|
import { StartPage } from "StartPage.slint";
|
|
import {
|
|
GamePage,
|
|
OtherPlayer,
|
|
HandCard,
|
|
CardColor,
|
|
GameDirection,
|
|
} from "GamePage.slint";
|
|
|
|
enum PageType {
|
|
ConnectPage,
|
|
StartPage,
|
|
GamePage
|
|
}
|
|
|
|
export component MainWindow inherits Window {
|
|
in property <PageType> active-page: PageType.ConnectPage;
|
|
|
|
// ConnectPage
|
|
in property <bool> is-connecting;
|
|
|
|
// StartPage
|
|
in property <bool> is-ready;
|
|
in property <bool> is-restart;
|
|
|
|
// GamePage
|
|
in property <[OtherPlayer]> other-players;
|
|
in property <string> current-player-name;
|
|
in property <int> current-player-card-count;
|
|
in property <bool> current-player-has-uno;
|
|
in property <bool> is-current-player-turn;
|
|
in property <[HandCard]> hand-cards;
|
|
in property <image> discard-top-card;
|
|
in property <GameDirection> game-direction;
|
|
in property <CardColor> current-color;
|
|
|
|
callback request-connect(string, string, string);
|
|
callback request-start;
|
|
callback request-play-card(int, CardColor);
|
|
callback request-draw-card;
|
|
callback request-uno;
|
|
|
|
preferred-width: 1920px;
|
|
preferred-height: 1080px;
|
|
min-width: 960px;
|
|
min-height: 600px;
|
|
title: "UNO!";
|
|
|
|
property <float> scale: min(self.width / 1920px, self.height / 1080px);
|
|
|
|
if root.active-page == PageType.ConnectPage: connect-page := ConnectPage {
|
|
scale: root.scale;
|
|
is-connecting: root.is-connecting;
|
|
request-connect(server-address, server-port, player-name) => {
|
|
root.request-connect(server-address, server-port, player-name);
|
|
}
|
|
}
|
|
if root.active-page == PageType.StartPage: start-page := StartPage {
|
|
scale: root.scale;
|
|
is-ready: root.is-ready;
|
|
is-restart: root.is-restart;
|
|
request-start => {
|
|
root.request-start();
|
|
}
|
|
}
|
|
if root.active-page == PageType.GamePage: game-page := GamePage {
|
|
scale: root.scale;
|
|
other-players: root.other-players;
|
|
current-player-name: root.current-player-name;
|
|
current-player-card-count: root.current-player-card-count;
|
|
current-player-has-uno: root.current-player-has-uno;
|
|
is-current-player-turn: root.is-current-player-turn;
|
|
hand-cards: root.hand-cards;
|
|
discard-top-card: root.discard-top-card;
|
|
game-direction: root.game-direction;
|
|
current-color: root.current-color;
|
|
request-play-card(index, card-color) => {
|
|
root.request-play-card(index, card-color);
|
|
}
|
|
request-draw-card => {
|
|
root.request-draw-card();
|
|
}
|
|
request-uno => {
|
|
root.request-uno();
|
|
}
|
|
}
|
|
}
|