Beispiel #1
0
        public override void Init()
        {
            DBBaseName = PanelMode == PanelType.Materials ? "MaterialsGrid" : PanelMode == PanelType.Commodities ? "CommoditiesGrid" : "MicroResourcesGrid";

            dataGridViewMC.MakeDoubleBuffered();
            extCheckBoxWordWrap.Checked = GetSetting(dbWrapText, false);
            UpdateWordWrap();
            extCheckBoxWordWrap.Click += extCheckBoxWordWrap_Click;

            var enumlist   = new Enum[] { EDTx.UserControlMaterialCommodities_NameCol, EDTx.UserControlMaterialCommodities_ShortName, EDTx.UserControlMaterialCommodities_Category, EDTx.UserControlMaterialCommodities_Type, EDTx.UserControlMaterialCommodities_Number, EDTx.UserControlMaterialCommodities_Price };
            var enumlisttt = new Enum[] { EDTx.UserControlMaterialCommodities_buttonFilter_ToolTip, EDTx.UserControlMaterialCommodities_textBoxItems1_ToolTip, EDTx.UserControlMaterialCommodities_textBoxItems2_ToolTip, EDTx.UserControlMaterialCommodities_checkBoxShowZeros_ToolTip, EDTx.UserControlMaterialCommodities_extCheckBoxWordWrap_ToolTip };

            BaseUtils.Translator.Instance.TranslateControls(this, enumlist, null, "UserControlMaterialCommodities");
            BaseUtils.Translator.Instance.TranslateTooltip(toolTip, enumlisttt, this, "UserControlMaterialCommodities");

            cfs = new JournalFilterSelector();
            cfs.AddAllNone();

            MaterialCommodityMicroResourceType[] items;
            Tuple <MaterialCommodityMicroResourceType.ItemType, string>[] types;

            Price.Tag = Number.Tag = "Num";     // these tell the sorter to do numeric sorting

            if (PanelMode == PanelType.Materials)
            {
                dataGridViewMC.Columns[5].HeaderText = "Recipes".T(EDTx.UserControlMaterialCommodities_Recipes);
                labelItems1.Text = "Data".T(EDTx.UserControlMaterialCommodities_Data);
                labelItems2.Text = "Mats".T(EDTx.UserControlMaterialCommodities_Mats);

                items = MaterialCommodityMicroResourceType.GetMaterials(true);
                types = MaterialCommodityMicroResourceType.GetTypes((x) => x.IsMaterial, true);

                var cats = MaterialCommodityMicroResourceType.GetCategories((x) => x.IsMaterial, true);

                foreach (var t in cats)
                {
                    string[] members = MaterialCommodityMicroResourceType.GetFDNameMembersOfCategory(t.Item1, true);
                    cfs.AddGroupOption(String.Join(";", members) + ";", t.Item2);
                }
            }
            else if (PanelMode == PanelType.MicroResources)
            {
                dataGridViewMC.ContextMenuStrip = null;
                dataGridViewMC.Columns.Remove(Type);
                Number.HeaderText     = "Ship Locker".T(EDTx.UserControlMaterialCommodities_ShipLocker);
                Price.HeaderText      = "BackPack".T(EDTx.UserControlMaterialCommodities_BackPack);
                labelItems1.Text      = "Total".T(EDTx.UserControlMaterialCommodities_Total);
                textBoxItems2.Visible = labelItems2.Visible = false;

                items = MaterialCommodityMicroResourceType.GetMicroResources(true);
                types = MaterialCommodityMicroResourceType.GetTypes((x) => x.IsMicroResources, true);

                var cats = MaterialCommodityMicroResourceType.GetCategories((x) => x.IsMicroResources, true);

                foreach (var t in cats)
                {
                    string[] members = MaterialCommodityMicroResourceType.GetFDNameMembersOfCategory(t.Item1, true);
                    cfs.AddGroupOption(String.Join(";", members) + ";", t.Item2);
                }
            }
            else
            {
                dataGridViewMC.Columns.Remove(dataGridViewMC.Columns[1]); //remove cat

                DataGridViewColumn c = dataGridViewMC.Columns[1];         // reassign column 1 to end and call recipes
                c.HeaderText   = "Recipes".T(EDTx.UserControlMaterialCommodities_Recipes);
                c.DisplayIndex = 4;                                       // need to change its display pos
                dataGridViewMC.Columns.Remove(c);                         // and to place it at the end otherwise it does not fill in the right order
                dataGridViewMC.Columns.Add(c);

                labelItems1.Text           = "Total".T(EDTx.UserControlMaterialCommodities_Total);
                textBoxItems2.Visible      = labelItems2.Visible = false;
                checkBoxShowZeros.Location = new Point(textBoxItems1.Right + 8, checkBoxShowZeros.Top);

                items = MaterialCommodityMicroResourceType.GetCommodities(true);
                types = MaterialCommodityMicroResourceType.GetTypes((x) => x.IsCommodity, true);

                MaterialCommodityMicroResourceType[] rare = items.Where(x => x.IsRareCommodity).ToArray();
                cfs.AddGroupOption(String.Join(";", rare.Select(x => x.FDName).ToArray()) + ";", "Rare".T(EDTx.UserControlMaterialCommodities_Rare));
            }

            foreach (var t in types)
            {
                string[] members = MaterialCommodityMicroResourceType.GetFDNameMembersOfType(t.Item1, true);
                cfs.AddGroupOption(String.Join(";", members) + ";", t.Item2);
            }

            foreach (var x in items)
            {
                cfs.AddStandardOption(x.FDName, x.Name);
            }

            checkBoxShowZeros.Checked         = !GetSetting(dbClearZero, true); // used to be clear zeros, now its show zeros, invert
            checkBoxShowZeros.CheckedChanged += CheckBoxClear_CheckedChanged;

            cfs.SaveSettings += FilterChanged;
        }
