VoltMod
C++23 framework for CS2 server plugins
Loading...
Searching...
No Matches
PlayerScreens.cpp
Go to the documentation of this file.
4#include <utility>
5
6namespace VoltMod
7{
8
9PlayerScreens::PlayerScreens(ScreenManager& screens, std::string layout) : _screens(screens), _layout(std::move(layout))
10{}
11
13{
14 if (!IsValidSlot(slot))
15 {
16 return _empty;
17 }
18
19 std::optional<Screen>& screen = _created[slot];
20 if (!screen)
21 {
22 auto created = _screens.ForPlayer(_layout, slot);
23 // Kept empty rather than retried: what ForPlayer refuses for lasts the whole load.
24 if (!created)
25 {
26 Log::Warn("Screen '{}': no player screen for slot {} ({}).", _layout, slot, created.error().Detail);
27 }
28 screen = created ? std::move(*created) : Screen();
29 }
30 return *screen;
31}
32
34{
35 if (!IsValidSlot(slot) || !_created[slot])
36 {
37 return nullptr;
38 }
39 return &*_created[slot];
40}
41
42} // namespace VoltMod
Screen & For(int slot)
Screen * Find(int slot)
PlayerScreens(ScreenManager &screens, std::string layout)
Create Screen objects and report their button presses.
Result< Screen > ForPlayer(std::string_view layout, int slot)
A spawned Panorama layout created by ScreenManager.
Definition Screen.hpp:23
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
constexpr bool IsValidSlot(int slot)
Definition Slot.hpp:13