GamepadManager::swapPlayers() ja notifica als jugadors
This commit is contained in:
@@ -156,6 +156,21 @@ class GamepadManager {
|
||||
std::swap(gamepads_[0].instance, gamepads_[1].instance);
|
||||
std::swap(gamepads_[0].name, gamepads_[1].name);
|
||||
std::swap(gamepads_[0].path, gamepads_[1].path);
|
||||
|
||||
for (auto player: players)
|
||||
{
|
||||
switch (player->getId())
|
||||
{
|
||||
case Player::Id::PLAYER1:
|
||||
player->setGamepad(gamepads_[0].instance);
|
||||
break;
|
||||
case Player::Id::PLAYER2:
|
||||
player->setGamepad(gamepads_[1].instance);
|
||||
break;
|
||||
default:
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
void saveToFile(std::ofstream& file) const {
|
||||
@@ -209,6 +224,14 @@ class GamepadManager {
|
||||
return false;
|
||||
}
|
||||
|
||||
void addPlayer(std::shared_ptr<Player> player) { players.push_back(player); } // Añade un jugador a la lista
|
||||
void clearPlayers() { players.clear(); } // Limpia la lista de jugadores
|
||||
|
||||
// Asigna el mando a un jugador
|
||||
void assignTo(Input::Gamepad gamepad, Player::Id player_id) {
|
||||
|
||||
}
|
||||
|
||||
// Asigna los mandos físicos basándose en la configuración actual de nombres.
|
||||
void assignAndLinkGamepads();
|
||||
|
||||
@@ -223,7 +246,8 @@ class GamepadManager {
|
||||
private:
|
||||
static constexpr std::string_view UNASSIGNED_TEXT = "---";
|
||||
static constexpr size_t MAX_PLAYERS = 2;
|
||||
std::array<Gamepad, MAX_PLAYERS> gamepads_;
|
||||
std::array<Gamepad, MAX_PLAYERS> gamepads_; // Punteros a las estructuras de mandos de Options
|
||||
std::vector<std::shared_ptr<Player>> players; // Punteros a los jugadores
|
||||
|
||||
// Convierte Player::Id a índice del array
|
||||
[[nodiscard]] static auto playerIdToIndex(Player::Id player_id) -> size_t {
|
||||
|
||||
@@ -75,6 +75,7 @@ Credits::~Credits() {
|
||||
|
||||
// Desregistra los jugadores de Options
|
||||
Options::keyboard.clearPlayers();
|
||||
Options::gamepad_manager.clearPlayers();
|
||||
}
|
||||
|
||||
// Bucle principal
|
||||
@@ -378,8 +379,10 @@ void Credits::initPlayers() {
|
||||
players_.back()->setPlayingState(Player::State::CREDITS);
|
||||
|
||||
// Registra los jugadores en Options
|
||||
Options::keyboard.addPlayer(players_.at(0));
|
||||
Options::keyboard.addPlayer(players_.at(1));
|
||||
for (auto player : players_) {
|
||||
Options::keyboard.addPlayer(player);
|
||||
Options::gamepad_manager.addPlayer(player);
|
||||
}
|
||||
}
|
||||
|
||||
// Actualiza los rectangulos negros
|
||||
|
||||
@@ -122,71 +122,60 @@ Game::~Game() {
|
||||
Scoreboard::destroy();
|
||||
SDL_DestroyTexture(canvas_);
|
||||
|
||||
// Desregistra los jugadores de Options
|
||||
// Desregistra los jugadores de Options
|
||||
Options::keyboard.clearPlayers();
|
||||
Options::gamepad_manager.clearPlayers();
|
||||
}
|
||||
|
||||
// Asigna texturas y animaciones
|
||||
void Game::setResources() {
|
||||
// Texturas - Game_text
|
||||
{
|
||||
game_text_textures_.clear();
|
||||
game_text_textures_.emplace_back(Resource::get()->getTexture("game_text_1000_points"));
|
||||
game_text_textures_.emplace_back(Resource::get()->getTexture("game_text_2500_points"));
|
||||
game_text_textures_.emplace_back(Resource::get()->getTexture("game_text_5000_points"));
|
||||
game_text_textures_.emplace_back(Resource::get()->getTexture("game_text_powerup"));
|
||||
game_text_textures_.emplace_back(Resource::get()->getTexture("game_text_one_hit"));
|
||||
game_text_textures_.emplace_back(Resource::get()->getTexture("game_text_stop"));
|
||||
game_text_textures_.emplace_back(Resource::get()->getTexture("game_text_100000_points"));
|
||||
}
|
||||
game_text_textures_.clear();
|
||||
game_text_textures_.emplace_back(Resource::get()->getTexture("game_text_1000_points"));
|
||||
game_text_textures_.emplace_back(Resource::get()->getTexture("game_text_2500_points"));
|
||||
game_text_textures_.emplace_back(Resource::get()->getTexture("game_text_5000_points"));
|
||||
game_text_textures_.emplace_back(Resource::get()->getTexture("game_text_powerup"));
|
||||
game_text_textures_.emplace_back(Resource::get()->getTexture("game_text_one_hit"));
|
||||
game_text_textures_.emplace_back(Resource::get()->getTexture("game_text_stop"));
|
||||
game_text_textures_.emplace_back(Resource::get()->getTexture("game_text_100000_points"));
|
||||
|
||||
// Texturas - Items
|
||||
{
|
||||
item_textures_.clear();
|
||||
item_textures_.emplace_back(Resource::get()->getTexture("item_points1_disk.png"));
|
||||
item_textures_.emplace_back(Resource::get()->getTexture("item_points2_gavina.png"));
|
||||
item_textures_.emplace_back(Resource::get()->getTexture("item_points3_pacmar.png"));
|
||||
item_textures_.emplace_back(Resource::get()->getTexture("item_clock.png"));
|
||||
item_textures_.emplace_back(Resource::get()->getTexture("item_coffee.png"));
|
||||
item_textures_.emplace_back(Resource::get()->getTexture("item_debian.png"));
|
||||
item_textures_.emplace_back(Resource::get()->getTexture("item_coffee_machine.png"));
|
||||
}
|
||||
item_textures_.clear();
|
||||
item_textures_.emplace_back(Resource::get()->getTexture("item_points1_disk.png"));
|
||||
item_textures_.emplace_back(Resource::get()->getTexture("item_points2_gavina.png"));
|
||||
item_textures_.emplace_back(Resource::get()->getTexture("item_points3_pacmar.png"));
|
||||
item_textures_.emplace_back(Resource::get()->getTexture("item_clock.png"));
|
||||
item_textures_.emplace_back(Resource::get()->getTexture("item_coffee.png"));
|
||||
item_textures_.emplace_back(Resource::get()->getTexture("item_debian.png"));
|
||||
item_textures_.emplace_back(Resource::get()->getTexture("item_coffee_machine.png"));
|
||||
|
||||
player_textures_.clear();
|
||||
// Texturas - Player1
|
||||
{
|
||||
std::vector<std::shared_ptr<Texture>> player_texture;
|
||||
player_texture.emplace_back(Resource::get()->getTexture("player1.gif"));
|
||||
player_texture.emplace_back(Resource::get()->getTexture("player1_power.png"));
|
||||
player_textures_.push_back(player_texture);
|
||||
}
|
||||
std::vector<std::shared_ptr<Texture>> player1_textures;
|
||||
player1_textures.emplace_back(Resource::get()->getTexture("player1.gif"));
|
||||
player1_textures.emplace_back(Resource::get()->getTexture("player1_power.png"));
|
||||
player_textures_.push_back(player1_textures);
|
||||
|
||||
// Texturas - Player2
|
||||
{
|
||||
std::vector<std::shared_ptr<Texture>> player_texture;
|
||||
player_texture.emplace_back(Resource::get()->getTexture("player2.gif"));
|
||||
player_texture.emplace_back(Resource::get()->getTexture("player2_power.png"));
|
||||
player_textures_.push_back(player_texture);
|
||||
}
|
||||
std::vector<std::shared_ptr<Texture>> player2_textures;
|
||||
player2_textures.emplace_back(Resource::get()->getTexture("player2.gif"));
|
||||
player2_textures.emplace_back(Resource::get()->getTexture("player2_power.png"));
|
||||
player_textures_.push_back(player2_textures);
|
||||
|
||||
// Animaciones -- Jugador
|
||||
{
|
||||
player_animations_.clear();
|
||||
player_animations_.emplace_back(Resource::get()->getAnimation("player.ani"));
|
||||
player_animations_.emplace_back(Resource::get()->getAnimation("player_power.ani"));
|
||||
}
|
||||
player_animations_.clear();
|
||||
player_animations_.emplace_back(Resource::get()->getAnimation("player.ani"));
|
||||
player_animations_.emplace_back(Resource::get()->getAnimation("player_power.ani"));
|
||||
|
||||
// Animaciones -- Items
|
||||
{
|
||||
item_animations_.clear();
|
||||
item_animations_.emplace_back(Resource::get()->getAnimation("item_points1_disk.ani"));
|
||||
item_animations_.emplace_back(Resource::get()->getAnimation("item_points2_gavina.ani"));
|
||||
item_animations_.emplace_back(Resource::get()->getAnimation("item_points3_pacmar.ani"));
|
||||
item_animations_.emplace_back(Resource::get()->getAnimation("item_clock.ani"));
|
||||
item_animations_.emplace_back(Resource::get()->getAnimation("item_coffee.ani"));
|
||||
item_animations_.emplace_back(Resource::get()->getAnimation("item_debian.ani"));
|
||||
item_animations_.emplace_back(Resource::get()->getAnimation("item_coffee_machine.ani"));
|
||||
}
|
||||
item_animations_.clear();
|
||||
item_animations_.emplace_back(Resource::get()->getAnimation("item_points1_disk.ani"));
|
||||
item_animations_.emplace_back(Resource::get()->getAnimation("item_points2_gavina.ani"));
|
||||
item_animations_.emplace_back(Resource::get()->getAnimation("item_points3_pacmar.ani"));
|
||||
item_animations_.emplace_back(Resource::get()->getAnimation("item_clock.ani"));
|
||||
item_animations_.emplace_back(Resource::get()->getAnimation("item_coffee.ani"));
|
||||
item_animations_.emplace_back(Resource::get()->getAnimation("item_debian.ani"));
|
||||
item_animations_.emplace_back(Resource::get()->getAnimation("item_coffee_machine.ani"));
|
||||
}
|
||||
|
||||
// Actualiza el valor de hiScore en caso necesario
|
||||
@@ -1642,8 +1631,10 @@ void Game::initPlayers(Player::Id player_id) {
|
||||
}
|
||||
|
||||
// Registra los jugadores en Options
|
||||
Options::keyboard.addPlayer(players_.at(0));
|
||||
Options::keyboard.addPlayer(players_.at(1));
|
||||
for (auto player : players_) {
|
||||
Options::keyboard.addPlayer(player);
|
||||
Options::gamepad_manager.addPlayer(player);
|
||||
}
|
||||
}
|
||||
|
||||
// Hace sonar la música
|
||||
|
||||
@@ -75,6 +75,7 @@ Title::~Title() {
|
||||
|
||||
// Desregistra los jugadores de Options
|
||||
Options::keyboard.clearPlayers();
|
||||
Options::gamepad_manager.clearPlayers();
|
||||
}
|
||||
|
||||
// Actualiza las variables del objeto
|
||||
@@ -532,8 +533,10 @@ void Title::initPlayers() {
|
||||
players_.back()->setPlayingState(Player::State::TITLE_HIDDEN);
|
||||
|
||||
// Registra los jugadores en Options
|
||||
Options::keyboard.addPlayer(players_.at(0));
|
||||
Options::keyboard.addPlayer(players_.at(1));
|
||||
for (auto player : players_) {
|
||||
Options::keyboard.addPlayer(player);
|
||||
Options::gamepad_manager.addPlayer(player);
|
||||
}
|
||||
}
|
||||
|
||||
// Actualza los jugadores
|
||||
|
||||
Reference in New Issue
Block a user