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 <cstddef>
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,
18 CHANGE_DIRECTORY = 256,
19 COPY_FILE = 257,
20 DELETE_FILE = 258,
21 RENAME_FILE = 259,
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
48 enum class Type {
49 INVALID,
50 BINARY,
52 };
53
54 explicit CmdSeq(const std::string& path);
55
56 explicit CmdSeq(Type type_);
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::string& path) const; // NOLINT(*-use-nodiscard)
75
76protected:
77 void parseBinary(const std::string& path);
78
79 void parseKeyValuesStrata(const std::string& 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:256
Type getType() const
Definition: CmdSeq.cpp:103
void parseKeyValuesStrata(const std::string &path)
Definition: CmdSeq.cpp:157
void parseBinary(const std::string &path)
Definition: CmdSeq.cpp:123
float getVersion() const
Definition: CmdSeq.cpp:111
void setType(Type type_)
Definition: CmdSeq.cpp:107
std::vector< std::byte > bakeKeyValuesStrata() const
Definition: CmdSeq.cpp:230
void setVersion(bool isV02)
Definition: CmdSeq.cpp:115
std::vector< Sequence > & getSequences()
Definition: CmdSeq.cpp:187
Type type
Definition: CmdSeq.h:85
std::vector< Sequence > sequences
Definition: CmdSeq.h:87
float version
Definition: CmdSeq.h:86
std::vector< std::byte > bakeBinary() const
Definition: CmdSeq.cpp:195
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:55
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:37
std::string name
Definition: CmdSeq.h:44
std::vector< Command > commands
Definition: CmdSeq.h:45