45 lines
1.3 KiB
Plaintext
45 lines
1.3 KiB
Plaintext
import { TileData, MemoryTile } from "./memory_tile.slint";
|
|
|
|
export component MainWindow inherits Window {
|
|
width: 326px;
|
|
height: 326px;
|
|
|
|
callback check_if_pair_solved();
|
|
in property <bool> disable_tiles;
|
|
|
|
in-out property <[TileData]> memory_tiles: [{
|
|
image: @image-url("../../icons/at.png")
|
|
}, {
|
|
image: @image-url("../../icons/balance-scale.png")
|
|
}, {
|
|
image: @image-url("../../icons/bicycle.png")
|
|
}, {
|
|
image: @image-url("../../icons/bus.png")
|
|
}, {
|
|
image: @image-url("../../icons/cloud.png")
|
|
}, {
|
|
image: @image-url("../../icons/cogs.png")
|
|
}, {
|
|
image: @image-url("../../icons/motorcycle.png")
|
|
}, {
|
|
image: @image-url("../../icons/video.png")
|
|
}];
|
|
|
|
for tile[i] in memory_tiles : MemoryTile {
|
|
x: mod(i, 4) * 74px;
|
|
y: floor(i / 4) * 74px;
|
|
width: 64px;
|
|
height: 64px;
|
|
icon: tile.image;
|
|
open_curtain: tile.image_visible || tile.solved;
|
|
// propagate the solved status from the model to the tile
|
|
solved: tile.solved;
|
|
clicked => {
|
|
if (!root.disable_tiles) {
|
|
tile.image_visible = !tile.image_visible;
|
|
root.check_if_pair_solved();
|
|
}
|
|
}
|
|
}
|
|
}
|