Ejemplo n.º 1
0
        private static void Load(UnityModManager.ModEntry modEntry)
        {
            settings = Settings.Load <Settings>(modEntry);

            SqliteDataReader reader = LocalDb.cur.ReadFullTable("Synthesis_table ");
            var sourceData          = DbReader.Read <CompoundItemData>(reader, 20);

            templateData = sourceData.Find((CompoundItemData c) => c.ItemID == 2000046);


            modEntry.OnToggle  = OnToggle;
            modEntry.OnGUI     = OnGUI;
            modEntry.OnSaveGUI = OnSaveGUI;
            modEntry.OnUpdate  = OnUpdate;
            var harmony = HarmonyInstance.Create(modEntry.Info.Id);

            harmony.PatchAll(Assembly.GetExecutingAssembly());
        }
Ejemplo n.º 2
0
            static void Postfix(ref List <CompoundItemData> ___sourceData, ref CompoundTable[] ___m_compoundTable)
            {
                if (!enabled)
                {
                    return;
                }

                CompoundItemData cidd = ___sourceData.Find((CompoundItemData c) => c.ItemID == 2000046);

                int start  = 5000;
                int start2 = 5001000;
                List <CookMenuData> datas = Singleton <CookMenuMgr> .Instance.DataList;
                var TagList = DbReader.Read <CookItemtarget>(LocalDb.cur.ReadFullTable("Cook_TagList"), 20);

                foreach (CookMenuData data in datas)
                {
                    try
                    {
                        if (data.Mats.Count > 0)
                        {
                            CompoundItemData cid = cidd;
                            cid.NameID = Module <ItemDataMgr> .Self.GetItemNameId(data.Food);

                            cid.ItemID = data.Food;
                            List <CookMenuData.Mat> mats = new List <CookMenuData.Mat>();
                            if (data.Mats[0].ID > 200)
                            {
                                mats.Add(data.Mats[0]);
                            }
                            else
                            {
                                List <CookItemtarget> items = TagList.FindAll((t) => t.Tag.Contains(data.Mats[0].ID));
                                foreach (CookItemtarget item in items)
                                {
                                    mats.Add(new CookMenuData.Mat()
                                    {
                                        ID  = item.ID,
                                        Num = data.Mats[0].Num
                                    });
                                }
                            }
                            foreach (CookMenuData.Mat mat in mats)
                            {
                                cid.RequireItem1    = mat.ID;
                                cid.RequireItemNum1 = data.Mats[0].Num;
                                if (data.Mats.Count > 1)
                                {
                                    List <CookMenuData.Mat> mats2 = new List <CookMenuData.Mat>();
                                    if (data.Mats[1].ID > 200)
                                    {
                                        mats2.Add(data.Mats[1]);
                                    }
                                    else
                                    {
                                        List <CookItemtarget> items = TagList.FindAll((t) => t.Tag.Contains(data.Mats[1].ID));
                                        foreach (CookItemtarget item in items)
                                        {
                                            mats2.Add(new CookMenuData.Mat()
                                            {
                                                ID  = item.ID,
                                                Num = data.Mats[1].Num
                                            });
                                        }
                                    }
                                    foreach (CookMenuData.Mat mat2 in mats2)
                                    {
                                        cid.RequireItem2    = mat2.ID;
                                        cid.RequireItemNum2 = data.Mats[1].Num;
                                        if (data.Mats.Count > 2)
                                        {
                                            List <CookMenuData.Mat> mats3 = new List <CookMenuData.Mat>();
                                            if (data.Mats[2].ID > 200)
                                            {
                                                mats3.Add(data.Mats[2]);
                                            }
                                            else
                                            {
                                                List <CookItemtarget> items = TagList.FindAll((t) => t.Tag.Contains(data.Mats[2].ID));
                                                foreach (CookItemtarget item in items)
                                                {
                                                    mats3.Add(new CookMenuData.Mat()
                                                    {
                                                        ID  = item.ID,
                                                        Num = data.Mats[2].Num
                                                    });
                                                }
                                            }
                                            foreach (CookMenuData.Mat mat3 in mats3)
                                            {
                                                cid.RequireItem3    = mat3.ID;
                                                cid.RequireItemNum3 = data.Mats[2].Num;

                                                cid.ID     = start++;
                                                cid.BookId = start2++;
                                                CompoundItem ci = new CompoundItem(cid);
                                                ___m_compoundTable[(int)cidd.CompoundType].AddItem(ci);
                                            }
                                        }
                                        else
                                        {
                                            cid.ID     = start++;
                                            cid.BookId = start2++;
                                            CompoundItem ci = new CompoundItem(cid);
                                            ___m_compoundTable[(int)cidd.CompoundType].AddItem(ci);
                                        }
                                    }
                                }
                                else
                                {
                                    cid.ID     = start++;
                                    cid.BookId = start2++;
                                    CompoundItem ci = new CompoundItem(cid);
                                    ___m_compoundTable[(int)cidd.CompoundType].AddItem(ci);
                                }
                            }
                        }
                    }
                    catch (Exception ex)
                    {
                        Dbgl("exception: " + ex);
                    }
                }
            }