예제 #1
0
        private void copy_items_btn_Click(object sender, EventArgs e)
        {
            CharEditTab sending_tab = find_sending_tab(sender);

            if (sending_tab != null)
            {
                var    enumerator   = sending_tab.slasher_list_view.SelectedIndices.GetEnumerator();
                int    ind          = 0;
                string items_string = "";

                while (enumerator.MoveNext())
                {
                    if (ind != 0)
                    {
                        //Add ','
                        items_string += ",";
                    }
                    string item_name = sending_tab.slasher_list_view.SelectedItems[ind].SubItems[0].Text;
                    items_string += item_name;
                    items_string += "=";
                    items_string += sending_tab.slasher_list_view.SelectedItems[ind].SubItems[1].Text;
                    ++ind;
                }

                if (items_string.Length == 0)
                {
                    MessageBox.Show("Please select some items to be copied.");
                }
                else
                {
                    System.Windows.Forms.Clipboard.SetText(items_string);
                    MessageBox.Show("Copied " + ind.ToString() + " items to clipboard.");
                }
            }
        }
예제 #2
0
        private void add_item_btn_Click(object sender, EventArgs e)
        {
            CharEditTab sending_tab = find_sending_tab(sender);

            if (sending_tab == null)
            {
                return;
            }

            ItemForm inpDiag = new ItemForm("", "Enter name of new item:");

            if (inpDiag.ShowDialog(this) == DialogResult.OK && inpDiag.GetResult() != null)
            {
                if (sending_tab.dbd_char.Inventory.ContainsKey(inpDiag.GetResult()))
                {
                    MessageBox.Show("Can't add an item that already exists...");
                }
                else
                {
                    sending_tab.dbd_char.Inventory.Add(inpDiag.GetResult(), 1);
                    var item = new ListViewItem(new[] { inpDiag.GetResult(), "1" });
                    sending_tab.slasher_list_view.Items.Add(item);
                }
            }
            inpDiag.Dispose();
        }
예제 #3
0
        private void slasher_tab_MouseDoubleClick(object sender, MouseEventArgs e)
        {
            CharEditTab sending_tab = find_sending_tab(sender);

            if (sending_tab != null && sending_tab.slasher_list_view.GetItemAt(e.X, e.Y) != null)
            {
                var enumerator = sending_tab.slasher_list_view.SelectedIndices.GetEnumerator();
                enumerator.MoveNext();
                var    cur_idx   = enumerator.Current;
                string item_name = sending_tab.slasher_list_view.SelectedItems[0].SubItems[0].Text;

                NumberForm inpDiag = new NumberForm(sending_tab.dbd_char.Inventory[item_name].ToString());
                if (inpDiag.ShowDialog(this) == DialogResult.OK)
                {
                    item_cnt -= sending_tab.dbd_char.Inventory[item_name];
                    sending_tab.dbd_char.Inventory[item_name] = int.Parse(inpDiag.GetResult());
                    sending_tab.slasher_list_view.SelectedItems[0].SubItems[1].Text = "" + sending_tab.dbd_char.Inventory[item_name];
                    item_cnt += sending_tab.dbd_char.Inventory[item_name];
                }
                inpDiag.Dispose();
            }

            if (item_cnt >= 250000 && !displayed_item_warning)
            {
                displayed_item_warning = true;
                MessageBox.Show("Warning: Profile has more than 250.000 items. Adding too many items causes freeze issues and crashes (instable game).");
            }
        }
예제 #4
0
        private void paste_items_btn_Click(object sender, EventArgs e)
        {
            CharEditTab sending_tab = find_sending_tab(sender);

            if (sending_tab != null)
            {
                string   clipboard_text = System.Windows.Forms.Clipboard.GetText();
                string[] words          = clipboard_text.Split(',');
                int      pasted_amount  = 0;

                foreach (string s in words)
                {
                    string[] assignment = s.Split('=');
                    if (assignment.Count() != 2)
                    {
                        MessageBox.Show("Invalid format: " + s);
                        return;
                    }
                    int count = int.Parse(assignment[1]);

                    if (sending_tab.dbd_char.Inventory.ContainsKey(assignment[0]))
                    {
                        sending_tab.dbd_char.Inventory[assignment[0]] = count;
                        for (int i = 0; i < sending_tab.slasher_list_view.SelectedItems.Count; ++i)
                        {
                            if (sending_tab.slasher_list_view.SelectedItems[i].SubItems[0].Text.Equals(assignment[0]))
                            {
                                sending_tab.slasher_list_view.SelectedItems[i].SubItems[1].Text = "" + sending_tab.dbd_char.Inventory[assignment[0]];
                            }
                        }
                    }
                    else
                    {
                        sending_tab.dbd_char.Inventory.Add(assignment[0], count);
                        var item = new ListViewItem(new[] { assignment[0], assignment[1] });
                        sending_tab.slasher_list_view.Items.Add(item);
                    }

                    ++pasted_amount;
                }

                MessageBox.Show("Pasted " + pasted_amount.ToString() + " items.");
            }
        }
