MGL(Win32)
読み取り中…
検索中…
一致する文字列を見つけられません
mgl_achievement_server.h
[詳解]
1// SPDX-License-Identifier: Zlib
2/* ------------------------------------------------------------------------- */
9/* ------------------------------------------------------------------------- */
10
11#ifndef INCGUARD_MGL_ACHIEVEMENT_SERVER_H_1631071602
12#define INCGUARD_MGL_ACHIEVEMENT_SERVER_H_1631071602
13
16#include <mgl/event/mgl_event.h>
19
20namespace MGL::Achievement
21{
23class Server final : public SharedSingleton<Server>
24{
25public:
27 enum class State : uint8_t
28 {
30 Idle,
31 Fetch,
32 Report,
33 };
34
35 static STL::unique_ptr<Server> &GetInstanceRef() noexcept;
36
37 Server() noexcept;
38
39 bool Initialize(STL::unique_ptr<ServerDelegate> &delegate) noexcept;
40
41 bool SetValue(Identifier identifier, uint32_t value) noexcept;
42 bool SetProgressRate(Identifier identifier, float progressRate) noexcept;
43 bool SetAchieved(Identifier identifier, bool isAchieved) noexcept;
44
45 [[nodiscard]] uint32_t GetValue(Identifier identifier) const noexcept;
46 [[nodiscard]] float GetProgressRate(Identifier identifier) const noexcept;
47 [[nodiscard]] bool IsAchieved(Identifier identifier) const noexcept;
48
49 bool Clear() noexcept;
50
51 /* ------------------------------------------------------------------------- */
57 /* ------------------------------------------------------------------------- */
58 [[nodiscard]] constexpr bool IsProcessing() const noexcept
59 {
60 return (_state != State::Idle);
61 }
62
63private:
64 static void OnPreFrameUpdate(void *callbackArg, void *notifyArg) noexcept;
65
66 bool ApplyTemporaryData(const TemporaryData &data) noexcept;
67 bool ApplyValue(Identifier identifier, uint32_t value) noexcept;
68 bool ApplyProgressRate(Identifier identifier, float progressRate) noexcept;
69 bool ApplyAchieved(Identifier identifier, bool isAchieved) noexcept;
70 static void UpdateAchievementData(AchievementData *data) noexcept;
71
74 STL::vector<TemporaryData> _temporaryDataArray;
75
76 Event::Handle _eventPreFrameUpdate;
77};
78} // namespace MGL::Achievement
79
80#endif // INCGUARD_MGL_ACHIEVEMENT_SERVER_H_1631071602
81
82// vim: et ts=4 sw=4 sts=4
MGL 実績サーバデリゲートクラス
Definition mgl_achievement_server_delegate.h:20
MGL 実績サーバクラス
Definition mgl_achievement_server.h:24
bool SetValue(Identifier identifier, uint32_t value) noexcept
値を設定
Definition mgl_achievement_server.cc:76
State
ステート
Definition mgl_achievement_server.h:28
@ Report
実績データを送信中
@ Fetch
実績データを取得中
bool SetAchieved(Identifier identifier, bool isAchieved) noexcept
達成状態を設定
Definition mgl_achievement_server.cc:120
float GetProgressRate(Identifier identifier) const noexcept
実績の進捗率を取得
Definition mgl_achievement_server.cc:140
static STL::unique_ptr< Server > & GetInstanceRef() noexcept
インスタンスの取得
Definition mgl_achievement_server.cc:28
uint32_t GetValue(Identifier identifier) const noexcept
実績の達成状況を整数値で取得
Definition mgl_achievement_server.cc:179
bool SetProgressRate(Identifier identifier, float progressRate) noexcept
進捗率を設定
Definition mgl_achievement_server.cc:98
bool IsAchieved(Identifier identifier) const noexcept
実績の達成状況を取得
Definition mgl_achievement_server.cc:160
bool Clear() noexcept
実績のクリア
Definition mgl_achievement_server.cc:198
constexpr bool IsProcessing() const noexcept
処理中かどうかを取得
Definition mgl_achievement_server.h:58
イベントハンドルクラス
Definition mgl_event_handle.h:21
シングルトンテンプレート(共有ライブラリ用)
Definition mgl_singleton.h:44
uint32_t Identifier
実績用の識別子の型
Definition mgl_achievement_defs.h:26
MGL 実績サーバデリゲート
MGL イベント
MGL シングルトンクラス
MGL STLコンテナの代替
std::vector< T, Allocator< T > > vector
std::vectorの代替
Definition mgl_stl_containers.h:51
MGL STLのメモリ関連の代替
std::unique_ptr< T, Deleter > unique_ptr
MGLのアロケータを利用するユニークポインタ
Definition mgl_stl_memory.h:247
実績データ
Definition mgl_achievement_defs.h:41
実績用のテンポラリデータ
Definition mgl_achievement_defs.h:66