Ejemplo n.º 1
0
        public static TurnBasedMatch ConvertMatch(string playerId, AndroidJavaObject matchObj)
        {
            List <AndroidJavaObject> list = new List <AndroidJavaObject>();

            Logger.d("AndroidTbmpClient.ConvertMatch, playerId=" + playerId);
            List <Participant> list2             = new List <Participant>();
            string             matchId           = matchObj.Call <string>("getMatchId", new object[0]);
            AndroidJavaObject  androidJavaObject = JavaUtil.CallNullSafeObjectMethod(matchObj, "getData", new object[0]);

            list.Add(androidJavaObject);
            byte[] data       = JavaUtil.ConvertByteArray(androidJavaObject);
            bool   canRematch = matchObj.Call <bool>("canRematch", new object[0]);
            int    availableAutomatchSlots = matchObj.Call <int>("getAvailableAutoMatchSlots", new object[0]);
            string selfParticipantId       = matchObj.Call <string>("getParticipantId", new object[]
            {
                playerId
            });
            AndroidJavaObject androidJavaObject2 = matchObj.Call <AndroidJavaObject>("getParticipantIds", new object[0]);

            list.Add(androidJavaObject2);
            int num = androidJavaObject2.Call <int>("size", new object[0]);

            for (int i = 0; i < num; i++)
            {
                string text = androidJavaObject2.Call <string>("get", new object[]
                {
                    i
                });
                AndroidJavaObject androidJavaObject3 = matchObj.Call <AndroidJavaObject>("getParticipant", new object[]
                {
                    text
                });
                list.Add(androidJavaObject3);
                Participant item = JavaUtil.ConvertParticipant(androidJavaObject3);
                list2.Add(item);
            }
            string pendingParticipantId = matchObj.Call <string>("getPendingParticipantId", new object[0]);

            TurnBasedMatch.MatchTurnStatus turnStatus  = JavaUtil.ConvertTurnStatus(matchObj.Call <int>("getTurnStatus", new object[0]));
            TurnBasedMatch.MatchStatus     matchStatus = JavaUtil.ConvertMatchStatus(matchObj.Call <int>("getStatus", new object[0]));
            int variant = matchObj.Call <int>("getVariant", new object[0]);

            foreach (AndroidJavaObject current in list)
            {
                if (current != null)
                {
                    current.Dispose();
                }
            }
            list2.Sort();
            return(new TurnBasedMatch(matchId, data, canRematch, selfParticipantId, list2, availableAutomatchSlots, pendingParticipantId, turnStatus, matchStatus, variant));
        }
Ejemplo n.º 2
0
        public static TurnBasedMatch ConvertMatch(string playerId, AndroidJavaObject matchObj)
        {
            List <AndroidJavaObject> toDispose = new List <AndroidJavaObject>();

            Logger.d("AndroidTbmpClient.ConvertMatch, playerId=" + playerId);

            string matchId;

            byte[]             data;
            bool               canRematch;
            int                availableAutomatchSlots;
            string             selfParticipantId;
            List <Participant> participants = new List <Participant>();
            string             pendingParticipantId;

            TurnBasedMatch.MatchTurnStatus turnStatus;
            TurnBasedMatch.MatchStatus     matchStatus;
            int variant;

            matchId = matchObj.Call <string>("getMatchId");
            AndroidJavaObject dataObj = JavaUtil.CallNullSafeObjectMethod(matchObj, "getData");

            toDispose.Add(dataObj);
            data       = JavaUtil.ConvertByteArray(dataObj);
            canRematch = matchObj.Call <bool>("canRematch");
            availableAutomatchSlots = matchObj.Call <int>("getAvailableAutoMatchSlots");
            selfParticipantId       = matchObj.Call <string>("getParticipantId", playerId);

            AndroidJavaObject participantIds = matchObj.Call <AndroidJavaObject>("getParticipantIds");

            toDispose.Add(participantIds);
            int participantCount = participantIds.Call <int>("size");

            for (int i = 0; i < participantCount; i++)
            {
                string            thisId   = participantIds.Call <string>("get", i);
                AndroidJavaObject thisPart = matchObj.Call <AndroidJavaObject>("getParticipant", thisId);
                toDispose.Add(thisPart);
                Participant p = JavaUtil.ConvertParticipant(thisPart);
                participants.Add(p);
            }

            pendingParticipantId = matchObj.Call <string>("getPendingParticipantId");
            turnStatus           = JavaUtil.ConvertTurnStatus(matchObj.Call <int>("getTurnStatus"));
            matchStatus          = JavaUtil.ConvertMatchStatus(matchObj.Call <int>("getStatus"));
            variant = matchObj.Call <int>("getVariant");

            // cleanup
            foreach (AndroidJavaObject obj in toDispose)
            {
                if (obj != null)
                {
                    obj.Dispose();
                }
            }

            // participants should be sorted by participant ID
            participants.Sort();

            return(new TurnBasedMatch(matchId, data, canRematch, selfParticipantId,
                                      participants, availableAutomatchSlots,
                                      pendingParticipantId, turnStatus, matchStatus, variant));
        }