Files
dusklight/src/dusk/ui/mods_window.hpp
T
Luke Street a7171c1956 Good stuff
2026-09-10 01:32:12 -06:00

56 lines
1.4 KiB
C++

#pragma once
#include "window.hpp"
#include "context_menu.hpp"
#include <cstddef>
#include <string>
#include <string_view>
#include <vector>
#include "dusk/mod_loader.hpp"
namespace dusk::ui {
class Pane;
class ModsWindow : public Window {
public:
ModsWindow();
void hide(bool close) override;
void update() override;
bool focus() override;
bool select_mod(std::string_view id);
private:
struct ModSnapshot {
mods::LoadedMod* mod = nullptr;
bool active = false;
bool loadFailed = false;
bool enabled = false;
bool suspended = false;
u32 cacheGeneration = 0;
};
void build_content(Rml::Element* content);
void build_detail(Pane& pane, mods::LoadedMod& mod);
void confirm_uninstall(const mods::LoadedMod& mod);
std::vector<ContextMenu::Item> mod_actions(const mods::LoadedMod& mod, bool contextMenu);
void refresh_snapshot();
void mark_current_entry();
std::vector<ModSnapshot> mSnapshot;
std::vector<Component*> mEntries;
std::vector<mods::LoadedMod*> mEntryMods;
Component* mBrowserEntry = nullptr;
mods::LoadedMod* mSelectedMod = nullptr;
std::string mSelectedModId;
uint64_t mLoaderGeneration = 0;
size_t mQueueItemCount = 0;
bool mBrowserSelected = false;
bool mFocusSelectedMod = false;
ContextMenu::Binding mContextMenu;
};
} // namespace dusk::ui