| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182 |
- /*******************************************************************************
- Copyright © 2015-2022 PICO Technology Co., Ltd.All rights reserved.
- NOTICE:All information contained herein is, and remains the property of
- PICO Technology Co., Ltd. The intellectual and technical concepts
- contained herein are proprietary to PICO Technology Co., Ltd. and may be
- covered by patents, patents in process, and are protected by trade secret or
- copyright law. Dissemination of this information or reproduction of this
- material is strictly forbidden unless prior written permission is obtained from
- PICO Technology Co., Ltd.
- *******************************************************************************/
- using System;
- using System.Runtime.InteropServices;
- namespace Pico.Platform.Models
- {
- /// <summary>Achievement update info.</summary>
- public class AchievementUpdate
- {
- /// Whether the achievement is unlocked in this time.
- public readonly bool JustUnlocked;
- /// Achievement name.
- public readonly string Name;
- public AchievementUpdate(IntPtr o)
- {
- JustUnlocked = CLIB.ppf_AchievementUpdate_GetJustUnlocked(o);
- Name = CLIB.ppf_AchievementUpdate_GetName(o);
- }
- }
- /// <summary>Achievement info.</summary>
- public class AchievementDefinition
- {
- /// Achievement type.
- public readonly AchievementType Type;
- /// Achievement name.
- public readonly string Name;
- /// The target to reach for unlocking a bitfield achievement.
- public readonly uint BitfieldLength;
- /// The target to reach for unlocking a count achievement.
- public readonly long Target;
- /// Achievement description.
- public readonly string Description;
- /// Achievement title.
- public readonly string Title;
- /// Whether the achievement is archieved.
- public readonly bool IsArchived;
- /// Whether the achievement is a secret achievement. If so, it can be visible after being unlocked only.
- public readonly bool IsSecret;
- /// Achievement ID.
- public readonly ulong ID;
- /// The description shown to users when unlocking the achievement.
- public readonly string UnlockedDescription;
- /// The write policy of the achievement.
- public readonly AchievementWritePolicy WritePolicy;
- /// The URL of the image displayed when the achievement is still locked.
- public readonly string LockedImageURL;
- /// The URL of the image displayed when the achievement is unlocked.
- public readonly string UnlockedImageURL;
- public AchievementDefinition(IntPtr o)
- {
- Type = CLIB.ppf_AchievementDefinition_GetType(o);
- Name = CLIB.ppf_AchievementDefinition_GetName(o);
- BitfieldLength = CLIB.ppf_AchievementDefinition_GetBitfieldLength(o);
- Target = CLIB.ppf_AchievementDefinition_GetTarget(o);
- Description = CLIB.ppf_AchievementDefinition_GetDescription(o);
- Title = CLIB.ppf_AchievementDefinition_GetTitle(o);
- IsArchived = CLIB.ppf_AchievementDefinition_IsArchived(o);
- IsSecret = CLIB.ppf_AchievementDefinition_IsSecret(o);
- ID = CLIB.ppf_AchievementDefinition_GetID(o);
- UnlockedDescription = CLIB.ppf_AchievementDefinition_GetUnlockedDescription(o);
- WritePolicy = CLIB.ppf_AchievementDefinition_GetWritePolicy(o);
- LockedImageURL = CLIB.ppf_AchievementDefinition_GetLockedImageURL(o);
- UnlockedImageURL = CLIB.ppf_AchievementDefinition_GetUnlockedImageURL(o);
- }
- }
- /// <summary>Achievement definition list.
- /// Each element is \ref AchievementDefinition.
- /// </summary>
- public class AchievementDefinitionList : MessageArray<AchievementDefinition>
- {
- /// The total number of `AchievementDefinition`.
- public readonly ulong TotalSize;
- public AchievementDefinitionList(IntPtr a)
- {
- TotalSize = (ulong) CLIB.ppf_AchievementDefinitionArray_GetTotalSize(a);
- var count = (int) CLIB.ppf_AchievementDefinitionArray_GetSize(a);
- this.Capacity = count;
- for (uint i = 0; i < count; i++)
- {
- this.Add(new AchievementDefinition(CLIB.ppf_AchievementDefinitionArray_GetElement(a, (UIntPtr) i)));
- }
- NextPageParam = CLIB.ppf_AchievementDefinitionArray_HasNextPage(a) ? "true" : string.Empty;
- }
- }
- /// <summary>Achievement progress info. </summary>
- public class AchievementProgress
- {
- /// Achievement ID.
- public readonly ulong ID;
- /// The progress of a bitfield achievement. `1` represents a completed bit.
- public readonly string Bitfield;
- /// The progress of a count achievement.
- public readonly long Count;
- /// Whether the achievement is unlocked
- public readonly bool IsUnlocked;
- /// Achievement name.
- public readonly string Name;
- /// The time when the achievement is unlocked.
- public readonly DateTime UnlockTime;
- /// Additional info, no more than 2KB.
- public readonly byte[] ExtraData;
- public AchievementProgress(IntPtr o)
- {
- ID = CLIB.ppf_AchievementProgress_GetID(o);
- Bitfield = CLIB.ppf_AchievementProgress_GetBitfield(o);
- Count = CLIB.ppf_AchievementProgress_GetCount(o);
- IsUnlocked = CLIB.ppf_AchievementProgress_GetIsUnlocked(o);
- Name = CLIB.ppf_AchievementProgress_GetName(o);
- uint size = CLIB.ppf_AchievementProgress_GetExtraDataLength(o);
- ExtraData = new byte[size];
- Marshal.Copy(CLIB.ppf_AchievementProgress_GetExtraData(o), ExtraData, 0, (int) size);
- var unlockTime = CLIB.ppf_AchievementProgress_GetUnlockTime(o);
- if (unlockTime != 0)
- {
- UnlockTime = TimeUtil.SecondsToDateTime((long) unlockTime);
- }
- }
- }
- /// <summary>The list of achievements with their progress info.
- /// Each element is \ref AchievementProgress.
- /// </summary>
- public class AchievementProgressList : MessageArray<AchievementProgress>
- {
- /// The total number of achievements with progress info.
- public readonly ulong TotalSize;
- public AchievementProgressList(IntPtr a)
- {
- TotalSize = (ulong) CLIB.ppf_AchievementProgressArray_GetTotalSize(a);
- var count = (int) CLIB.ppf_AchievementProgressArray_GetSize(a);
- this.Capacity = count;
- for (uint i = 0; i < count; i++)
- {
- this.Add(new AchievementProgress(CLIB.ppf_AchievementProgressArray_GetElement(a, (UIntPtr) i)));
- }
- NextPageParam = CLIB.ppf_AchievementProgressArray_HasNextPage(a) ? "true" : string.Empty;
- }
- }
- }
|