SourcePP
Several modern C++20 libraries for sanely parsing Valve's formats.
Loading...
Searching...
No Matches
CmdSeq.h
Go to the documentation of this file.
1#pragma once
2
3#include <filesystem>
4#include <string>
5#include <vector>
6
7#include <sourcepp/Math.h>
8
9namespace toolpp {
10
11class CmdSeq {
12public:
13 struct Command {
14 bool enabled;
15
16 enum class Special : int32_t {
17 NONE = 0,
19 COPY_FILE = 257,
22 // This used to be a different thing - Strata changes it to be an alias for 261
23 //COPY_FILE_IF_EXISTS_ALT = 260,
26 static constexpr auto SPECIAL_COPY_FILE_IF_EXISTS_ALIAS = static_cast<Special>(260);
27
28 std::string executable;
29 std::string arguments;
30
33
35
37
38 [[nodiscard]] static std::string getSpecialDisplayNameFor(Special special);
39
40 [[nodiscard]] std::string getExecutableDisplayName() const;
41 };
42
43 struct Sequence {
44 std::string name;
45 std::vector<Command> commands;
46 };
47
53
54 explicit CmdSeq(Type type_);
55
56 explicit CmdSeq(const std::filesystem::path& cmdSeqPath);
57
58 [[nodiscard]] explicit operator bool() const;
59
60 [[nodiscard]] Type getType() const;
61
62 void setType(Type type_);
63
64 [[nodiscard]] float getVersion() const;
65
66 void setVersion(bool isV02);
67
68 [[nodiscard]] std::vector<Sequence>& getSequences();
69
70 [[nodiscard]] const std::vector<Sequence>& getSequences() const;
71
72 [[nodiscard]] std::vector<std::byte> bake() const;
73
74 bool bake(const std::filesystem::path& path) const; // NOLINT(*-use-nodiscard)
75
76protected:
77 void parseBinary(const std::filesystem::path& path);
78
79 void parseKeyValuesStrata(const std::filesystem::path& path);
80
81 [[nodiscard]] std::vector<std::byte> bakeBinary() const;
82
83 [[nodiscard]] std::vector<std::byte> bakeKeyValuesStrata() const;
84
86 float version;
87 std::vector<Sequence> sequences;
88};
89
90} // namespace toolpp
std::vector< std::byte > bake() const
Definition CmdSeq.cpp:258
Type getType() const
Definition CmdSeq.cpp:105
void parseKeyValuesStrata(const std::filesystem::path &path)
Definition CmdSeq.cpp:159
CmdSeq(Type type_)
Definition CmdSeq.cpp:64
float getVersion() const
Definition CmdSeq.cpp:113
void setType(Type type_)
Definition CmdSeq.cpp:109
std::vector< std::byte > bakeKeyValuesStrata() const
Definition CmdSeq.cpp:232
void setVersion(bool isV02)
Definition CmdSeq.cpp:117
std::vector< Sequence > & getSequences()
Definition CmdSeq.cpp:189
void parseBinary(const std::filesystem::path &path)
Definition CmdSeq.cpp:125
std::vector< Sequence > sequences
Definition CmdSeq.h:87
float version
Definition CmdSeq.h:86
std::vector< std::byte > bakeBinary() const
Definition CmdSeq.cpp:197
Definition CmdSeq.h:9
std::string executable
Definition CmdSeq.h:28
std::string pathToTheoreticallyExistingFile
Definition CmdSeq.h:32
std::string getExecutableDisplayName() const
Definition CmdSeq.cpp:57
enum toolpp::CmdSeq::Command::Special special
static constexpr auto SPECIAL_COPY_FILE_IF_EXISTS_ALIAS
Definition CmdSeq.h:26
std::string arguments
Definition CmdSeq.h:29
static std::string getSpecialDisplayNameFor(Special special)
Definition CmdSeq.cpp:39
std::vector< Command > commands
Definition CmdSeq.h:45