public static PlayerStatisticsView Deserialize(Stream bytes)
        {
            var mask = Int32Proxy.Deserialize(bytes);
            var view = new PlayerStatisticsView();

            view.Cmid      = Int32Proxy.Deserialize(bytes);
            view.Headshots = Int32Proxy.Deserialize(bytes);
            view.Hits      = Int64Proxy.Deserialize(bytes);
            view.Level     = Int32Proxy.Deserialize(bytes);
            view.Nutshots  = Int32Proxy.Deserialize(bytes);

            if ((mask & 1) != 0)
            {
                view.PersonalRecord = PlayerPersonalRecordStatisticsViewProxy.Deserialize(bytes);
            }

            view.Shots           = Int64Proxy.Deserialize(bytes);
            view.Splats          = Int32Proxy.Deserialize(bytes);
            view.Splatted        = Int32Proxy.Deserialize(bytes);
            view.TimeSpentInGame = Int32Proxy.Deserialize(bytes);

            if ((mask & 2) != 0)
            {
                view.WeaponStatistics = PlayerWeaponStatisticsViewProxy.Deserialize(bytes);
            }

            view.Xp = Int32Proxy.Deserialize(bytes);

            return(view);
        }
示例#2
0
    public void UpdatePlayerStats(StatsCollection stats, StatsCollection best)
    {
        PlayerStatisticsView serverLocalPlayerStatisticsView = ServerLocalPlayerStatisticsView;
        int xp         = serverLocalPlayerStatisticsView.Xp + GameState.Current.Statistics.GainedXp;
        int levelForXp = XpPointsUtil.GetLevelForXp(xp);

        SetPlayerStatisticsView(new PlayerStatisticsView(serverLocalPlayerStatisticsView.Cmid,
                                                         serverLocalPlayerStatisticsView.Splats + stats.GetKills(),
                                                         serverLocalPlayerStatisticsView.Splatted + stats.Deaths,
                                                         serverLocalPlayerStatisticsView.Shots + stats.GetShots(),
                                                         serverLocalPlayerStatisticsView.Hits + stats.GetHits(),
                                                         serverLocalPlayerStatisticsView.Headshots + stats.Headshots,
                                                         serverLocalPlayerStatisticsView.Nutshots + stats.Nutshots,
                                                         xp,
                                                         levelForXp,
                                                         new PlayerPersonalRecordStatisticsView((
                                                                                                    serverLocalPlayerStatisticsView.PersonalRecord.MostHeadshots <= best.Headshots) ? best.Headshots : serverLocalPlayerStatisticsView.PersonalRecord.MostHeadshots,
                                                                                                (serverLocalPlayerStatisticsView.PersonalRecord.MostNutshots <= best.Nutshots) ? best.Nutshots : serverLocalPlayerStatisticsView.PersonalRecord.MostNutshots,
                                                                                                (serverLocalPlayerStatisticsView.PersonalRecord.MostConsecutiveSnipes <= best.ConsecutiveSnipes) ? best.ConsecutiveSnipes : serverLocalPlayerStatisticsView.PersonalRecord.MostConsecutiveSnipes, 0,
                                                                                                (serverLocalPlayerStatisticsView.PersonalRecord.MostSplats <= best.GetKills()) ? best.GetKills() : serverLocalPlayerStatisticsView.PersonalRecord.MostSplats,
                                                                                                (serverLocalPlayerStatisticsView.PersonalRecord.MostDamageDealt <= best.GetDamageDealt()) ? best.GetDamageDealt() : serverLocalPlayerStatisticsView.PersonalRecord.MostDamageDealt,
                                                                                                (serverLocalPlayerStatisticsView.PersonalRecord.MostDamageReceived <= best.DamageReceived) ? best.DamageReceived : serverLocalPlayerStatisticsView.PersonalRecord.MostDamageReceived,
                                                                                                (serverLocalPlayerStatisticsView.PersonalRecord.MostArmorPickedUp <= best.ArmorPickedUp) ? best.ArmorPickedUp : serverLocalPlayerStatisticsView.PersonalRecord.MostArmorPickedUp,
                                                                                                (serverLocalPlayerStatisticsView.PersonalRecord.MostHealthPickedUp <= best.HealthPickedUp) ? best.HealthPickedUp : serverLocalPlayerStatisticsView.PersonalRecord.MostHealthPickedUp,
                                                                                                (serverLocalPlayerStatisticsView.PersonalRecord.MostMeleeSplats <= best.MeleeKills) ? best.MeleeKills : serverLocalPlayerStatisticsView.PersonalRecord.MostMeleeSplats,
                                                                                                (serverLocalPlayerStatisticsView.PersonalRecord.MostMachinegunSplats <= best.MachineGunKills) ? best.MachineGunKills : serverLocalPlayerStatisticsView.PersonalRecord.MostMachinegunSplats,
                                                                                                (serverLocalPlayerStatisticsView.PersonalRecord.MostShotgunSplats <= best.ShotgunSplats) ? best.ShotgunSplats : serverLocalPlayerStatisticsView.PersonalRecord.MostShotgunSplats,
                                                                                                (serverLocalPlayerStatisticsView.PersonalRecord.MostSniperSplats <= best.SniperKills) ? best.SniperKills : serverLocalPlayerStatisticsView.PersonalRecord.MostSniperSplats,
                                                                                                (serverLocalPlayerStatisticsView.PersonalRecord.MostSplattergunSplats <= best.SplattergunKills) ? best.SplattergunKills : serverLocalPlayerStatisticsView.PersonalRecord.MostSplattergunSplats,
                                                                                                (serverLocalPlayerStatisticsView.PersonalRecord.MostCannonSplats <= best.CannonKills) ? best.CannonKills : serverLocalPlayerStatisticsView.PersonalRecord.MostCannonSplats,
                                                                                                (serverLocalPlayerStatisticsView.PersonalRecord.MostLauncherSplats <= best.LauncherKills) ? best.LauncherKills : serverLocalPlayerStatisticsView.PersonalRecord.MostLauncherSplats),
                                                         new PlayerWeaponStatisticsView(serverLocalPlayerStatisticsView.WeaponStatistics.MeleeTotalSplats + stats.MeleeKills,
                                                                                        serverLocalPlayerStatisticsView.WeaponStatistics.MachineGunTotalSplats + stats.MachineGunKills,
                                                                                        serverLocalPlayerStatisticsView.WeaponStatistics.ShotgunTotalSplats + stats.ShotgunSplats,
                                                                                        serverLocalPlayerStatisticsView.WeaponStatistics.SniperTotalSplats + stats.SniperKills,
                                                                                        serverLocalPlayerStatisticsView.WeaponStatistics.SplattergunTotalSplats + stats.SplattergunKills,
                                                                                        serverLocalPlayerStatisticsView.WeaponStatistics.CannonTotalSplats + stats.CannonKills,
                                                                                        serverLocalPlayerStatisticsView.WeaponStatistics.LauncherTotalSplats + stats.LauncherKills,
                                                                                        serverLocalPlayerStatisticsView.WeaponStatistics.MeleeTotalShotsFired + stats.MeleeShotsFired,
                                                                                        serverLocalPlayerStatisticsView.WeaponStatistics.MeleeTotalShotsHit + stats.MeleeShotsHit,
                                                                                        serverLocalPlayerStatisticsView.WeaponStatistics.MeleeTotalDamageDone + stats.MeleeDamageDone,
                                                                                        serverLocalPlayerStatisticsView.WeaponStatistics.MachineGunTotalShotsFired + stats.MachineGunShotsFired,
                                                                                        serverLocalPlayerStatisticsView.WeaponStatistics.MachineGunTotalShotsHit + stats.MachineGunShotsHit,
                                                                                        serverLocalPlayerStatisticsView.WeaponStatistics.MachineGunTotalDamageDone + stats.MachineGunDamageDone,
                                                                                        serverLocalPlayerStatisticsView.WeaponStatistics.ShotgunTotalShotsFired + stats.ShotgunShotsFired,
                                                                                        serverLocalPlayerStatisticsView.WeaponStatistics.ShotgunTotalShotsHit + stats.ShotgunShotsHit,
                                                                                        serverLocalPlayerStatisticsView.WeaponStatistics.ShotgunTotalDamageDone + stats.ShotgunDamageDone,
                                                                                        serverLocalPlayerStatisticsView.WeaponStatistics.SniperTotalShotsFired + stats.SniperShotsFired,
                                                                                        serverLocalPlayerStatisticsView.WeaponStatistics.SniperTotalShotsHit + stats.SniperShotsHit,
                                                                                        serverLocalPlayerStatisticsView.WeaponStatistics.SniperTotalDamageDone + stats.SniperDamageDone,
                                                                                        serverLocalPlayerStatisticsView.WeaponStatistics.SplattergunTotalShotsFired + stats.SplattergunShotsFired,
                                                                                        serverLocalPlayerStatisticsView.WeaponStatistics.SplattergunTotalShotsHit + stats.SplattergunShotsHit,
                                                                                        serverLocalPlayerStatisticsView.WeaponStatistics.SplattergunTotalDamageDone + stats.SplattergunDamageDone,
                                                                                        serverLocalPlayerStatisticsView.WeaponStatistics.CannonTotalShotsFired + stats.CannonShotsFired,
                                                                                        serverLocalPlayerStatisticsView.WeaponStatistics.CannonTotalShotsHit + stats.CannonShotsHit,
                                                                                        serverLocalPlayerStatisticsView.WeaponStatistics.CannonTotalDamageDone + stats.CannonDamageDone,
                                                                                        serverLocalPlayerStatisticsView.WeaponStatistics.LauncherTotalShotsFired + stats.LauncherShotsFired,
                                                                                        serverLocalPlayerStatisticsView.WeaponStatistics.LauncherTotalShotsHit + stats.LauncherShotsHit,
                                                                                        serverLocalPlayerStatisticsView.WeaponStatistics.LauncherTotalDamageDone + stats.LauncherDamageDone)));
    }
