Пример #1
0
        public void ToNative(IntPtr address)
        {
            Native_FOnlineSessionSettings.Set_NumPublicConnections(address, NumPublicConnections);
            Native_FOnlineSessionSettings.Set_NumPrivateConnections(address, NumPrivateConnections);
            Native_FOnlineSessionSettings.Set_bShouldAdvertise(address, bShouldAdvertise);
            Native_FOnlineSessionSettings.Set_bAllowJoinInProgress(address, bAllowJoinInProgress);
            Native_FOnlineSessionSettings.Set_bIsLANMatch(address, bIsLANMatch);
            Native_FOnlineSessionSettings.Set_bIsDedicated(address, bIsDedicated);
            Native_FOnlineSessionSettings.Set_bUsesStats(address, bUsesStats);
            Native_FOnlineSessionSettings.Set_bAllowInvites(address, bAllowInvites);
            Native_FOnlineSessionSettings.Set_bUsesPresence(address, bUsesPresence);
            Native_FOnlineSessionSettings.Set_bAllowJoinViaPresence(address, bAllowJoinViaPresence);
            Native_FOnlineSessionSettings.Set_bAllowJoinViaPresenceFriendsOnly(address, bAllowJoinViaPresenceFriendsOnly);
            Native_FOnlineSessionSettings.Set_bAntiCheatProtected(address, bAntiCheatProtected);
            Native_FOnlineSessionSettings.Set_BuildUniqueId(address, BuildUniqueId);

            using (TArrayUnsafe <string> keysUnsafe = new TArrayUnsafe <string>())
                using (TArrayUnsafe <string> valuesUnsafe = new TArrayUnsafe <string>())
                {
                    if (Settings != null)
                    {
                        foreach (KeyValuePair <string, FOnlineSessionSetting> setting in Settings)
                        {
                            keysUnsafe.Add(setting.Key);
                            valuesUnsafe.Add((int)setting.Value.AdvertisementType + "|" + setting.Value.ID + "|" + setting.Value.Data.ToStringEx());
                        }
                    }
                    Native_FOnlineSessionSettings.Set_Settings(address, keysUnsafe.Address, valuesUnsafe.Address);
                }
        }
Пример #2
0
        public void FromNative(IntPtr address)
        {
            if (Settings == null)
            {
                Settings = new Dictionary <string, FOnlineSessionSetting>();
            }
            else
            {
                Settings.Clear();
            }

            NumPublicConnections             = Native_FOnlineSessionSettings.Get_NumPublicConnections(address);
            NumPrivateConnections            = Native_FOnlineSessionSettings.Get_NumPrivateConnections(address);
            bShouldAdvertise                 = Native_FOnlineSessionSettings.Get_bShouldAdvertise(address);
            bAllowJoinInProgress             = Native_FOnlineSessionSettings.Get_bAllowJoinInProgress(address);
            bIsLANMatch                      = Native_FOnlineSessionSettings.Get_bIsLANMatch(address);
            bIsDedicated                     = Native_FOnlineSessionSettings.Get_bIsDedicated(address);
            bUsesStats                       = Native_FOnlineSessionSettings.Get_bUsesStats(address);
            bAllowInvites                    = Native_FOnlineSessionSettings.Get_bAllowInvites(address);
            bUsesPresence                    = Native_FOnlineSessionSettings.Get_bUsesPresence(address);
            bAllowJoinViaPresence            = Native_FOnlineSessionSettings.Get_bAllowJoinViaPresence(address);
            bAllowJoinViaPresenceFriendsOnly = Native_FOnlineSessionSettings.Get_bAllowJoinViaPresenceFriendsOnly(address);
            bAntiCheatProtected              = Native_FOnlineSessionSettings.Get_bAntiCheatProtected(address);
            BuildUniqueId                    = Native_FOnlineSessionSettings.Get_BuildUniqueId(address);

            using (TArrayUnsafe <string> keysUnsafe = new TArrayUnsafe <string>())
                using (TArrayUnsafe <string> valuesUnsafe = new TArrayUnsafe <string>())
                {
                    Native_FOnlineSessionSettings.Get_Settings(address, keysUnsafe.Address, valuesUnsafe.Address);
                    if (keysUnsafe.Count == valuesUnsafe.Count)
                    {
                        int count = keysUnsafe.Count;
                        for (int i = 0; i < count; i++)
                        {
                            FOnlineSessionSetting setting = default(FOnlineSessionSetting);

                            string valueStr = valuesUnsafe[i];
                            int    index    = valueStr.IndexOf('|');
                            setting.AdvertisementType = (EOnlineDataAdvertisementType)int.Parse(valueStr.Substring(0, index));
                            valueStr   = valueStr.Substring(index + 1);
                            index      = valueStr.IndexOf('|');
                            setting.ID = int.Parse(valueStr.Substring(0, index));
                            valueStr   = valueStr.Substring(index + 1);

                            setting.Data.FromStringEx(valueStr);
                            Settings[keysUnsafe[i]] = setting;
                        }
                    }
                }
        }