DropChanceCondition.cpp 1.3 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253
  1. #include "DropChanceCondition.h"
  2. DropChanceCondition::DropChanceCondition(double chance)
  3. : DropCondition(),
  4. chance(chance)
  5. {}
  6. double DropChanceCondition::getChance() const
  7. {
  8. return chance;
  9. }
  10. bool DropChanceCondition::evaluate(Entity* zActor,
  11. Item* zItem,
  12. ItemSkill* zUsedSkill,
  13. Framework::Either<Block*, Entity*> zDestroyedObject)
  14. {
  15. return (double)std::rand() / RAND_MAX > chance;
  16. }
  17. DropChanceConditionFactory::DropChanceConditionFactory()
  18. : SubTypeFactory()
  19. {}
  20. JSONObjectValidationBuilder* DropChanceConditionFactory::addToValidator(
  21. JSONObjectValidationBuilder* builder) const
  22. {
  23. return builder->withRequiredNumber("chance")
  24. ->whichIsGreaterThen(0.0)
  25. ->whichIsLessOrEqual(1.0)
  26. ->finishNumber();
  27. }
  28. const char* DropChanceConditionFactory::getTypeToken() const
  29. {
  30. return "chance";
  31. }
  32. DropChanceCondition* DropChanceConditionFactory::fromJson(
  33. Framework::JSON::JSONObject* zJson) const
  34. {
  35. return new DropChanceCondition(
  36. zJson->zValue("chance")->asNumber()->getNumber());
  37. }
  38. Framework::JSON::JSONObject* DropChanceConditionFactory::toJsonObject(
  39. DropChanceCondition* zObject) const
  40. {
  41. Framework::JSON::JSONObject* result = new Framework::JSON::JSONObject();
  42. result->addValue(
  43. "chance", new Framework::JSON::JSONNumber(zObject->getChance()));
  44. return result;
  45. }