Beispiel #1
0
        private static bool AddNewTypeF(string c, Color cl, string name, string t, string sn = "", string fdName = "")
        {
            string fdn             = (fdName.Length > 0) ? fdName : name.FDName();
            MaterialCommodityDB mc = new MaterialCommodityDB(c, name, fdn, t, sn, cl, 0);

            mc.SetCache();
            return(true);
        }
Beispiel #2
0
        public static MaterialCommodityDB EnsurePresent(string cat, string fdname, SQLiteConnectionUser conn)  // By FDNAME
        {
            if (!cachelist.ContainsKey(fdname.ToLower()))
            {
                MaterialCommodityDB mcdb = new MaterialCommodityDB(cat, fdname.SplitCapsWordFull(), fdname, "", "", Color.Green, 0);
                mcdb.SetCache();
                System.Diagnostics.Debug.WriteLine("Material not present: " + cat + "," + fdname);
            }

            return(cachelist[fdname.ToLower()]);
        }
        public static string RMat(string fdname)            // fix up fdname into a nicer name
        {
            MaterialCommodityDB mc = MaterialCommodityDB.GetCachedMaterial(fdname);

            if (mc != null)
            {
                return(mc.name);
            }
            else
            {
                return(fdname.SplitCapsWordFull());
            }
        }
        // ifnorecatonsearch is used if you don't know if its a material or commodity.. for future use.

        private int EnsurePresent(string cat, string fdname, SQLiteConnectionUser conn, bool ignorecatonsearch = false)
        {
            int index = list.FindIndex(x => x.fdname.Equals(fdname, StringComparison.InvariantCultureIgnoreCase) && (ignorecatonsearch || x.category.Equals(cat, StringComparison.InvariantCultureIgnoreCase)));

            if (index >= 0)
            {
                return(index);
            }
            else
            {
                MaterialCommodityDB mcdb = MaterialCommodityDB.EnsurePresent(cat, fdname, conn); // get a MCDB of this
                MaterialCommodities mc   = new MaterialCommodities(mcdb);                        // make a new entry
                list.Add(mc);
                return(list.Count - 1);
            }
        }
 public MaterialCommodities(MaterialCommodityDB c)
 {
     count        = scratchpad = 0;
     price        = 0;
     this.Details = c;
 }
        //return maximum can make, how many made, needed string.

        static public Tuple <int, int, string> HowManyLeft(List <MaterialCommodities> list, Recipe r, List <MaterialCommodities> shoppinglist = null, int tomake = 0)
        {
            int           max    = int.MaxValue;
            StringBuilder needed = new StringBuilder(64);

            for (int i = 0; i < r.ingredients.Length; i++)
            {
                string ingredient = r.ingredients[i];

                int mi   = list.FindIndex(x => x.shortname.Equals(ingredient));
                int got  = (mi > 0) ? list[mi].scratchpad : 0;
                int sets = got / r.count[i];

                max = Math.Min(max, sets);

                int need = r.count[i] * tomake;

                if (got < need)
                {
                    if (shoppinglist != null)
                    {
                        int shopentry = shoppinglist.FindIndex(x => x.shortname.Equals(ingredient));
                        if (shopentry >= 0)
                        {
                            shoppinglist[shopentry].scratchpad += (need - got);
                        }
                        else
                        {
                            MaterialCommodityDB db = MaterialCommodityDB.GetCachedMaterialByShortName(ingredient);
                            if (db != null)                                           // MUST be there, its well know, but will check..
                            {
                                MaterialCommodities mc = new MaterialCommodities(db); // make a new entry
                                mc.scratchpad = (need - got);
                                shoppinglist.Add(mc);
                            }
                        }
                    }

                    string dispName;
                    if (mi > 0)
                    {
                        dispName = (list[mi].category == MaterialCommodityDB.MaterialEncodedCategory || list[mi].category == MaterialCommodityDB.MaterialManufacturedCategory) ? " " + list[mi].name : list[mi].shortname;
                    }
                    else
                    {
                        MaterialCommodityDB db = MaterialCommodityDB.GetCachedMaterialByShortName(ingredient);
                        dispName = (db.category == MaterialCommodityDB.MaterialEncodedCategory || db.category == MaterialCommodityDB.MaterialManufacturedCategory) ? " " + db.name : db.shortname;
                    }
                    string s = (need - got).ToStringInvariant() + dispName;
                    if (needed.Length == 0)
                    {
                        needed.Append("Need:" + s);
                    }
                    else
                    {
                        needed.Append("," + s);
                    }
                }
            }

            int made = 0;

            if (max > 0 && tomake > 0)             // if we have a set, and use it up
            {
                made = Math.Min(max, tomake);      // can only make this much
                StringBuilder usedstr = new StringBuilder(64);

                for (int i = 0; i < r.ingredients.Length; i++)
                {
                    int mi = list.FindIndex(x => x.shortname.Equals(r.ingredients[i]));
                    System.Diagnostics.Debug.Assert(mi != -1);
                    int used = r.count[i] * made;
                    list[mi].scratchpad -= used;
                    string dispName = (list[mi].category == MaterialCommodityDB.MaterialEncodedCategory || list[mi].category == MaterialCommodityDB.MaterialManufacturedCategory) ? " " + list[mi].name : list[mi].shortname;
                    usedstr.AppendPrePad(used.ToStringInvariant() + dispName, ",");
                }

                needed.AppendPrePad("Used: " + usedstr.ToString(), ", ");
            }

            return(new Tuple <int, int, string>(max, made, needed.ToNullSafeString()));
        }
Beispiel #7
0
 static public string FDNameTranslation(string old)
 {
     return(MaterialCommodityDB.FDNameTranslation(old));
 }