コード例 #1
0
            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");
            }
コード例 #2
0
                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);
                }
            };
コード例 #3
0
 public void Add(OldEventObjectPicTable table) => varToPicTable.Add(table.CppVar, table);