Advertisement
Guest User

Untitled

a guest
Mar 20th, 2014
90
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 2.25 KB | None | 0 0
  1. #include "ItemManager.h"
  2. #include "WeaponManager.h"
  3. #include "Config.h"
  4. #include "Item.h"
  5. #include <iostream>
  6. #include "Weapon.h"
  7. #include "SFML\Graphics\Sprite.hpp"
  8. #include "SFML\Graphics\RenderTarget.hpp"
  9.  
  10.  
  11. ItemManager::ItemManager()
  12. {
  13.     m_weaponManager = new WeaponManager();
  14.     m_weaponManager->configure();
  15.     configure();
  16. }
  17.  
  18.  
  19. ItemManager::~ItemManager()
  20. {
  21.     auto it = m_items.begin();
  22.     while (it != m_items.end())
  23.     {
  24.         delete *it;
  25.         ++it;
  26.     }
  27.     m_items.clear();
  28. }
  29.  
  30. void ItemManager::configure()
  31. {
  32.     if (Config::root_node["general"])
  33.     {
  34.         if (Config::root_node["general"]["item_path"])
  35.         {
  36.             m_itemSpritePath = Config::root_node["general"]["item_path"].as<std::string>();
  37.         }
  38.         if (Config::root_node["general"]["weapon_path"])
  39.         {
  40.             m_weaponManager->setSpritePath(m_itemSpritePath + Config::root_node["general"]["weapon_path"].as<std::string>());
  41.         }
  42.         m_coinThrowSpeed = Config::root_node["general"]["coin_throw_speed"].as<float>();
  43.         m_coin_ripple_radius = Config::root_node["general"]["coin_ripple_radius"].as<float>();
  44.     }
  45. }
  46.  
  47. void ItemManager::draw(sf::RenderTarget &target, sf::RenderStates states) const
  48. {
  49.     for (auto &item: m_items)
  50.     {
  51.         if (!item->isWearing())
  52.         {
  53.             target.draw(*item->getGroundSprite());
  54.         }
  55.     }
  56. }
  57.  
  58. void ItemManager::addItem(Item* p_item)
  59. {
  60.     m_items.push_back(p_item);
  61.     if (p_item->getType() == ITEM_WEAPON)
  62.     {
  63.         m_weaponManager->add(static_cast<Weapon*>(p_item));
  64.     }
  65. }
  66. WeaponManager* ItemManager::getWeaponManager()
  67. {
  68.     return m_weaponManager;
  69. }
  70. std::string ItemManager::getSpritePath()
  71. {
  72.     return m_itemSpritePath;
  73. }
  74. std::vector<Item*> ItemManager::getItems()
  75. {
  76.     return m_items;
  77. }
  78.  
  79. int ItemManager::getCoinSpeed()
  80. {
  81.     return m_coinThrowSpeed;
  82. }
  83.  
  84. float ItemManager::getSoundRippleRadius()
  85. {
  86.     return m_coin_ripple_radius;
  87. }
  88.  
  89. void ItemManager::deleteItem(Item* p_pointer)
  90. {
  91.     for (int i = 0; i < m_items.size(); i++)
  92.     {
  93.         if (p_pointer == m_items[i])
  94.         {
  95.             delete m_items[i];
  96.             m_items[i] = nullptr;
  97.             m_items.erase(m_items.begin() + i);
  98.             break;
  99.         }
  100.     }
  101. }
  102.  
  103. std::vector<Item*> ItemManager::getItemsByType(int p_itemType)
  104. {
  105.     std::vector<Item*> items;
  106.     for (auto &item : m_items)
  107.     {
  108.         if (item->getType() == p_itemType)
  109.         {
  110.             items.push_back(item);
  111.         }
  112.     }
  113.     return items;
  114. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement