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



Public GraphicNum As Byte    '316+byte0 = graphic of object flying start
Public GraphicOffset As Byte
Public Width As Byte    'half the width of graphic (all same sizes...)
Public Height As Byte    'height of graphic
Public Spell As Byte    'if 1, its a spell graphic, else its a projectile item
Public Byte5 As Byte

'0x01 - animate it, somehow reversing the image a bit while its moving?
'0x02 - has no 'coming towards you' type graphic
'0x10 - has a side view

Public Function b4_spell() As Byte
    b4_spell = (Spell And &H1) / &H1
End Function
Public Function setb4_spell(num As Integer)
    Spell = (Spell And &HFE)
    If num = 1 Then
        Spell = Spell + &H1
    End If
End Function
Public Function b5_animate() As Byte
    b5_animate = (Byte5 And &H1) / &H1
End Function
Public Function setb5_animate(num As Integer)
    Byte5 = (Byte5 And &HFE)
    If num = 1 Then
        Byte5 = Byte5 + &H1
    End If
End Function
Public Function b5_frontview() As Byte
    b5_frontview = (Byte5 And &H2) / &H2
    If b5_frontview = 0 Then
        b5_frontview = 1
    Else
        b5_frontview = 0
    End If
End Function
Public Function setb5_frontview(num As Integer)
    Byte5 = (Byte5 And &HFD)
    If num = 0 Then
        Byte5 = Byte5 + &H2
    End If
End Function
Public Function b5_sideview() As Byte
    b5_sideview = (Byte5 And &H10) / &H10
End Function
Public Function setb5_sideview(num As Integer)
    Byte5 = (Byte5 And &HEF)
    If num = 1 Then
        Byte5 = Byte5 + &H10
    End If
End Function

'    Octet 1: donne l 'index de la première image du missile (à partir du graph 0316)
'
'    Octet 2 : cet octet semble servir pour un système d'indexation :
'          - Pour les missiles de type "arme" qui disposent d'une vue de face, de dos, et de
'            profil, la valeur de cet octet progresse de 18 en 18 (voir différence de valeur
'            entre les octets 1560, 1566, 1572, 1578). On peut donc supposer que le programme
'            stocke quelque part 6 images de différentes tailles pour la vue de face, 6 pour
'            la vue de dos et 6 pour la vue de profil... (cette hypothèse est renforcée par
'            le fait que dans le jeu, si on lance une flèche par exemple, elle passe par 6
'            tailles différentes. On peut également la voir de face ou de profil à 6 tailles
'            différentes!)
'          - Pour le shuriken, qui ne dispose que d'une vue de face et une de profil, la
'            différence entre les valeurs des octets 1614 et 1620 est de 12 => ça collerait,
'            6 images pour la vue de face + 6 pour la vue de profil...
'          - Pour les sortilèges par contre... les octets 1578 et 1584 ont la même valeur, de
'            même que les octets 1620, 1626, 1632, 1638 => cela laisserait donc supposer que
'            le programme ne stocke pas d'images de différentes tailles pour ces missiles...
'            mais ceci pourrait s'expliquer par le fait que la taille d'un missile de type
'            "magique" dépend aussi de la puissance du sort!
'
'    Octet 3 : largeur de l'image du missile divisée par 2 (toutes les images des missiles ont
'          une largeur égale à un multiple de 16).
'          Remarque : si le missile dispose de plusieurs images (face, dos, profil), elles
'          doivent toutes avoir les mêmes dimensions.
'
'    Octet 4 : hauteur de l'image du missile, en pixels.
'
'    Octet 5 : à 0 si c'est un missile de type "arme", et à "1" si c'est un missile "magique". Cet
'          octet indique en fait si la taille de l'image doit varier en fonction d'un "facteur de
'          puissance "! Exemple amusant : changer la valeur 00 de l'octet 1563 en 01. Créer un "
'          nouveau fichier Graphics.dat et l'utiliser avec CSBWin. Lancer une flèche à la main :
'          la flèche est minuscule :))). Lancer ensuite la flèche avec un arc, puis une arbalète,
'          puis avec l'arbalète "speedbow"...
'
'    Octet 6 : seuls 3 bits sont utilisés. En considérant que le bit le plus à gauche est le bit 1 :
'          - bit 1 : inutilisé
'          - bit 2 : inutilisé
'          - bit 3 : inutilisé
'          - bit 4 : s'il est à 1, cela indique qu'il existe un graph pour le profil du missile.
'                s 'il existe également une vue de dos (voir bit 7), alors on prend l'image
'                qui suit celle de la vue de dos pour la vue de profil, sinon, on prend
'                l 'image qui suit celle de la vue de face.
'          - bit 5 : inutilisé
'          - bit 6 : inutilisé
'          - bit 7 : s'il est à 0, cela indique qu'il existe un graph pour la vue de dos du
'                missile.l 'image qui suit l'image de la vue de face sera donc utilisée pour
'                cette vue de dos.
'          - bit 8 : s'il est à 0, cela indique que le missile est "animé". Ainsi, pour la hache
'                par exemple, on aura une alternance vue de face/vue de dos, avec un effet
'                de "miroir" qui alternera tête de la hache en haut/en bas, donnant
'                l 'impression qu'elle tourne sur elle même en vol (ou si on voit la hache de
'                profil alternance effet "miroir" horizontal/vertical sur la vue de profil).
                
                
