more bugfixes and refactoring around repainting

This commit is contained in:
4am 2018-04-01 22:23:11 -04:00
parent 5abdd03c22
commit c7089393d5
4 changed files with 27 additions and 38 deletions

Binary file not shown.

View File

@ -73,8 +73,9 @@ WGSetContentWidth = 78
WGSetContentHeight = 80 WGSetContentHeight = 80
WGStrokeRoundRect = 82 WGStrokeRoundRect = 82
WGCreateRadio = 84 WGCreateRadio = 84
WGReset = 86 WGResetAll = 86
WGGetState = 88 WGGetState = 88
WGPendingClick = 90 WGPendingClick = 90
WGClearPendingClick = 92 WGClearPendingClick = 92
WGResetView = 94

View File

@ -40,7 +40,7 @@ gViewInUse
;------------------------------------------------------------------------------ ;------------------------------------------------------------------------------
!zone { !zone {
PaintMain PaintMain
ldx #WGReset ldx #WGResetAll
jsr WeeGUI jsr WeeGUI
stz gViewInUse+ID_BOXART stz gViewInUse+ID_BOXART
stz gViewInUse+ID_HINTS stz gViewInUse+ID_HINTS
@ -95,6 +95,7 @@ RepaintMainIfDirty
ldx #WGClearScreen ; clear screen ldx #WGClearScreen ; clear screen
jsr WeeGUI jsr WeeGUI
jsr PaintTitleBar ; paint top bar jsr PaintTitleBar ; paint top bar
lda #4 ; paint horizontal separator bar lda #4 ; paint horizontal separator bar
@ -110,25 +111,33 @@ RepaintMainIfDirty
bne - bne -
ldx #WGSyncGlobalCursor ldx #WGSyncGlobalCursor
jsr WeeGUI jsr WeeGUI
.nohome .nohome
lda #ID_INFO ldx #WGSelectView ; delete info box but leave its contents on screen
jsr WGResetView lda #ID_INFO ; (harmless if it doesn't exist yet)
jsr WeeGUI
ldx #WGResetView
jsr WeeGUI
lda #ID_DESCRIPTION ldx #WGSelectView ; delete description box but leave its contents on screen
jsr WGResetView 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 ldx #WGViewPaintAll ; repaint all WeeGUI-controlled UI elements
jsr WeeGUI jsr WeeGUI
ldx #WGCreateView ; create borderless frame for game title and info ldx #WGCreateView ; (re)create borderless frame for game title and info
+LDADDR kViewInfo +LDADDR kViewInfo ; (has the nice side effect of resetting the scroll)
+STAY PARAM0 +STAY PARAM0
jsr WeeGUI jsr WeeGUI
jsr PaintInfoView ; paint contents of info box
jsr PaintInfoView ; paint info box manually ldx #WGCreateView ; (re)create scrollable frame for game description text
ldx #WGCreateView ; create scrollable frame for game description text
+LDADDR kViewDescription +LDADDR kViewDescription
+STAY PARAM0 +STAY PARAM0
jsr WeeGUI jsr WeeGUI
@ -136,32 +145,11 @@ RepaintMainIfDirty
+LDADDR PaintDescriptionView +LDADDR PaintDescriptionView
+STAY PARAM0 +STAY PARAM0
jsr WeeGUI jsr WeeGUI
ldx #WGPaintView ; paint frame of description box
ldx #WGSelectView ; reset scrolling of description box
lda #ID_DESCRIPTION
jsr WeeGUI jsr WeeGUI
ldx #WGScrollX jmp PaintDescriptionView ; paint contents of description box
lda #0
jsr WeeGUI
ldx #WGScrollY
lda #0
jsr WeeGUI
ldx #WGPaintView
jsr WeeGUI
jmp PaintDescriptionView ; paint description box manually
} }
WGResetView
WG_VIEWRECORDS=$59B5
asl
asl
asl
asl
tay
lda #0
sta WG_VIEWRECORDS+2,y
rts
;------------------------------------------------------------------------------ ;------------------------------------------------------------------------------
; CreateOrDestroyButton ; CreateOrDestroyButton
; create or destroy a WeeGUI Button view, based on per-game options ; create or destroy a WeeGUI Button view, based on per-game options
@ -224,8 +212,8 @@ CreateOrDestroyButton
jsr WeeGUI jsr WeeGUI
ldx #WGEraseView ldx #WGEraseView
jsr WeeGUI jsr WeeGUI
lda .viewID ldx #WGResetView
jsr WGResetView jsr WeeGUI
.done rts .done rts
} }

View File

@ -46,7 +46,7 @@ ID_OPTIONS_CANCEL = 7
OptionsDialog OptionsDialog
ldx #$FF ldx #$FF
txs txs
ldx #WGReset ; reset WeeGUI ldx #WGResetAll ; reset WeeGUI, destroy all views
jsr WeeGUI jsr WeeGUI
ldx #WGCreateView ; create frame ldx #WGCreateView ; create frame