feat: centralize all screen related callbacks in useScreen

This commit is contained in:
2025-12-29 21:01:19 +01:00
parent 4960bef2fc
commit d77d595370
42 changed files with 184 additions and 128 deletions

View File

@@ -1,7 +1,9 @@
<script setup lang="ts">
const { onRender } = useScreen();
const { assets } = useAssets();
useRender((ctx) => {
onRender((ctx) => {
ctx.drawImage(assets.home.bottomScreen.background, 0, 0);
});

View File

@@ -4,6 +4,8 @@ const props = defineProps<{
y: number;
}>();
const { onRender } = useScreen();
const settingsStore = useSettingsStore();
const menusContext = inject<{
isSubmenuSelected: ComputedRef<boolean>;
@@ -27,7 +29,7 @@ const isAnyOtherMenuOpen = computed(() => {
const animation = useMenuAnimation("clock", isOpen);
useRender((ctx) => {
onRender((ctx) => {
ctx.translate(props.x, props.y);
if (isOpen.value || animation.playing) {

View File

@@ -1,5 +1,7 @@
<script setup lang="ts">
useRender((ctx) => {
const { onRender } = useScreen();
onRender((ctx) => {
ctx.font = "10px NDS10";
ctx.fillStyle = "#000000";
ctx.fillText("GBA Mode", 10, 20);

View File

@@ -1,5 +1,7 @@
<script setup lang="ts">
useRender((ctx) => {
const { onRender } = useScreen();
onRender((ctx) => {
ctx.font = "10px NDS10";
ctx.fillStyle = "#000000";
ctx.fillText("Language", 10, 20);

View File

@@ -4,6 +4,8 @@ const props = defineProps<{
y: number;
}>();
const { onRender } = useScreen();
const settingsStore = useSettingsStore();
const menusContext = inject<{
isSubmenuSelected: ComputedRef<boolean>;
@@ -27,7 +29,7 @@ const isAnyOtherMenuOpen = computed(() => {
const animation = useMenuAnimation("options", isOpen);
useRender((ctx) => {
onRender((ctx) => {
ctx.translate(props.x, props.y);
if (isOpen.value || animation.playing) {

View File

@@ -1,5 +1,7 @@
<script setup lang="ts">
useRender((ctx) => {
const { onRender } = useScreen();
onRender((ctx) => {
ctx.font = "10px NDS10";
ctx.fillStyle = "#000000";
ctx.fillText("Startup", 10, 20);

View File

@@ -4,6 +4,8 @@ const props = defineProps<{
y: number;
}>();
const { onRender } = useScreen();
const settingsStore = useSettingsStore();
const menusContext = inject<{
isSubmenuSelected: ComputedRef<boolean>;
@@ -23,7 +25,7 @@ const isAnyOtherMenuOpen = computed(() => {
return false;
});
useRender((ctx) => {
onRender((ctx) => {
if (isAnyOtherMenuOpen.value) {
ctx.drawImage(
assets.settings.topScreen.touchScreen.touchScreenDisabled,

View File

@@ -1,4 +1,10 @@
<script setup lang="ts">
const { onRender, onClick } = useScreen();
const app = useAppStore();
const store = useSettingsStore();
const { assets } = useAssets();
const GRID_SIZE = 4;
const GRID_START_X = 32;
const GRID_START_Y = 40;
@@ -6,10 +12,6 @@ const CELL_SIZE = 16;
const SPACING = 16;
const ANIMATION_SPEED = 475;
const app = useAppStore();
const store = useSettingsStore();
const { assets } = useAssets();
const originalSelectedCol = app.color.col;
const originalSelectedRow = app.color.row;
@@ -41,7 +43,7 @@ useKeyDown((key) => {
}
});
useScreenClick((x, y) => {
onClick((x, y) => {
const relativeX = x - GRID_START_X;
const relativeY = y - GRID_START_Y;
@@ -59,7 +61,7 @@ useScreenClick((x, y) => {
}
});
useRender((ctx, deltaTime) => {
onRender((ctx, deltaTime) => {
ctx.drawImage(assets.settings.bottomScreen.user.colorPalette, 16, 32);
// animate
@@ -109,7 +111,6 @@ const handleConfirm = () => {
app.save();
openModal({
text: "hey",
showButtons: false,
});
setTimeout(() => {
closeModal();

View File

@@ -4,6 +4,8 @@ const props = defineProps<{
y: number;
}>();
const { onRender } = useScreen();
const settingsStore = useSettingsStore();
const menusContext = inject<{
isSubmenuSelected: ComputedRef<boolean>;
@@ -27,7 +29,7 @@ const isAnyOtherMenuOpen = computed(() => {
const animation = useMenuAnimation("user", isOpen);
useRender((ctx) => {
onRender((ctx) => {
ctx.translate(props.x, props.y);
if (isOpen.value || animation.playing) {

View File

@@ -1,7 +1,9 @@
<script setup lang="ts">
const { onRender } = useScreen();
const { assets } = useAssets();
useRender((ctx) => {
onRender((ctx) => {
ctx.drawImage(assets.home.topScreen.background, 0, 0);
});

View File

@@ -1,8 +1,10 @@
<script setup lang="ts">
const { onRender } = useScreen();
const app = useAppStore();
const { assets } = useAssets();
useRender((ctx) => {
onRender((ctx) => {
ctx.fillStyle = "black";
ctx.font = "7px NDS7";

View File

@@ -1,10 +1,12 @@
<script setup lang="ts">
const CENTER_X = 63;
const CENTER_Y = 95;
const { onRender } = useScreen();
const app = useAppStore();
const { assets } = useAssets();
const CENTER_X = 63;
const CENTER_Y = 95;
function drawLine(
ctx: CanvasRenderingContext2D,
x0: number,
@@ -50,7 +52,7 @@ function drawLine(
}
}
useRender((ctx) => {
onRender((ctx) => {
ctx.translate(0, -16);
ctx.drawImage(assets.home.topScreen.clock, 13, 45);

View File

@@ -1,6 +1,7 @@
<script setup lang="ts">
const store = useSettingsStore();
const { onRender } = useScreen();
const store = useSettingsStore();
const { assets } = useAssets();
const renderNotification = (
@@ -76,7 +77,7 @@ const submenuNotification = computed(() => {
};
});
useRender((ctx) => {
onRender((ctx) => {
let count = 1;
if (menuNotification.value) count++;
if (submenuNotification.value) count++;

View File

@@ -1,11 +1,13 @@
<script setup lang="ts">
const { onRender } = useScreen();
const app = useAppStore();
const { assets } = useAssets();
const BAR_WIDTH = 256;
const BAR_HEIGHT = 16;
useRender((ctx) => {
onRender((ctx) => {
const TEXT_Y = 11;
ctx.drawImage(