Exemplo n.º 1
0
 public override uint Read(ref Utf8JsonReader reader, Type typeToConvert, JsonSerializerOptions options)
 {
     if (reader.TokenType == JsonTokenType.String)
     {
         return(PersistentIDManager.GetId(reader.GetString()));
     }
     else if (reader.TokenType == JsonTokenType.Number)
     {
         return(reader.GetUInt32());
     }
     throw new JsonException($"TOKEN IS NOT VALID!");
 }
Exemplo n.º 2
0
        private static void Pre_LoadOfflineGearDatas()
        {
            var allBlocks = GameDataBlockBase <PlayerOfflineGearDataBlock> .GetAllBlocks();

            foreach (var block in allBlocks)
            {
                if (!block.internalEnabled || string.IsNullOrEmpty(block.GearJSON))
                {
                    continue;
                }

                if (block.Type != eOfflineGearType.StandardInventory && block.Type != eOfflineGearType.RundownSpecificInventory)
                {
                    continue;
                }

                var newGearJson = block.GearJSON;
                var isChanged   = false;
                using var doc = JsonDocument.Parse(block.GearJSON);

                if (!doc.RootElement.TryGetProperty("Packet", out var packetProp))
                {
                    continue;
                }

                if (!packetProp.TryGetProperty("Comps", out var compProp))
                {
                    continue;
                }

                foreach (var c in COMP_CHARS)
                {
                    if (!compProp.TryGetProperty(c.ToString(), out var compEProp))
                    {
                        continue;
                    }

                    if (!compEProp.TryGetProperty("v", out var valueProp))
                    {
                        continue;
                    }

                    if (valueProp.ValueKind != JsonValueKind.String)
                    {
                        continue;
                    }

                    var strValue = valueProp.GetString();
                    Logger.Warning($"Found String id: {strValue}");

                    var id = PersistentIDManager.GetId(strValue);
                    if (id != 0)
                    {
                        var regex = new Regex($"(\"v\")\\s*:\\s*(\"{strValue}\")");
                        newGearJson = regex.Replace(newGearJson, $"\"v\":{id}");

                        isChanged = true;
                    }
                }

                if (isChanged)
                {
                    Logger.Warning(block.GearJSON);
                    Logger.Warning(newGearJson);

                    block.GearJSON = newGearJson;
                }
            }
        }