ChatPlexSDK-BS 1.0.1-v6.2.0
C++ ChatPlex BeatSaber SDK
Loading...
Searching...
No Matches
MapDetail.hpp
1#pragma once
2
3#include "../../../CP_SDK/Misc/Time.hpp"
4#include "../../../CP_SDK/Utils/Json.hpp"
5#include "MapDetailMetadata.hpp"
6#include "MapStats.hpp"
7#include "MapVersion.hpp"
8#include "UserDetail.hpp"
9
10#include <System/DateTime.hpp>
11
13
14 namespace _u
15 {
16 using namespace System;
17 }
18 namespace _v
19 {
20 using namespace CP_SDK::Misc;
21 using namespace CP_SDK::Utils;
22 }
23
24 struct MapDetail : public std::enable_shared_from_this<MapDetail>
25 {
26 MapDetail() = default;
27 CP_SDK_NO_COPYMOVE_CTORS(MapDetail);
28
29 using Ptr = std::shared_ptr<MapDetail>;
30
31 std::u16string id;
32 std::u16string name;
33 std::u16string description;
34 std::optional<UserDetail> uploader;
35 std::optional<MapDetailMetadata> metadata;
36 std::optional<MapStats> stats;
37 std::u16string uploaded;
38 bool automapper = false;
39 bool ranked = false;
40 bool qualified = false;
41 std::vector<MapVersion::Ptr> versions;
42
43 /* NOT SERIALIZED */
44 bool Partial = true;
45 std::u16string PartialHash;
46
49 static MapDetail::Ptr PartialFromKey(std::u16string_view p_Key);
52 static MapDetail::Ptr PartialFromHash(std::u16string_view p_Hash);
56
58 bool IsValid();
60 MapVersion::Ptr SelectMapVersion();
61
63 _u::DateTime GetUploadTime();
64
65 CP_SDK_JSON_OPERATORS_INLINE({
66 CP_SDK_JSON_SERIALIZE_STRING(id);
67 CP_SDK_JSON_SERIALIZE_STRING(name);
68 CP_SDK_JSON_SERIALIZE_STRING(description);
69 CP_SDK_JSON_SERIALIZE_OBJECT(uploader);
70 CP_SDK_JSON_SERIALIZE_OBJECT(metadata);
71 CP_SDK_JSON_SERIALIZE_OBJECT(stats);
72 CP_SDK_JSON_SERIALIZE_STRING(uploaded);
73 CP_SDK_JSON_SERIALIZE_BOOL(automapper);
74 CP_SDK_JSON_SERIALIZE_BOOL(ranked);
75 CP_SDK_JSON_SERIALIZE_BOOL(qualified);
76 CP_SDK_JSON_SERIALIZE_OBJECT_ARRAY(versions);
77 },
78 {
79 CP_SDK_JSON_UNSERIALIZE_STRING(id);
80 CP_SDK_JSON_UNSERIALIZE_STRING(name);
81 CP_SDK_JSON_UNSERIALIZE_STRING(description);
82 CP_SDK_JSON_UNSERIALIZE_OBJECT(uploader);
83 CP_SDK_JSON_UNSERIALIZE_OBJECT(metadata);
84 CP_SDK_JSON_UNSERIALIZE_OBJECT(stats);
85 CP_SDK_JSON_UNSERIALIZE_STRING(uploaded);
86 CP_SDK_JSON_UNSERIALIZE_BOOL(automapper);
87 CP_SDK_JSON_UNSERIALIZE_BOOL(ranked);
88 CP_SDK_JSON_UNSERIALIZE_BOOL(qualified);
89 CP_SDK_JSON_UNSERIALIZE_OBJECT_ARRAY(versions);
90 });
91 };
92
93}
Various platform utils like Delegate/Action/Function/Event system.
Definition Delegate.hpp:8
BeatMaps aka BeatSaver models.
Definition MapDetail.hpp:12
MapVersion::Ptr SelectMapVersion()
Select default valid version.
static MapDetail::Ptr PartialFromHash(std::u16string_view p_Hash)
Partial BeatMap from ID.
bool IsValid()
Is the BeatMap valid.
_u::DateTime GetUploadTime()
Get upload time.
static MapDetail::Ptr PartialFromKey(std::u16string_view p_Key)
Partial BeatMap from ID.
void Populate(_v::CActionRef< bool > p_Callback)
Populate partial BeatMap.