private void _reload() { ID = _tuple.GetValue <int>(_index); Name = ""; if (_itemsTable.ContainsKey(ID)) { Name = (string)_itemsTable.GetTuple(ID).GetRawValue(ServerItemAttributes.Name.Index); } DropOriginal = Int32.Parse(((string)_tuple.GetRawValue(_index + 1))); Drop = String.Format("{0:0.00} %", DropOriginal / 100f); MVP = _index < ServerMobAttributes.Drop1ID.Index ? "MVP" : ""; if (DbPathLocator.IsYamlMob()) { int b = (AttributeIndex - ServerMobAttributes.Drop1ID.Index) / 2; int distRandGroup = ServerMobAttributes.Drop1RandomOptionGroup.Index + b; int distSteal = ServerMobAttributes.Drop1Flags.Index + b; StealProtected = Boolean.Parse(_tuple.GetRawValue <string>(distSteal)); RandomOptionGroup = (_tuple.GetRawValue(distRandGroup) ?? "").ToString(); } }
private void _miCopy_Click(object sender, RoutedEventArgs e) { if (_lv.SelectedItems.Count > 0) { StringBuilder builder = new StringBuilder(); if (DbPathLocator.IsYamlMob()) { foreach (MobDropView item in _lv.SelectedItems) { builder.Append(item.ID); builder.Append(","); builder.Append(item.DropOriginal); builder.Append(","); builder.Append(item.StealProtected); builder.Append(","); builder.Append(item.RandomOptionGroup); builder.Append(","); } } else { foreach (MobDropView item in _lv.SelectedItems) { builder.Append(item.ID); builder.Append(","); builder.Append(item.DropOriginal); builder.Append(","); } } string res = builder.ToString().Trim(','); Clipboard.SetDataObject(res); } }
private void _lv_PreviewMouseRightButtonUp(object sender, MouseButtonEventArgs e) { try { if (DbPathLocator.IsYamlMob()) { bool hasItems = _lv.GetObjectAtPoint <ListViewItem>(e.GetPosition(_lv)) != null; _lv.ContextMenu.Items.Cast <UIElement>().Take(5).ToList().ForEach(p => p.Visibility = hasItems ? Visibility.Visible : Visibility.Collapsed); _lv.ContextMenu.Items.Cast <UIElement>().Last().Visibility = Visibility.Collapsed; } else { bool hasItems = _lv.GetObjectAtPoint <ListViewItem>(e.GetPosition(_lv)) != null; _lv.ContextMenu.Items.Cast <UIElement>().Take(5).ToList().ForEach(p => p.Visibility = hasItems ? Visibility.Visible : Visibility.Collapsed); } } catch (Exception err) { ErrorHandler.HandleException(err); } }
private void _miRemoveDrop_Click(object sender, RoutedEventArgs e) { if (_lv.SelectedItems.Count <= 0) { return; } Table <int, ReadableTuple <int> > btable = _tab.ProjectDatabase.GetMetaTable <int>(ServerDbs.Mobs); btable.Commands.Begin(); try { for (int i = 0; i < _lv.SelectedItems.Count; i++) { var selectedItem = (MobDropView)_lv.SelectedItems[i]; var p = (ReadableTuple <int>)_tab.List.SelectedItem; btable.Commands.Set(p, selectedItem.AttributeIndex, 0); btable.Commands.Set(p, selectedItem.AttributeIndex + 1, 0); if (DbPathLocator.IsYamlMob()) { int b = (selectedItem.AttributeIndex - ServerMobAttributes.Drop1ID.Index) / 2; int distRandGroup = ServerMobAttributes.Drop1RandomOptionGroup.Index + b; int distSteal = ServerMobAttributes.Drop1Flags.Index + b; btable.Commands.Set(p, distRandGroup, 0); btable.Commands.Set(p, distSteal, "false"); } ((RangeObservableCollection <MobDropView>)_lv.ItemsSource).Remove(selectedItem); i--; } } catch (Exception err) { ErrorHandler.HandleException(err); } btable.Commands.EndEdit(); }
private void _miEditDrop_Click(object sender, RoutedEventArgs e) { if (_lv.SelectedItems.Count <= 0) { return; } Table <int, ReadableTuple <int> > btable = _tab.ProjectDatabase.GetMetaTable <int>(ServerDbs.Mobs); try { var selectedItem = (MobDropView)_lv.SelectedItem; DropEditDialog dialog = new DropEditDialog(selectedItem.ID.ToString(CultureInfo.InvariantCulture), selectedItem.DropOriginal.ToString(CultureInfo.InvariantCulture), ServerDbs.Items, _tab.ProjectDatabase, false, DbPathLocator.IsYamlMob() ? 2 : 0); if (DbPathLocator.IsYamlMob()) { dialog._tbRandGroup.Text = selectedItem.RandomOptionGroup; } dialog.Owner = WpfUtilities.TopWindow; if (dialog.ShowDialog() == true) { string sid = dialog.Id; string svalue = dialog.DropChance; string randGroup = ""; int value; int id; if (DbPathLocator.IsYamlMob()) { randGroup = dialog.RandGroup; } Int32.TryParse(sid, out id); if (id <= 0) { return; } if (!Extensions.GetIntFromFloatValue(svalue, out value)) { ErrorHandler.HandleException("Invalid format (integer or float value only)"); return; } try { btable.Commands.Begin(); btable.Commands.Set(selectedItem.Tuple, selectedItem.AttributeIndex, id); btable.Commands.Set(selectedItem.Tuple, selectedItem.AttributeIndex + 1, value); if (DbPathLocator.IsYamlMob()) { int b = (selectedItem.AttributeIndex - ServerMobAttributes.Mvp1ID.Index) / 2; int distRandGroup = ServerMobAttributes.Mvp1RandomOptionGroup.Index + b; btable.Commands.Set(selectedItem.Tuple, distRandGroup, randGroup); } } finally { btable.Commands.EndEdit(); } selectedItem.Update(); } } catch (Exception err) { ErrorHandler.HandleException(err); } btable.Commands.EndEdit(); }
private void _miAddDrop_Click(object sender, RoutedEventArgs e) { if (_lv.Items.Count >= 3) { ErrorHandler.HandleException("You cannot add more than 3 MVP drops. Delete an item and then add a new one."); return; } Table <int, ReadableTuple <int> > btable = _tab.ProjectDatabase.GetMetaTable <int>(ServerDbs.Mobs); try { DropEditDialog dialog = new DropEditDialog("", "", ServerDbs.Items, _tab.ProjectDatabase, false, (DbPathLocator.IsYamlMob() ? 2 : 0)); dialog.Owner = WpfUtilities.TopWindow; if (dialog.ShowDialog() == true) { string sid = dialog.Id; string svalue = dialog.DropChance; string randGroup = ""; int value; int id; if (DbPathLocator.IsYamlMob()) { randGroup = dialog.RandGroup; } Int32.TryParse(sid, out id); if (id <= 0) { return; } if (!Extensions.GetIntFromFloatValue(svalue, out value)) { ErrorHandler.HandleException("Invalid format (integer or float value only)"); return; } TValue item = (TValue)_tab.List.SelectedItem; try { btable.Commands.Begin(); int startIndex = ServerMobAttributes.Mvp1ID.Index; for (int i = 0; i < 6; i += 2) { if (item.GetValue <int>(startIndex + i) == 0) { btable.Commands.Set((ReadableTuple <int>)(object) item, startIndex + i, id); btable.Commands.Set((ReadableTuple <int>)(object) item, startIndex + i + 1, value); if (DbPathLocator.IsYamlMob()) { btable.Commands.Set((ReadableTuple <int>)(object) item, ServerMobAttributes.Mvp1RandomOptionGroup.Index + (i / 2), randGroup); } break; } } } finally { btable.Commands.EndEdit(); } _lv.ItemsSource = null; _updateAction(item); } } catch (Exception err) { ErrorHandler.HandleException(err); } }
private void _miPaste_Click(object sender, RoutedEventArgs e) { try { if (_lv.Items.Count >= 3) { ErrorHandler.HandleException("You cannot add more than 3 drops. Delete an item and then add a new one."); return; } if (_tab.List.SelectedItem == null) { return; } if (!Clipboard.ContainsText()) { return; } string text = Clipboard.GetText(); string[] elementsToAdd = text.Split(','); if (DbPathLocator.IsYamlMob()) { if (elementsToAdd.Length % 3 != 0) { throw new Exception("The number of arguments must be even."); } Table <int, ReadableTuple <int> > btable = _tab.ProjectDatabase.GetMetaTable <int>(ServerDbs.Mobs); try { TValue item = (TValue)_tab.List.SelectedItem; try { btable.Commands.Begin(); int startIndex = ServerMobAttributes.Mvp1ID.Index; int i = 0; for (int j = 0; j < elementsToAdd.Length; j += 3) { string sid = elementsToAdd[j]; string svalue = elementsToAdd[j + 1]; string randGroup = elementsToAdd[j + 2]; int value; int id; Int32.TryParse(sid, out id); if (id <= 0) { return; } if (!Extensions.GetIntFromFloatValue(svalue, out value)) { ErrorHandler.HandleException("Invalid format (integer or float value only)"); return; } for (; i < 6; i += 2) { if (item.GetValue <int>(startIndex + i) == 0) { btable.Commands.Set((ReadableTuple <int>)(object) item, startIndex + i, id); btable.Commands.Set((ReadableTuple <int>)(object) item, startIndex + i + 1, value); btable.Commands.Set((ReadableTuple <int>)(object) item, ServerMobAttributes.Mvp1RandomOptionGroup.Index + (i / 2), randGroup); i += 2; break; } } } } finally { btable.Commands.EndEdit(); } _lv.ItemsSource = null; _updateAction(item); } catch (Exception err) { ErrorHandler.HandleException(err); } } else { if (elementsToAdd.Length % 2 != 0) { throw new Exception("The number of arguments must be even."); } Table <int, ReadableTuple <int> > btable = _tab.ProjectDatabase.GetMetaTable <int>(ServerDbs.Mobs); try { TValue item = (TValue)_tab.List.SelectedItem; try { btable.Commands.Begin(); int startIndex = ServerMobAttributes.Mvp1ID.Index; int i = 0; for (int j = 0; j < elementsToAdd.Length; j += 2) { string sid = elementsToAdd[j]; string svalue = elementsToAdd[j + 1]; int value; int id; Int32.TryParse(sid, out id); if (id <= 0) { return; } if (!Extensions.GetIntFromFloatValue(svalue, out value)) { ErrorHandler.HandleException("Invalid format (integer or float value only)"); return; } for (; i < 6; i += 2) { if (item.GetValue <int>(startIndex + i) == 0) { btable.Commands.Set((ReadableTuple <int>)(object) item, startIndex + i, id); btable.Commands.Set((ReadableTuple <int>)(object) item, startIndex + i + 1, value); i += 2; break; } } } } finally { btable.Commands.EndEdit(); } _lv.ItemsSource = null; _updateAction(item); } catch (Exception err) { ErrorHandler.HandleException(err); } } } catch (Exception err) { ErrorHandler.HandleException(err); } }
private void _miAddCardDrop_Click(object sender, RoutedEventArgs e) { if (DbPathLocator.IsYamlMob()) { return; } TValue item = (TValue)_tab.List.SelectedItem; if (item.GetValue <int>(ServerMobAttributes.DropCardid) != 0) { _lv.SelectedItem = _lv.Items.OfType <MobDropView>().FirstOrDefault(p => p.IsCard); _miEditDrop_Click(sender, e); return; } Table <int, ReadableTuple <int> > btable = _tab.ProjectDatabase.GetMetaTable <int>(ServerDbs.Mobs); try { DropEditDialog dialog = new DropEditDialog("", "", ServerDbs.Items, _tab.ProjectDatabase, true); dialog.Owner = WpfUtilities.TopWindow; if (dialog.ShowDialog() == true) { string sid = dialog.Id; string svalue = dialog.DropChance; int value; int id; Int32.TryParse(sid, out id); if (id <= 0) { return; } if (!Extensions.GetIntFromFloatValue(svalue, out value)) { ErrorHandler.HandleException("Invalid format (integer or float value only)"); return; } try { btable.Commands.Begin(); int startIndex = ServerMobAttributes.DropCardid.Index; for (int i = 0; i < 2; i += 2) { if (item.GetValue <int>(startIndex + i) == 0) { btable.Commands.Set((ReadableTuple <int>)(object) item, startIndex + i, id); btable.Commands.Set((ReadableTuple <int>)(object) item, startIndex + i + 1, value); break; } } } finally { btable.Commands.EndEdit(); } //_lv.Items.OfType<MobDropView>().ToList().ForEach(p => p.RemoveEvents()); _lv.ItemsSource = null; _updateAction(item); } } catch (Exception err) { ErrorHandler.HandleException(err); } }