Line data Source code
1 : #include <shared.hpp> 2 : 3 : using namespace shared; 4 : 5 1905 : Hexagon::Hexagon() 6 : { 7 1905 : this->level = FieldLevel::Grassland; 8 1905 : } 9 : 10 1785 : FieldLevel Hexagon::getFieldLevel() 11 : { 12 1785 : return this->level; 13 : } 14 : 15 713 : void Hexagon::setFieldType(FieldLevel field) 16 : { 17 713 : this->level = field; 18 713 : } 19 : 20 264 : std::vector<std::shared_ptr<std::variant<Caravan, Barbarian, BarbarianVillage, ControlPawn, City>>> Hexagon::getElements() 21 : { 22 264 : return elementsList; 23 : } 24 : 25 46 : void Hexagon::addElement(std::shared_ptr<std::variant<Caravan, Barbarian, BarbarianVillage, ControlPawn, City>> element) 26 : { 27 46 : elementsList.push_back(element); 28 46 : } 29 : 30 3 : void Hexagon::removeElement(std::shared_ptr<std::variant<Caravan, Barbarian, BarbarianVillage, ControlPawn, City>> elementToRemove) 31 : { 32 3 : for (auto element : elementsList) 33 : { 34 3 : if (std::holds_alternative<Caravan>(*elementToRemove) && std::holds_alternative<Caravan>(*element)) 35 : { 36 1 : if (std::get<Caravan>(*elementToRemove).getPlayerName() == std::get<Caravan>(*element).getPlayerName()) 37 : { 38 1 : elementsList.erase(std::remove(elementsList.begin(), elementsList.end(), element), elementsList.end()); 39 1 : break; 40 : } 41 : } 42 2 : else if (std::holds_alternative<Barbarian>(*elementToRemove) && std::holds_alternative<Barbarian>(*element)) 43 : { 44 0 : elementsList.erase(std::remove(elementsList.begin(), elementsList.end(), element), elementsList.end()); 45 0 : break; 46 : } 47 2 : else if (std::holds_alternative<BarbarianVillage>(*elementToRemove) && std::holds_alternative<BarbarianVillage>(*element)) 48 : { 49 0 : elementsList.erase(std::remove(elementsList.begin(), elementsList.end(), element), elementsList.end()); 50 0 : break; 51 : } 52 2 : else if (std::holds_alternative<ControlPawn>(*elementToRemove) && std::holds_alternative<ControlPawn>(*element)) 53 : { 54 2 : if (std::get<ControlPawn>(*elementToRemove).getPlayerName() == std::get<ControlPawn>(*element).getPlayerName()) 55 : { 56 2 : elementsList.erase(std::remove(elementsList.begin(), elementsList.end(), element), elementsList.end()); 57 2 : break; 58 : } 59 : } 60 0 : else if (std::holds_alternative<City>(*elementToRemove) && std::holds_alternative<City>(*element)) 61 : { 62 0 : if (std::get<City>(*elementToRemove).getPlayerName() == std::get<City>(*element).getPlayerName()) 63 : { 64 0 : elementsList.erase(std::remove(elementsList.begin(), elementsList.end(), element), elementsList.end()); 65 0 : break; 66 : } 67 : } 68 3 : } 69 3 : } 70 : 71 208 : void Hexagon::clearElement() 72 : { 73 208 : elementsList.clear(); 74 208 : }