86 lines
2.4 KiB
Julia
86 lines
2.4 KiB
Julia
|
# 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
|