VoltMod
C++23 framework for CS2 server plugins
Loading...
Searching...
No Matches
Map.cpp
Go to the documentation of this file.
5#include <eiface.h>
6#include <format>
7#include <globalvars.h>
8#include <string>
9
10namespace VoltMod
11{
12
14
15bool Map::IsValid(std::string_view name) const
16{
17 if (name.empty())
18 {
19 return false;
20 }
21
22 auto* engine = _interfaces.Engine;
23 if (!engine)
24 {
25 Log::Warn("Map::IsValid: IVEngineServer2 not available.");
26 return false;
27 }
28
29 return engine->IsMapValid(std::string(name).c_str()) != 0;
30}
31
32bool Map::ChangeLevel(std::string_view name)
33{
34 if (!IsValid(name))
35 {
36 Log::Warn("Map::ChangeLevel: '{}' is not a loadable map.", name);
37 return false;
38 }
39
40 // Landmark is used only by save-game transitions.
41 _interfaces.Engine->ChangeLevel(std::string(name).c_str(), nullptr);
42 return true;
43}
44
46{
47 if (workshopId == 0)
48 {
49 Log::Warn("Map::ChangeToWorkshop: workshop id is 0.");
50 return false;
51 }
52
53 _conVars.ExecuteServerCommand(std::format("host_workshop_map {}", workshopId));
54 return true;
55}
56
57std::string Map::Current() const
58{
59 if (!_current.empty())
60 {
61 return _current;
62 }
63
64 auto* globals = _interfaces.Engine ? _interfaces.Engine->GetServerGlobals() : nullptr;
65 const char* name = globals ? globals->mapname.ToCStr() : nullptr;
66 return name ? std::string(name) : std::string{};
67}
68
69} // namespace VoltMod
void ExecuteServerCommand(std::string_view command)
Definition ConVars.cpp:62
std::string Current() const
Definition Map.cpp:57
bool IsValid(std::string_view name) const
Definition Map.cpp:15
bool ChangeToWorkshop(uint64_t workshopId)
Definition Map.cpp:45
Map(Interfaces &interfaces, ConVars &conVars)
Definition Map.cpp:13
bool ChangeLevel(std::string_view name)
Definition Map.cpp:32
void Warn(std::format_string< Args... > fmt, Args &&... args)
Definition Log.hpp:88
static std::string ReadFile(const std::filesystem::path &path)
Definition Loader.cpp:56
Centralized holder for all HL2SDK interface pointers.
IVEngineServer2 * Engine