void loadPicTables(ProjectDeserializer deserializer) { deserializer.deserializeFile((stream) => { if (!stream.ReadLine().tryExtractPrefix("const struct SpriteFrameImage gObjectEventPicTable_", "[", out string cppVar)) { return; } var table = new OldEventObjectPicTable() { CppVar = "gObjectEventPicTable_" + cppVar }; do { string line = stream.ReadLine().Trim(); if (line.StartsWith("}")) { break; } if (line.StartsWith("obj_frame_tiles")) { int skipLen = line.IndexOf('(') + "(gObjectEventPic_".Length; table.Frames.Add(new EventObject.Frame() { Pic = idToPic[line.Substring(skipLen, line.Length - skipLen - 2)], }); continue; } line = line.Remove(0, "overworld_frame(gObjectEventPic_".Length); string[] elements = line.Remove(line.Length - "),".Length).Split(", "); table.Frames.Add(new EventObject.Frame() { Pic = idToPic[elements[0]], Index = int.Parse(elements[3]) }); } while (true); varToPicTable.Add(table); }, "src", "data", "object_events", "object_event_pic_tables.h"); }
public OldEventObjectPicTable GetValue(string cppVar) { if (!varToPicTable.TryGetValue(cppVar, out OldEventObjectPicTable table)) { return new OldEventObjectPicTable() { CppVar = cppVar } } ; if (!usedPicVars.Add(cppVar)) { // If the table has already been accessed, clone it so that each info gets its own // table. table = new OldEventObjectPicTable() { CppVar = cppVar, Frames = table.Frames.Select(frame => new EventObject.Frame(frame)).ToList() }; } return(table); } };
public void Add(OldEventObjectPicTable table) => varToPicTable.Add(table.CppVar, table);