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].instance, gamepads_[1].instance);
|
||||||
std::swap(gamepads_[0].name, gamepads_[1].name);
|
std::swap(gamepads_[0].name, gamepads_[1].name);
|
||||||
std::swap(gamepads_[0].path, gamepads_[1].path);
|
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 {
|
void saveToFile(std::ofstream& file) const {
|
||||||
@@ -209,6 +224,14 @@ class GamepadManager {
|
|||||||
return false;
|
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.
|
// Asigna los mandos físicos basándose en la configuración actual de nombres.
|
||||||
void assignAndLinkGamepads();
|
void assignAndLinkGamepads();
|
||||||
|
|
||||||
@@ -223,7 +246,8 @@ class GamepadManager {
|
|||||||
private:
|
private:
|
||||||
static constexpr std::string_view UNASSIGNED_TEXT = "---";
|
static constexpr std::string_view UNASSIGNED_TEXT = "---";
|
||||||
static constexpr size_t MAX_PLAYERS = 2;
|
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
|
// Convierte Player::Id a índice del array
|
||||||
[[nodiscard]] static auto playerIdToIndex(Player::Id player_id) -> size_t {
|
[[nodiscard]] static auto playerIdToIndex(Player::Id player_id) -> size_t {
|
||||||
|
|||||||
@@ -75,6 +75,7 @@ Credits::~Credits() {
|
|||||||
|
|
||||||
// Desregistra los jugadores de Options
|
// Desregistra los jugadores de Options
|
||||||
Options::keyboard.clearPlayers();
|
Options::keyboard.clearPlayers();
|
||||||
|
Options::gamepad_manager.clearPlayers();
|
||||||
}
|
}
|
||||||
|
|
||||||
// Bucle principal
|
// Bucle principal
|
||||||
@@ -378,8 +379,10 @@ void Credits::initPlayers() {
|
|||||||
players_.back()->setPlayingState(Player::State::CREDITS);
|
players_.back()->setPlayingState(Player::State::CREDITS);
|
||||||
|
|
||||||
// Registra los jugadores en Options
|
// Registra los jugadores en Options
|
||||||
Options::keyboard.addPlayer(players_.at(0));
|
for (auto player : players_) {
|
||||||
Options::keyboard.addPlayer(players_.at(1));
|
Options::keyboard.addPlayer(player);
|
||||||
|
Options::gamepad_manager.addPlayer(player);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
// Actualiza los rectangulos negros
|
// Actualiza los rectangulos negros
|
||||||
|
|||||||
@@ -124,12 +124,12 @@ Game::~Game() {
|
|||||||
|
|
||||||
// Desregistra los jugadores de Options
|
// Desregistra los jugadores de Options
|
||||||
Options::keyboard.clearPlayers();
|
Options::keyboard.clearPlayers();
|
||||||
|
Options::gamepad_manager.clearPlayers();
|
||||||
}
|
}
|
||||||
|
|
||||||
// Asigna texturas y animaciones
|
// Asigna texturas y animaciones
|
||||||
void Game::setResources() {
|
void Game::setResources() {
|
||||||
// Texturas - Game_text
|
// Texturas - Game_text
|
||||||
{
|
|
||||||
game_text_textures_.clear();
|
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_1000_points"));
|
||||||
game_text_textures_.emplace_back(Resource::get()->getTexture("game_text_2500_points"));
|
game_text_textures_.emplace_back(Resource::get()->getTexture("game_text_2500_points"));
|
||||||
@@ -138,10 +138,8 @@ void Game::setResources() {
|
|||||||
game_text_textures_.emplace_back(Resource::get()->getTexture("game_text_one_hit"));
|
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_stop"));
|
||||||
game_text_textures_.emplace_back(Resource::get()->getTexture("game_text_100000_points"));
|
game_text_textures_.emplace_back(Resource::get()->getTexture("game_text_100000_points"));
|
||||||
}
|
|
||||||
|
|
||||||
// Texturas - Items
|
// Texturas - Items
|
||||||
{
|
|
||||||
item_textures_.clear();
|
item_textures_.clear();
|
||||||
item_textures_.emplace_back(Resource::get()->getTexture("item_points1_disk.png"));
|
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_points2_gavina.png"));
|
||||||
@@ -150,34 +148,26 @@ void Game::setResources() {
|
|||||||
item_textures_.emplace_back(Resource::get()->getTexture("item_coffee.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_debian.png"));
|
||||||
item_textures_.emplace_back(Resource::get()->getTexture("item_coffee_machine.png"));
|
item_textures_.emplace_back(Resource::get()->getTexture("item_coffee_machine.png"));
|
||||||
}
|
|
||||||
|
|
||||||
player_textures_.clear();
|
player_textures_.clear();
|
||||||
// Texturas - Player1
|
// Texturas - Player1
|
||||||
{
|
std::vector<std::shared_ptr<Texture>> player1_textures;
|
||||||
std::vector<std::shared_ptr<Texture>> player_texture;
|
player1_textures.emplace_back(Resource::get()->getTexture("player1.gif"));
|
||||||
player_texture.emplace_back(Resource::get()->getTexture("player1.gif"));
|
player1_textures.emplace_back(Resource::get()->getTexture("player1_power.png"));
|
||||||
player_texture.emplace_back(Resource::get()->getTexture("player1_power.png"));
|
player_textures_.push_back(player1_textures);
|
||||||
player_textures_.push_back(player_texture);
|
|
||||||
}
|
|
||||||
|
|
||||||
// Texturas - Player2
|
// Texturas - Player2
|
||||||
{
|
std::vector<std::shared_ptr<Texture>> player2_textures;
|
||||||
std::vector<std::shared_ptr<Texture>> player_texture;
|
player2_textures.emplace_back(Resource::get()->getTexture("player2.gif"));
|
||||||
player_texture.emplace_back(Resource::get()->getTexture("player2.gif"));
|
player2_textures.emplace_back(Resource::get()->getTexture("player2_power.png"));
|
||||||
player_texture.emplace_back(Resource::get()->getTexture("player2_power.png"));
|
player_textures_.push_back(player2_textures);
|
||||||
player_textures_.push_back(player_texture);
|
|
||||||
}
|
|
||||||
|
|
||||||
// Animaciones -- Jugador
|
// Animaciones -- Jugador
|
||||||
{
|
|
||||||
player_animations_.clear();
|
player_animations_.clear();
|
||||||
player_animations_.emplace_back(Resource::get()->getAnimation("player.ani"));
|
player_animations_.emplace_back(Resource::get()->getAnimation("player.ani"));
|
||||||
player_animations_.emplace_back(Resource::get()->getAnimation("player_power.ani"));
|
player_animations_.emplace_back(Resource::get()->getAnimation("player_power.ani"));
|
||||||
}
|
|
||||||
|
|
||||||
// Animaciones -- Items
|
// Animaciones -- Items
|
||||||
{
|
|
||||||
item_animations_.clear();
|
item_animations_.clear();
|
||||||
item_animations_.emplace_back(Resource::get()->getAnimation("item_points1_disk.ani"));
|
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_points2_gavina.ani"));
|
||||||
@@ -187,7 +177,6 @@ void Game::setResources() {
|
|||||||
item_animations_.emplace_back(Resource::get()->getAnimation("item_debian.ani"));
|
item_animations_.emplace_back(Resource::get()->getAnimation("item_debian.ani"));
|
||||||
item_animations_.emplace_back(Resource::get()->getAnimation("item_coffee_machine.ani"));
|
item_animations_.emplace_back(Resource::get()->getAnimation("item_coffee_machine.ani"));
|
||||||
}
|
}
|
||||||
}
|
|
||||||
|
|
||||||
// Actualiza el valor de hiScore en caso necesario
|
// Actualiza el valor de hiScore en caso necesario
|
||||||
void Game::updateHiScore() {
|
void Game::updateHiScore() {
|
||||||
@@ -1642,8 +1631,10 @@ void Game::initPlayers(Player::Id player_id) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
// Registra los jugadores en Options
|
// Registra los jugadores en Options
|
||||||
Options::keyboard.addPlayer(players_.at(0));
|
for (auto player : players_) {
|
||||||
Options::keyboard.addPlayer(players_.at(1));
|
Options::keyboard.addPlayer(player);
|
||||||
|
Options::gamepad_manager.addPlayer(player);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
// Hace sonar la música
|
// Hace sonar la música
|
||||||
|
|||||||
@@ -75,6 +75,7 @@ Title::~Title() {
|
|||||||
|
|
||||||
// Desregistra los jugadores de Options
|
// Desregistra los jugadores de Options
|
||||||
Options::keyboard.clearPlayers();
|
Options::keyboard.clearPlayers();
|
||||||
|
Options::gamepad_manager.clearPlayers();
|
||||||
}
|
}
|
||||||
|
|
||||||
// Actualiza las variables del objeto
|
// Actualiza las variables del objeto
|
||||||
@@ -532,8 +533,10 @@ void Title::initPlayers() {
|
|||||||
players_.back()->setPlayingState(Player::State::TITLE_HIDDEN);
|
players_.back()->setPlayingState(Player::State::TITLE_HIDDEN);
|
||||||
|
|
||||||
// Registra los jugadores en Options
|
// Registra los jugadores en Options
|
||||||
Options::keyboard.addPlayer(players_.at(0));
|
for (auto player : players_) {
|
||||||
Options::keyboard.addPlayer(players_.at(1));
|
Options::keyboard.addPlayer(player);
|
||||||
|
Options::gamepad_manager.addPlayer(player);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
// Actualza los jugadores
|
// Actualza los jugadores
|
||||||
|
|||||||
Reference in New Issue
Block a user