示例#1
0
        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);
        }
示例#2
0
        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();
     }
 }