mirror of
https://github.com/LNH-team/pico-launcher.git
synced 2026-06-02 00:56:55 +02:00
49 lines
1.3 KiB
C++
49 lines
1.3 KiB
C++
#pragma once
|
|
#include <array>
|
|
#include <memory>
|
|
#include "core/task/TaskQueue.h"
|
|
#include "cheats/GameCheats.h"
|
|
#include "romBrowser/FileInfo.h"
|
|
#include "romBrowser/IRomBrowserController.h"
|
|
|
|
/// @brief View model for the cheats screen.
|
|
class CheatsViewModel
|
|
{
|
|
public:
|
|
enum class State
|
|
{
|
|
Loading,
|
|
NoCheats,
|
|
DisplayCheats
|
|
};
|
|
|
|
CheatsViewModel(const FileInfo& romFileInfo, IRomBrowserController* romBrowserController);
|
|
|
|
void ItemActivated();
|
|
void Back();
|
|
void Close();
|
|
|
|
State GetState() const { return _state; }
|
|
const ICheatCategory* GetCurrentCheatCategory() const { return _categoryStack[_categoryStackLevel].cheatCategory; }
|
|
|
|
constexpr int GetSelectedItem() const { return _selectedItem; }
|
|
void SetSelectedItem(int selectedItem) { _selectedItem = selectedItem; }
|
|
|
|
private:
|
|
struct CategoryStackEntry
|
|
{
|
|
const ICheatCategory* cheatCategory;
|
|
u32 index;
|
|
};
|
|
|
|
FileInfo _romFileInfo;
|
|
IRomBrowserController* _romBrowserController;
|
|
QueueTask<void> _loadCheatsTask;
|
|
std::unique_ptr<GameCheats> _cheats;
|
|
State _state = State::Loading;
|
|
int _selectedItem = -1;
|
|
bool _changed = false;
|
|
u32 _categoryStackLevel = 0;
|
|
std::array<CategoryStackEntry, 8> _categoryStack;
|
|
};
|