1
Fork 0
mirror of https://github.com/redstrate/Novus.git synced 2025-04-21 11:57:44 +00:00
novus/mdlviewer/include/mainwindow.h

81 lines
No EOL
1.6 KiB
C++

#pragma once
#include <QMainWindow>
#include <unordered_map>
#include "renderer.hpp"
enum class Slot {
Head = 3,
Hands = 5,
Legs = 7,
Feet = 8,
Body = 4,
Earring = 9,
Neck = 10,
Rings = 12,
Wrists = 11
};
enum class Race {
HyurMidlanderMale,
HyurMidlanderFemale
};
inline std::map<Race, std::string_view> raceNames = {
{Race::HyurMidlanderMale, "Hyur Midlander Male"},
{Race::HyurMidlanderFemale, "Hyur Midlander Female"}
};
inline std::unordered_map<Race, std::string_view> raceIDs = {
{Race::HyurMidlanderMale, "0101"},
{Race::HyurMidlanderFemale, "0201"}
};
struct ModelInfo {
int primaryID;
};
struct GearInfo {
std::string name;
Slot slot;
ModelInfo modelInfo;
};
inline std::unordered_map<Slot, std::string_view> slotToName = {
{Slot::Head, "met"},
{Slot::Hands, "glv"},
{Slot::Legs, "dwn"},
{Slot::Feet, "sho"},
{Slot::Body, "top"},
{Slot::Earring, "ear"},
{Slot::Neck, "nek"},
{Slot::Rings, "rir"},
{Slot::Wrists, "wrs"}
};
class GameData;
class VulkanWindow;
class StandaloneWindow;
class MainWindow : public QMainWindow {
public:
MainWindow(GameData& data);
void refreshModel();
void exportModel(Model& model, QString fileName);
private:
std::vector<GearInfo> gears;
std::vector<GearInfo*> loadedGears;
Race currentRace = Race::HyurMidlanderMale;
int currentLod = 0;
GameData& data;
Renderer* renderer;
VulkanWindow* vkWindow;
StandaloneWindow* standaloneWindow;
};