DefaultInventoryDrop.cpp 1.7 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667
  1. #include "DefaultInventoryDrop.h"
  2. #include <Block.h>
  3. #include <Entity.h>
  4. #include <Inventory.h>
  5. #include <ItemSlot.h>
  6. DefaultInventoryItemDrop::DefaultInventoryItemDrop()
  7. : DropConfig()
  8. {}
  9. void DefaultInventoryItemDrop::doDrop(Entity* zActor,
  10. Item* zItem,
  11. ItemSkill* zUsedSkill,
  12. Framework::Either<Block*, Entity*> zDestroyedObject) const
  13. {
  14. Inventory* inventory;
  15. if (zDestroyedObject.isA())
  16. {
  17. inventory = dynamic_cast<Inventory*>(zDestroyedObject.getA());
  18. }
  19. else
  20. {
  21. inventory = dynamic_cast<Inventory*>(zDestroyedObject.getB());
  22. }
  23. for (ItemSlot* slot : *inventory)
  24. {
  25. if (!slot->isEmpty())
  26. {
  27. ItemStack* stack
  28. = slot->takeItemsOut(slot->getNumberOfItems(), NO_DIRECTION);
  29. if (stack)
  30. {
  31. Game::INSTANCE->spawnItem(
  32. inventory->getLocation()
  33. + Framework::Vec3<float>(0.5f, 0.5f, 0.5f),
  34. inventory->getDimensionId(),
  35. stack);
  36. }
  37. }
  38. }
  39. }
  40. DefaultInventoryItemDropFactory::DefaultInventoryItemDropFactory()
  41. : DropConfigFactory()
  42. {}
  43. JSONObjectValidationBuilder* DefaultInventoryItemDropFactory::addToValidator(
  44. JSONObjectValidationBuilder* builder) const
  45. {
  46. return DropConfigFactory::addToValidator(builder);
  47. }
  48. const char* DefaultInventoryItemDropFactory::getTypeToken() const
  49. {
  50. return "inventoryContent";
  51. }
  52. DefaultInventoryItemDrop* DefaultInventoryItemDropFactory::createInstance(
  53. Framework::JSON::JSONObject* zJson) const
  54. {
  55. return new DefaultInventoryItemDrop();
  56. }
  57. void DefaultInventoryItemDropFactory::addToJson(
  58. Framework::JSON::JSONObject* zJson, DefaultInventoryItemDrop* zObject) const
  59. {}