@@ -58,11 +58,11 @@ Player::Player(XMLElement* elem)
5858 XMLElement* cardsElement = elem->FirstChildElement (" cards" );
5959 for (auto cardElem = cardsElement->FirstChildElement (" card" ); cardElem; cardElem = cardElem->NextSiblingElement (" card" )) {
6060 static const map<std::string, std::function<std::unique_ptr<DevelopmentCard>(void )>> typeToCard = {
61- std::pair<std::string, std::function<std::unique_ptr<DevelopmentCard>(void )>>(" knight" , [this ]() -> std::unique_ptr<DevelopmentCard> { return std::unique_ptr<DevelopmentCard>(new KnightCard (this )); }),
62- std::pair<std::string, std::function<std::unique_ptr<DevelopmentCard>(void )>>(" victorypoint" , [this ]() -> std::unique_ptr<DevelopmentCard> { return std::unique_ptr<DevelopmentCard>(new VictoryPointCard (this )); }),
63- std::pair<std::string, std::function<std::unique_ptr<DevelopmentCard>(void )>>(" yearofplenty" , [this ]() -> std::unique_ptr<DevelopmentCard> { return std::unique_ptr<DevelopmentCard>(new YearOfPlentyCard (this )); }),
64- std::pair<std::string, std::function<std::unique_ptr<DevelopmentCard>(void )>>(" monopoly" , [this ]() -> std::unique_ptr<DevelopmentCard> { return std::unique_ptr<DevelopmentCard>(new MonopolyCard (this )); }),
65- std::pair<std::string, std::function<std::unique_ptr<DevelopmentCard>(void )>>(" roadbuilding" , [this ]() -> std::unique_ptr<DevelopmentCard> { return std::unique_ptr<DevelopmentCard>(new RoadBuildingCard (this )); }),
61+ std::pair<std::string, std::function<std::unique_ptr<DevelopmentCard>(void )>>(" knight" , [this ]() -> std::unique_ptr<DevelopmentCard> { return std::unique_ptr<DevelopmentCard>(new KnightCard ()); }),
62+ std::pair<std::string, std::function<std::unique_ptr<DevelopmentCard>(void )>>(" victorypoint" , [this ]() -> std::unique_ptr<DevelopmentCard> { return std::unique_ptr<DevelopmentCard>(new VictoryPointCard ()); }),
63+ std::pair<std::string, std::function<std::unique_ptr<DevelopmentCard>(void )>>(" yearofplenty" , [this ]() -> std::unique_ptr<DevelopmentCard> { return std::unique_ptr<DevelopmentCard>(new YearOfPlentyCard ()); }),
64+ std::pair<std::string, std::function<std::unique_ptr<DevelopmentCard>(void )>>(" monopoly" , [this ]() -> std::unique_ptr<DevelopmentCard> { return std::unique_ptr<DevelopmentCard>(new MonopolyCard ()); }),
65+ std::pair<std::string, std::function<std::unique_ptr<DevelopmentCard>(void )>>(" roadbuilding" , [this ]() -> std::unique_ptr<DevelopmentCard> { return std::unique_ptr<DevelopmentCard>(new RoadBuildingCard ()); }),
6666 };
6767 auto typeIt = typeToCard.find (std::string (cardElem->FirstChildElement (" type" )->FirstChild ()->Value ()));
6868 if (typeIt == typeToCard.end ()) {
@@ -384,7 +384,7 @@ bool Player::acceptOffer(Player* p, int offer[], int demand[])
384384 */
385385int Player::getRandomResource ()
386386{
387- int total = getWood () + getBrick () + getOre () + getWheat () + getWool ();
387+ // int total = getWood() + getBrick() + getOre() + getWheat() + getWool();
388388 int randomNo = 0 ;
389389
390390 if (getWood ()!=0 && randomNo <= getWood ())
@@ -416,6 +416,18 @@ int Player::getRandomResource()
416416
417417}
418418
419+ /* *
420+ * Get the resources a player has of a given type.
421+ * @param resourceType The index to get the resource count of.
422+ * @return The amount of the resource the player has.
423+ */
424+ int Player::getResource (int resourceType) const {
425+ if (resourceType < 5 ) {
426+ return resources[resourceType];
427+ } else {
428+ throw std::runtime_error (" Type index is out of bounds." );
429+ }
430+ }
419431
420432/* *
421433 * Determine if the player has a valid (nonnegative) set of resources.
0 commit comments