AutoLoot.h 1.9 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495
  1. #pragma once
  2. #include "../FunctionIncludes.h"
  3. #include "../../game/filters.h"
  4. #include "../../Utils/GuiUtils.h"
  5. #include <mutex>
  6. #include <queue>
  7. #include <optional>
  8. template<typename T>
  9. class SafeQueue {
  10. public:
  11. SafeQueue() = default;
  12. SafeQueue(const SafeQueue<T>&) = delete;
  13. SafeQueue& operator=(const SafeQueue<T>&) = delete;
  14. SafeQueue(SafeQueue<T>&& other) {
  15. std::lock_guard<std::mutex> lock(mutex_);
  16. queue_ = std::move(other.queue_);
  17. }
  18. virtual ~SafeQueue() { }
  19. unsigned long size() const {
  20. std::lock_guard<std::mutex> lock(mutex_);
  21. return queue_.size();
  22. }
  23. std::optional<T> pop() {
  24. std::lock_guard<std::mutex> lock(mutex_);
  25. if (queue_.empty()) {
  26. return {};
  27. }
  28. T tmp = queue_.front();
  29. queue_.pop();
  30. return tmp;
  31. }
  32. void push(const T& item) {
  33. std::lock_guard<std::mutex> lock(mutex_);
  34. queue_.push(item);
  35. }
  36. private:
  37. std::queue<T> queue_;
  38. mutable std::mutex mutex_;
  39. bool empty() const {
  40. return queue_.empty();
  41. }
  42. };
  43. namespace cheat {
  44. class AutoLoot : public Function {
  45. public:
  46. ConfigField<bool> f_Enabled;
  47. ConfigField<bool> f_AutoPickup;
  48. ConfigField<bool> f_AutoTreasure;
  49. ConfigField<bool> f_UseCustomRange;
  50. ConfigField<bool> f_UseDelayTimeFluctuation;
  51. ConfigField<bool> f_PickupFilter;
  52. ConfigField<int> f_DelayTime;
  53. ConfigField<int> f_DelayTimeFluctuation;
  54. ConfigField<float> f_CustomRange;
  55. ConfigField<bool> f_Chest;
  56. ConfigField<bool> f_Leyline;
  57. ConfigField<bool> f_Investigate;
  58. ConfigField<bool> f_QuestInteract;
  59. ConfigField<bool> f_Others;
  60. ConfigField<bool> f_PickupFilter_Animals;
  61. ConfigField<bool> f_PickupFilter_DropItems;
  62. ConfigField<bool> f_PickupFilter_Resources;
  63. ConfigField<bool> f_PickupFilter_Oculus;
  64. Hotkey f_Hotkey;
  65. void GUI() override;
  66. void Outer() override;
  67. void Status() override;
  68. std::string getModule() override;
  69. static AutoLoot& getInstance();
  70. bool isTeleportHotkeyPressed;
  71. AutoLoot();
  72. };
  73. }