LCOV - code coverage report
Current view: top level - shared - Hexagon.cpp (source / functions) Hit Total Coverage
Test: code-coverage.info.cleaned Lines: 30 38 78.9 %
Date: 2023-01-28 00:08:57 Functions: 7 7 100.0 %

          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 : }

Generated by: LCOV version 1.14