Ejemplo n.º 1
0
        internal string RematchId()
        {
            if (!HasRematchId())
            {
                return(null);
            }

            return(PInvokeUtilities.OutParamsToString(
                       (out_string, size) => C.TurnBasedMatch_RematchId(SelfPtr(), out_string, size)));
        }
 internal IEnumerable <MultiplayerInvitation> Invitations()
 {
     return(PInvokeUtilities.ToEnumerable(
                C.RealTimeMultiplayerManager_FetchInvitationsResponse_GetInvitations_Length(
                    SelfPtr()),
                index => new MultiplayerInvitation(
                    C.RealTimeMultiplayerManager_FetchInvitationsResponse_GetInvitations_GetElement(
                        SelfPtr(), index))
                ));
 }
Ejemplo n.º 3
0
        protected HandleRef SelfPtr()
        {
            if (PInvokeUtilities.IsNull(mSelfPointer))
            {
                throw new InvalidOperationException(
                          "Attempted to use object after it was cleaned up");
            }

            return(mSelfPointer);
        }
Ejemplo n.º 4
0
            internal string ConflictId()
            {
                if (ResponseStatus() != Status.SnapshotOpenStatus.VALID_WITH_CONFLICT)
                {
                    throw new InvalidOperationException("OpenResponse did not have a conflict");
                }

                return(PInvokeUtilities.OutParamsToString(
                           (out_string, out_size) => C.SnapshotManager_OpenResponse_GetConflictId(
                               SelfPtr(), out_string, out_size)));
            }
 internal byte[] Data()
 {
     if (!GooglePlayGames.Native.Cwrapper.TurnBasedMatch.TurnBasedMatch_HasData(base.SelfPtr()))
     {
         Logger.d("Match has no data.");
         return(null);
     }
     return(PInvokeUtilities.OutParamsToArray <byte>(delegate(byte[] bytes, UIntPtr size) {
         return GooglePlayGames.Native.Cwrapper.TurnBasedMatch.TurnBasedMatch_Data(base.SelfPtr(), bytes, size);
     }));
 }
 private void Dispose(bool fromFinalizer)
 {
     if (fromFinalizer || !_refs.ContainsKey(mSelfPointer))
     {
         if (!PInvokeUtilities.IsNull(mSelfPointer))
         {
             CallDispose(mSelfPointer);
             mSelfPointer = new HandleRef(this, IntPtr.Zero);
         }
     }
 }
Ejemplo n.º 7
0
            internal byte[] Data()
            {
                if (!RequestSucceeded())
                {
                    throw new InvalidOperationException("Request did not succeed");
                }

                return(PInvokeUtilities.OutParamsToArray <byte>(
                           (out_bytes, out_size) => C.SnapshotManager_ReadResponse_GetData(
                               SelfPtr(), out_bytes, out_size)));
            }
Ejemplo n.º 8
0
 internal void SendUnreliableMessageToSpecificParticipants(NativeRealTimeRoom room,
                                                           List <MultiplayerParticipant> recipients, byte[] data)
 {
     C.RealTimeMultiplayerManager_SendUnreliableMessage(
         mGameServices.AsHandle(),
         room.AsPointer(),
         recipients.Select(r => r.AsPointer()).ToArray(),
         new UIntPtr((ulong)recipients.LongCount()),
         data,
         PInvokeUtilities.ArrayToSizeT(data));
 }
Ejemplo n.º 9
0
        internal byte[] Data()
        {
            if (!C.TurnBasedMatch_HasData(SelfPtr()))
            {
                Logger.d("Match has no data.");
                return(null);
            }

            return(PInvokeUtilities.OutParamsToArray <byte>(
                       (bytes, size) => C.TurnBasedMatch_Data(SelfPtr(), bytes, size)));
        }
Ejemplo n.º 10
0
        internal string RematchId()
        {
            // There is a bug in C++ for android that always returns true for
            // HasRematchId - so commenting out this optimization until it is
            // fixed.
            //if (!HasRematchId())
            //{
            //    Logger.d("Returning NUll for rematch id since it does not have one");
            //    return null;
            //}

            return(PInvokeUtilities.OutParamsToString(
                       (out_string, size) => C.TurnBasedMatch_RematchId(SelfPtr(), out_string, size)));
        }
    private static T IntPtrToCallback<T>(IntPtr handle, bool unpinHandle) where T : class {
        if (PInvokeUtilities.IsNull(handle)) {
            return null;
        }

        var gcHandle = GCHandle.FromIntPtr(handle);
        try {
            return (T)gcHandle.Target;
        } catch(System.InvalidCastException e) {
            Logger.e("GC Handle pointed to unexpected type: " + gcHandle.Target.ToString() +
                ". Expected " +  typeof(T));
            throw e;
        } finally {
            if (unpinHandle) {
                gcHandle.Free();
            }
        }
    }
