mirror of
https://github.com/zoriya/Bomberman.git
synced 2026-05-27 00:06:49 +00:00
end condition: change scene only if scene has a player
This commit is contained in:
@@ -26,7 +26,7 @@ namespace BBM
|
||||
LobbyScene,
|
||||
TitleScreenScene,
|
||||
CreditScene,
|
||||
ScoreScene = MainMenuScene,
|
||||
ScoreScene,
|
||||
};
|
||||
|
||||
|
||||
|
||||
@@ -34,6 +34,7 @@
|
||||
#include "System/BumperTimer/BumperTimerSystem.hpp"
|
||||
#include "System/Music/MusicSystem.hpp"
|
||||
#include "System/Lobby/LobbySystem.hpp"
|
||||
#include "System/EndCondition/EndConditionSystem.hpp"
|
||||
#include "Component/Lobby/LobbyComponent.hpp"
|
||||
|
||||
namespace BBM
|
||||
@@ -58,6 +59,8 @@ namespace BBM
|
||||
}
|
||||
if (gameState.nextScene == gameState.currentScene)
|
||||
return;
|
||||
if (gameState.nextScene == GameState::SceneID::ScoreScene)
|
||||
gameState._loadedScenes[GameState::SceneID::ScoreScene] = Runner::loadScoreScene(*engine.getScene());
|
||||
gameState._loadedScenes[gameState.currentScene] = engine.getScene();
|
||||
engine.changeScene(gameState._loadedScenes[gameState.nextScene]);
|
||||
gameState.currentScene = gameState.nextScene;
|
||||
@@ -84,6 +87,7 @@ namespace BBM
|
||||
.addSystem<IntroAnimationSystem>()
|
||||
.addSystem<GravitySystem>()
|
||||
.addSystem<BumperTimerSystem>()
|
||||
.addSystem<EndConditionSystem>()
|
||||
.addSystem<MusicSystem>();
|
||||
}
|
||||
|
||||
|
||||
@@ -20,7 +20,8 @@ namespace BBM
|
||||
{SoundComponent::JUMP, "assets/sounds/click.ogg"}
|
||||
};
|
||||
|
||||
scene->addEntity("Control entity")
|
||||
addMenuControl(*scene);
|
||||
scene->addEntity("Audio ressources")
|
||||
.addComponent<MusicComponent>("assets/musics/music_result.ogg")
|
||||
.addComponent<SoundComponent>(sounds);
|
||||
scene->addEntity("background")
|
||||
|
||||
@@ -2,6 +2,7 @@
|
||||
#include "EndConditionSystem.hpp"
|
||||
#include <map>
|
||||
#include "Runner/Runner.hpp"
|
||||
#include "Component/Score/ScoreComponent.hpp"
|
||||
|
||||
namespace BBM {
|
||||
|
||||
@@ -12,8 +13,11 @@ namespace BBM {
|
||||
void EndConditionSystem::onSelfUpdate()
|
||||
{
|
||||
unsigned int alivePlayersCount = 0;
|
||||
auto &view = this->_wal.getScene()->view<ScoreComponent, HealthComponent>();
|
||||
|
||||
for (auto & [_ , healthComponent]: this->_wal.getScene()->view<HealthComponent>())
|
||||
if (!view.size())
|
||||
return;
|
||||
for (auto & [_ , scoreComponent, healthComponent]: view)
|
||||
alivePlayersCount += (healthComponent.getHealthPoint() != 0);
|
||||
if (alivePlayersCount <= 1)
|
||||
Runner::gameState.nextScene = Runner::gameState.ScoreScene;
|
||||
|
||||
Reference in New Issue
Block a user