diff --git a/extern/EwECS b/extern/EwECS index 35ed2fd..97ddf19 160000 --- a/extern/EwECS +++ b/extern/EwECS @@ -1 +1 @@ -Subproject commit 35ed2fd154f106c37692503d4bbf891acd4bfdc9 +Subproject commit 97ddf19cdac300ca04dfb67a8eb75746d961b82b diff --git a/src/client/main.cpp b/src/client/main.cpp index 7d15cc2..c1e5e47 100644 --- a/src/client/main.cpp +++ b/src/client/main.cpp @@ -123,6 +123,7 @@ int main(int ac, char **av) world.runSystems(); eventManager->keepEventsAndClear(); world.calcDeltaTime(); + std::this_thread::sleep_for(std::chrono::milliseconds(10)); } // Quit server properly diff --git a/src/client/systems/bot/System+TriggerBotDeath.cpp b/src/client/systems/bot/System+TriggerBotDeath.cpp index a861190..d5a6fe7 100644 --- a/src/client/systems/bot/System+TriggerBotDeath.cpp +++ b/src/client/systems/bot/System+TriggerBotDeath.cpp @@ -60,6 +60,7 @@ namespace ECS { } else if (!isAlive.isAlive && isAlive.timeToDie == 0) { sprite.path = EXPLOSION_ASSET; sprite.texture = nullptr; + type.isBot = true; type.isPlayer = false; for (size_t i = 0; i < sprite.rect.size(); i++) { sprite.rect[i].height = EXPLOSION_TEX_HEIGHT; diff --git a/src/client/systems/player/System+MovePlayer.cpp b/src/client/systems/player/System+MovePlayer.cpp index 0c54ade..edb41a9 100644 --- a/src/client/systems/player/System+MovePlayer.cpp +++ b/src/client/systems/player/System+MovePlayer.cpp @@ -59,6 +59,7 @@ namespace ECS { auto &pos = aPos[i].value(); auto &speed = aSpeed[i].value().speed; RType::Client::MovePayload payload {0, 0}; + for (auto &event : keyboardEvent) { if (keyMap.find(event._keyId) == keyMap.end() || !aIsAlive[i].has_value() || !aPos[i].has_value() || !aSpeed[i].has_value() || !aIsAlive[i].value().isAlive) { diff --git a/src/client/systems/player/System+TriggerPlayerShoot.cpp b/src/client/systems/player/System+TriggerPlayerShoot.cpp index f337cae..7bc1843 100644 --- a/src/client/systems/player/System+TriggerPlayerShoot.cpp +++ b/src/client/systems/player/System+TriggerPlayerShoot.cpp @@ -25,7 +25,7 @@ namespace ECS { continue; } for (auto &event : keyboardEvent) { - if (event._keyId == Event::KeyIdentifier::SPACE) { + if (event._keyId == Event::KeyIdentifier::SPACE && event._state == Event::KeyState::PRESSED) { int playerOnlineId = aType[i].value().onlineId.value_or(-1); if (playerOnlineId == -1) { diff --git a/src/rtype/Values.hpp b/src/rtype/Values.hpp index 91ffeda..64a4a81 100644 --- a/src/rtype/Values.hpp +++ b/src/rtype/Values.hpp @@ -18,7 +18,7 @@ const constexpr float ENEMY_SPEED = 200; const constexpr int ENEMY_TEX_WIDTH = 33; const constexpr int ENEMY_TEX_HEIGHT = 33; static const std::string ENEMY_ASSET = "assets/sprites/r-typesheet5.png"; -const constexpr int PROBABILTY_SHOOT_ENEMY = 200000; +const constexpr int PROBABILTY_SHOOT_ENEMY = 100; const constexpr int ENEMY_SPAWN_INTERVAL = 5; // in seconds //------------------ BACKGROUND ------------------// @@ -33,6 +33,7 @@ const constexpr float PLAYER_SPEED = 10; const constexpr int PLAYER_TEX_WIDTH = 33; const constexpr int PLAYER_TEX_HEIGHT = 17; const constexpr int MAX_NUMBER_PLAYER = 4; +const constexpr float DELTA = 5.F; //------------------ BULLET (for players) ------------------// static const std::string BULLET_ASSET = "assets/sprites/r-typesheet2.png"; diff --git a/src/server/main.cpp b/src/server/main.cpp index 6543467..f9e5faa 100644 --- a/src/server/main.cpp +++ b/src/server/main.cpp @@ -1,4 +1,5 @@ #include +#include #include "Components.hpp" #include "EwECS/Asset/AssetManager.hpp" #include "EwECS/Event/EventManager.hpp" @@ -97,6 +98,7 @@ int main(int ac, char **av) world.runSystems(); eventManager->keepEventsAndClear(); world.calcDeltaTime(); + std::this_thread::sleep_for(std::chrono::milliseconds(10)); } ECS::Network::ServerHandler::getInstance().stop(); diff --git a/src/server/systems/player/System+MovePlayer.cpp b/src/server/systems/player/System+MovePlayer.cpp index e37ef66..dd5ecf4 100644 --- a/src/server/systems/player/System+MovePlayer.cpp +++ b/src/server/systems/player/System+MovePlayer.cpp @@ -19,7 +19,6 @@ namespace ECS { { ECS::Event::EventManager *eventManager = ECS::Event::EventManager::getInstance(); ECS::Network::ServerHandler &server = ECS::Network::ServerHandler::getInstance(); - Core::World &world = Core::World::getInstance(); auto &events = eventManager->getEventsByType(); const auto size = events.size(); std::vector toRemove; @@ -60,10 +59,10 @@ namespace ECS { float speed = aSpeed[entityId].value().speed; auto &pos = aPos[entityId].value(); - auto deltaTime = world.getDeltaTime() * 10000; + auto delta = DELTA; - pos.x += payload.moveX * speed * deltaTime; - pos.y -= payload.moveY * speed * deltaTime; + pos.x += payload.moveX * speed / delta; + pos.y -= payload.moveY * speed / delta; if (pos.x < 0) { pos.x = 0;