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!"); }
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; } } }