mirror of
https://github.com/zoriya/Bomberman.git
synced 2026-06-03 02:23:44 +00:00
Trying to create a retry button
This commit is contained in:
@@ -34,24 +34,23 @@ namespace BBM
|
|||||||
static const std::vector<std::string> rankName = {
|
static const std::vector<std::string> rankName = {
|
||||||
"1st", "2nd", "3rd", "4th"
|
"1st", "2nd", "3rd", "4th"
|
||||||
};
|
};
|
||||||
Runner::gameState._loadedScenes[GameState::LobbyScene] = Runner::loadLobbyScene();
|
|
||||||
auto &lobbyScene = Runner::gameState._loadedScenes[GameState::LobbyScene];
|
|
||||||
|
|
||||||
for (auto &[entity, score, drawable]: gameScene.view<ScoreComponent, Drawable3DComponent>())
|
for (WAL::Entity &entity : gameScene.view<ScoreComponent, Drawable3DComponent>())
|
||||||
players.push_back(entity);
|
players.emplace_back(entity);
|
||||||
std::sort(players.begin(), players.end(), [](WAL::Entity &entityA, WAL::Entity &entityB) {
|
std::sort(players.begin(), players.end(), [](WAL::Entity &entityA, WAL::Entity &entityB) {
|
||||||
return entityA.getComponent<ScoreComponent>().aliveTime > entityB.getComponent<ScoreComponent>().aliveTime;
|
return entityA.getComponent<ScoreComponent>().aliveTime > entityB.getComponent<ScoreComponent>().aliveTime;
|
||||||
});
|
});
|
||||||
|
|
||||||
int playerID = 0;
|
int playerID = 0;
|
||||||
auto entityGarbage = WAL::Entity(*lobbyScene, "");
|
|
||||||
for (auto &entity: players) {
|
for (auto &entity: players) {
|
||||||
RAY3D::Model *model = dynamic_cast<RAY3D::Model *>(entity.get().getComponent<Drawable3DComponent>().drawable.get());
|
auto *model = dynamic_cast<RAY3D::Model *>(entity.get().getComponent<Drawable3DComponent>().drawable.get());
|
||||||
std::string path = model->getTextureByMaterial(MAP_DIFFUSE).getResourcePath();
|
std::string path = model->getTextureByMaterial(MAP_DIFFUSE).getResourcePath();
|
||||||
playersIconPath.push_back(path.replace(path.find("textures"), std::string("textures").size(), "icons"));
|
playersIconPath.push_back(path.replace(path.find("textures"), std::string("textures").size(), "icons"));
|
||||||
auto &newPlayer = lobbyScene->addEntity("add")
|
auto &newPlayer = scene->addEntity("add");
|
||||||
.addComponent<LobbyComponent>(playerID++, entityGarbage, entityGarbage);
|
newPlayer.addComponent<LobbyComponent>(playerID++, newPlayer, newPlayer);
|
||||||
newPlayer.getComponent<LobbyComponent>().layout = entity.get().getComponent<ControllableComponent>().layout;
|
newPlayer.getComponent<LobbyComponent>().layout = entity.get().getComponent<ControllableComponent>().layout;
|
||||||
|
std::string color = path.substr(path.find_last_of('/'), path.find_last_of('.'));
|
||||||
|
newPlayer.getComponent<LobbyComponent>().color = std::find(LobbySystem::colors.begin(), LobbySystem::colors.end(), color) - LobbySystem::colors.begin();
|
||||||
}
|
}
|
||||||
|
|
||||||
addMenuControl(*scene, sounds);
|
addMenuControl(*scene, sounds);
|
||||||
|
|||||||
@@ -27,7 +27,7 @@ namespace RAY2D = RAY::Drawables::Drawables2D;
|
|||||||
|
|
||||||
namespace BBM
|
namespace BBM
|
||||||
{
|
{
|
||||||
std::array<std::string, 4> LobbySystem::_colors = {
|
std::array<std::string, 4> LobbySystem::colors = {
|
||||||
"blue",
|
"blue",
|
||||||
"red",
|
"red",
|
||||||
"green",
|
"green",
|
||||||
@@ -60,7 +60,7 @@ namespace BBM
|
|||||||
lobby.color = 0;
|
lobby.color = 0;
|
||||||
} while (this->_colorTaken[lobby.color]);
|
} while (this->_colorTaken[lobby.color]);
|
||||||
this->_colorTaken[lobby.color] = true;
|
this->_colorTaken[lobby.color] = true;
|
||||||
entity.get<Drawable2DComponent>().drawable = std::make_shared<RAY::Texture>("assets/player/icons/" + _colors[lobby.color] + ".png");
|
entity.get<Drawable2DComponent>().drawable = std::make_shared<RAY::Texture>("assets/player/icons/" + colors[lobby.color] + ".png");
|
||||||
lobby.coloredTile.getComponent<Drawable2DComponent>().drawable->setColor(_rayColors[lobby.color]);
|
lobby.coloredTile.getComponent<Drawable2DComponent>().drawable->setColor(_rayColors[lobby.color]);
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -216,8 +216,8 @@ namespace BBM
|
|||||||
(Runner::hasHeights ? 1.01 : 0),
|
(Runner::hasHeights ? 1.01 : 0),
|
||||||
mapHeight * (!(playerCount % 3)));
|
mapHeight * (!(playerCount % 3)));
|
||||||
auto *model = dynamic_cast<RAY3D::Model *>(player.getComponent<Drawable3DComponent>().drawable.get());
|
auto *model = dynamic_cast<RAY3D::Model *>(player.getComponent<Drawable3DComponent>().drawable.get());
|
||||||
model->setTextureToMaterial(MAP_DIFFUSE, "assets/player/textures/" + _colors[lobby.color] + ".png");
|
model->setTextureToMaterial(MAP_DIFFUSE, "assets/player/textures/" + colors[lobby.color] + ".png");
|
||||||
std::string texturePath = "assets/player/ui/" + _colors[lobby.color] + ".png";
|
std::string texturePath = "assets/player/ui/" + colors[lobby.color] + ".png";
|
||||||
int x = (playerCount % 2 == 0) ? 1920 - 10 - 320 : 10;
|
int x = (playerCount % 2 == 0) ? 1920 - 10 - 320 : 10;
|
||||||
int y = (playerCount % 3 != 0) ? 1080 - 10 - 248 : 10;
|
int y = (playerCount % 3 != 0) ? 1080 - 10 - 248 : 10;
|
||||||
scene->addEntity("player color tile")
|
scene->addEntity("player color tile")
|
||||||
|
|||||||
@@ -22,12 +22,13 @@ namespace BBM
|
|||||||
|
|
||||||
void _nextColor(WAL::ViewEntity<LobbyComponent, Drawable2DComponent> &entity);
|
void _nextColor(WAL::ViewEntity<LobbyComponent, Drawable2DComponent> &entity);
|
||||||
|
|
||||||
static std::array<std::string, 4> _colors;
|
|
||||||
|
|
||||||
static std::array<RAY::Color, 4> _rayColors;
|
static std::array<RAY::Color, 4> _rayColors;
|
||||||
|
|
||||||
std::array<bool, 4> _colorTaken = {};
|
std::array<bool, 4> _colorTaken = {};
|
||||||
public:
|
public:
|
||||||
|
static std::array<std::string, 4> colors;
|
||||||
|
|
||||||
//! @inherit
|
//! @inherit
|
||||||
void onUpdate(WAL::ViewEntity<LobbyComponent, Drawable2DComponent> &entity, std::chrono::nanoseconds dtime) override;
|
void onUpdate(WAL::ViewEntity<LobbyComponent, Drawable2DComponent> &entity, std::chrono::nanoseconds dtime) override;
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user