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); }
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))); }
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); } }
private PlayerDataManager() { _serverLocalPlayerPlayerStatisticsView = new PlayerStatisticsView(); _playerClanData = new ClanView(); }
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()); }