Example #1
0
            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();
                }
            }
Example #2
0
        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);
            }
        }
Example #3
0
 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);
     }
 }
Example #4
0
        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();
        }
Example #5
0
        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();
        }
Example #6
0
        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);
            }
        }
Example #7
0
        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);
            }
        }
Example #8
0
        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);
            }
        }