El game_text ara gasta PathSprites en lloc d'SmartSprites
fix: la paleta dels jugadors no s'iniciava correctament
This commit is contained in:
@@ -651,25 +651,29 @@ void Game::checkPlayerItemCollision(std::shared_ptr<Player> &player)
|
|||||||
case ItemType::DISK:
|
case ItemType::DISK:
|
||||||
{
|
{
|
||||||
player->addScore(1000);
|
player->addScore(1000);
|
||||||
createItemScoreSprite(item->getPosX() + (item->getWidth() / 2) - (game_text_textures_[0]->getWidth() / 2), player->getPosY(), game_text_textures_[0]);
|
const auto x = item->getPosX() + (item->getWidth() - game_text_textures_[0]->getWidth()) / 2;
|
||||||
|
createPathSprite(x, game_text_textures_[0]);
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
case ItemType::GAVINA:
|
case ItemType::GAVINA:
|
||||||
{
|
{
|
||||||
player->addScore(2500);
|
player->addScore(2500);
|
||||||
createItemScoreSprite(item->getPosX() + (item->getWidth() / 2) - (game_text_textures_[1]->getWidth() / 2), player->getPosY(), game_text_textures_[1]);
|
const auto x = item->getPosX() + (item->getWidth() - game_text_textures_[1]->getWidth()) / 2;
|
||||||
|
createPathSprite(x, game_text_textures_[1]);
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
case ItemType::PACMAR:
|
case ItemType::PACMAR:
|
||||||
{
|
{
|
||||||
player->addScore(5000);
|
player->addScore(5000);
|
||||||
createItemScoreSprite(item->getPosX() + (item->getWidth() / 2) - (game_text_textures_[2]->getWidth() / 2), player->getPosY(), game_text_textures_[2]);
|
const auto x = item->getPosX() + (item->getWidth() - game_text_textures_[2]->getWidth()) / 2;
|
||||||
|
createPathSprite(x, game_text_textures_[2]);
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
case ItemType::CLOCK:
|
case ItemType::CLOCK:
|
||||||
{
|
{
|
||||||
enableTimeStopItem();
|
enableTimeStopItem();
|
||||||
createItemScoreSprite(item->getPosX() + (item->getWidth() / 2) - (game_text_textures_[5]->getWidth() / 2), player->getPosY(), game_text_textures_[5]);
|
const auto x = item->getPosX() + (item->getWidth() - game_text_textures_[5]->getWidth()) / 2;
|
||||||
|
createPathSprite(x, game_text_textures_[5]);
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
case ItemType::COFFEE:
|
case ItemType::COFFEE:
|
||||||
@@ -677,12 +681,14 @@ void Game::checkPlayerItemCollision(std::shared_ptr<Player> &player)
|
|||||||
if (player->getCoffees() == 2)
|
if (player->getCoffees() == 2)
|
||||||
{
|
{
|
||||||
player->addScore(5000);
|
player->addScore(5000);
|
||||||
createItemScoreSprite(item->getPosX() + (item->getWidth() / 2) - (game_text_textures_[2]->getWidth() / 2), player->getPosY(), game_text_textures_[2]);
|
const auto x = item->getPosX() + (item->getWidth() - game_text_textures_[2]->getWidth()) / 2;
|
||||||
|
createPathSprite(x, game_text_textures_[2]);
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
player->giveExtraHit();
|
player->giveExtraHit();
|
||||||
createItemScoreSprite(item->getPosX() + (item->getWidth() / 2) - (game_text_textures_[4]->getWidth() / 2), player->getPosY(), game_text_textures_[4]);
|
const auto x = item->getPosX() + (item->getWidth() - game_text_textures_[4]->getWidth()) / 2;
|
||||||
|
createPathSprite(x, game_text_textures_[4]);
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
@@ -690,7 +696,8 @@ void Game::checkPlayerItemCollision(std::shared_ptr<Player> &player)
|
|||||||
{
|
{
|
||||||
player->setPowerUp();
|
player->setPowerUp();
|
||||||
coffee_machine_enabled_ = false;
|
coffee_machine_enabled_ = false;
|
||||||
createItemScoreSprite(item->getPosX() + (item->getWidth() / 2) - (game_text_textures_[3]->getWidth() / 2), player->getPosY(), game_text_textures_[3]);
|
const auto x = item->getPosX() + (item->getWidth() - game_text_textures_[3]->getWidth()) / 2;
|
||||||
|
createPathSprite(x, game_text_textures_[3]);
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
default:
|
default:
|
||||||
@@ -889,42 +896,27 @@ void Game::freeItems()
|
|||||||
items_.erase(items_.begin() + i);
|
items_.erase(items_.begin() + i);
|
||||||
}
|
}
|
||||||
|
|
||||||
// Crea un objeto SpriteSmart para mostrar la puntuación al coger un objeto
|
|
||||||
void Game::createItemScoreSprite(int x, int y, std::shared_ptr<Texture> texture)
|
|
||||||
{
|
|
||||||
smart_sprites_.emplace_back(std::make_unique<SmartSprite>(texture));
|
|
||||||
|
|
||||||
const auto w = texture->getWidth();
|
|
||||||
const auto h = texture->getHeight();
|
|
||||||
|
|
||||||
// Ajusta para que no se dibuje fuera de pantalla
|
|
||||||
x = std::clamp(x, 0, param.game.play_area.rect.w - w);
|
|
||||||
|
|
||||||
// Inicializa
|
|
||||||
smart_sprites_.back()->setPos({0, 0, w, h});
|
|
||||||
smart_sprites_.back()->setSpriteClip({0, 0, w, h});
|
|
||||||
smart_sprites_.back()->setPosX(x);
|
|
||||||
smart_sprites_.back()->setPosY(param.game.play_area.rect.h - h);
|
|
||||||
smart_sprites_.back()->setDestX(x);
|
|
||||||
smart_sprites_.back()->setDestY(y - 35);
|
|
||||||
smart_sprites_.back()->setVelY(-0.5f);
|
|
||||||
smart_sprites_.back()->setAccelY(-0.1f);
|
|
||||||
smart_sprites_.back()->setEnabled(true);
|
|
||||||
smart_sprites_.back()->setFinishedCounter(100);
|
|
||||||
}
|
|
||||||
|
|
||||||
// Crea un objeto PathSprite
|
// Crea un objeto PathSprite
|
||||||
void Game::createPathSprite(std::shared_ptr<Texture> texture)
|
void Game::createPathSprite(int x, std::shared_ptr<Texture> texture)
|
||||||
{
|
{
|
||||||
path_sprites_.emplace_back(std::make_unique<PathSprite>(texture));
|
path_sprites_.emplace_back(std::make_unique<PathSprite>(texture));
|
||||||
|
|
||||||
const auto w = texture->getWidth();
|
const auto w = texture->getWidth();
|
||||||
const auto h = texture->getHeight();
|
const auto h = texture->getHeight();
|
||||||
|
|
||||||
|
const int y0 = param.game.play_area.rect.h - h;
|
||||||
|
const int y1 = 160;
|
||||||
|
const int y2 = -h;
|
||||||
|
|
||||||
|
// Ajusta para que no se dibuje fuera de pantalla
|
||||||
|
x = std::clamp(x, 2, param.game.play_area.rect.w - w - 2);
|
||||||
|
|
||||||
// Inicializa
|
// Inicializa
|
||||||
path_sprites_.back()->setWidth(w);
|
path_sprites_.back()->setWidth(w);
|
||||||
path_sprites_.back()->setHeight(h);
|
path_sprites_.back()->setHeight(h);
|
||||||
path_sprites_.back()->setSpriteClip({0, 0, w, h});
|
path_sprites_.back()->setSpriteClip({0, 0, w, h});
|
||||||
|
path_sprites_.back()->addPath(y0, y1, PathType::VERTICAL, x, 100, easeOutQuint, 0);
|
||||||
|
path_sprites_.back()->addPath(y1, y2, PathType::VERTICAL, x, 80, easeInQuint, 0);
|
||||||
path_sprites_.back()->enable();
|
path_sprites_.back()->enable();
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -1572,10 +1564,8 @@ void Game::checkEvents()
|
|||||||
}
|
}
|
||||||
case SDLK_5: // Crea un PathSprite
|
case SDLK_5: // Crea un PathSprite
|
||||||
{
|
{
|
||||||
const auto x = players_.at(0)->getPosX();
|
const int x = players_.at(0)->getPosX() + (players_.at(0)->getWidth() - game_text_textures_[3]->getWidth()) / 2;
|
||||||
createPathSprite(game_text_textures_.at(3));
|
createPathSprite(x, game_text_textures_.at(3));
|
||||||
path_sprites_.back()->addPath(220, 160, PathType::VERTICAL, x, 100, easeOutQuint, 0);
|
|
||||||
path_sprites_.back()->addPath(160, -21, PathType::VERTICAL, x, 80, easeInQuint, 0);
|
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
default:
|
default:
|
||||||
|
|||||||
@@ -303,11 +303,8 @@ private:
|
|||||||
// Vacia el vector de items
|
// Vacia el vector de items
|
||||||
void freeItems();
|
void freeItems();
|
||||||
|
|
||||||
// Crea un objeto SpriteSmart
|
|
||||||
void createItemScoreSprite(int x, int y, std::shared_ptr<Texture> texture);
|
|
||||||
|
|
||||||
// Crea un objeto PathSprite
|
// Crea un objeto PathSprite
|
||||||
void createPathSprite(std::shared_ptr<Texture> texture);
|
void createPathSprite(int x, std::shared_ptr<Texture> texture);
|
||||||
|
|
||||||
// Vacia el vector de smartsprites
|
// Vacia el vector de smartsprites
|
||||||
void freeSmartSprites();
|
void freeSmartSprites();
|
||||||
|
|||||||
@@ -23,6 +23,7 @@ Player::Player(int id, float x, int y, bool demo, SDL_Rect &play_area, std::vect
|
|||||||
demo_(demo)
|
demo_(demo)
|
||||||
{
|
{
|
||||||
// Configura objetos
|
// Configura objetos
|
||||||
|
player_sprite_->getTexture()->setPalette(coffees_);
|
||||||
power_sprite_->getTexture()->setAlpha(224);
|
power_sprite_->getTexture()->setAlpha(224);
|
||||||
power_up_desp_x_ = (power_sprite_->getWidth() - player_sprite_->getWidth()) / 2;
|
power_up_desp_x_ = (power_sprite_->getWidth() - player_sprite_->getWidth()) / 2;
|
||||||
power_sprite_->setPosY(y - (power_sprite_->getHeight() - player_sprite_->getHeight()));
|
power_sprite_->setPosY(y - (power_sprite_->getHeight() - player_sprite_->getHeight()));
|
||||||
|
|||||||
Reference in New Issue
Block a user