Pico Unreal Platform SDK
OnlineAchievementsInterfacePico.h
1// // Copyright Epic Games, Inc. All Rights Reserved.
2//
3// #pragma once
4//
5// #include "Interfaces/OnlineAchievementsInterface.h"
6// #include "OnlineIdentityPico.h"
7// #include "OnlineSubsystemPicoPackage.h"
8//
9// /**
10// * Enum that signifies how an achievement is to be unlocked
11// */
12// enum class EAchievementType {
13// Unknown = 0,
14// Simple,
15// Bitfield,
16// Count
17// };
18//
19// /**
20// * FOnlineAchievementDescPico - Interface class for accessing the oculus achievement description information
21// */
22// struct FOnlineAchievementDescPico : FOnlineAchievementDesc
23// {
24// /** The way this achievement is unlocked */
25// EAchievementType Type;
26//
27// /** The value that needs to be reached for "Count" Type achievements to unlock */
28// uint64 Target;
29//
30// /** How many fields needs to be set for "Bitfield" Type achievements to unlock */
31// uint32 BitfieldLength;
32//
33// };
34//
35// /**
36// * FOnlineAchievementPico - Interface class for accessing the oculus achievement information
37// */
38// struct FOnlineAchievementPico : FOnlineAchievement
39// {
40// FOnlineAchievementPico(const ppfAchievementProgressHandle& AchievementProgress) :
41// Count(ppf_AchievementProgress_GetCount(AchievementProgress)),
42// Bitfield(ppf_AchievementProgress_GetBitfield(AchievementProgress)),
43// bIsUnlocked(ppf_AchievementProgress_GetIsUnlocked(AchievementProgress))
44// {
45// FString AchievementName(ppf_AchievementProgress_GetName(AchievementProgress));
46// Id = AchievementName;
47// }
48//
49// FOnlineAchievementPico(const FOnlineAchievementDescPico& AchievementDesc) :
50// Count(0),
51// bIsUnlocked(false)
52// {
53// Id = AchievementDesc.Title.ToString();
54// Progress = 0;
55// if (AchievementDesc.Type == EAchievementType::Bitfield)
56// {
57// Bitfield = TEXT("");
58// for (uint32 i = 0; i < AchievementDesc.BitfieldLength; ++i)
59// {
60// Bitfield.AppendChar('0');
61// }
62// }
63// }
64//
65// /** The player's current progress toward a targeted numeric goal */
66// uint64 Count;
67//
68// /** The player's current progress toward a set of goals that doesn't have to be completed in order */
69// FString Bitfield;
70//
71// /** Whether or not this achievement was unlocked */
72// bool bIsUnlocked;
73//
74// };
75//
76// /**
77// * IOnlineAchievements - Interface class for achievements
78// */
79// class FOnlineAchievementsPico : public IOnlineAchievements
80// {
81// private:
82//
83// /** Reference to the owning subsystem */
84// FOnlineSubsystemPico& PicoSubsystem;
85//
86// /** Mapping of players to their achievements */
87// TMap<FUniqueNetIdPico, TArray<FOnlineAchievement>> PlayerAchievements;
88//
89// /** Cached achievements (not player-specific) */
90// TMap<FString, FOnlineAchievementDescPico> AchievementDescriptions;
91//
92// void GetWriteAchievementCountValue(FVariantData VariantData, uint64& OutData) const;
93// void GetWriteAchievementBitfieldValue(FVariantData VariantData, FString& OutData, uint32 BitfieldLength) const;
94// double CalculatePlayerAchievementProgress(const FOnlineAchievementPico Achievement);
95//
96// public:
97//
98// /**
99// * Constructor
100// *
101// * @param InSubsystem - A reference to the owning subsystem
102// */
103// FOnlineAchievementsPico(FOnlineSubsystemPico& InSubsystem);
104//
105// /**
106// * Default destructor
107// */
108// virtual ~FOnlineAchievementsPico();
109//
110// // Begin IOnlineAchievements interface
111// virtual void WriteAchievements(const FUniqueNetId& PlayerId, FOnlineAchievementsWriteRef& WriteObject, const FOnAchievementsWrittenDelegate& Delegate = FOnAchievementsWrittenDelegate()) override;
112// virtual void QueryAchievements(const FUniqueNetId& PlayerId, const FOnQueryAchievementsCompleteDelegate& Delegate = FOnQueryAchievementsCompleteDelegate()) override;
113// virtual void QueryAchievementDescriptions(const FUniqueNetId& PlayerId, const FOnQueryAchievementsCompleteDelegate& Delegate = FOnQueryAchievementsCompleteDelegate()) override;
114// virtual EOnlineCachedResult::Type GetCachedAchievement(const FUniqueNetId& PlayerId, const FString& AchievementId, FOnlineAchievement& OutAchievement) override;
115// virtual EOnlineCachedResult::Type GetCachedAchievements(const FUniqueNetId& PlayerId, TArray<FOnlineAchievement> & OutAchievements) override;
116// virtual EOnlineCachedResult::Type GetCachedAchievementDescription(const FString& AchievementId, FOnlineAchievementDesc& OutAchievementDesc) override;
117// #if !UE_BUILD_SHIPPING
118// virtual bool ResetAchievements(const FUniqueNetId& PlayerId) override;
119// #endif // !UE_BUILD_SHIPPING
120// // End IOnlineAchievements interface
121// };