From 9e0ca58fbe85375081ff3498314f0c06f0c98191 Mon Sep 17 00:00:00 2001 From: Bluzume <39113159+KuromeSan@users.noreply.github.com> Date: Sat, 14 Aug 2021 03:35:39 +1200 Subject: [PATCH] Fix bugs --- .vs/AppInfoParser/v16/.suo | Bin 91136 -> 91136 bytes AppInfoCli/CXMLBuilder.cs | 11 +++++------ AppInfoCli/CXMLReader.cs | 37 ++++++++++++++++++++++--------------- AppInfoCli/Program.cs | 18 +++++++++--------- 4 files changed, 36 insertions(+), 30 deletions(-) diff --git a/.vs/AppInfoParser/v16/.suo b/.vs/AppInfoParser/v16/.suo index 67d8fff4b097eaef0372ee8da9f1fe859cc3685b..096991b12ee2cc1c87c850440f1e5cb120848cae 100644 GIT binary patch delta 3842 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 " + xmlRelNewPath); - XmlData = XmlData.Replace(xmlRelOldPath, xmlRelNewPath); + string xmlRelOldPath = oldName.Substring(Tools.GetRootFolder(oldName).Length + 1); + string xmlRelNewPath = newPath.Substring(Tools.GetRootFolder(newPath).Length + 1); + Console.WriteLine("Moved " + xmlRelOldPath + " => " + xmlRelNewPath); + XmlData = XmlData.Replace(xmlRelOldPath, xmlRelNewPath); + } if (ProcessFiles) ProcessFile(newPath); } else { - Console.WriteLine("Generated Filename used for " + lpHandler.OldFileName); + Console.WriteLine("NOT MOVING: " + lpHandler.OldFileName); if (ProcessFiles) ProcessFile(lpHandler.OldFileName); } @@ -517,7 +521,7 @@ namespace CXML } } - public void ChangeFilename(Int64 ElementPtr, String NewName, Boolean FileEntry) + public void RegisterFile(Int64 ElementPtr, String NewName, Boolean FileEntry, String IdealName=null) { Console.WriteLine("Adding Entry for Loopback: 0x" + ElementPtr.ToString("X8") + " (" + NewName + ")"); for(int i = 0; i < FileList.Count; i++) @@ -529,6 +533,7 @@ namespace CXML if (FileList[i].OldFileName != null) break; FileList[i].OldFileName = NewName; + FileList[i].FileName = IdealName; return; } else @@ -543,6 +548,7 @@ namespace CXML if (FileEntry) { lpHandler.OldFileName = NewName; + lpHandler.FileName = IdealName; } else { @@ -574,7 +580,7 @@ namespace CXML break; case AttributeType.TYPE_FLOAT: float FloatValue = bTreeTable.ReadSingle(); - AttributeValue = FloatValue.ToString()+"f"; + AttributeValue = ((double)FloatValue).ToString() + "f"; Console.WriteLine("Float - Value: " + AttributeValue.ToString() + " sz:" + bTreeTable.ReadInt32()); break; case AttributeType.TYPE_STRING: @@ -636,7 +642,7 @@ namespace CXML for(int i = 0; i < FloatArraySize; i++) { FloatValue = bFloatArrayTable.ReadSingle(); - StrList.Add(FloatValue.ToString()+"f"); + StrList.Add(((double)FloatValue).ToString() +"f"); } string[] StrArray = StrList.ToArray(); AttributeValue = "[" + String.Join(", ", StrArray) + "]"; @@ -650,9 +656,10 @@ namespace CXML FileTable.Seek(FilePtr, SeekOrigin.Begin); FileTable.Read(FileData, 0, FileSz); string FileHash = Tools.GenerateHash(FileData); - + string FileSmallHash = Tools.GenerateShortHash(FileData); String Extension = Tools.GetFileExtension(FileData); - String FileName = Path.Combine(FileDir, ElementName, FileHash + Extension); + String FileName = Path.Combine(FileDir, "original", FilePtr.ToString("X")+"-"+FileHash + Extension); + String IdealName = ElementName + "-" + AttributeName + "-" + FileSmallHash + Extension; if (!File.Exists(FileName)) { Console.WriteLine("Writing: " + FileName); @@ -661,7 +668,7 @@ namespace CXML Directory.CreateDirectory(Path.GetDirectoryName(FileName)); File.WriteAllBytes(FileName, FileData); - ChangeFilename(ElementPtr, FileName, true); + RegisterFile(ElementPtr, FileName, true, IdealName); } else { @@ -682,7 +689,7 @@ namespace CXML Console.WriteLine("Loopback: " + LoopbackAttribute +" "+ LoopbackPtr.ToString("X")+" ("+ElementPtr.ToString("X")+")"); AttributeValue = Tools.ReadString(StringIDTable); - ChangeFilename(LoopbackPtr, AttributeValue.ToString(), false); + RegisterFile(LoopbackPtr, AttributeValue.ToString(), false); Console.WriteLine("Loopback ID String: " + StringIdTableOffset + " sz: " + bTreeTable.ReadInt32()); break; @@ -707,7 +714,7 @@ namespace CXML Console.WriteLine("Int Loopback: " + LoopbackAttribute + " " + LoopbackPtr.ToString("X") + " (" + ElementPtr.ToString("X") + ")"); AttributeValue = IDValue.ToString("X8"); - ChangeFilename(LoopbackPtr, AttributeValue.ToString(), false); + RegisterFile(LoopbackPtr, AttributeValue.ToString(), false); Console.WriteLine("Loopback Int: " + IntIdTableOffset + " sz: " + bTreeTable.ReadInt32()); break; diff --git a/AppInfoCli/Program.cs b/AppInfoCli/Program.cs index e4c3753..458710e 100644 --- a/AppInfoCli/Program.cs +++ b/AppInfoCli/Program.cs @@ -65,6 +65,10 @@ namespace CXMLCli String ArgsFull = String.Join(" ", args); String path = args[0]; + if (args.Length == 1) + { + ArgsFull += " -d -p -w"; + } if (HasArg(ArgsFull, "-iv") || HasArg(ArgsFull, "--is-vag")) { @@ -99,16 +103,12 @@ namespace CXMLCli CXML.CXMLParser cxmlParser = new CXML.CXMLParser(); if(!HasArg(ArgsFull, "-c") && !HasArg(ArgsFull, "--compile")) - cxmlParser.Init(path, Check); - - if (args.Length == 1) { - if (Path.GetExtension(args[0]) == ".xml") - ArgsFull += Path.ChangeExtension(args[0], ".cxml") + " -c -w"; - else - ArgsFull += "-d -p -w"; + Console.WriteLine("Initalizing: " + path); + cxmlParser.Init(path, Check); } + if (HasArg(ArgsFull, "-f") || HasArg(ArgsFull, "--force")) { Check = false; @@ -116,7 +116,7 @@ namespace CXMLCli if (HasArg(ArgsFull, "-dt") || HasArg(ArgsFull, "--dump-tables")) { - ArgsFull += "-tt -ist -iit -st -ct -sit -iat -fat -ft"; + ArgsFull += " -tt -ist -iit -st -ct -sit -iat -fat -ft"; } if (HasArg(ArgsFull, "-tt") || HasArg(ArgsFull, "--dump-tree")) @@ -198,7 +198,7 @@ namespace CXMLCli } else if (HasArg(ArgsFull, "-c") || HasArg(ArgsFull, "--compile")) { - Console.WriteLine("Compiling."); + Console.WriteLine("Compiling: " + path); CXMLBuilder builder = new CXMLBuilder(); builder.Init(path, args[1]); builder.BuildCXML(path, args[1]);