VERSION 1.0 CLASS
BEGIN
  MultiUse = -1  'True
  Persistable = 0  'NotPersistable
  DataBindingBehavior = 0  'vbNone
  DataSourceBehavior  = 0  'vbNone
  MTSTransactionMode  = 0  'NotAnMTSObject
END
Attribute VB_Name = "monstergraphicinfo"
Attribute VB_GlobalNameSpace = False
Attribute VB_Creatable = True
Attribute VB_PredeclaredId = False
Attribute VB_Exposed = False

'    Octet 01 : ? à 0 pour toutes les créatures...
'    Octet 02 : index de l'image de face de la créature (à partir du graph 0446).
'    Octet 03 : ? à 0 pour toutes les créatures...
'    Octet 04 : ? à 0 pour toutes les créatures...
'    Octet 05 : largeur de l'image de la créature vue de face divisée par 2 (NB : la largeur de toutes
'           les images des créatures est un multiple de 16). Si elle existe, l'image de la vue de
'           dos doit avoir exactement la même largeur que l'image de la vue de face, car c'est la
'           même valeur qui est utilisée.
'    Octet 06 : hauteur de l'image de la créature vue de face, en pixels. Si elle existe, l'image de
'           la vue de dos doit avoir exactement la même hauteur que l'image de la vue de face,
'           car c 'est la même valeur qui est utilisée.
'    Octet 07 : largeur de l'image de la créature vue de profil divisée par 2 (largeur=multiple de 16).
'    Octet 08 : hauteur de l'image de la créature vue de profil, en pixels.
'    Octet 09 : largeur de l'image de la créature en attaque divisée par 2 (largeur=multiple de 16).
'    Octet 10 : hauteur de l'image de la créature en attaque, en pixels.
'    Octet 11 : - Les 4 bits de gauche indiquent le groupe de coordonnées de référence qu'il faut
'             utiliser pour afficher la créature (voir octets 0265 à 0594) :
'            - groupe 0 => position moyenne (groupes de 1 à 4 créatures)
'            - groupe 1 => position basse (groupes de 1 ou 2 créatures seulement)
'            - groupe 2 => position haute (créatures volantes, groupes de 1 à 4 créatures)
'           - Les 4 bits de droite donnent l'index de la couleur de transparence de l'image de la
'             créature (valeur comprise entre 0 et 15). Cette couleur doit être la même pour
'             toutes les vues (face, profil, dos, attaque). Exemple : j'ouvre les images du
'             scorpion (graphs 0446 à 0449) et je vérifie l'index de la couleur grise utilisée
'             pour le fond : c'est la couleur 13, donc les 4 bits de droite de l'octet 0843 auront
'             pour valeur 1101.
'    Octet 12 : change les couleurs 09 (orange) et 10 (rose) dans la vue du donjon, en utilisant des
'           couleurs provenant d'une autre palette (on va l'appeler "palette N°2" pour plus de
'           clarté). Ceci permet de donner à certaines créatures des couleurs particulières
'           (exemple : couleur violette du ver géant, le bleu des trolls, le rouge du dragon...).
'           - les 4 bits de gauche donnent l'indice de la couleur, issue de la palette N°2, qui
'             remplacera la couleur 10 (rose) dans la vue du donjon.
'           - les 4 bits de droite donnent l'indice de la couleur, issue de la palette N°2, qui
'             remplacera la couleur 09 (orange) dans la vue du donjon.
'           Ces changements de couleur fonctionnent d'une façon assez particulière, expliquée en
'           détail dans le fichier "Couleurs des créatures.txt"


Public byte0 As Byte    ' ???
Public graphicnum As Byte    ' 446+byte1 = graphic of monster starting
Public byte2 As Byte    ' ???
Public byte3 As Byte    ' ???
Public widthfront As Byte    ' half the width of the picture of 446+byte1 (front/back)
Public heightfront As Byte    ' height of 446+byte1 picture (front/back)
Public widthside As Byte    ' half the width of the picture of 446+byte1+1? (side view)
Public heightside As Byte    ' height ""
Public widthattack As Byte    ' half width of attacking graphic
Public heightattack As Byte    ' height ""
Public byte10 As Byte   ' 0xF0: monster graphic group, 0x0F: transparent pixel number
Public byte11 As Byte   ' 0xF0: replace color 10 with this, 0x0F: color 9

Public Function graphicgroup() As Byte
    graphicgroup = (byte10 And &HF0) / &H10
End Function
Public Function transparentpixel() As Byte
    transparentpixel = (byte10 And &HF) / &H1
End Function
Public Function colora() As Byte
    colora = (byte11 And &HF0) / &H10
End Function
Public Function colorb() As Byte
    colorb = (byte11 And &HF) / &H1
End Function

Public Function setgraphicgroup(num As Byte)
    If num > 15 Then
        num = 15
    ElseIf num < 0 Then
        num = 0
    End If
    byte10 = (byte10 And &HF) + (num * &H10)
End Function
Public Function settransparentpixel(num As Byte)
    If num > 15 Then
        num = 15
    ElseIf num < 0 Then
        num = 0
    End If
    byte10 = (byte10 And &HF0) + (num * &H1)
End Function
Public Function setcolora(num As Byte)
    If num > 15 Then
        num = 15
    ElseIf num < 0 Then
        num = 0
    End If
    byte11 = (byte11 And &HF) + (num * &H10)
End Function
Public Function setcolorb(num As Byte)
    If num > 15 Then
        num = 15
    ElseIf num < 0 Then
        num = 0
    End If
    byte11 = (byte11 And &HF0) + (num * &H1)
End Function