示例#3
0
 public void SetPlayerStatisticsView(PlayerStatisticsView value)
 {
     if (value != null)
     {
         _serverLocalPlayerPlayerStatisticsView = value;
         PlayerExperience = value.Xp;
         PlayerLevel      = XpPointsUtil.GetLevelForXp(value.Xp);
     }
 }
        public static void Serialize(Stream stream, PlayerStatisticsView instance)
        {
            int mask = 0;

            using (var bytes = new MemoryStream())
            {
                Int32Proxy.Serialize(bytes, instance.Cmid);
                Int32Proxy.Serialize(bytes, instance.Headshots);
                Int64Proxy.Serialize(bytes, instance.Hits);
                Int32Proxy.Serialize(bytes, instance.Level);
                Int32Proxy.Serialize(bytes, instance.Nutshots);

                if (instance.PersonalRecord != null)
                {
                    PlayerPersonalRecordStatisticsViewProxy.Serialize(bytes, instance.PersonalRecord);
                }
                else
                {
                    mask |= 1;
                }

                Int64Proxy.Serialize(bytes, instance.Shots);
                Int32Proxy.Serialize(bytes, instance.Splats);
                Int32Proxy.Serialize(bytes, instance.Splatted);
                Int32Proxy.Serialize(bytes, instance.TimeSpentInGame);

                if (instance.WeaponStatistics != null)
                {
                    PlayerWeaponStatisticsViewProxy.Serialize(bytes, instance.WeaponStatistics);
                }
                else
                {
                    mask |= 2;
                }

                Int32Proxy.Serialize(bytes, instance.Xp);
                Int32Proxy.Serialize(stream, ~mask);
                bytes.WriteTo(stream);
            }
        }
