| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268 |
- /*******************************************************************************
- 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 UnityEngine;
- namespace Pico.Platform.Models
- {
- /// <summary>Challenge setting options.</summary>
- public class ChallengeOptions
- {
- /// For creating challenge options
- public ChallengeOptions()
- {
- Handle = CLIB.ppf_ChallengeOptions_Create();
- }
- /// Set the end date. Currently, not used.
- public void SetEndDate(DateTime value)
- {
- CLIB.ppf_ChallengeOptions_SetEndDate(Handle, Convert.ToUInt64(TimeUtil.DateTimeToSeconds(value)));
- }
- /// Set whether to get active challenges.
- public void SetIncludeActiveChallenges(bool value)
- {
- CLIB.ppf_ChallengeOptions_SetIncludeActiveChallenges(Handle, value);
- }
- /// Set whether to get future challenges whose start dates are latter than the current time.
- public void SetIncludeFutureChallenges(bool value)
- {
- CLIB.ppf_ChallengeOptions_SetIncludeFutureChallenges(Handle, value);
- }
- /// Set whether to get past challenges whose end dates are earlier than the current time.
- public void SetIncludePastChallenges(bool value)
- {
- CLIB.ppf_ChallengeOptions_SetIncludePastChallenges(Handle, value);
- }
- /// (Optional) Set the name of the leaderboard that the challenges associated with.
- public void SetLeaderboardName(string value)
- {
- CLIB.ppf_ChallengeOptions_SetLeaderboardName(Handle, value);
- }
- /// Set the start date. Currently, not used.
- public void SetStartDate(DateTime value)
- {
- CLIB.ppf_ChallengeOptions_SetStartDate(Handle, Convert.ToUInt64(TimeUtil.DateTimeToSeconds(value)));
- }
- /// Set the challenge title. Currently, not used.
- public void SetTitle(string value)
- {
- CLIB.ppf_ChallengeOptions_SetTitle(Handle, value);
- }
- /// Set the filter for quering specified challenges.
- public void SetViewerFilter(ChallengeViewerFilter value)
- {
- CLIB.ppf_ChallengeOptions_SetViewerFilter(Handle, value);
- }
- /// Set to get the challenges of a specific visibility type.
- public void SetVisibility(ChallengeVisibility value)
- {
- CLIB.ppf_ChallengeOptions_SetVisibility(Handle, value);
- }
- public static explicit operator IntPtr(ChallengeOptions options)
- {
- return options != null ? options.Handle : IntPtr.Zero;
- }
- ~ChallengeOptions()
- {
- CLIB.ppf_ChallengeOptions_Destroy(Handle);
- }
- IntPtr Handle;
- public IntPtr GetHandle()
- {
- return Handle;
- }
- }
- /// <summary>Challenge info.</summary>
- public class Challenge
- {
- /// The creator of the challenge.
- public readonly ChallengeCreationType CreationType;
- /// Challenge ID
- public readonly UInt64 ID;
- /// Challenge's start date.
- public readonly DateTime StartDate;
- /// Challenge's end date.
- public readonly DateTime EndDate;
- /// Participants of the challenge, which might be null. Should check if it is null before use.
- public readonly UserList ParticipantsOptional;
- /// Users invited to the challenge, which might be null. Should check if it is null before use.
- public readonly UserList InvitedUsersOptional;
- /// The info about the leaderboard that the challenge associated with.
- public readonly Leaderboard Leaderboard;
- /// Challenge's title.
- public readonly string Title;
- /// Challenge's visibility.
- public readonly ChallengeVisibility Visibility;
- public Challenge(IntPtr o)
- {
- CreationType = CLIB.ppf_Challenge_GetCreationType(o);
- try
- {
- EndDate = TimeUtil.SecondsToDateTime((long) CLIB.ppf_Challenge_GetEndDate(o));
- }
- catch (Exception e)
- {
- Debug.LogWarning($"Challenge Set EndDate: ppf_Challenge_GetEndDate(o) = {CLIB.ppf_Challenge_GetEndDate(o)}, Exception: {e}");
- }
- ID = CLIB.ppf_Challenge_GetID(o);
- {
- var pointer = CLIB.ppf_Challenge_GetInvitedUsers(o);
- if (pointer == IntPtr.Zero)
- {
- InvitedUsersOptional = null;
- }
- else
- {
- InvitedUsersOptional = new UserList(pointer);
- }
- }
- Leaderboard = new Leaderboard(CLIB.ppf_Challenge_GetLeaderboard(o));
- {
- var pointer = CLIB.ppf_Challenge_GetParticipants(o);
- if (pointer == IntPtr.Zero)
- {
- ParticipantsOptional = null;
- }
- else
- {
- ParticipantsOptional = new UserList(pointer);
- }
- }
- try
- {
- StartDate = TimeUtil.SecondsToDateTime((long) CLIB.ppf_Challenge_GetStartDate(o));
- }
- catch (Exception e)
- {
- Debug.LogWarning($"Challenge Set StartDate: ppf_Challenge_GetStartDate(o) = {CLIB.ppf_Challenge_GetStartDate(o)}, Exception: {e}");
- }
- Title = CLIB.ppf_Challenge_GetTitle(o);
- Visibility = CLIB.ppf_Challenge_GetVisibility(o);
- }
- }
- /// <summary>Challenge list. Each Element is \ref Challenge.</summary>
- public class ChallengeList : MessageArray<Challenge>
- {
- public ChallengeList(IntPtr a)
- {
- TotalCount = CLIB.ppf_ChallengeArray_GetTotalCount(a);
- NextPageParam = CLIB.ppf_ChallengeArray_HasNextPage(a) ? "true" : string.Empty;
- PreviousPageParam = CLIB.ppf_ChallengeArray_HasPreviousPage(a) ? "true" : String.Empty;
- int count = (int) CLIB.ppf_ChallengeArray_GetSize(a);
- this.Capacity = count;
- for (uint i = 0; i < count; i++)
- {
- this.Add(new Challenge(CLIB.ppf_ChallengeArray_GetElement(a, (UIntPtr) i)));
- }
- }
- /// The total number of challenges in the list.
- public readonly ulong TotalCount;
- }
- /// <summary>Challenge entry info.</summary>
- public class ChallengeEntry
- {
- /// The entry's display score.
- public readonly string DisplayScore;
- /// The entry's additional info, no more than 2KB.
- public readonly byte[] ExtraData;
- /// The ID of the challenge that the entry belongs to.
- public readonly UInt64 ID;
- /// The rank of the entry.
- public readonly int Rank;
- /// The score of the entry.
- public readonly long Score;
- /// The time when the entry was written.
- public readonly DateTime Timestamp;
- /// The user the entry belongs to.
- public readonly User User;
- public ChallengeEntry(IntPtr o)
- {
- DisplayScore = CLIB.ppf_ChallengeEntry_GetDisplayScore(o);
- var extraDataPtr = CLIB.ppf_ChallengeEntry_GetExtraData(o);
- var extraDataSize = CLIB.ppf_ChallengeEntry_GetExtraDataLength(o);
- ExtraData = MarshalUtil.ByteArrayFromNative(extraDataPtr, extraDataSize);
- ID = CLIB.ppf_ChallengeEntry_GetID(o);
- Rank = CLIB.ppf_ChallengeEntry_GetRank(o);
- Score = CLIB.ppf_ChallengeEntry_GetScore(o);
- try
- {
- Timestamp = TimeUtil.SecondsToDateTime((long) CLIB.ppf_ChallengeEntry_GetTimestamp(o));
- }
- catch (Exception e)
- {
- Debug.LogWarning($"ChallengeEntry Set Timestamp: ppf_ChallengeEntry_GetTimestamp(o) = {CLIB.ppf_ChallengeEntry_GetTimestamp(o)}, Exception: {e}");
- }
- User = new User(CLIB.ppf_ChallengeEntry_GetUser(o));
- }
- }
- /// <summary>Challenge entry list. Each element is \ref ChallengeEntry.</summary>
- public class ChallengeEntryList : MessageArray<ChallengeEntry>
- {
- public ChallengeEntryList(IntPtr a)
- {
- TotalCount = CLIB.ppf_ChallengeEntryArray_GetTotalCount(a);
- NextPageParam = CLIB.ppf_ChallengeEntryArray_HasNextPage(a) ? "true" : string.Empty;
- PreviousPageParam = CLIB.ppf_ChallengeEntryArray_HasPreviousPage(a) ? "true" : string.Empty;
- int count = (int) CLIB.ppf_ChallengeEntryArray_GetSize(a);
- this.Capacity = count;
- for (uint i = 0; i < count; i++)
- {
- this.Add(new ChallengeEntry(CLIB.ppf_ChallengeEntryArray_GetElement(a, (UIntPtr) i)));
- }
- }
- /// The total number of entries in the list.
- public readonly ulong TotalCount;
- }
- }
|