Animaciones precacheadas

This commit is contained in:
2022-10-27 18:42:07 +02:00
parent 35b4d19188
commit 1934f790f7
9 changed files with 20 additions and 15 deletions

View File

@@ -12,7 +12,6 @@ Resource::Resource(SDL_Renderer *renderer, Asset *asset, options_t *options)
// Carga las texturas de una lista
void Resource::loadTextures(std::vector<std::string> list)
{
std::cout << "** LOAD TEXTURES" << std::endl;
for (auto l : list)
{
texture_t t;
@@ -20,13 +19,11 @@ void Resource::loadTextures(std::vector<std::string> list)
t.texture = new Texture(renderer, asset->get(t.name));
textures.push_back(t);
}
std::cout << "** TEXTURES LOADED" << std::endl;
}
// Carga las animaciones desde una lista
void Resource::loadAnimations(std::vector<std::string> list)
{
std::cout << "** LOAD ANIMATIONS" << std::endl;
for (auto l : list)
{
animation_t as;
@@ -34,7 +31,6 @@ void Resource::loadAnimations(std::vector<std::string> list)
as.animation = new animatedSprite_t(loadAnimationFromFile(getTexture(l+".png"), asset->get(l+".ani")));
animations.push_back(as);
}
std::cout << "** ANIMATIONS LOADED" << std::endl;
}
// Recarga las texturas

View File

@@ -181,6 +181,8 @@ bool Director::saveConfig()
// Carga los recursos
void Director::loadResources(section_t section)
{
std::cout << "** LOAD RESOURCES" << std::endl;
if (section.name == SECTION_PROG_LOGO)
{
std::vector<std::string> textureList;
@@ -339,6 +341,8 @@ void Director::loadResources(section_t section)
resource->loadAnimations(animationList);
}
std::cout << "** RESOURCES LOADED" << std::endl;
}
// Asigna variables a partir de dos cadenas

View File

@@ -12,7 +12,8 @@ Enemy::Enemy(enemy_t enemy)
// Crea objetos
texture = resource->getTexture(enemy.tileset);
sprite = new AnimatedSprite(texture, renderer, asset->get(enemy.animation));
//sprite = new AnimatedSprite(texture, renderer, asset->get(enemy.animation));
sprite = new AnimatedSprite(renderer, resource->getAnimation(enemy.animation));
// Obten el resto de valores
x1 = enemy.x1;

View File

@@ -1,4 +1,5 @@
#include "game.h"
#include <iostream>
// Constructor
Game::Game(SDL_Renderer *renderer, Screen *screen, Resource *resource, Asset *asset, options_t *options, Input *input, Debug *debug)
@@ -30,7 +31,7 @@ Game::Game(SDL_Renderer *renderer, Screen *screen, Resource *resource, Asset *as
itemTracker = new ItemTracker();
roomTracker = new RoomTracker();
room = new Room(asset->get(currentRoom), renderer, screen, resource, asset, options, itemTracker, &board.items, debug);
player = new Player(spawnPoint, "player.png", asset->get("player.ani"), renderer, resource, asset, options, input, room, debug);
player = new Player(spawnPoint, "player.png", "player.ani", renderer, resource, asset, options, input, room, debug);
eventHandler = new SDL_Event();
text = new Text("smb2.png", asset->get("smb2.txt"), resource, renderer);
music = JA_LoadMusic(asset->get("game.ogg").c_str());
@@ -391,7 +392,7 @@ void Game::killPlayer()
// Crea la nueva habitación y el nuevo jugador
room = new Room(asset->get(currentRoom), renderer, screen, resource, asset, options, itemTracker, &board.items, debug);
player = new Player(spawnPoint, "player.png", asset->get("player.ani"), renderer, resource, asset, options, input, room, debug);
player = new Player(spawnPoint, "player.png", "player.ani", renderer, resource, asset, options, input, room, debug);
room->pause();
player->pause();

View File

@@ -15,8 +15,8 @@ Player::Player(player_t ini, std::string png, std::string animation, SDL_Rendere
this->options = options;
// Crea objetos
texture = resource->getTexture(png);
sprite = new AnimatedSprite(texture, renderer, animation);
//texture = resource->getTexture(png);
sprite = new AnimatedSprite(renderer, resource->getAnimation(animation));
// Inicializa variables
color = stringToColor(options->palette, "white");
@@ -688,7 +688,8 @@ player_t Player::getSpawnParams()
// Recarga la textura
void Player::reLoadTexture()
{
texture->reLoad();
sprite->getTexture()->reLoad();
//texture->reLoad();
}
// Recarga la paleta

View File

@@ -42,7 +42,7 @@ public:
Resource *resource; // Objeto con los recursos
Asset *asset; // Objeto con la ruta a todos los ficheros de recursos
Room *room; // Objeto encargado de gestionar cada habitación del juego
Texture *texture; // Textura con los graficos del enemigo
//Texture *texture; // Textura con los graficos del enemigo
AnimatedSprite *sprite; // Sprite del enemigo
Debug *debug; // Objeto para gestionar la información de debug
options_t *options; // Puntero a las opciones del juego

View File

@@ -116,6 +116,7 @@ bool Room::loadMapFile(std::string file_path)
// Encuentra la posición del caracter '='
int pos = line.find("=");
// Procesa las dos subcadenas
if (!setEnemy(&enemy, line.substr(0, pos), line.substr(pos + 1, line.length())))
{

View File

@@ -13,9 +13,9 @@ ScoreBoard::ScoreBoard(SDL_Renderer *renderer, Resource *resource, Asset *asset,
this->options = options;
// Reserva memoria para los objetos
playerTexture = resource->getTexture("player.png");
//playerTexture = resource->getTexture("player.png");
itemTexture = resource->getTexture("items.png");
sprite = new AnimatedSprite(playerTexture, renderer, asset->get("player.ani"));
sprite = new AnimatedSprite(renderer, resource->getAnimation("player.ani"));
sprite->setCurrentAnimation("walk_menu");
text = new Text("smb2.png", asset->get("smb2.txt"), resource, renderer);
@@ -117,7 +117,8 @@ ScoreBoard::clock_t ScoreBoard::getTime()
// Recarga la textura
void ScoreBoard::reLoadTexture()
{
playerTexture->reLoad();
sprite->getTexture()->reLoad();
//playerTexture->reLoad();
itemTexture->reLoad();
text->reLoadTexture();
}

View File

@@ -34,7 +34,7 @@ private:
};
// Objetos y punteros
Texture *playerTexture; // Textura con los graficos para las vidas
//Texture *playerTexture; // Textura con los graficos para las vidas
AnimatedSprite *sprite; // Sprite para mostrar las vidas en el marcador
SDL_Renderer *renderer; // El renderizador de la ventana
Resource *resource; // Objeto con los recursos