diff --git a/include/Actor.hpp b/include/Actor.hpp index db39f1a..c0ae3a3 100644 --- a/include/Actor.hpp +++ b/include/Actor.hpp @@ -36,7 +36,7 @@ namespace Actor inline const Multiplayer::Inventory& getInventory() const { return inventory; } const size_t addObject(Object::ObjectName); size_t removeObject(Object::ObjectName); - void setInventory(const Multiplayer::Inventory&); + inline void setInventory(const Multiplayer::Inventory& new_inventory) { inventory = new_inventory; } protected: sf::Sprite sprite; @@ -103,7 +103,7 @@ namespace Actor inline PlayerId getId() const { return player_id; } inline Time::Time getLastUpdateTime() const { return last_update_time; } void setPosition(const sf::Vector2f& position); - void setTime(const sf::Uint32& new_time); + inline void setTime(const sf::Uint32& new_time) { last_update_time = new_time; } void move(const sf::Vector2f& vector); private: diff --git a/include/Multiplayer.hpp b/include/Multiplayer.hpp index 8bb0cfa..273570c 100644 --- a/include/Multiplayer.hpp +++ b/include/Multiplayer.hpp @@ -69,7 +69,7 @@ namespace Multiplayer PlayerData(const PlayerData& player) : PlayerData(player.getPosition(), player.getId(), player.getTime(), player.getSocketInfo(), player.getInventory()) {} inline PlayerId getId() const { return player_id; } - const size_t objectNumber(Object::ObjectName) const; + inline const size_t objectNumber(Object::ObjectName name) const { return inventory.count(name) ? inventory.at(name) : 0; } const size_t addObject(Object::ObjectName); const size_t removeObject(Object::ObjectName); const Inventory& getInventory() const { return inventory; } diff --git a/include/Object.hpp b/include/Object.hpp index 47291d4..e497f33 100644 --- a/include/Object.hpp +++ b/include/Object.hpp @@ -42,10 +42,10 @@ namespace Object Object(const Object& object) : Object(object.getName(), object.getPosition(), object.getPassability()) {}; //Object(std::string&& texture_address, sf::Vector2f&& position, Passability&& passability); //Object(Object&& object) : Object(std::move(object.texture), std::move(object.position), std::move(object.passability)) {}; - const Passability& getPassability() const; - const sf::Vector2f& getPosition() const; - const sf::Sprite& getSprite() const; - const ObjectName& getName() const; + inline const Passability& getPassability() const { return passability; } + inline const sf::Vector2f& getPosition() const { return position; } + inline const sf::Sprite& getSprite() const { return sprite; } + inline const ObjectName& getName() const { return name; } // think about it void check_collision(sf::Vector2f& vector, const sf::FloatRect& rect) const; static std::unordered_map NameToTextureMap; @@ -58,7 +58,7 @@ namespace Object ObjectName name; virtual void draw(sf::RenderTarget& target, sf::RenderStates states) const; - bool intersection(const sf::FloatRect& rect) const; + inline bool intersection(const sf::FloatRect& rect) const { return getSprite().getGlobalBounds().intersects(rect); } void check_collision(sf::Vector2f& vector, const sf::FloatRect& rect, size_t& depth) const; }; } // namespace Object \ No newline at end of file diff --git a/src/common/Actor.cpp b/src/common/Actor.cpp index 9d9e41e..b55e596 100644 --- a/src/common/Actor.cpp +++ b/src/common/Actor.cpp @@ -113,7 +113,7 @@ namespace Actor void Player::setPosition(const sf::Vector2f& position) { - auto prev_position = getPosition(); + const auto& prev_position = getPosition(); auto move_vector = position - prev_position; move(move_vector); } @@ -132,7 +132,7 @@ namespace Actor Time::Time time = Time::getTimeNow(); packet << position.x << position.y << Constants::getID() << time; packet << static_cast(user.getInventory().size()); - for (auto iter : user.getInventory()) + for (const auto& iter : user.getInventory()) { packet << iter.first << static_cast(iter.second); } @@ -140,18 +140,6 @@ namespace Actor } - void Player::setTime(const sf::Uint32& new_time) - { - last_update_time = new_time; - } - - - void Actor::setInventory(const std::unordered_map& new_inventory) - { - inventory = new_inventory; - } - - void Actor::load_textures(const std::string& texture_dir_path) { // Load a sprite to display diff --git a/src/common/Controls.cpp b/src/common/Controls.cpp index 785c940..61af881 100644 --- a/src/common/Controls.cpp +++ b/src/common/Controls.cpp @@ -109,7 +109,7 @@ void Controls::addEvent(const sf::Event& event) else { // handle object selection - for (auto iter : object_map.getObjectMap(Object::Passability::foreground)) + for (const auto& iter : object_map.getObjectMap(Object::Passability::foreground)) { if (iter.second.getSprite().getGlobalBounds().contains(window.mapPixelToCoords(sf::Mouse::getPosition()))) { @@ -155,7 +155,7 @@ void Controls::drawInterfaces() if (draw_inventory) { inventory.clear(); - auto center = user.getView().getCenter(); + const auto& center = user.getView().getCenter(); auto text = sf::Text("Inventory", font); text.setFillColor(sf::Color::White); inventory_rect.setPosition(center - inventory_rect.getSize() / 2.f); diff --git a/src/common/Multiplayer/Multiplayer.cpp b/src/common/Multiplayer/Multiplayer.cpp index b947f26..0c46cc3 100644 --- a/src/common/Multiplayer/Multiplayer.cpp +++ b/src/common/Multiplayer/Multiplayer.cpp @@ -4,21 +4,9 @@ namespace Multiplayer { - const size_t PlayerData::objectNumber(Object::ObjectName name) const - { - if (!inventory.count(name)) - return 0; - else - return inventory.at(name); - } - - const size_t PlayerData::addObject(Object::ObjectName name) { - if (!inventory.count(name)) - inventory[name] = 1; - else - inventory[name] += 1; + inventory.count(name) ? inventory[name] += 1 : inventory[name] = 1; return objectNumber(name); } @@ -44,7 +32,6 @@ namespace Multiplayer port = Constants::getPORT_LISTEN(); #endif - auto broadcast_ip = Constants::getSERVER_IP(); ip = sf::IpAddress::getPublicAddress(sf::seconds(Constants::getMAX_PING())); socket.setBlocking(false); // bind the socket to a port @@ -113,7 +100,7 @@ namespace Multiplayer if (player_data.getInventory().empty() && !player_data_pool[id].getInventory().empty()) { // send all inventory - for (auto iter : player_data_pool[id].getInventory()) + for (const auto& iter : player_data_pool[id].getInventory()) { for (size_t i = 0; i < iter.second; ++i) { @@ -125,7 +112,7 @@ namespace Multiplayer } } else - for (auto iter : player_data_pool[id].getInventory()) + for (const auto& iter : player_data_pool[id].getInventory()) { size_t msg_number; if (player_data.getInventory().count(iter.first) && player_data.getInventory().at(iter.first) >= iter.second) @@ -174,10 +161,13 @@ namespace Multiplayer } case DataType::Event: { + EventType event_type; // event handling - sf::Uint32 event_type_enum; - data >> event_type_enum; - EventType event_type = static_cast(event_type_enum); + { + sf::Uint32 event_type_enum; + data >> event_type_enum; + event_type = static_cast(event_type_enum); + } switch (event_type) { case EventType::takeObjectToInventory: @@ -199,9 +189,10 @@ namespace Multiplayer } else { - player_data_pool[id].setPosition(player_data.getPosition()); - player_data_pool[id].setTime(player_data.getTime()); - player_data_pool[id].addObject(object_data.getName()); + auto& player = player_data_pool[id]; + player.setPosition(player_data.getPosition()); + player.setTime(player_data.getTime()); + player.addObject(object_data.getName()); data.clear(); if (!removeObject(object_data)) { // no such object in the world :| diff --git a/src/common/Multiplayer/Operators.cpp b/src/common/Multiplayer/Operators.cpp index 661bb00..7f7e620 100644 --- a/src/common/Multiplayer/Operators.cpp +++ b/src/common/Multiplayer/Operators.cpp @@ -39,7 +39,7 @@ sf::Packet& operator <<(sf::Packet& packet, const Multiplayer::PlayerData& playe { packet << player_data.getPosition().x << player_data.getPosition().y << player_data.getId() << player_data.getTime(); packet << static_cast(player_data.getInventory().size()); - for (auto pair : player_data.getInventory()) + for (const auto& pair : player_data.getInventory()) { packet << pair.first << static_cast(pair.second); } diff --git a/src/common/Object.cpp b/src/common/Object.cpp index 7635b77..2e889b5 100644 --- a/src/common/Object.cpp +++ b/src/common/Object.cpp @@ -66,36 +66,6 @@ namespace Object } - const Passability& Object::getPassability() const - { - return passability; - } - - - const sf::Vector2f& Object::getPosition() const - { - return position; - } - - - const sf::Sprite& Object::getSprite() const - { - return sprite; - } - - - const ObjectName& Object::getName() const - { - return name; - } - - - bool Object::intersection(const sf::FloatRect& new_rect) const - { - return getSprite().getGlobalBounds().intersects(new_rect); - } - - void Object::check_collision(sf::Vector2f& vector, const sf::FloatRect& rect, size_t& depth) const { if (this->intersection(sf::FloatRect(rect.getPosition() + vector, rect.getSize()))) diff --git a/src/common/WorldMap.cpp b/src/common/WorldMap.cpp index ad1df7a..9de4d56 100644 --- a/src/common/WorldMap.cpp +++ b/src/common/WorldMap.cpp @@ -30,7 +30,7 @@ namespace WorldMap { Object::Object object; object << object_data; - auto point = object.getPosition(); + const auto& point = object.getPosition(); switch (object.getPassability()) { case Object::Passability::background: diff --git a/src/server/server.cpp b/src/server/server.cpp index 148dfa3..90d4dd1 100644 --- a/src/server/server.cpp +++ b/src/server/server.cpp @@ -20,35 +20,22 @@ void UdpWorker(Multiplayer::UdpManager& UdpManager) UdpManager.receive(); } - for (auto iter : UdpManager.getPlayerDataPool()) + for (const auto& iter : UdpManager.getPlayerDataPool()) { - //std::cout << "unpacking player from pool: " << (*iter).first << std::endl; auto time_now = Time::getTimeNow(); - //iter.second.setTime(time_now); int ping = static_cast(time_now) - static_cast(iter.second.getTime()); std::cout << iter.second.getSocketInfo().first << ":" << iter.second.getSocketInfo().second << std::endl; - //std::cout << "id: " << (*iter).first << ", last timepoint: " << std::to_string(time) << std::endl; if (ping > Constants::getMAX_PING()) - { - //std::cout << "reached MAX_PING" << std::endl; - //UdpManager.removePlayerBySocketInfo((*iter++).first); continue; - } auto sector_data = UdpManager.checkSector(iter.second.getPosition()); UdpManager.send(sector_data, iter.second.getSocketInfo().first, iter.second.getSocketInfo().second); - for (auto dest_iter = UdpManager.getPlayerDataPool().begin(); dest_iter != UdpManager.getPlayerDataPool().end(); ++dest_iter) + for (const auto& dest_iter : UdpManager.getPlayerDataPool()) { - //std::cout << "sending " << iter->first << " data to " << dest_iter->first << std::endl; - if (dest_iter->first == iter.first) - { - //std::cout << "*dest_iter == *iter" << std::endl; - //std::cout << "made ++dest_iter" << std::endl; + if (dest_iter.first == iter.first) continue; - } sf::Packet data; data << Multiplayer::DataType::Player << iter.second; - UdpManager.send(data, dest_iter->second.getSocketInfo().first, dest_iter->second.getSocketInfo().second); - //std::cout << "sent" << std::endl; + UdpManager.send(data, dest_iter.second.getSocketInfo().first, dest_iter.second.getSocketInfo().second); } } } @@ -60,7 +47,7 @@ void UdpWorker(Multiplayer::UdpManager& UdpManager) * @param path: path to file * @return vector of ObjectData */ -std::vector load_terrain(const std::string& path) +static std::vector load_terrain(const std::string& path) { std::vector object_data_pool_init; std::ifstream infile(path); @@ -86,7 +73,6 @@ std::vector load_terrain(const std::string& path) int main() { - //std::cout << std::flush << std::endl; Multiplayer::UdpManager UdpManager(sf::IpAddress::getLocalAddress(), sf::IpAddress::Any); auto last_timepoint = std::chrono::steady_clock::now(); { @@ -97,7 +83,6 @@ int main() std::cout << "server started" << std::endl; while (true) { - // needs another thread last_timepoint += std::chrono::milliseconds(1000 / Constants::getFRAMERATE_LIMIT()); UdpWorker(UdpManager); std::this_thread::sleep_until(last_timepoint);