예제 #5
0
        private void modify_amount_btn_Click(object sender, EventArgs e)
        {
            CharEditTab sending_tab = find_sending_tab(sender);

            if (sending_tab != null)
            {
                var           enumerator     = sending_tab.slasher_list_view.SelectedIndices.GetEnumerator();
                bool          first          = true;
                List <string> selected_items = new List <string>();
                int           ind            = 0;
                string        items_string   = "";

                while (enumerator.MoveNext())
                {
                    if (!first)
                    {
                        //Add ','
                        items_string += ",";
                    }
                    var    cur_idx   = enumerator.Current;
                    string item_name = sending_tab.slasher_list_view.SelectedItems[ind].SubItems[0].Text;
                    selected_items.Add(item_name);
                    items_string += item_name;
                    first         = false;
                    ++ind;
                }

                if (ind == 0)
                {
                    return; //Nothing selected!
                }

                int max_amount = 0;
                foreach (string item in selected_items)
                {
                    if (sending_tab.dbd_char.Inventory[item] > max_amount)
                    {
                        max_amount = sending_tab.dbd_char.Inventory[item];
                    }
                }

                NumberForm inpDiag = new NumberForm(max_amount.ToString());
                if (inpDiag.ShowDialog(this) == DialogResult.OK)
                {
                    int j = 0;
                    foreach (string item in selected_items)
                    {
                        item_cnt -= sending_tab.dbd_char.Inventory[item];
                        sending_tab.dbd_char.Inventory[item] = int.Parse(inpDiag.GetResult());
                        sending_tab.slasher_list_view.SelectedItems[j].SubItems[1].Text = "" + sending_tab.dbd_char.Inventory[item];
                        item_cnt += sending_tab.dbd_char.Inventory[item];
                        ++j;
                    }
                }
                inpDiag.Dispose();
            }

            if (item_cnt >= 250000 && !displayed_item_warning)
            {
                displayed_item_warning = true;
                MessageBox.Show("Warning: Profile has more than 250.000 items. Adding too many items causes freeze issues and crashes (instable game).");
            }
        }
예제 #6
0
        private void set_level_btn_Click(object sender, EventArgs e)
        {
            CharEditTab sending_tab = find_sending_tab(sender);

            if (sending_tab != null)
            {
                // First read level
                int             char_lvl            = int.Parse(json_obj["CharacterData"][sending_tab.dbd_char.EntryNum]["CharacterDataValue"]["bloodWebLevel"].ToString());
                int             char_prestige_count = int.Parse(json_obj["CharacterData"][sending_tab.dbd_char.EntryNum]["CharacterDataValue"]["prestigeLevel"].ToString());
                List <DateTime> prestige_dates      = json_obj["CharacterData"][sending_tab.dbd_char.EntryNum]["CharacterDataValue"]["PrestigeEarnedDates"].ToObject <List <DateTime> >();

                PrestigeForm inpDiag = new PrestigeForm(char_lvl, char_prestige_count, prestige_dates, sending_tab.has_prestige);
                if (inpDiag.ShowDialog(this) == DialogResult.OK && inpDiag.DidSave() == true)
                {
                    DateTime        legacy_date    = new DateTime(1, 1, 1, 0, 0, 0);
                    List <DateTime> new_dates      = new List <DateTime>();
                    int             prestige_count = 0;
                    if (inpDiag.pres1)
                    {
                        ++prestige_count;
                        if (inpDiag.legacy1)
                        {
                            new_dates.Add(legacy_date);
                        }
                        else
                        {
                            new_dates.Add(inpDiag.t_pres1);
                        }

                        if (inpDiag.pres2)
                        {
                            ++prestige_count;
                            if (inpDiag.legacy2)
                            {
                                new_dates.Add(legacy_date);
                            }
                            else
                            {
                                new_dates.Add(inpDiag.t_pres2);
                            }

                            if (inpDiag.pres3)
                            {
                                ++prestige_count;
                                if (inpDiag.legacy3)
                                {
                                    new_dates.Add(legacy_date);
                                }
                                else
                                {
                                    new_dates.Add(inpDiag.t_pres3);
                                }
                            }
                        }
                    }

                    int new_lvl = inpDiag.level;

                    //Assign everything
                    json_obj["CharacterData"][sending_tab.dbd_char.EntryNum]["CharacterDataValue"]["bloodWebLevel"]       = new_lvl;
                    json_obj["CharacterData"][sending_tab.dbd_char.EntryNum]["CharacterDataValue"]["prestigeLevel"]       = prestige_count;
                    json_obj["CharacterData"][sending_tab.dbd_char.EntryNum]["CharacterDataValue"]["PrestigeEarnedDates"] = JToken.FromObject(new_dates);
                }
                else
                {
                    //MessageBox.Show("Canceled");
                }
                inpDiag.Dispose();
            }
        }
