202 lines
8.4 KiB
C#
202 lines
8.4 KiB
C#
/*******************************************************************************
|
||
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;
|
||
|
||
namespace Pico.Platform.Models
|
||
{
|
||
|
||
/// <summary>Matchmaking admin snapshot. You will receive this after calling \ref MatchmakingService.GetAdminSnapshot.</summary>
|
||
public class MatchmakingAdminSnapshot
|
||
{
|
||
/// List of matchmaking candidates
|
||
public readonly MatchmakingAdminSnapshotCandidateList CandidateList;
|
||
/// The current matching threshold.
|
||
public readonly double MyCurrentThreshold;
|
||
|
||
public MatchmakingAdminSnapshot(IntPtr o)
|
||
{
|
||
CandidateList = new MatchmakingAdminSnapshotCandidateList(CLIB.ppf_MatchmakingAdminSnapshot_GetCandidates(o));
|
||
MyCurrentThreshold = CLIB.ppf_MatchmakingAdminSnapshot_GetMyCurrentThreshold(o);
|
||
}
|
||
}
|
||
|
||
/// <summary>Matchmaking candidate.</summary>
|
||
public class MatchmakingAdminSnapshotCandidate
|
||
{
|
||
/// Whether me and the other user can be matched.
|
||
public readonly bool CanMatch;
|
||
/// My matching threshold.
|
||
public readonly double MyTotalScore;
|
||
/// The other user's matching threshold.
|
||
public readonly double TheirCurrentThreshold;
|
||
|
||
public MatchmakingAdminSnapshotCandidate(IntPtr o)
|
||
{
|
||
CanMatch = CLIB.ppf_MatchmakingAdminSnapshotCandidate_GetCanMatch(o);
|
||
MyTotalScore = CLIB.ppf_MatchmakingAdminSnapshotCandidate_GetMyTotalScore(o);
|
||
TheirCurrentThreshold = CLIB.ppf_MatchmakingAdminSnapshotCandidate_GetTheirCurrentThreshold(o);
|
||
}
|
||
}
|
||
/// <summary>
|
||
/// Each element is \ref MatchmakingAdminSnapshotCandidate.
|
||
/// </summary>
|
||
public class MatchmakingAdminSnapshotCandidateList : MessageArray<MatchmakingAdminSnapshotCandidate>
|
||
{
|
||
/// The total number of MatchmakingAdminSnapshotCandidate in the list.
|
||
public readonly ulong TotalCount;
|
||
public MatchmakingAdminSnapshotCandidateList(IntPtr a)
|
||
{
|
||
var count = (int) CLIB.ppf_MatchmakingAdminSnapshotCandidateArray_GetSize(a);
|
||
this.Capacity = count;
|
||
TotalCount = (ulong)CLIB.ppf_MatchmakingAdminSnapshotCandidateArray_GetTotalCount(a);
|
||
for (int i = 0; i < count; i++)
|
||
{
|
||
this.Add(new MatchmakingAdminSnapshotCandidate(CLIB.ppf_MatchmakingAdminSnapshotCandidateArray_GetElement(a, (UIntPtr) i)));
|
||
}
|
||
}
|
||
}
|
||
|
||
/// <summary>Matchmaking browse result. You will receive the result after calling \ref MatchmakingService.Browse2. </summary>
|
||
public class MatchmakingBrowseResult
|
||
{
|
||
/// Matchmaking enqueue result.
|
||
public readonly MatchmakingEnqueueResult EnqueueResult;
|
||
/// The list of matchmaking rooms.
|
||
public readonly MatchmakingRoomList MatchmakingRooms;
|
||
|
||
public MatchmakingBrowseResult(IntPtr o)
|
||
{
|
||
EnqueueResult = new MatchmakingEnqueueResult(CLIB.ppf_MatchmakingBrowseResult_GetEnqueueResult(o));
|
||
MatchmakingRooms = new MatchmakingRoomList(CLIB.ppf_MatchmakingBrowseResult_GetRooms(o));
|
||
}
|
||
}
|
||
|
||
/// <summary>Matchmaking enqueue result.</summary>
|
||
public class MatchmakingEnqueueResult
|
||
{
|
||
/// Matchmaking snapshot options. Used for debugging only.
|
||
public readonly MatchmakingAdminSnapshot AdminSnapshotOptional;
|
||
/// The average waiting time.
|
||
public readonly uint AverageWait;
|
||
/// The number of matches made in the last hour.
|
||
public readonly uint MatchesInLastHourCount;
|
||
/// The expected longest waiting time.
|
||
public readonly uint MaxExpectedWait;
|
||
/// Matchmaking pool name.
|
||
public readonly string Pool;
|
||
/// Match rate.
|
||
public readonly uint RecentMatchPercentage;
|
||
|
||
|
||
public MatchmakingEnqueueResult(IntPtr o)
|
||
{
|
||
{
|
||
var pointer = CLIB.ppf_MatchmakingEnqueueResult_GetAdminSnapshot(o);
|
||
if (pointer == IntPtr.Zero)
|
||
{
|
||
AdminSnapshotOptional = null;
|
||
}
|
||
else
|
||
{
|
||
AdminSnapshotOptional = new MatchmakingAdminSnapshot(pointer);
|
||
}
|
||
}
|
||
|
||
AverageWait = CLIB.ppf_MatchmakingEnqueueResult_GetAverageWait(o);
|
||
MatchesInLastHourCount = CLIB.ppf_MatchmakingEnqueueResult_GetMatchesInLastHourCount(o);
|
||
MaxExpectedWait = CLIB.ppf_MatchmakingEnqueueResult_GetMaxExpectedWait(o);
|
||
Pool = CLIB.ppf_MatchmakingEnqueueResult_GetPool(o);
|
||
RecentMatchPercentage = CLIB.ppf_MatchmakingEnqueueResult_GetRecentMatchPercentage(o);
|
||
}
|
||
}
|
||
|
||
/// <summary>Matchmaking enqueue result and room info. You will receive this after calling \ref MatchmakingService.CreateAndEnqueueRoom2.</summary>
|
||
public class MatchmakingEnqueueResultAndRoom
|
||
{
|
||
/// Matchmaking enqueue result.
|
||
public readonly MatchmakingEnqueueResult MatchmakingEnqueueResult;
|
||
/// Matchmaking room info.
|
||
public readonly Room Room;
|
||
|
||
public MatchmakingEnqueueResultAndRoom(IntPtr o)
|
||
{
|
||
MatchmakingEnqueueResult = new MatchmakingEnqueueResult(CLIB.ppf_MatchmakingEnqueueResultAndRoom_GetMatchmakingEnqueueResult(o));
|
||
Room = new Room(CLIB.ppf_MatchmakingEnqueueResultAndRoom_GetRoom(o));
|
||
}
|
||
}
|
||
|
||
/// <summary>Matchmaking room.</summary>
|
||
public class MatchmakingRoom
|
||
{
|
||
/// Room info.
|
||
public readonly Models.Room Room;
|
||
/// Currently, always `0`.
|
||
public readonly uint PingTime;
|
||
/// Currently, always `false`.
|
||
public readonly bool HasPingTime;
|
||
|
||
|
||
public MatchmakingRoom(IntPtr o)
|
||
{
|
||
this.PingTime = CLIB.ppf_MatchmakingRoom_GetPingTime(o);
|
||
this.Room = new Models.Room(CLIB.ppf_MatchmakingRoom_GetRoom(o));
|
||
this.HasPingTime = CLIB.ppf_MatchmakingRoom_HasPingTime(o);
|
||
}
|
||
}
|
||
/**
|
||
* Each element is \ref MatchmakingRoom
|
||
*/
|
||
public class MatchmakingRoomList : MessageArray<MatchmakingRoom>
|
||
{
|
||
/// The total number.
|
||
public readonly int TotalCount;
|
||
public MatchmakingRoomList(IntPtr a)
|
||
{
|
||
TotalCount = CLIB.ppf_MatchmakingRoomArray_GetTotalCount(a);
|
||
int count = (int) CLIB.ppf_MatchmakingRoomArray_GetSize(a);
|
||
this.Capacity = count;
|
||
for (uint i = 0; i < count; i++)
|
||
{
|
||
this.Add(new MatchmakingRoom(CLIB.ppf_MatchmakingRoomArray_GetElement(a, (UIntPtr) i)));
|
||
}
|
||
}
|
||
}
|
||
|
||
/// <summary>Matchmaking statistics. Will receive this after calling \ref MatchmakingService.GetStats.</summary>
|
||
public class MatchmakingStats
|
||
{
|
||
/// The current user's number of draws.
|
||
public readonly uint DrawCount;
|
||
/// The current user's number of losses.
|
||
public readonly uint LossCount;
|
||
/// The current user's skill level for the current matchmaking pool.
|
||
public readonly uint SkillLevel;
|
||
/// The average of all skill levels for the current matchmaking pool.
|
||
public readonly double SkillMean;
|
||
/// The standard deviation of all skill levels for the current matchmaking pool
|
||
public readonly double SkillStandardDeviation;
|
||
/// The current user's number of wins.
|
||
public readonly uint WinCount;
|
||
|
||
|
||
public MatchmakingStats(IntPtr o)
|
||
{
|
||
DrawCount = CLIB.ppf_MatchmakingStats_GetDrawCount(o);
|
||
LossCount = CLIB.ppf_MatchmakingStats_GetLossCount(o);
|
||
SkillLevel = CLIB.ppf_MatchmakingStats_GetSkillLevel(o);
|
||
SkillMean = CLIB.ppf_MatchmakingStats_GetSkillMean(o);
|
||
SkillStandardDeviation = CLIB.ppf_MatchmakingStats_GetSkillStandardDeviation(o);
|
||
WinCount = CLIB.ppf_MatchmakingStats_GetWinCount(o);
|
||
}
|
||
}
|
||
} |