;------------------------------------------------------------------------------------------
; gestion de la GUI
;------------------------------------------------------------------------------------------
GUIInitialisation ld ix,(GUIStructureCourante)
.chercheDepart ld a,(ix+s_gui.selectionne) : or a : jr nz,.trouve
ld de,(ix+s_gui.suivant) : ld ix,de : jr .chercheDepart
.trouve ; on est positionné sur le champ à sélectionner
ld (GUIStructureTemp),ix ; référence
.afficheTout
ld hl,.afficheSuivant : push hl
ld hl,(ix+s_gui.gestion) : ld a,CODE_INIT : jp (hl)
.afficheSuivant
ld de,(ix+s_gui.suivant) : ld hl,(GUIStructureTemp) : xor a : sbc hl,de : ld ix,de
jr nz,.afficheTout
ret

GUIObjetSuivant
ld hl,.nouvelObjet : push hl
ld (ix+s_gui.selectionne),0 : ld a,CODE_INIT : ld hl,(ix+s_gui.gestion) : jp (hl) ; déselectionne le courant
.nouvelObjet ld de,(ix+s_gui.suivant) : ld ix,de : ld (ix+s_gui.selectionne),1 : ld (GUIStructureCourante),ix
ld a,CODE_INIT : ld hl,(ix+s_gui.gestion) : jp (hl) ; active le suivant

GUIStructureCourante defw Check1
GUIStructureTemp defw #1234
GUICurseur defb 0 ; curseur visible (avec saturation)
GUICurseurDel defb 0 ; curseur réel
GUICheckTMP defb 0,0

;------------------------------------------------------------------------------------------
; affichage des chaines de caractères
;------------------------------------------------------------------------------------------

; HL' libelle
; DE destination écran sur une adresse paire!
GUIDisplayString
exx : ld a,(hl) : or a : ret z : inc hl : exx ; A=caractère pseudo-ASCII
sub 32 : add a : ld l,a : ld a,0 : adc a : ld h,a : add hl,hl : add hl,hl : add hl,hl ; x16
ld bc,fonte_data : add hl,bc ; données du caractère
push de
ld b,8
.spriteLine
push de : ld a,(hl) : ld (de),a : inc l : inc e : ld a,(hl) : inc l : ld (de),a : pop de : expandNextLineDE (void)
djnz .spriteLine
pop de : inc de : inc de
jp GUIDisplayString

align 16
fonte_data incbin 'guiFonte.bin'

caractere_etendu='}'+1 ; les caractères étendus commencent après le dernier caractère ASCII standard
utf8remap 'â',caractere_etendu : caractere_etendu+=1 ; et on incrémente pour le suivant
utf8remap 'à',caractere_etendu : caractere_etendu+=1 ; etc.
utf8remap 'é',caractere_etendu : caractere_etendu+=1
utf8remap 'è',caractere_etendu : caractere_etendu+=1
utf8remap 'ê',caractere_etendu : caractere_etendu+=1 
utf8remap 'ë',caractere_etendu : caractere_etendu+=1 
utf8remap 'ô',caractere_etendu : caractere_etendu+=1 
utf8remap 'ö',caractere_etendu : caractere_etendu+=1 
utf8remap 'œ',caractere_etendu : caractere_etendu+=1 
utf8remap 'æ',caractere_etendu : caractere_etendu+=1 
utf8remap 'î',caractere_etendu : caractere_etendu+=1 
utf8remap 'ï',caractere_etendu : caractere_etendu+=1 
utf8remap 'ü',caractere_etendu : caractere_etendu+=1 
utf8remap 'ù',caractere_etendu : caractere_etendu+=1 
utf8remap 'û',caractere_etendu : caractere_etendu+=1 
utf8remap 'Ç',caractere_etendu : caractere_etendu+=1 
utf8remap '«',caractere_etendu : caractere_etendu+=1 
utf8remap '»',caractere_etendu : caractere_etendu+=1 
utf8remap '£',caractere_etendu : caractere_etendu+=1 
utf8remap 'Æ',caractere_etendu : caractere_etendu+=1 
utf8remap 'Œ',caractere_etendu : caractere_etendu+=1 
checkBoxsprites=caractere_etendu : caractere_etendu+=4 ; 4 checkboxes