예제 #7
0
        void fill_tabs()
        {
            if (cur_json.Length == 0)
            {
                return;
            }
            //Parse json
            try {
                json_obj = JObject.Parse(cur_json);

                //Json text
                json_text_field.Text = Newtonsoft.Json.JsonConvert.SerializeObject(json_obj, Newtonsoft.Json.Formatting.Indented);

                dbd_char_list.Clear();;
                main_val_listview.Clear();
                main_val_listview.Items.Clear();
                main_val_listview.Columns.Clear();
                main_val_listview.Columns.Add("Key", -2, HorizontalAlignment.Left);
                main_val_listview.Columns.Add("Value", -2, HorizontalAlignment.Left);
                main_val_listview.View = View.Details;
                foreach (string key in main_keys)
                {
                    var item = new ListViewItem(new[] { key, json_obj.GetValue(key).ToString() });
                    main_val_listview.Items.Add(item);
                }
                main_val_listview.AutoResizeColumns(ColumnHeaderAutoResizeStyle.ColumnContent);
                main_val_listview.AutoResizeColumns(ColumnHeaderAutoResizeStyle.HeaderSize);

                IList <JToken> results = json_obj["CharacterData"].Children().ToList();
                IList <MainForm.CharacterData> searchResults = new List <MainForm.CharacterData>();
                item_cnt = 0;
                int entry = 0;
                foreach (JToken result in results)
                {
                    MainForm.CharacterData cc = result.ToObject <MainForm.CharacterData>();
                    searchResults.Add(cc);
                    if (cc.CharacterDataID == "-1")
                    {
                        ++entry;
                        continue;
                    }

                    IList <JToken> item_token = cc.CharacterDataValue["inventoryData"].Children().ToList();
                    DbdCharacter   dbd_char   = new DbdCharacter(cc.CharacterDataID, entry);
                    foreach (JToken item in item_token)
                    {
                        MainForm.InventoryData inv_item = item.ToObject <MainForm.InventoryData>();
                        if (!dbd_char.Inventory.ContainsKey(inv_item.name))
                        {
                            dbd_char.Inventory[inv_item.name] = 1;
                        }
                        else
                        {
                            ++dbd_char.Inventory[inv_item.name];
                        }
                        ++item_cnt;
                    }
                    dbd_char_list.Add(dbd_char);
                    ++entry;
                }

                for (int i = 0; i < char_tabs.Count; ++i)
                {
                    char_tabs[i].Dispose();
                }
                char_tabs.Clear();

                int cnum = dbd_char_list.Count;
                foreach (DbdCharacter dbd_char in dbd_char_list.Reverse())
                {
                    CharEditTab gui_tab = new CharEditTab(this, --cnum, dbd_char);
                    char_tabs.Add(gui_tab);
                }
            } catch (Newtonsoft.Json.JsonReaderException) {
                MessageBox.Show("Savegame file is not valid :-(");
            }
        }