TTW_Bot/randommanager.h

67 lines
1.8 KiB
C++
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

#ifndef RANDOMMANAGER_H
#define RANDOMMANAGER_H
#include <QObject>
#include <QList>
#include <QString>
#include <QRandomGenerator>
#include "udatabase.h"
class RandomManager : public QObject
{
Q_OBJECT
public:
struct RandomStruct {
QString name;
int startValue;
int endValue;
RandomStruct() : startValue(0), endValue(0) {}
RandomStruct(const QString &name, int start, int end)
: name(name), startValue(start), endValue(end) {}
bool operator==(const QString &otherName) const { return name == otherName; }
};
explicit RandomManager(QObject *parent = nullptr);
~RandomManager();
// Основные методы
bool initialize(uDataBase *database);
// Работа с диапазонами
bool addRange(const QString &name, int startValue, int endValue);
bool removeRange(const QString &name);
bool updateRange(const QString &oldName, const QString &newName, int startValue, int endValue);
// Получение данных
QList<RandomStruct> getAllRanges() const { return m_ranges; }
bool contains(const QString &name) const;
int getRandomValue(const QString &name) const;
QPair<int, int> getRange(const QString &name) const;
// Сохранение/загрузка
bool saveToDatabase();
bool loadFromDatabase();
// Валидация
bool isValidRange(int start, int end) const;
signals:
void dataChanged();
void rangeAdded(const QString &name, int start, int end);
void rangeRemoved(const QString &name);
void rangeUpdated(const QString &oldName, const QString &newName);
private:
uDataBase *m_database;
QList<RandomStruct> m_ranges;
int findIndex(const QString &name) const;
};
#endif // RANDOMMANAGER_H