Ejemplo n.º 12
0
 internal string Id()
 {
     return(PInvokeUtilities.OutParamsToString(
                (out_arg, out_size) => C.AppIdentifier_GetIdentifier(SelfPtr(), out_arg, out_size)));
 }
 protected bool IsDisposed() =>
 PInvokeUtilities.IsNull(this.mSelfPointer);
 public BaseReferenceHolder(IntPtr pointer)
 {
     this.mSelfPointer = PInvokeUtilities.CheckNonNull(new HandleRef(this, pointer));
 }
Ejemplo n.º 15
0
 internal byte[] Payload()
 {
     return(PInvokeUtilities.OutParamsToArray <byte>((out_arg, out_size) =>
                                                     C.ConnectionRequest_GetPayload(SelfPtr(), out_arg, out_size)));
 }
Ejemplo n.º 16
0
 internal string RemoteEndpointName()
 {
     return(PInvokeUtilities.OutParamsToString((out_arg, out_size) =>
                                               C.ConnectionRequest_GetRemoteEndpointName(SelfPtr(), out_arg, out_size)));
 }
Ejemplo n.º 17
0
 internal string Id()
 {
     return(PInvokeUtilities.OutParamsToString(
                (out_string, size) => C.TurnBasedMatch_Id(SelfPtr(), out_string, size)));
 }
Ejemplo n.º 18
0
 internal string AvatarURL()
 {
     return(PInvokeUtilities.OutParamsToString(
                (out_string, out_size) => C.Player_AvatarUrl(SelfPtr(),
                                                             Types.ImageResolution.ICON, out_string, out_size)));
 }
Ejemplo n.º 19
0
 internal void SendUnreliableMessageToAll(NativeRealTimeRoom room, byte[] data)
 {
     C.RealTimeMultiplayerManager_SendUnreliableMessageToOthers(mGameServices.AsHandle(),
                                                                room.AsPointer(), data, PInvokeUtilities.ArrayToSizeT(data));
 }
Ejemplo n.º 20
0
 internal string GetMetadata()
 {
     return(PInvokeUtilities.OutParamsToString((out_string, out_size) =>
                                               Score.Score_Metadata(SelfPtr(), out_string, out_size)));
 }
Ejemplo n.º 21
0
 internal string LocalDeviceId()
 {
     return(PInvokeUtilities.OutParamsToString((out_arg, out_size) =>
                                               C.NearbyConnections_GetLocalDeviceId(SelfPtr(), out_arg, out_size)));
 }
Ejemplo n.º 22
0
 public IEnumerator <NativePlayer> GetEnumerator()
 {
     return(PInvokeUtilities.ToEnumerator <NativePlayer>(this.Length(), (Func <UIntPtr, NativePlayer>)(index => this.GetElement(index))));
 }
Ejemplo n.º 23
0
            internal List <NativeEvent> Data()
            {
                IntPtr[] events = PInvokeUtilities.OutParamsToArray <IntPtr>((out_arg, out_size) => C.EventManager_FetchAllResponse_GetData(SelfPtr(), out_arg, out_size));

                return(events.Select(ptr => new NativeEvent(ptr)).ToList());
            }
Ejemplo n.º 24
0
 protected bool IsDisposed()
 {
     return(PInvokeUtilities.IsNull(mSelfPointer));
 }
Ejemplo n.º 25
0
 private string PlayerIdAtIndex(UIntPtr index)
 {
     return(PInvokeUtilities.OutParamsToString(
                (out_string, size) => C.TurnBasedMatchConfig_PlayerIdsToInvite_GetElement(
                    SelfPtr(), index, out_string, size)));
 }
Ejemplo n.º 26
0
 internal string Title()
 {
     return(PInvokeUtilities.OutParamsToString(delegate(StringBuilder out_string, UIntPtr out_size) {
         return Leaderboard.Leaderboard_Name(base.SelfPtr(), out_string, out_size);
     }));
 }
Ejemplo n.º 27
0
 internal void SendReliableMessage(NativeRealTimeRoom room, MultiplayerParticipant participant,
                                   byte[] data, Action <Status.MultiplayerStatus> callback)
 {
     C.RealTimeMultiplayerManager_SendReliableMessage(mGameServices.AsHandle(),
                                                      room.AsPointer(), participant.AsPointer(), data, PInvokeUtilities.ArrayToSizeT(data),
                                                      InternalSendReliableMessageCallback, Callbacks.ToIntPtr(callback));
 }
Ejemplo n.º 28
0
 internal string Name()
 {
     return(PInvokeUtilities.OutParamsToString(
                (out_string, out_size) => C.Player_Name(SelfPtr(), out_string, out_size)));
 }
Ejemplo n.º 29
0
 public IEnumerator <NativeAchievement> GetEnumerator()
 {
     return(PInvokeUtilities.ToEnumerator(
                C.AchievementManager_FetchAllResponse_GetData_Length(SelfPtr()),
                (index) => GetElement(index)));
 }
Ejemplo n.º 30
0
 internal string GetPlayerId() =>
 PInvokeUtilities.OutParamsToString((out_string, out_size) => ScorePage.ScorePage_Entry_PlayerId(base.SelfPtr(), out_string, out_size));