Tutorial Beat them all aka The King Of Dragons
Day 8 WIP
Le bouclier, un élément à la fois décoratif et vital. Sur un principe similaire à l'arme, le boulier pourra évoluer au cours du jeu, c'est pourquoi nous le rajoutons dans la structure player, accompagné du numéro de sprite et de defines pour les différends modèles, et la création somme toute trés classique :
(c):
// SHIELDS
#define SHIELD1 50
#define SHIELD2 51
....
// *************************************************************************************************
// Création du sprite du Héro :
// PlayerType * player : Pointeur sur notre Héro
void createPlayerSprite(PlayerType * player)
// *************************************************************************************************
{
..................
// Création du bouclier
switch (player->shield)
{
case SHIELD1:
PA_CreateSprite(player->screen, player->shield_sprite,(void*)Cleric_Shield1_Sprite, OBJ_SIZE_32X32, 1, CHARACTER_PAL, fix_norm(player->x)+32, fix_norm(player->y));
break;
}
..................
On flippe le bouclier en fonction de la direction du joueur :
(c):
// *************************************************************************************************
// Flip d'un gros sprite :
// PlayerType * player : Pointeur sur notre Héro
void SetPlayerHflip(PlayerType * player)
// *************************************************************************************************
{
// Héro
SetBigSpriteHflip(player->screen, player->sprite, player->flip);
// Bouclier
PA_SetSpriteHflip(player->screen, player->shield_sprite, player->flip);
}
Et on le positionne également en fonction de la direction du joueur (ma formule doit être améliorable, mais les maths et moi vous savez...) :
(c):
// *************************************************************************************************
// Affichage du Héro à l'écran :
// PlayerType * player : Pointeur sur notre Héro
void SetPlayerXY(PlayerType * player)
// *************************************************************************************************
{
// Héro
SetBigSpriteXY(player->screen, player->sprite, fix_norm(player->x), fix_norm(player->y), fix_norm(player->x), fix_norm(player->y)-CLERIC_SPRITE_OFFSET);
// Ombre
PA_SetSpriteXY(player->screen, player->shadow_sprite, fix_norm(player->x), fix_norm(player->z)+32);
// Bouclier
PA_SetSpriteXY(player->screen, player->shield_sprite, fix_norm(player->x)-5+(42*(!player->flip)), fix_norm(player->y)+10);
}
Maintenant gérons notre bouclier lors des attaques, des parades, et de la marche :