兼容部分特殊存档格式
This commit is contained in:
25
main.lua
25
main.lua
@@ -237,7 +237,6 @@ for i=1,#MODES do
|
|||||||
MODES[m.name],MODES[i]=M
|
MODES[m.name],MODES[i]=M
|
||||||
end
|
end
|
||||||
|
|
||||||
local modeTable={attacker_h="attacker_hard",attacker_u="attacker_ultimate",blind_e="blind_easy",blind_h="blind_hard",blind_l="blind_lunatic",blind_n="blind_normal",blind_u="blind_ultimate",c4wtrain_l="c4wtrain_lunatic",c4wtrain_n="c4wtrain_normal",defender_l="defender_lunatic",defender_n="defender_normal",dig_100l="dig_100",dig_10l="dig_10",dig_400l="dig_400",dig_40l="dig_40",dig_h="dig_hard",dig_u="dig_ultimate",drought_l="drought_lunatic",drought_n="drought_normal",marathon_h="marathon_hard",marathon_n="marathon_normal",pc_h="pcchallenge_hard",pc_l="pcchallenge_lunatic",pc_n="pcchallenge_normal",pctrain_l="pctrain_lunatic",pctrain_n="pctrain_normal",round_e="round_1",round_h="round_2",round_l="round_3",round_n="round_4",round_u="round_5",solo_e="solo_1",solo_h="solo_2",solo_l="solo_3",solo_n="solo_4",solo_u="solo_5",sprint_10l="sprint_10",sprint_20l="sprint_20",sprint_40l="sprint_40",sprint_400l="sprint_400",sprint_100l="sprint_100",sprint_1000l="sprint_1000",survivor_e="survivor_easy",survivor_h="survivor_hard",survivor_l="survivor_lunatic",survivor_n="survivor_normal",survivor_u="survivor_ultimate",tech_finesse_f="tech_finesse2",tech_h_plus="tech_hard2",tech_h="tech_hard",tech_l_plus="tech_lunatic2",tech_l="tech_lunatic",tech_n_plus="tech_normal2",tech_n="tech_normal",techmino49_e="techmino49_easy",techmino49_h="techmino49_hard",techmino49_u="techmino49_ultimate",techmino99_e="techmino99_easy",techmino99_h="techmino99_hard",techmino99_u="techmino99_ultimate",tsd_e="tsd_easy",tsd_h="tsd_hard",tsd_u="tsd_ultimate",master_extra="GM"}
|
|
||||||
--Update data
|
--Update data
|
||||||
do
|
do
|
||||||
local needSave,autoRestart
|
local needSave,autoRestart
|
||||||
@@ -278,19 +277,19 @@ do
|
|||||||
needSave=true
|
needSave=true
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
for k,v in next,modeTable do
|
for k,v in next,oldModeNameTable do
|
||||||
if RANKS[v]then
|
if RANKS[k]then
|
||||||
RANKS[k]=RANKS[v]
|
RANKS[v]=RANKS[k]
|
||||||
RANKS[v]=nil
|
RANKS[k]=nil
|
||||||
end
|
end
|
||||||
v="record/"..v
|
k="record/"..k
|
||||||
if fs.getInfo(v..".dat")then
|
if fs.getInfo(k..".dat")then
|
||||||
fs.write("record/"..k..".rec",fs.read(v..".dat"))
|
fs.write("record/"..v..".rec",fs.read(k..".dat"))
|
||||||
fs.remove(v..".dat")
|
fs.remove(k..".dat")
|
||||||
end
|
end
|
||||||
if fs.getInfo(v..".rec")then
|
if fs.getInfo(k..".rec")then
|
||||||
fs.write("record/"..k..".rec",fs.read(v..".rec"))
|
fs.write("record/"..v..".rec",fs.read(k..".rec"))
|
||||||
fs.remove(v..".rec")
|
fs.remove(k..".rec")
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
if not RANKS.sprint_10l then
|
if not RANKS.sprint_10l then
|
||||||
@@ -315,7 +314,7 @@ for _,fileName in next,fs.getDirectoryItems("replay")do
|
|||||||
local date,mode,version,player,seed,setting,mod
|
local date,mode,version,player,seed,setting,mod
|
||||||
local fileData=fs.read('replay/'..fileName)
|
local fileData=fs.read('replay/'..fileName)
|
||||||
date, fileData=STRING.readLine(fileData)date=date:gsub("[a-zA-Z]","")
|
date, fileData=STRING.readLine(fileData)date=date:gsub("[a-zA-Z]","")
|
||||||
mode, fileData=STRING.readLine(fileData)mode=modeTable[mode]or mode
|
mode, fileData=STRING.readLine(fileData)mode=oldModeNameTable[mode]or mode
|
||||||
version,fileData=STRING.readLine(fileData)
|
version,fileData=STRING.readLine(fileData)
|
||||||
player, fileData=STRING.readLine(fileData)if player=="Local Player"then player="Stacker"end
|
player, fileData=STRING.readLine(fileData)if player=="Local Player"then player="Stacker"end
|
||||||
local success
|
local success
|
||||||
|
|||||||
@@ -395,7 +395,12 @@ function DATA.parseReplay(fileName,ifFull)
|
|||||||
--Load metadata
|
--Load metadata
|
||||||
metaData,fileData=STRING.readLine(fileData)
|
metaData,fileData=STRING.readLine(fileData)
|
||||||
metaData=JSON.decode(metaData)
|
metaData=JSON.decode(metaData)
|
||||||
if not metaData or not text.modes[metaData.mode]then goto BREAK_cannotParse end
|
if not metaData then goto BREAK_cannotParse end
|
||||||
|
|
||||||
|
--Convert ancient replays
|
||||||
|
metaData.mode=oldModeNameTable[metaData.mode]or metaData.mode
|
||||||
|
if not MODES[metaData.mode]then goto BREAK_cannotParse end
|
||||||
|
|
||||||
--Create replay object
|
--Create replay object
|
||||||
rep={
|
rep={
|
||||||
fileName=fileName,
|
fileName=fileName,
|
||||||
|
|||||||
@@ -286,6 +286,72 @@ do--SCS(spinCenters)
|
|||||||
{[0]=D,D,D,D},--O1
|
{[0]=D,D,D,D},--O1
|
||||||
}
|
}
|
||||||
end
|
end
|
||||||
|
oldModeNameTable={
|
||||||
|
attacker_hard="attacker_h",
|
||||||
|
attacker_ultimate="attacker_u",
|
||||||
|
blind_easy="blind_e",
|
||||||
|
blind_hard="blind_h",
|
||||||
|
blind_lunatic="blind_l",
|
||||||
|
blind_normal="blind_n",
|
||||||
|
blind_ultimate="blind_u",
|
||||||
|
c4wtrain_lunatic="c4wtrain_l",
|
||||||
|
c4wtrain_normal="c4wtrain_n",
|
||||||
|
defender_lunatic="defender_l",
|
||||||
|
defender_normal="defender_n",
|
||||||
|
dig_100="dig_100l",
|
||||||
|
dig_10="dig_10l",
|
||||||
|
dig_400="dig_400l",
|
||||||
|
dig_40="dig_40l",
|
||||||
|
dig_hard="dig_h",
|
||||||
|
dig_ultimate="dig_u",
|
||||||
|
drought_lunatic="drought_l",
|
||||||
|
drought_normal="drought_n",
|
||||||
|
marathon_hard="marathon_h",
|
||||||
|
marathon_normal="marathon_n",
|
||||||
|
pcchallenge_hard="pc_h",
|
||||||
|
pcchallenge_lunatic="pc_l",
|
||||||
|
pcchallenge_normal="pc_n",
|
||||||
|
pctrain_lunatic="pctrain_l",
|
||||||
|
pctrain_normal="pctrain_n",
|
||||||
|
round_1="round_e",
|
||||||
|
round_2="round_h",
|
||||||
|
round_3="round_l",
|
||||||
|
round_4="round_n",
|
||||||
|
round_5="round_u",
|
||||||
|
solo_1="solo_e",
|
||||||
|
solo_2="solo_h",
|
||||||
|
solo_3="solo_l",
|
||||||
|
solo_4="solo_n",
|
||||||
|
solo_5="solo_u",
|
||||||
|
sprint_10="sprint_10l",
|
||||||
|
sprint_20="sprint_20l",
|
||||||
|
sprint_40="sprint_40l",
|
||||||
|
sprint_400="sprint_400l",
|
||||||
|
sprint_100="sprint_100l",
|
||||||
|
sprint_1000="sprint_1000l",
|
||||||
|
survivor_easy="survivor_e",
|
||||||
|
survivor_hard="survivor_h",
|
||||||
|
survivor_lunatic="survivor_l",
|
||||||
|
survivor_normal="survivor_n",
|
||||||
|
survivor_ultimate="survivor_u",
|
||||||
|
tech_finesse2="tech_finesse_f",
|
||||||
|
tech_hard2="tech_h_plus",
|
||||||
|
tech_hard="tech_h",
|
||||||
|
tech_lunatic2="tech_l_plus",
|
||||||
|
tech_lunatic="tech_l",
|
||||||
|
tech_normal2="tech_n_plus",
|
||||||
|
tech_normal="tech_n",
|
||||||
|
techmino49_easy="techmino49_e",
|
||||||
|
techmino49_hard="techmino49_h",
|
||||||
|
techmino49_ultimate="techmino49_u",
|
||||||
|
techmino99_easy="techmino99_e",
|
||||||
|
techmino99_hard="techmino99_h",
|
||||||
|
techmino99_ultimate="techmino99_u",
|
||||||
|
tsd_easy="tsd_e",
|
||||||
|
tsd_hard="tsd_h",
|
||||||
|
tsd_ultimate="tsd_u",
|
||||||
|
GM="master_extra",
|
||||||
|
}
|
||||||
rankColor={
|
rankColor={
|
||||||
{.6,.3,.3},
|
{.6,.3,.3},
|
||||||
{.7,.5,.3},
|
{.7,.5,.3},
|
||||||
|
|||||||
Reference in New Issue
Block a user