update resolvers
This commit is contained in:
parent
096316ea67
commit
c7c0211afb
@ -240,6 +240,47 @@ auto resolver::file_data(const std::string& name) -> std::tuple<const std::strin
|
|||||||
throw error("couldn't open gsc file '" + name + "'");
|
throw error("couldn't open gsc file '" + name + "'");
|
||||||
}
|
}
|
||||||
|
|
||||||
|
std::set<std::string_view> paths
|
||||||
|
{
|
||||||
|
"character"sv,
|
||||||
|
"codescripts"sv,
|
||||||
|
"common_scripts"sv,
|
||||||
|
"destructible_scripts"sv,
|
||||||
|
"maps"sv,
|
||||||
|
"mptype"sv,
|
||||||
|
"soundscripts"sv,
|
||||||
|
"vehicle_scripts"sv,
|
||||||
|
"xmodelalias"sv,
|
||||||
|
"maps/animated_models"sv,
|
||||||
|
"maps/createart"sv,
|
||||||
|
"maps/createfx"sv,
|
||||||
|
"maps/mp"sv,
|
||||||
|
"maps/mp/gametypes"sv,
|
||||||
|
"maps/mp/killstreaks"sv,
|
||||||
|
"maps/mp/perks"sv,
|
||||||
|
};
|
||||||
|
|
||||||
|
auto resolver::fs_to_game_path(const std::filesystem::path& file) -> std::filesystem::path
|
||||||
|
{
|
||||||
|
auto result = std::filesystem::path();
|
||||||
|
auto root = false;
|
||||||
|
|
||||||
|
for (auto& entry : file)
|
||||||
|
{
|
||||||
|
if (!root && paths.contains(entry.string()))
|
||||||
|
{
|
||||||
|
result = entry;
|
||||||
|
root = true;
|
||||||
|
}
|
||||||
|
else if (paths.contains(result.string()))
|
||||||
|
{
|
||||||
|
result /= entry;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
return result.empty() ? file : result;
|
||||||
|
}
|
||||||
|
|
||||||
const std::array<std::pair<std::uint8_t, const char*>, 154> opcode_list
|
const std::array<std::pair<std::uint8_t, const char*>, 154> opcode_list
|
||||||
{{
|
{{
|
||||||
{ 0x17, "SET_NEW_LOCAL_VARIABLE_FIELD_CACHED0" },
|
{ 0x17, "SET_NEW_LOCAL_VARIABLE_FIELD_CACHED0" },
|
||||||
|
@ -34,6 +34,7 @@ public:
|
|||||||
|
|
||||||
static auto make_token(std::string_view str) -> std::string;
|
static auto make_token(std::string_view str) -> std::string;
|
||||||
static auto file_data(const std::string& name) -> std::tuple<const std::string*, char*, size_t>;
|
static auto file_data(const std::string& name) -> std::tuple<const std::string*, char*, size_t>;
|
||||||
|
static auto fs_to_game_path(const std::filesystem::path& file) -> std::filesystem::path;
|
||||||
};
|
};
|
||||||
|
|
||||||
} // namespace xsk::gsc::h1
|
} // namespace xsk::gsc::h1
|
||||||
|
@ -240,6 +240,31 @@ auto resolver::file_data(const std::string& name) -> std::tuple<const std::strin
|
|||||||
throw error("couldn't open gsc file '" + name + "'");
|
throw error("couldn't open gsc file '" + name + "'");
|
||||||
}
|
}
|
||||||
|
|
||||||
|
std::set<std::string_view> paths
|
||||||
|
{
|
||||||
|
};
|
||||||
|
|
||||||
|
auto resolver::fs_to_game_path(const std::filesystem::path& file) -> std::filesystem::path
|
||||||
|
{
|
||||||
|
auto result = std::filesystem::path();
|
||||||
|
auto root = false;
|
||||||
|
|
||||||
|
for (auto& entry : file)
|
||||||
|
{
|
||||||
|
if (!root && paths.contains(entry.string()))
|
||||||
|
{
|
||||||
|
result = entry;
|
||||||
|
root = true;
|
||||||
|
}
|
||||||
|
else if (paths.contains(result.string()))
|
||||||
|
{
|
||||||
|
result /= entry;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
return result.empty() ? file : result;
|
||||||
|
}
|
||||||
|
|
||||||
const std::array<std::pair<std::uint8_t, const char*>, 154> opcode_list
|
const std::array<std::pair<std::uint8_t, const char*>, 154> opcode_list
|
||||||
{{
|
{{
|
||||||
{ 0x17, "SET_NEW_LOCAL_VARIABLE_FIELD_CACHED0" },
|
{ 0x17, "SET_NEW_LOCAL_VARIABLE_FIELD_CACHED0" },
|
||||||
|
@ -34,6 +34,7 @@ public:
|
|||||||
|
|
||||||
static auto make_token(std::string_view str) -> std::string;
|
static auto make_token(std::string_view str) -> std::string;
|
||||||
static auto file_data(const std::string& name) -> std::tuple<const std::string*, char*, size_t>;
|
static auto file_data(const std::string& name) -> std::tuple<const std::string*, char*, size_t>;
|
||||||
|
static auto fs_to_game_path(const std::filesystem::path& file) -> std::filesystem::path;
|
||||||
};
|
};
|
||||||
|
|
||||||
} // namespace xsk::gsc::h2
|
} // namespace xsk::gsc::h2
|
||||||
|
@ -296,6 +296,57 @@ auto resolver::file_data(const std::string& name) -> std::tuple<const std::strin
|
|||||||
throw error("couldn't open gsc file '" + name + "'");
|
throw error("couldn't open gsc file '" + name + "'");
|
||||||
}
|
}
|
||||||
|
|
||||||
|
std::set<std::string_view> paths
|
||||||
|
{
|
||||||
|
"aitype"sv,
|
||||||
|
"animscripts"sv,
|
||||||
|
"character"sv,
|
||||||
|
"codescripts"sv,
|
||||||
|
"common_scripts"sv,
|
||||||
|
"maps"sv,
|
||||||
|
"mptype"sv,
|
||||||
|
"vehicle_scripts"sv,
|
||||||
|
"xmodelalias"sv,
|
||||||
|
"animscripts/civilian"sv,
|
||||||
|
"animscripts/dog"sv,
|
||||||
|
"animscripts/hummer_turret"sv,
|
||||||
|
"animscripts/riotshield"sv,
|
||||||
|
"animscripts/saw"sv,
|
||||||
|
"animscripts/scripted"sv,
|
||||||
|
"animscripts/technical"sv,
|
||||||
|
"animscripts/traverse"sv,
|
||||||
|
"maps/animated_models"sv,
|
||||||
|
"maps/cinematic_setups"sv,
|
||||||
|
"maps/createart"sv,
|
||||||
|
"maps/createfx"sv,
|
||||||
|
"maps/gametypes"sv,
|
||||||
|
"maps/mp"sv,
|
||||||
|
"maps/mp/gametypes"sv,
|
||||||
|
"maps/mp/killstreaks"sv,
|
||||||
|
"maps/mp/perks"sv,
|
||||||
|
};
|
||||||
|
|
||||||
|
auto resolver::fs_to_game_path(const std::filesystem::path& file) -> std::filesystem::path
|
||||||
|
{
|
||||||
|
auto result = std::filesystem::path();
|
||||||
|
auto root = false;
|
||||||
|
|
||||||
|
for (auto& entry : file)
|
||||||
|
{
|
||||||
|
if (!root && paths.contains(entry.string()))
|
||||||
|
{
|
||||||
|
result = entry;
|
||||||
|
root = true;
|
||||||
|
}
|
||||||
|
else if (paths.contains(result.string()))
|
||||||
|
{
|
||||||
|
result /= entry;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
return result.empty() ? file : result;
|
||||||
|
}
|
||||||
|
|
||||||
const std::array<std::pair<std::uint8_t, const char*>, 153> opcode_list
|
const std::array<std::pair<std::uint8_t, const char*>, 153> opcode_list
|
||||||
{{
|
{{
|
||||||
{ 0x00, "END" },
|
{ 0x00, "END" },
|
||||||
|
@ -37,6 +37,7 @@ public:
|
|||||||
|
|
||||||
static auto make_token(std::string_view str) -> std::string;
|
static auto make_token(std::string_view str) -> std::string;
|
||||||
static auto file_data(const std::string& name) -> std::tuple<const std::string*, char*, size_t>;
|
static auto file_data(const std::string& name) -> std::tuple<const std::string*, char*, size_t>;
|
||||||
|
static auto fs_to_game_path(const std::filesystem::path& file) -> std::filesystem::path;
|
||||||
};
|
};
|
||||||
|
|
||||||
} // namespace xsk::gsc::iw5
|
} // namespace xsk::gsc::iw5
|
||||||
|
@ -240,6 +240,54 @@ auto resolver::file_data(const std::string& name) -> std::tuple<const std::strin
|
|||||||
throw error("couldn't open gsc file '" + name + "'");
|
throw error("couldn't open gsc file '" + name + "'");
|
||||||
}
|
}
|
||||||
|
|
||||||
|
std::set<std::string_view> paths
|
||||||
|
{
|
||||||
|
"character"sv,
|
||||||
|
"codescripts"sv,
|
||||||
|
"common_scripts"sv,
|
||||||
|
"destructible_scripts"sv,
|
||||||
|
"maps"sv,
|
||||||
|
"vehicle_scripts"sv,
|
||||||
|
"xmodelalias"sv,
|
||||||
|
"maps/animated_models"sv,
|
||||||
|
"maps/createart"sv,
|
||||||
|
"maps/createfx"sv,
|
||||||
|
"maps/interactive_models"sv,
|
||||||
|
"maps/mp"sv,
|
||||||
|
"maps/mp/agents"sv,
|
||||||
|
"maps/mp/alien"sv,
|
||||||
|
"maps/mp/bots"sv,
|
||||||
|
"maps/mp/gametypes"sv,
|
||||||
|
"maps/mp/killstreaks"sv,
|
||||||
|
"maps/mp/perks"sv,
|
||||||
|
"maps/mp/agents/alien"sv,
|
||||||
|
"maps/mp/agents/dog"sv,
|
||||||
|
"maps/mp/agents/alien/alien_ancestor"sv,
|
||||||
|
"maps/mp/agents/alien/alien_kraken"sv,
|
||||||
|
"maps/mp/agents/alien/alien_spider"sv,
|
||||||
|
};
|
||||||
|
|
||||||
|
auto resolver::fs_to_game_path(const std::filesystem::path& file) -> std::filesystem::path
|
||||||
|
{
|
||||||
|
auto result = std::filesystem::path();
|
||||||
|
auto root = false;
|
||||||
|
|
||||||
|
for (auto& entry : file)
|
||||||
|
{
|
||||||
|
if (!root && paths.contains(entry.string()))
|
||||||
|
{
|
||||||
|
result = entry;
|
||||||
|
root = true;
|
||||||
|
}
|
||||||
|
else if (paths.contains(result.string()))
|
||||||
|
{
|
||||||
|
result /= entry;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
return result.empty() ? file : result;
|
||||||
|
}
|
||||||
|
|
||||||
const std::array<std::pair<std::uint8_t, const char*>, 153> opcode_list
|
const std::array<std::pair<std::uint8_t, const char*>, 153> opcode_list
|
||||||
{{
|
{{
|
||||||
{ 0x17, "SET_NEW_LOCAL_VARIABLE_FIELD_CACHED0" },
|
{ 0x17, "SET_NEW_LOCAL_VARIABLE_FIELD_CACHED0" },
|
||||||
|
@ -34,6 +34,7 @@ public:
|
|||||||
|
|
||||||
static auto make_token(std::string_view str) -> std::string;
|
static auto make_token(std::string_view str) -> std::string;
|
||||||
static auto file_data(const std::string& name) -> std::tuple<const std::string*, char*, size_t>;
|
static auto file_data(const std::string& name) -> std::tuple<const std::string*, char*, size_t>;
|
||||||
|
static auto fs_to_game_path(const std::filesystem::path& file) -> std::filesystem::path;
|
||||||
};
|
};
|
||||||
|
|
||||||
} // namespace xsk::gsc::iw6
|
} // namespace xsk::gsc::iw6
|
||||||
|
@ -240,6 +240,31 @@ auto resolver::file_data(const std::string& name) -> std::tuple<const std::strin
|
|||||||
throw error("couldn't open gsc file '" + name + "'");
|
throw error("couldn't open gsc file '" + name + "'");
|
||||||
}
|
}
|
||||||
|
|
||||||
|
std::set<std::string_view> paths
|
||||||
|
{
|
||||||
|
};
|
||||||
|
|
||||||
|
auto resolver::fs_to_game_path(const std::filesystem::path& file) -> std::filesystem::path
|
||||||
|
{
|
||||||
|
auto result = std::filesystem::path();
|
||||||
|
auto root = false;
|
||||||
|
|
||||||
|
for (auto& entry : file)
|
||||||
|
{
|
||||||
|
if (!root && paths.contains(entry.string()))
|
||||||
|
{
|
||||||
|
result = entry;
|
||||||
|
root = true;
|
||||||
|
}
|
||||||
|
else if (paths.contains(result.string()))
|
||||||
|
{
|
||||||
|
result /= entry;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
return result.empty() ? file : result;
|
||||||
|
}
|
||||||
|
|
||||||
const std::array<std::pair<std::uint8_t, const char*>, 153> opcode_list
|
const std::array<std::pair<std::uint8_t, const char*>, 153> opcode_list
|
||||||
{{
|
{{
|
||||||
{ 0x17, "SET_NEW_LOCAL_VARIABLE_FIELD_CACHED0" },
|
{ 0x17, "SET_NEW_LOCAL_VARIABLE_FIELD_CACHED0" },
|
||||||
|
@ -34,6 +34,7 @@ public:
|
|||||||
|
|
||||||
static auto make_token(std::string_view str) -> std::string;
|
static auto make_token(std::string_view str) -> std::string;
|
||||||
static auto file_data(const std::string& name) -> std::tuple<const std::string*, char*, size_t>;
|
static auto file_data(const std::string& name) -> std::tuple<const std::string*, char*, size_t>;
|
||||||
|
static auto fs_to_game_path(const std::filesystem::path& file) -> std::filesystem::path;
|
||||||
};
|
};
|
||||||
|
|
||||||
} // namespace xsk::gsc::iw7
|
} // namespace xsk::gsc::iw7
|
||||||
|
@ -240,6 +240,31 @@ auto resolver::file_data(const std::string& name) -> std::tuple<const std::strin
|
|||||||
throw error("couldn't open gsc file '" + name + "'");
|
throw error("couldn't open gsc file '" + name + "'");
|
||||||
}
|
}
|
||||||
|
|
||||||
|
std::set<std::string_view> paths
|
||||||
|
{
|
||||||
|
};
|
||||||
|
|
||||||
|
auto resolver::fs_to_game_path(const std::filesystem::path& file) -> std::filesystem::path
|
||||||
|
{
|
||||||
|
auto result = std::filesystem::path();
|
||||||
|
auto root = false;
|
||||||
|
|
||||||
|
for (auto& entry : file)
|
||||||
|
{
|
||||||
|
if (!root && paths.contains(entry.string()))
|
||||||
|
{
|
||||||
|
result = entry;
|
||||||
|
root = true;
|
||||||
|
}
|
||||||
|
else if (paths.contains(result.string()))
|
||||||
|
{
|
||||||
|
result /= entry;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
return result.empty() ? file : result;
|
||||||
|
}
|
||||||
|
|
||||||
const std::array<std::pair<std::uint8_t, const char*>, 190> opcode_list
|
const std::array<std::pair<std::uint8_t, const char*>, 190> opcode_list
|
||||||
{{
|
{{
|
||||||
{ 0x00, "CAST_FIELD_OBJECT" },
|
{ 0x00, "CAST_FIELD_OBJECT" },
|
||||||
|
@ -34,6 +34,7 @@ public:
|
|||||||
|
|
||||||
static auto make_token(std::string_view str) -> std::string;
|
static auto make_token(std::string_view str) -> std::string;
|
||||||
static auto file_data(const std::string& name) -> std::tuple<const std::string*, char*, size_t>;
|
static auto file_data(const std::string& name) -> std::tuple<const std::string*, char*, size_t>;
|
||||||
|
static auto fs_to_game_path(const std::filesystem::path& file) -> std::filesystem::path;
|
||||||
};
|
};
|
||||||
|
|
||||||
} // namespace xsk::gsc::iw8
|
} // namespace xsk::gsc::iw8
|
||||||
|
@ -240,6 +240,31 @@ auto resolver::file_data(const std::string& name) -> std::tuple<const std::strin
|
|||||||
throw error("couldn't open gsc file '" + name + "'");
|
throw error("couldn't open gsc file '" + name + "'");
|
||||||
}
|
}
|
||||||
|
|
||||||
|
std::set<std::string_view> paths
|
||||||
|
{
|
||||||
|
};
|
||||||
|
|
||||||
|
auto resolver::fs_to_game_path(const std::filesystem::path& file) -> std::filesystem::path
|
||||||
|
{
|
||||||
|
auto result = std::filesystem::path();
|
||||||
|
auto root = false;
|
||||||
|
|
||||||
|
for (auto& entry : file)
|
||||||
|
{
|
||||||
|
if (!root && paths.contains(entry.string()))
|
||||||
|
{
|
||||||
|
result = entry;
|
||||||
|
root = true;
|
||||||
|
}
|
||||||
|
else if (paths.contains(result.string()))
|
||||||
|
{
|
||||||
|
result /= entry;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
return result.empty() ? file : result;
|
||||||
|
}
|
||||||
|
|
||||||
const std::array<std::pair<std::uint8_t, const char*>, 154> opcode_list
|
const std::array<std::pair<std::uint8_t, const char*>, 154> opcode_list
|
||||||
{{
|
{{
|
||||||
{ 0x17, "SET_NEW_LOCAL_VARIABLE_FIELD_CACHED0" },
|
{ 0x17, "SET_NEW_LOCAL_VARIABLE_FIELD_CACHED0" },
|
||||||
|
@ -34,6 +34,7 @@ public:
|
|||||||
|
|
||||||
static auto make_token(std::string_view str) -> std::string;
|
static auto make_token(std::string_view str) -> std::string;
|
||||||
static auto file_data(const std::string& name) -> std::tuple<const std::string*, char*, size_t>;
|
static auto file_data(const std::string& name) -> std::tuple<const std::string*, char*, size_t>;
|
||||||
|
static auto fs_to_game_path(const std::filesystem::path& file) -> std::filesystem::path;
|
||||||
};
|
};
|
||||||
|
|
||||||
} // namespace xsk::gsc::s1
|
} // namespace xsk::gsc::s1
|
||||||
|
@ -240,6 +240,31 @@ auto resolver::file_data(const std::string& name) -> std::tuple<const std::strin
|
|||||||
throw error("couldn't open gsc file '" + name + "'");
|
throw error("couldn't open gsc file '" + name + "'");
|
||||||
}
|
}
|
||||||
|
|
||||||
|
std::set<std::string_view> paths
|
||||||
|
{
|
||||||
|
};
|
||||||
|
|
||||||
|
auto resolver::fs_to_game_path(const std::filesystem::path& file) -> std::filesystem::path
|
||||||
|
{
|
||||||
|
auto result = std::filesystem::path();
|
||||||
|
auto root = false;
|
||||||
|
|
||||||
|
for (auto& entry : file)
|
||||||
|
{
|
||||||
|
if (!root && paths.contains(entry.string()))
|
||||||
|
{
|
||||||
|
result = entry;
|
||||||
|
root = true;
|
||||||
|
}
|
||||||
|
else if (paths.contains(result.string()))
|
||||||
|
{
|
||||||
|
result /= entry;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
return result.empty() ? file : result;
|
||||||
|
}
|
||||||
|
|
||||||
const std::array<std::pair<std::uint8_t, const char*>, 155> opcode_list
|
const std::array<std::pair<std::uint8_t, const char*>, 155> opcode_list
|
||||||
{{
|
{{
|
||||||
{ 0x17, "SET_NEW_LOCAL_VARIABLE_FIELD_CACHED0" },
|
{ 0x17, "SET_NEW_LOCAL_VARIABLE_FIELD_CACHED0" },
|
||||||
|
@ -34,6 +34,7 @@ public:
|
|||||||
|
|
||||||
static auto make_token(std::string_view str) -> std::string;
|
static auto make_token(std::string_view str) -> std::string;
|
||||||
static auto file_data(const std::string& name) -> std::tuple<const std::string*, char*, size_t>;
|
static auto file_data(const std::string& name) -> std::tuple<const std::string*, char*, size_t>;
|
||||||
|
static auto fs_to_game_path(const std::filesystem::path& file) -> std::filesystem::path;
|
||||||
};
|
};
|
||||||
|
|
||||||
} // namespace xsk::gsc::s2
|
} // namespace xsk::gsc::s2
|
||||||
|
@ -240,6 +240,31 @@ auto resolver::file_data(const std::string& name) -> std::tuple<const std::strin
|
|||||||
throw error("couldn't open gsc file '" + name + "'");
|
throw error("couldn't open gsc file '" + name + "'");
|
||||||
}
|
}
|
||||||
|
|
||||||
|
std::set<std::string_view> paths
|
||||||
|
{
|
||||||
|
};
|
||||||
|
|
||||||
|
auto resolver::fs_to_game_path(const std::filesystem::path& file) -> std::filesystem::path
|
||||||
|
{
|
||||||
|
auto result = std::filesystem::path();
|
||||||
|
auto root = false;
|
||||||
|
|
||||||
|
for (auto& entry : file)
|
||||||
|
{
|
||||||
|
if (!root && paths.contains(entry.string()))
|
||||||
|
{
|
||||||
|
result = entry;
|
||||||
|
root = true;
|
||||||
|
}
|
||||||
|
else if (paths.contains(result.string()))
|
||||||
|
{
|
||||||
|
result /= entry;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
return result.empty() ? file : result;
|
||||||
|
}
|
||||||
|
|
||||||
const std::array<std::pair<std::uint8_t, const char*>, 190> opcode_list
|
const std::array<std::pair<std::uint8_t, const char*>, 190> opcode_list
|
||||||
{{
|
{{
|
||||||
{ 0x00, "CAST_FIELD_OBJECT" },
|
{ 0x00, "CAST_FIELD_OBJECT" },
|
||||||
|
@ -34,6 +34,7 @@ public:
|
|||||||
|
|
||||||
static auto make_token(std::string_view str) -> std::string;
|
static auto make_token(std::string_view str) -> std::string;
|
||||||
static auto file_data(const std::string& name) -> std::tuple<const std::string*, char*, size_t>;
|
static auto file_data(const std::string& name) -> std::tuple<const std::string*, char*, size_t>;
|
||||||
|
static auto fs_to_game_path(const std::filesystem::path& file) -> std::filesystem::path;
|
||||||
};
|
};
|
||||||
|
|
||||||
} // namespace xsk::gsc::s4
|
} // namespace xsk::gsc::s4
|
||||||
|
@ -100,37 +100,37 @@ auto resolver::file_data(const std::string& name) -> std::tuple<const std::strin
|
|||||||
throw error("couldn't open gsc file '" + name + "'");
|
throw error("couldn't open gsc file '" + name + "'");
|
||||||
}
|
}
|
||||||
|
|
||||||
std::set<std::string> paths
|
std::set<std::string_view> paths
|
||||||
{
|
{
|
||||||
"aitype",
|
"aitype"sv,
|
||||||
"animscripts",
|
"animscripts"sv,
|
||||||
"character",
|
"character"sv,
|
||||||
"codescripts",
|
"codescripts"sv,
|
||||||
"common_scripts",
|
"common_scripts"sv,
|
||||||
"maps",
|
"maps"sv,
|
||||||
"mpbody",
|
"mpbody"sv,
|
||||||
"xmodelalias",
|
"xmodelalias"sv,
|
||||||
"animscripts/ai_subclass",
|
"animscripts/ai_subclass"sv,
|
||||||
"animscripts/aitype",
|
"animscripts/aitype"sv,
|
||||||
"animscripts/bigdog",
|
"animscripts/bigdog"sv,
|
||||||
"animscripts/traverse",
|
"animscripts/traverse"sv,
|
||||||
"animscripts/turret",
|
"animscripts/turret"sv,
|
||||||
"maps/ai_subclass",
|
"maps/ai_subclass"sv,
|
||||||
"maps/createart",
|
"maps/createart"sv,
|
||||||
"maps/createfx",
|
"maps/createfx"sv,
|
||||||
"maps/gametypes",
|
"maps/gametypes"sv,
|
||||||
"maps/mp",
|
"maps/mp"sv,
|
||||||
"maps/voice",
|
"maps/voice"sv,
|
||||||
"maps/mp/animscripts",
|
"maps/mp/animscripts"sv,
|
||||||
"maps/mp/animscripts/traverse",
|
"maps/mp/animscripts/traverse"sv,
|
||||||
"maps/mp/bots",
|
"maps/mp/bots"sv,
|
||||||
"maps/mp/createart",
|
"maps/mp/createart"sv,
|
||||||
"maps/mp/createfx",
|
"maps/mp/createfx"sv,
|
||||||
"maps/mp/gametypes",
|
"maps/mp/gametypes"sv,
|
||||||
"maps/mp/gametypes_zm",
|
"maps/mp/gametypes_zm"sv,
|
||||||
"maps/mp/killstreaks",
|
"maps/mp/killstreaks"sv,
|
||||||
"maps/mp/teams",
|
"maps/mp/teams"sv,
|
||||||
"maps/mp/zombies",
|
"maps/mp/zombies"sv,
|
||||||
};
|
};
|
||||||
|
|
||||||
auto resolver::fs_to_game_path(const std::filesystem::path& file) -> std::filesystem::path
|
auto resolver::fs_to_game_path(const std::filesystem::path& file) -> std::filesystem::path
|
||||||
|
Loading…
x
Reference in New Issue
Block a user