public static Spawnpoint FromPokemon(WildPokemonProto wild) { var now = DateTime.UtcNow.ToTotalSeconds(); var spawnpoint = new Spawnpoint { Id = Convert.ToUInt64(wild.SpawnPointId, 16), Latitude = wild.Latitude, Longitude = wild.Longitude, Updated = now, }; var tthMs = wild.TimeTillHiddenMs; if (tthMs > 0 && tthMs <= 90000) { //wild.LastModifiedMs var unixDate = DateTime.UtcNow; var secondsOfHour = unixDate.Minute * 60 + unixDate.Second; var despawnSec = (int)Math.Round(tthMs / 1000.0); var offset = secondsOfHour + despawnSec; if (offset > 3600) { offset -= 3600; } spawnpoint.DespawnSecond = (ushort)(secondsOfHour + offset); } return(spawnpoint); }
public Pokemon(WildPokemonProto wildPokemon, ulong cellId, ulong timestampMs, string username, bool isEvent) : this() { IsEvent = isEvent; Id = wildPokemon.EncounterId; PokemonId = (uint)wildPokemon.Pokemon.PokemonId; Latitude = wildPokemon.Latitude; Longitude = wildPokemon.Longitude; var spawnId = Convert.ToUInt64(wildPokemon.SpawnPointId, 16); Gender = (ushort)wildPokemon.Pokemon.PokemonDisplay.Gender; Form = (ushort?)wildPokemon.Pokemon?.PokemonDisplay?.Form; if (wildPokemon.Pokemon.PokemonDisplay != null) { Costume = (ushort)wildPokemon.Pokemon.PokemonDisplay.Costume; Weather = (ushort)wildPokemon.Pokemon.PokemonDisplay.WeatherBoostedCondition; // The wildPokemon and nearbyPokemon don't contain actual shininess. //IsShiny = wildPokemon.Pokemon.PokemonDisplay.Shiny; } if (wildPokemon.Pokemon.Cp > 0) { Weight = wildPokemon.Pokemon.WeightKg; Size = wildPokemon.Pokemon.HeightM; //ExpireTimestamp = now + 1200; PokemonId = (uint)wildPokemon.Pokemon.PokemonId; Move1 = (uint?)wildPokemon.Pokemon.Move1; Move2 = (uint?)wildPokemon.Pokemon.Move2; CP = (ushort?)wildPokemon.Pokemon.Cp; AttackIV = (ushort?)wildPokemon.Pokemon.IndividualAttack; DefenseIV = (ushort?)wildPokemon.Pokemon.IndividualDefense; StaminaIV = (ushort?)wildPokemon.Pokemon.IndividualStamina; } Username = username; var now = DateTime.UtcNow.ToTotalSeconds(); Changed = now; Updated = now; //FirstSeenTimestamp = now; HandleSpawnpoint(wildPokemon.TimeTillHiddenMs, timestampMs).ConfigureAwait(false) .GetAwaiter() .GetResult(); SpawnId = spawnId; CellId = cellId; }
public void AddPokemonToDatabase(int dbSessionId, CatchPokemonOutProto catchedPokemon, WildPokemonProto lastEncounter) { using (var context = new MySQLContext()) { LogEntry pokemonLogEntry = new LogEntry { LogEntryType = LogEntryType.Pokemon, CaughtSuccess = catchedPokemon.Status == CatchPokemonOutProto.Types.Status.CatchSuccess, timestamp = DateTime.UtcNow }; if (catchedPokemon.Status == CatchPokemonOutProto.Types.Status.CatchSuccess) { if (catchedPokemon.PokemonDisplay != null) { pokemonLogEntry.Shiny = catchedPokemon.PokemonDisplay.Shiny; pokemonLogEntry.Shadow = catchedPokemon.PokemonDisplay.Alignment == PokemonDisplayProto.Types.Alignment.Shadow; pokemonLogEntry.Form = catchedPokemon.PokemonDisplay.Form; pokemonLogEntry.Costume = catchedPokemon.PokemonDisplay.Costume; } pokemonLogEntry.PokemonUniqueId = catchedPokemon.CapturedPokemonId; pokemonLogEntry.CandyAwarded = catchedPokemon.Scores.Candy.Sum(); } if (catchedPokemon.Status == CatchPokemonOutProto.Types.Status.CatchFlee && lastEncounter != null) { if (lastEncounter.Pokemon.PokemonDisplay != null) { pokemonLogEntry.Shiny = lastEncounter.Pokemon.PokemonDisplay.Shiny; pokemonLogEntry.Shadow = lastEncounter.Pokemon.PokemonDisplay.Alignment == PokemonDisplayProto.Types.Alignment.Shadow; pokemonLogEntry.Form = lastEncounter.Pokemon.PokemonDisplay.Form; pokemonLogEntry.Costume = lastEncounter.Pokemon.PokemonDisplay.Costume; } pokemonLogEntry.PokemonName = lastEncounter.Pokemon.PokemonId; } pokemonLogEntry.XpReward = catchedPokemon.Scores.Exp.Sum(); pokemonLogEntry.StardustReward = catchedPokemon.Scores.Stardust.Sum(); this.AddLogEntry(context, dbSessionId, pokemonLogEntry); context.SaveChanges(); } }