GenshinDataConverter/JSONPhraser.jl

86 lines
2.4 KiB
Julia
Raw Normal View History

2022-03-07 09:08:54 +00:00
# Convert json Data form Dimbreath/GenshinData into Matrix/Array
module JSONPhraser
export ReliAffixECDConverter,ReliLevelECDConverter
using JSON
if isdefined(@__MODULE__, :LookUpTable)
VectorFunctions isa Module || error("LookUpTable is present and it is not a Module")
else
include("LookUpTable.jl")
end
using .LookUpTable
# Convert ReliquaryAffixExcelConfigData.json into Matrix
# Substat of Artifacts
function ReliAffixECDConverter()
# Read form JSON File
dict = Dict()
open("ReliquaryAffixExcelConfigData.json", "r") do f
dict=JSON.parse(f) # parse and transform data
end
# Initialize with empty Array
# Rank, Substats, Sequence
dataSet=Array{Float32,3}(undef,5,length(LookUpTable.substatProject),4);
# fill in the data
for i in 1:length(dict)
# read ID for identification
this_id=string(dict[i]["Id"]);
this_rank=parse(Int64,this_id[1]);
this_seq=parse(Int64,this_id[6]);
# ID e.g. 501244 first digit is Rank, last digit is The Sequence Number in same substat
# Skip the 9xxxxxx ID
if !(1<=this_rank<=5)
continue;
end
# Skip the Substat not covered in LookUpTable.substatProject
if !SubstatHasKey(dict[i]["PropType"])
continue;
end
# Sort Data
dataSet[ this_rank, SubstatLookUp(dict[i]["PropType"]), this_seq ] = dict[i]["PropValue"];
end
return dataSet
end
# Convert ReliquaryLevelExcelConfigData.json into Matrix
# Mainstat of Artifacts
function ReliLevelECDConverter()
dict = Dict()
# Read form JSON File
open("ReliquaryLevelExcelConfigData.json", "r") do f
dict=JSON.parse(f) # parse and transform data
end
# Rank, Substats, Level
dataSet=Array{Float32,3}(undef,5,length(LookUpTable.mainstatProject),21);
for i in 1:length(dict)
# Skip the Data with no rank
if !(haskey(dict[i],"Rank"))
continue;
end
# Sort Data
for j in 1:length(dict[i]["AddProps"])
# Skip the Mainstat not covered in LookUpTable.mainstatProject
if !MainstatHasKey(dict[i]["AddProps"][j]["PropType"])
continue;
end
dataSet[ dict[i]["Rank"], MainstatLookUp(dict[i]["AddProps"][j]["PropType"]), dict[i]["Level"] ] = dict[i]["AddProps"][j]["Value"];
end
end
return dataSet
end
end