From c7089393d585a66fe6e7ec233872cb31f7a62707 Mon Sep 17 00:00:00 2001 From: 4am Date: Sun, 1 Apr 2018 22:23:11 -0400 Subject: [PATCH] more bugfixes and refactoring around repainting --- res/WEEGUI | Bin 7142 -> 7160 bytes src/WeeGUI_MLI.s | 3 ++- src/ui.main.a | 60 +++++++++++++++++++---------------------------- src/ui.options.a | 2 +- 4 files changed, 27 insertions(+), 38 deletions(-) diff --git a/res/WEEGUI b/res/WEEGUI index cc8d5c6f9ca12263f7b07e966b3b39cac30f4966..599094f752eb7ba0bed6a4394de22ac87ed86de6 100644 GIT binary patch literal 7160 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 O>;KNU{_j`x|NjSY{{ue& diff --git a/src/WeeGUI_MLI.s b/src/WeeGUI_MLI.s index 60b95e7..86ce176 100644 --- a/src/WeeGUI_MLI.s +++ b/src/WeeGUI_MLI.s @@ -73,8 +73,9 @@ WGSetContentWidth = 78 WGSetContentHeight = 80 WGStrokeRoundRect = 82 WGCreateRadio = 84 -WGReset = 86 +WGResetAll = 86 WGGetState = 88 WGPendingClick = 90 WGClearPendingClick = 92 +WGResetView = 94 diff --git a/src/ui.main.a b/src/ui.main.a index 11fca24..1a4b89e 100644 --- a/src/ui.main.a +++ b/src/ui.main.a @@ -40,7 +40,7 @@ gViewInUse ;------------------------------------------------------------------------------ !zone { PaintMain - ldx #WGReset + ldx #WGResetAll jsr WeeGUI stz gViewInUse+ID_BOXART stz gViewInUse+ID_HINTS @@ -95,6 +95,7 @@ RepaintMainIfDirty ldx #WGClearScreen ; clear screen jsr WeeGUI + jsr PaintTitleBar ; paint top bar lda #4 ; paint horizontal separator bar @@ -110,25 +111,33 @@ RepaintMainIfDirty bne - ldx #WGSyncGlobalCursor jsr WeeGUI - .nohome - lda #ID_INFO - jsr WGResetView + ldx #WGSelectView ; delete info box but leave its contents on screen + lda #ID_INFO ; (harmless if it doesn't exist yet) + jsr WeeGUI + ldx #WGResetView + jsr WeeGUI - lda #ID_DESCRIPTION - jsr WGResetView + ldx #WGSelectView ; delete description box but leave its contents on screen + lda #ID_DESCRIPTION ; (harmless if it doesn't exist yet) + jsr WeeGUI + ldx #WGResetView + jsr WeeGUI + + ldx #WGSelectView ; WeeGUI does NOT like repainting if the selected view does not exist + lda #ID_PREVIOUS + jsr WeeGUI ldx #WGViewPaintAll ; repaint all WeeGUI-controlled UI elements jsr WeeGUI - ldx #WGCreateView ; create borderless frame for game title and info - +LDADDR kViewInfo + ldx #WGCreateView ; (re)create borderless frame for game title and info + +LDADDR kViewInfo ; (has the nice side effect of resetting the scroll) +STAY PARAM0 jsr WeeGUI + jsr PaintInfoView ; paint contents of info box - jsr PaintInfoView ; paint info box manually - - ldx #WGCreateView ; create scrollable frame for game description text + ldx #WGCreateView ; (re)create scrollable frame for game description text +LDADDR kViewDescription +STAY PARAM0 jsr WeeGUI @@ -136,32 +145,11 @@ RepaintMainIfDirty +LDADDR PaintDescriptionView +STAY PARAM0 jsr WeeGUI - - ldx #WGSelectView ; reset scrolling of description box - lda #ID_DESCRIPTION + ldx #WGPaintView ; paint frame of description box jsr WeeGUI - ldx #WGScrollX - lda #0 - jsr WeeGUI - ldx #WGScrollY - lda #0 - jsr WeeGUI - ldx #WGPaintView - jsr WeeGUI - jmp PaintDescriptionView ; paint description box manually + jmp PaintDescriptionView ; paint contents of description box } -WGResetView -WG_VIEWRECORDS=$59B5 - asl - asl - asl - asl - tay - lda #0 - sta WG_VIEWRECORDS+2,y - rts - ;------------------------------------------------------------------------------ ; CreateOrDestroyButton ; create or destroy a WeeGUI Button view, based on per-game options @@ -224,8 +212,8 @@ CreateOrDestroyButton jsr WeeGUI ldx #WGEraseView jsr WeeGUI - lda .viewID - jsr WGResetView + ldx #WGResetView + jsr WeeGUI .done rts } diff --git a/src/ui.options.a b/src/ui.options.a index 84a7faa..7ac5cce 100644 --- a/src/ui.options.a +++ b/src/ui.options.a @@ -46,7 +46,7 @@ ID_OPTIONS_CANCEL = 7 OptionsDialog ldx #$FF txs - ldx #WGReset ; reset WeeGUI + ldx #WGResetAll ; reset WeeGUI, destroy all views jsr WeeGUI ldx #WGCreateView ; create frame