WoW Model Viewer
Your premiere tool for viewing, equipping and animating World of Warcraft models.
Loading...
Searching...
No Matches
GameFolder.h
Go to the documentation of this file.
1#pragma once
2
3#include <functional>
4#include <map>
5#include <set>
6#include <string>
7#include "GameFile.h"
8#include "Container.h"
9
10namespace core
11{
12 using ProgressCallback = std::function<void(int, int)>;
13
16 {
17 public:
18 std::string locale;
19 std::string version;
20 std::string product;
21 };
22
27 class GameFolder : public Container<GameFile>
28 {
29 public:
30 explicit GameFolder(std::string path);
31
32 virtual ~GameFolder()
33 {
34 }
35
36 virtual void init() = 0;
37 virtual void initFromListfile(const std::string& file) = 0;
38 virtual void addCustomFiles(const std::string& path, bool bypassOriginalFiles) = 0;
39
40 // return full path for a given file ie :
41 // HumanMale.m2 => Character\Human\male\humanmale.m2
42 // (not always accurate, as file names not always unique)
43 std::string getFullPathForFile(const std::string& file);
44
45 void getFilesForFolder(std::vector<GameFile*>& fileNames, const std::string& folderPath, const std::string& extension = "");
46 void getFilteredFiles(std::set<GameFile*>& dest, const std::string& filter);
47 GameFile* getFile(const std::string& filename);
48 virtual GameFile* getFile(int id) = 0;
49
50 virtual bool openFile(std::string file, void** result) = 0;
51 virtual bool openFile(int id, void** result) = 0;
52
53 virtual std::string version() = 0;
54 virtual int majorVersion() = 0;
55 virtual std::string locale() = 0;
56 virtual bool setConfig(GameConfig config) = 0;
57 virtual std::vector<GameConfig> configsFound() = 0;
58
59 virtual int lastError() = 0;
60
61 virtual void onChildAdded(GameFile*) override;
62 virtual void onChildRemoved(GameFile*) override;
63
64 const std::string& path() const { return m_path; }
65
67
68 protected:
70
71 private:
72 std::map<std::string, GameFile*> m_nameMap;
73 std::string m_path;
74 };
75}
Generic typed container that manages a set of child Component pointers.
Definition Container.h:13
Abstract base class representing a file within the game data archive.
Definition GameFile.h:12
Describes a detected game installation (locale, version, product).
Definition GameFolder.h:16
std::string product
e.g. "wow" or "wow_classic".
Definition GameFolder.h:20
std::string version
e.g. "11.0.7.58238".
Definition GameFolder.h:19
std::string locale
e.g. "enUS".
Definition GameFolder.h:18
Abstract base for game data folder backends (CASC, loose files, etc.).
Definition GameFolder.h:28
ProgressCallback m_progressCallback
Definition GameFolder.h:69
virtual void init()=0
std::string m_path
Definition GameFolder.h:73
void getFilteredFiles(std::set< GameFile * > &dest, const std::string &filter)
virtual void addCustomFiles(const std::string &path, bool bypassOriginalFiles)=0
void setProgressCallback(ProgressCallback cb)
Definition GameFolder.h:66
virtual bool openFile(std::string file, void **result)=0
GameFile * getFile(const std::string &filename)
virtual std::vector< GameConfig > configsFound()=0
virtual void initFromListfile(const std::string &file)=0
virtual bool setConfig(GameConfig config)=0
virtual GameFile * getFile(int id)=0
virtual void onChildRemoved(GameFile *) override
virtual void onChildAdded(GameFile *) override
void getFilesForFolder(std::vector< GameFile * > &fileNames, const std::string &folderPath, const std::string &extension="")
virtual bool openFile(int id, void **result)=0
std::string getFullPathForFile(const std::string &file)
virtual std::string version()=0
virtual int majorVersion()=0
virtual int lastError()=0
std::map< std::string, GameFile * > m_nameMap
Definition GameFolder.h:72
virtual std::string locale()=0
virtual ~GameFolder()
Definition GameFolder.h:32
const std::string & path() const
Definition GameFolder.h:64
Common string utility functions (split, case-insensitive search, etc.).
Definition GameLoader.h:11
std::function< void(int, int)> ProgressCallback
Definition GameFolder.h:12