Пример #1
0
        public void AddSpinnedFortToDatabase(int dbSessionId, FortSearchOutProto fortSearchProto)
        {
            using (var context = new MySQLContext()) {
                LogEntry fortLogEntry = new LogEntry {
                    LogEntryType = LogEntryType.Fort, timestamp = DateTime.UtcNow
                };

                fortLogEntry.XpReward = fortSearchProto.XpAwarded;

                this.AddLogEntry(context, dbSessionId, fortLogEntry);
                context.SaveChanges();
            }
        }
Пример #2
0
        public void AddQuest(FortSearchOutProto fort)
        {
            using (var context = new RocketMapContext())
            {
                if (fort.FortId == null || fort.ChallengeQuest == null || fort.ChallengeQuest.Quest.QuestRewards == null || fort.ChallengeQuest.Quest.QuestRewards.Count <= 0)
                {
                    return;
                }
                JsonSerializerOptions jsonSettings = new JsonSerializerOptions
                {
                    DefaultIgnoreCondition = System.Text.Json.Serialization.JsonIgnoreCondition.WhenWritingNull
                };

                String query = "INSERT INTO trs_quest (GUID, quest_type, quest_timestamp, quest_stardust, quest_pokemon_id, " +
                               "quest_pokemon_form_id, quest_pokemon_costume_id, " +
                               "quest_reward_type, quest_item_id, quest_item_amount, quest_target, quest_condition, quest_reward, " +
                               "quest_task, quest_template) VALUES (\"{0}\", {1}, {2}, {3}, {4}, {5}, {6}, {7}, {8}, {9}, {10}, \'{11}\', \'{12}\', \"{13}\", \"{14}\")" +
                               "ON DUPLICATE KEY UPDATE quest_type=VALUES(quest_type), quest_timestamp=VALUES(quest_timestamp), " +
                               "quest_stardust=VALUES(quest_stardust), quest_pokemon_id=VALUES(quest_pokemon_id), " +
                               "quest_reward_type=VALUES(quest_reward_type), quest_item_id=VALUES(quest_item_id), " +
                               "quest_item_amount=VALUES(quest_item_amount), quest_target=VALUES(quest_target), " +
                               "quest_condition=VALUES(quest_condition), quest_reward=VALUES(quest_reward), " +
                               "quest_task=VALUES(quest_task), quest_template=VALUES(quest_template), " +
                               "quest_pokemon_form_id=VALUES(quest_pokemon_form_id), " +
                               "quest_pokemon_costume_id=VALUES(quest_pokemon_costume_id)";

                var quest  = fort.ChallengeQuest.Quest;
                var reward = fort.ChallengeQuest.Quest.QuestRewards[0];

                int itemAmount = reward.Item != null ? (int)reward.Item.Amount : 0;
                int pokemonId  = reward.PokemonEncounter != null ? (int)reward.PokemonEncounter.PokemonId : 0;

                if (reward.Type == QuestRewardProto.Types.Type.Candy)
                {
                    itemAmount = reward.Candy.Amount;
                    pokemonId  = (int)reward.Candy.PokemonId;
                }
                if (reward.Type == QuestRewardProto.Types.Type.MegaResource)
                {
                    itemAmount = reward.MegaResource.Amount;
                    pokemonId  = (int)reward.MegaResource.PokemonId;
                }

                int FormId    = 0;
                int CostumeId = 0;
                if (reward.PokemonEncounter != null && reward.PokemonEncounter.PokemonDisplay != null)
                {
                    FormId    = (int)reward.PokemonEncounter.PokemonDisplay.Form;
                    CostumeId = (int)reward.PokemonEncounter.PokemonDisplay.Costume;
                }

                try
                {
                    //TODO: Add task text
                    query = String.Format(query, fort.FortId,
                                          (int)quest.QuestType,
                                          DateTimeOffset.UtcNow.ToUnixTimeSeconds(),
                                          reward.Stardust,
                                          pokemonId,
                                          FormId,
                                          CostumeId,
                                          (int)reward.Type,
                                          reward.Item != null ? (int)reward.Item.Item : "0",
                                          itemAmount,
                                          quest.Goal.Target,
                                          JsonSerializer.Serialize(quest.Goal.Condition, jsonSettings),
                                          JsonSerializer.Serialize(quest.QuestRewards, jsonSettings),
                                          GetQuestTaskText(quest.QuestType, quest.Goal.Condition, quest.Goal.Target, quest.TemplateId),       // Task text
                                          quest.TemplateId).Replace("{", "{{").Replace("}", "}}");

                    context.Database.ExecuteSqlRaw(query);
                }
                catch (Exception e)
                {
                    Log.Information(e.Message);
                    Log.Information(e.StackTrace);
                    Log.Information($"Object: {JsonSerializer.Serialize(fort)} \n Query: {query}");
                }
            }
        }