Partie 11: Interface du jeu - Partie 1
Téléchargements
Ajouter du mouvement
L'interface
#ifndef INTERFACE_H
#define INTERFACE_H
#include <QTimer>
#include <QImage>
#include "../common/sources/system/cmaths.h"
#include "character.h"
#define MAIN_INTERFACE_COLOR QColor(0, 204, 204)
class CInterface
{
public:
// Etat principal de l'interface
enum EMainState
{
eMainGame = 0, // fenêtre standard avec la vue 3D
eMainInventory // écran d'inventaire
};
// Etats de la zone des armes
enum EWeaponsAreaState
{
eWeaponsAreaWeapons = 0, // Les 4 zones d'armes
eWeaponsAreaAttacks, // Les attaques d'une arme
eWeaponsAreaDamage // Les dommages quend on frappe un monstre
};
CInterface();
~CInterface();
void display(QImage* image);
bool isInInventory();
private:
bool isChampionEmpty(int num);
bool isChampionDead(int num);
bool isWeaponEmpty(int num);
bool isWeaponGreyed(int num);
bool isArrowsGreyed();
void drawBar(QImage* image, int num, CVec2 pos, CCharacter::EStatsNames statName);
void drawChampion(QImage* image, int num);
void drawSpells(QImage* image);
void drawWeaponsArea(QImage* image);
void drawWeapon(QImage* image, int num);
void drawArrows(QImage* image);
void drawInventory(QImage* image);
void greyRectangle(QImage* image, CRect rect);
int getWeapon(int num);
CCharacter::SStat getStat(int num, CCharacter::EStatsNames statName);
EMainState mainState;
EWeaponsAreaState weaponsAreaState;
int currentChampion;
int currentWeapon;
QTimer* weaponCoolDown[4];
};
extern CInterface interface;
#endif // INTERFACE_H
J'ai aussi du mettre en place quelques fonctions pour les statistiques des personnages. Voici "character.h":
#ifndef CHARACTER_H
#define CHARACTER_H
#include <string>
class CCharacter
{
public:
enum EBodyParts
{
eBodyPartHead = 0,
eBodyPartNeck,
eBodyPartTorso,
eBodyPartLeftHand,
eBodyPartRightHand,
eBodyPartLegs,
eBodyPartFeets,
eBodyPartCount
};
enum EStatsNames
{
eStatHealth = 0,
eStatStamina,
eStatMana,
eStatStrength,
eStatDexterity,
eStatWisdom,
eStatAntiFire,
eStatAntiMagic,
eStatLoad,
eStatCount
};
struct SStat
{
int value;
int maxValue;
int startValue;
};
CCharacter();
bool isDead();
int picture;
std::string name;
SStat stats[eStatCount];
int bodyObjects[eBodyPartCount];
};
#endif // CHARACTER_H
Enfin j'ai mis quelques valeurs par défaut pour les stats des personnages dans "game.cpp" pour tester les différents états.
Le niveau 1