selected_units_model.h 903 B

12345678910111213141516171819202122232425262728293031323334353637383940
  1. #pragma once
  2. #include "../../game/core/entity.h"
  3. #include <QAbstractListModel>
  4. #include <vector>
  5. class GameEngine;
  6. class SelectedUnitsModel : public QAbstractListModel {
  7. Q_OBJECT
  8. public:
  9. enum Roles {
  10. UnitIdRole = Qt::UserRole + 1,
  11. UnitTypeRole,
  12. NameRole,
  13. HealthRole,
  14. max_healthRole,
  15. HealthRatioRole,
  16. NationRole,
  17. StaminaRatioRole,
  18. IsRunningRole,
  19. CanRunRole
  20. };
  21. explicit SelectedUnitsModel(GameEngine *engine, QObject *parent = nullptr);
  22. [[nodiscard]] auto
  23. rowCount(const QModelIndex &parent = QModelIndex()) const -> int override;
  24. [[nodiscard]] auto
  25. data(const QModelIndex &index,
  26. int role = Qt::DisplayRole) const -> QVariant override;
  27. [[nodiscard]] auto roleNames() const -> QHash<int, QByteArray> override;
  28. public slots:
  29. void refresh();
  30. private:
  31. GameEngine *m_engine = nullptr;
  32. std::vector<Engine::Core::EntityID> m_ids;
  33. };