Partie 15: Choisissez vos champions
Téléchargements
Les portraits dans l'éditeur
<wall name="Portrait">
<image>Portrait.png</image>
<param type="int">Champion</param>
<param type="bool">estVide</param>
</wall>
Comme pour les décors, on utilise 2 modèles QML, "ParamTextField.qml" et "ParamCheckBox.qml" pour l'apparence des paramètres
enum EParamType
{
eParamOrnate = 0,
eParamInt,
eParamBool
};
[...]
class CParamInt : public CParam
{
public:
CParamInt();
int32_t mValue;
};
class CParamBool : public CParam
{
public:
CParamBool();
bool mValue;
};
Ensuite c'est plus ou moins un travail de copier/coller/modifier de toutes les fonctions où "eParamOrnate" ou "CParamOrnate"
Le décor dans le jeu
void CGame::drawWall(QImage* image, CVec2 mapPos, CVec2 tablePos, EWallSide side, bool flip)
{
[...]
// dessine les décors
CWall* wall = &tile->mWalls[playerSide];
if (wall->getType() == eWallSimple)
{
//------------------------------------------------------------------------------
// mur simple
int ornate = wall->getOrnateParam("Ornate");
walls.drawOrnate(image, tablePos, side, ornate);
}
else if (wall->getType() == eWallPortrait)
{
//------------------------------------------------------------------------------
// miroir de champion
walls.drawOrnate(image, tablePos, side, ORNATE_MIRROR);
if (tablePos == CVec2(2, 3) && side == eWallSideUp)
{
// si le miroir est just en facede nous, on dessine la tête du champion
int champion = wall->getIntParam("Champion");
bool isEmpty = wall->getBoolParam("estVide");
if (isEmpty == false)
{
CRect rect = interface.getChampionPortraitRect(champion);
QImage portraits = fileCache.getImage("gfx/interface/ChampPortraits.png");
CVec2 pos(96, 68);
graph2D.drawImageAtlas(image, pos, portraits, rect);
int lastChampChosed;
for (lastChampChosed = 0; lastChampChosed < 4; ++lastChampChosed)
if (characters[lastChampChosed].portrait == -1)
break;
if (lastChampChosed != 4)
{
CRect mouseRect(pos, CVec2(pos.x + CHAMP_PORTRAIT_WIDTH - 1, pos.y + CHAMP_PORTRAIT_HEIGHT - 1));
mouse.addArea(eMouseAreaG_Champion, mouseRect, (void*)wall);
}
}
}
}
[...]
}
Vous pouvez voir que j'ai ajouté des fonctions pour récupérer la valeur d'un paramètre à partir de son nom, comme on
Résurrection
La base de données des champions
<?xml version="1.0" encoding="ISO-8859-1"?>
<champions>
<champion firstName="CHAMP_FNAME00" lastName="CHAMP_LNAME00">
<portrait>0</portrait>
<health>60</health>
<stamina>58</stamina>
<mana>22</mana>
<strength>42</strength>
<dexterity>40</dexterity>
<wisdom>42</wisdom>
<vitality>36</vitality>
<anti_magic>53</anti_magic>
<anti_fire>40</anti_fire>
<load>44</load>
</champion>
[...]
</champions>
Comme avant, j'ai suivi l'ordre des portraits des champions tels qu'ils appparaissent dans la planche de sprites.
La base de données des textes
<?xml version="1.0" encoding="ISO-8859-1"?>
<texts>
<text id="CHAMP_FNAME00">ELIJA</text>
<text id="CHAMP_LNAME00">LE LION DE YAITOPYA</text>
<text id="CHAMP_FNAME01">HALK</text>
<text id="CHAMP_LNAME01">LE BARBARE</text>
[...]
<text id="STATS00">SANTE</text>
<text id="STATS01">VIGUEUR</text>
[...]
</texts>
De cette façon ça sera plus facile de traduire le jeu dans une autre langue.
Afficher les stats