Beispiel #2
0
        private void Display(uint?mcl)        // update display. mcl can be null
        {
            last_mcl = mcl;

            DataGridViewColumn sortcolprev   = dataGridViewMC.SortedColumn != null ? dataGridViewMC.SortedColumn : dataGridViewMC.Columns[0];
            SortOrder          sortorderprev = dataGridViewMC.SortedColumn != null ? dataGridViewMC.SortOrder : SortOrder.Ascending;
            int firstline = dataGridViewMC.SafeFirstDisplayedScrollingRowIndex();

            dataGridViewMC.Rows.Clear();

            textBoxItems1.Text = textBoxItems2.Text = "";

            if (mcl == null)
            {
                return;
            }

            //System.Diagnostics.Debug.WriteLine("Display mcl " + mcl.GetHashCode());

            string filters = GetSetting(dbFilter, "All");

            //System.Diagnostics.Debug.WriteLine("Filter is " + filters);
            string[] filter    = filters.SplitNoEmptyStartFinish(';');
            bool     all       = filter.Length > 0 && filter[0] == "All";
            bool     showzeros = checkBoxShowZeros.Checked;

            dataViewScrollerPanel.SuspendLayout();

            MaterialCommodityMicroResourceType[] allitems = PanelMode == PanelType.Materials ? MaterialCommodityMicroResourceType.GetMaterials(true) : PanelMode == PanelType.MicroResources ? MaterialCommodityMicroResourceType.GetMicroResources(true) : MaterialCommodityMicroResourceType.GetCommodities(true);

            foreach (MaterialCommodityMicroResourceType mcd in allitems) // we go thru all items..
            {
                if (all || filter.Contains(mcd.FDName))                  // and see if they are in the filter
                {
                    object[] rowobj;

                    MaterialCommodityMicroResource m = discoveryform.history.MaterialCommoditiesMicroResources.Get(mcl.Value, mcd.FDName); // at generation mcl, find fdname.

                    if (showzeros || (m != null && m.NonZero))                                                                             // if display zero, or we have some..
                    {
                        string s = "";

                        if (PanelMode == PanelType.Materials)
                        {
                            s = Recipes.UsedInRecipesByFDName(mcd.FDName, Environment.NewLine);

                            int limit = mcd.MaterialLimit() ?? 0;

                            rowobj = new[] { mcd.Name, mcd.Shortname, mcd.TranslatedCategory,
                                             mcd.TranslatedType + (limit > 0 ? " (" + limit.ToString() + ")" : ""),
                                             m != null?m.Count.ToString() : "0", s };
                        }
                        else if (PanelMode == PanelType.MicroResources)
                        {
                            rowobj = new[] { mcd.Name, mcd.Shortname, mcd.TranslatedCategory,
                                             m != null ? m.Counts[0].ToString() : "0", m != null ? m.Counts[1].ToString() : "0" };
                        }
                        else
                        {
                            s = Recipes.UsedInRecipesByFDName(mcd.FDName, Environment.NewLine);

                            rowobj = new[] { mcd.Name, mcd.TranslatedType,
                                             m != null?m.Count.ToString() : "0",
                                                 m != null?m.Price.ToString("0.#") : "-", s };
                        }

                        dataGridViewMC.Rows.Add(rowobj);
                        dataGridViewMC.Rows[dataGridViewMC.RowCount - 1].Cells[dataGridViewMC.ColumnCount - 1].ToolTipText = s;
                        dataGridViewMC.Rows[dataGridViewMC.RowCount - 1].Tag = s;
                    }
                }
            }

            dataViewScrollerPanel.ResumeLayout();

            dataGridViewMC.Sort(sortcolprev, (sortorderprev == SortOrder.Descending) ? ListSortDirection.Descending : ListSortDirection.Ascending);
            dataGridViewMC.Columns[sortcolprev.Index].HeaderCell.SortGlyphDirection = sortorderprev;
            if (firstline >= 0 && firstline < dataGridViewMC.RowCount)
            {
                dataGridViewMC.SafeFirstDisplayedScrollingRowIndex(firstline);
            }

            var mcllist = discoveryform.history.MaterialCommoditiesMicroResources.Get(mcl.Value);
            var counts  = MaterialCommoditiesMicroResourceList.Count(mcllist);

            if (PanelMode == PanelType.Materials)
            {
                textBoxItems1.Text = counts[(int)MaterialCommodityMicroResourceType.CatType.Encoded].ToString();
                textBoxItems2.Text = (counts[(int)MaterialCommodityMicroResourceType.CatType.Raw] + counts[(int)MaterialCommodityMicroResourceType.CatType.Manufactured]).ToString();
            }
            else if (PanelMode == PanelType.MicroResources)
            {
                textBoxItems1.Text = (counts[(int)MaterialCommodityMicroResourceType.CatType.Data] + counts[(int)MaterialCommodityMicroResourceType.CatType.Component] +
                                      counts[(int)MaterialCommodityMicroResourceType.CatType.Item] + counts[(int)MaterialCommodityMicroResourceType.CatType.Consumable]).ToString();
            }
            else
            {
                textBoxItems1.Text = counts[(int)MaterialCommodityMicroResourceType.CatType.Commodity].ToString();
            }
        }