Reduida la dependencia de PathSprite a Sprite
Treballant en els missatges de text que ixen durant la partida
This commit is contained in:
@@ -201,14 +201,6 @@ void Game::setResources()
|
||||
item_animations_.emplace_back(Resource::get()->getAnimation("item_coffee.ani"));
|
||||
item_animations_.emplace_back(Resource::get()->getAnimation("item_coffee_machine.ani"));
|
||||
}
|
||||
|
||||
// Texto
|
||||
{
|
||||
text_ = std::make_unique<Text>(Resource::get()->getTexture("smb2.gif"), Resource::get()->getTextFile("smb2.txt"));
|
||||
text_nokia2_ = std::make_unique<Text>(Resource::get()->getTexture("nokia.png"), Resource::get()->getTextFile("nokia.txt"));
|
||||
text_nokia2_big_ = std::make_unique<Text>(Resource::get()->getTexture("nokia.png"), Resource::get()->getTextFile("nokia.txt"));
|
||||
text_04b_25_ = std::make_unique<Text>(Resource::get()->getTexture("04b_25.png"), Resource::get()->getTextFile("04b_25.txt"));
|
||||
}
|
||||
}
|
||||
|
||||
// Crea una formación de enemigos
|
||||
@@ -652,28 +644,28 @@ void Game::checkPlayerItemCollision(std::shared_ptr<Player> &player)
|
||||
{
|
||||
player->addScore(1000);
|
||||
const auto x = item->getPosX() + (item->getWidth() - game_text_textures_[0]->getWidth()) / 2;
|
||||
createPathSprite(x, game_text_textures_[0]);
|
||||
createItemText(x, game_text_textures_[0]);
|
||||
break;
|
||||
}
|
||||
case ItemType::GAVINA:
|
||||
{
|
||||
player->addScore(2500);
|
||||
const auto x = item->getPosX() + (item->getWidth() - game_text_textures_[1]->getWidth()) / 2;
|
||||
createPathSprite(x, game_text_textures_[1]);
|
||||
createItemText(x, game_text_textures_[1]);
|
||||
break;
|
||||
}
|
||||
case ItemType::PACMAR:
|
||||
{
|
||||
player->addScore(5000);
|
||||
const auto x = item->getPosX() + (item->getWidth() - game_text_textures_[2]->getWidth()) / 2;
|
||||
createPathSprite(x, game_text_textures_[2]);
|
||||
createItemText(x, game_text_textures_[2]);
|
||||
break;
|
||||
}
|
||||
case ItemType::CLOCK:
|
||||
{
|
||||
enableTimeStopItem();
|
||||
const auto x = item->getPosX() + (item->getWidth() - game_text_textures_[5]->getWidth()) / 2;
|
||||
createPathSprite(x, game_text_textures_[5]);
|
||||
createItemText(x, game_text_textures_[5]);
|
||||
break;
|
||||
}
|
||||
case ItemType::COFFEE:
|
||||
@@ -682,13 +674,13 @@ void Game::checkPlayerItemCollision(std::shared_ptr<Player> &player)
|
||||
{
|
||||
player->addScore(5000);
|
||||
const auto x = item->getPosX() + (item->getWidth() - game_text_textures_[2]->getWidth()) / 2;
|
||||
createPathSprite(x, game_text_textures_[2]);
|
||||
createItemText(x, game_text_textures_[2]);
|
||||
}
|
||||
else
|
||||
{
|
||||
player->giveExtraHit();
|
||||
const auto x = item->getPosX() + (item->getWidth() - game_text_textures_[4]->getWidth()) / 2;
|
||||
createPathSprite(x, game_text_textures_[4]);
|
||||
createItemText(x, game_text_textures_[4]);
|
||||
}
|
||||
break;
|
||||
}
|
||||
@@ -697,7 +689,7 @@ void Game::checkPlayerItemCollision(std::shared_ptr<Player> &player)
|
||||
player->setPowerUp();
|
||||
coffee_machine_enabled_ = false;
|
||||
const auto x = item->getPosX() + (item->getWidth() - game_text_textures_[3]->getWidth()) / 2;
|
||||
createPathSprite(x, game_text_textures_[3]);
|
||||
createItemText(x, game_text_textures_[3]);
|
||||
break;
|
||||
}
|
||||
default:
|
||||
@@ -897,7 +889,7 @@ void Game::freeItems()
|
||||
}
|
||||
|
||||
// Crea un objeto PathSprite
|
||||
void Game::createPathSprite(int x, std::shared_ptr<Texture> texture)
|
||||
void Game::createItemText(int x, std::shared_ptr<Texture> texture)
|
||||
{
|
||||
path_sprites_.emplace_back(std::make_unique<PathSprite>(texture));
|
||||
|
||||
@@ -905,7 +897,7 @@ void Game::createPathSprite(int x, std::shared_ptr<Texture> texture)
|
||||
const auto h = texture->getHeight();
|
||||
|
||||
const int y0 = param.game.play_area.rect.h - h;
|
||||
const int y1 = 160;
|
||||
const int y1 = 155;
|
||||
const int y2 = -h;
|
||||
|
||||
// Ajusta para que no se dibuje fuera de pantalla
|
||||
@@ -920,6 +912,17 @@ void Game::createPathSprite(int x, std::shared_ptr<Texture> texture)
|
||||
path_sprites_.back()->enable();
|
||||
}
|
||||
|
||||
// Crea un objeto PathSprite
|
||||
void Game::createMessage(std::vector<Path> paths, std::shared_ptr<Texture> texture)
|
||||
{
|
||||
path_sprites_.emplace_back(std::make_unique<PathSprite>(texture));
|
||||
|
||||
// Inicializa
|
||||
for (const auto &path : paths)
|
||||
path_sprites_.back()->addPath(path);
|
||||
path_sprites_.back()->enable();
|
||||
}
|
||||
|
||||
// Vacia el vector de smartsprites
|
||||
void Game::freeSmartSprites()
|
||||
{
|
||||
@@ -1286,8 +1289,11 @@ void Game::updateMenace()
|
||||
void Game::renderMessages()
|
||||
{
|
||||
// GetReady
|
||||
if (counter_ < STAGE_COUNTER_ && !demo_.enabled)
|
||||
text_nokia2_big_->write((int)get_ready_bitmap_path_[counter_], param.game.play_area.center_y - 8, lang::getText(75), -2);
|
||||
if (counter_ == 10 && !demo_.enabled)
|
||||
{ // text_04b_25_->write2X((int)get_ready_bitmap_path_[counter_], param.game.play_area.center_y - 8, lang::getText(75), -2);
|
||||
std::vector<Path> paths = {paths_.at(0), paths_.at(1)};
|
||||
createMessage(paths, Resource::get()->getTexture("get_ready"));
|
||||
}
|
||||
|
||||
// STAGE NUMBER
|
||||
if (stage_bitmap_counter_ < STAGE_COUNTER_)
|
||||
@@ -1309,14 +1315,14 @@ void Game::renderMessages()
|
||||
if (!game_completed_)
|
||||
{
|
||||
// Escribe el número de fases restantes
|
||||
text_nokia2_big_->writeDX(TEXT_CENTER, param.game.play_area.center_x, stage_bitmap_path_[stage_bitmap_counter_], text, -2, no_color, 2, shdw_txt_color);
|
||||
//text_04b_25_->write2X(param.game.play_area.center_x, stage_bitmap_path_[stage_bitmap_counter_], text, -2);
|
||||
}
|
||||
else
|
||||
{
|
||||
// Escribe el texto de juego completado
|
||||
text = lang::getText(50);
|
||||
text_nokia2_big_->writeDX(TEXT_CENTER, param.game.play_area.center_x, stage_bitmap_path_[stage_bitmap_counter_], text, -2, no_color, 1, shdw_txt_color);
|
||||
text_nokia2_->writeDX(TEXT_CENTER, param.game.play_area.center_x, stage_bitmap_path_[stage_bitmap_counter_] + text_nokia2_big_->getCharacterSize() + 2, lang::getText(76), -1, no_color, 1, shdw_txt_color);
|
||||
//text_nokia2_big_->writeDX(TEXT_CENTER, param.game.play_area.center_x, stage_bitmap_path_[stage_bitmap_counter_], text, -2, no_color, 1, shdw_txt_color);
|
||||
//text_nokia2_->writeDX(TEXT_CENTER, param.game.play_area.center_x, stage_bitmap_path_[stage_bitmap_counter_] + text_nokia2_big_->getCharacterSize() + 2, lang::getText(76), -1, no_color, 1, shdw_txt_color);
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -1379,6 +1385,18 @@ int Game::calculateScreenPower()
|
||||
// Inicializa las variables que contienen puntos de ruta para mover objetos
|
||||
void Game::initPaths()
|
||||
{
|
||||
// Recorrido para el texto de "Get Ready!"
|
||||
const auto &texture = Resource::get()->getTexture("get_ready");
|
||||
const auto w = texture->getWidth();
|
||||
const auto h = texture->getHeight();
|
||||
|
||||
const int x0 = -w;
|
||||
const int x1 = param.game.play_area.center_x - w / 2;
|
||||
const int x2 = param.game.play_area.rect.w;
|
||||
const int y = param.game.play_area.center_y - h / 2;
|
||||
paths_.emplace_back(Path(createPath(x0, x1, PathType::HORIZONTAL, y, 80, easeOutQuint), 10));
|
||||
paths_.emplace_back(Path(createPath(x1, x2, PathType::HORIZONTAL, y, 80, easeInQuint), 0));
|
||||
|
||||
// Vector con los valores del seno para 360 grados
|
||||
float sin[360];
|
||||
for (int i = 0; i < 360; ++i)
|
||||
@@ -1404,33 +1422,6 @@ void Game::initPaths()
|
||||
int index = static_cast<int>(((i - 149) * 1.8f) + 90) % 360;
|
||||
stage_bitmap_path_[i] = sin[index] * (center_point + 17) - 17;
|
||||
}
|
||||
|
||||
// Letrero de GetReady
|
||||
const auto size = text_nokia2_big_->lenght(lang::getText(75), -2);
|
||||
|
||||
const float start1 = param.game.play_area.rect.x - size;
|
||||
const float finish1 = param.game.play_area.center_x - (size / 2);
|
||||
const float finish2 = param.game.play_area.rect.w;
|
||||
|
||||
const float distance1 = finish1 - start1;
|
||||
const float distance2 = finish2 - finish1;
|
||||
|
||||
for (int i = 0; i < first_part; ++i)
|
||||
{
|
||||
get_ready_bitmap_path_[i] = sin[(int)(i * 1.8f)];
|
||||
get_ready_bitmap_path_[i] *= distance1;
|
||||
get_ready_bitmap_path_[i] -= size;
|
||||
}
|
||||
|
||||
for (int i = first_part; i < second_part; ++i)
|
||||
get_ready_bitmap_path_[i] = (int)finish1;
|
||||
|
||||
for (int i = second_part; i < STAGE_COUNTER_; ++i)
|
||||
{
|
||||
get_ready_bitmap_path_[i] = sin[(int)((i - second_part) * 1.8f)];
|
||||
get_ready_bitmap_path_[i] *= distance2;
|
||||
get_ready_bitmap_path_[i] += finish1;
|
||||
}
|
||||
}
|
||||
|
||||
// Actualiza el tramo final de juego, una vez completado
|
||||
@@ -1565,7 +1556,7 @@ void Game::checkEvents()
|
||||
case SDLK_5: // Crea un PathSprite
|
||||
{
|
||||
const int x = players_.at(0)->getPosX() + (players_.at(0)->getWidth() - game_text_textures_[3]->getWidth()) / 2;
|
||||
createPathSprite(x, game_text_textures_.at(3));
|
||||
createItemText(x, game_text_textures_.at(3));
|
||||
break;
|
||||
}
|
||||
default:
|
||||
|
||||
Reference in New Issue
Block a user