示例#5
0
 private PlayerDataManager()
 {
     _serverLocalPlayerPlayerStatisticsView = new PlayerStatisticsView();
     _playerClanData = new ClanView();
 }
示例#6
0
        public byte[] LoginSteam(byte[] data)
        {
            var inputStream = new MemoryStream(data);

            var steamId   = StringProxy.Deserialize(inputStream);
            var authToken = StringProxy.Deserialize(inputStream);
            var machineId = StringProxy.Deserialize(inputStream);

            var outputStream = new MemoryStream();

            if (userData.ContainsKey(steamId) && userData[steamId] != null)
            {
                var instance = new MemberAuthenticationResultView {
                    MemberAuthenticationResult = MemberAuthenticationResult.Ok,
                    MemberView           = userData[steamId],
                    PlayerStatisticsView = playerStatistics[steamId],
                    ServerTime           = DateTime.Now,
                    IsAccountComplete    = true,
                    AuthToken            = Convert.ToBase64String(Encoding.UTF8.GetBytes(steamId))
                };

                MemberAuthenticationResultViewProxy.Serialize(outputStream, instance);
            }
            else
            {
                var r    = new Random((int)DateTime.Now.Ticks);
                var Cmid = r.Next(1000000, 9999999);

                var newMemberView = new MemberView {
                    PublicProfile = new PublicProfileView {
                        Cmid               = Cmid,
                        Name               = "Player Name",
                        IsChatDisabled     = false,
                        AccessLevel        = MemberAccessLevel.Default,
                        GroupTag           = "",
                        LastLoginDate      = DateTime.Now,
                        EmailAddressStatus = EmailAddressStatus.Verified,
                        FacebookId         = "-1"
                    },
                    MemberWallet = new MemberWalletView {
                        Cmid    = Cmid,
                        Credits = 2000,
                        Points  = 2000
                    }
                };

                var newPlayerStatisticsView = new PlayerStatisticsView {
                    Cmid             = Cmid,
                    PersonalRecord   = new PlayerPersonalRecordStatisticsView(),
                    WeaponStatistics = new PlayerWeaponStatisticsView()
                };

                var instance = new MemberAuthenticationResultView {
                    MemberAuthenticationResult = MemberAuthenticationResult.Ok,
                    MemberView           = newMemberView,
                    PlayerStatisticsView = newPlayerStatisticsView,
                    ServerTime           = DateTime.Now,
                    IsAccountComplete    = true,
                    AuthToken            = Convert.ToBase64String(Encoding.UTF8.GetBytes(steamId))
                };

                userData[steamId]         = newMemberView;
                playerStatistics[steamId] = newPlayerStatisticsView;

                MemberAuthenticationResultViewProxy.Serialize(outputStream, instance);

                UpdatePlayerData();
            }

            return(outputStream.ToArray());
        }