Example #1
0
        private void _update(TValue item)
        {
            List <MobDropView> result = new List <MobDropView>();
            Table <int, ReadableTuple <int> > btable = _tab.ProjectDatabase.GetMetaTable <int>(ServerDbs.Items);

            try {
                int startIndex = ServerMobAttributes.Mvp1ID.Index;

                for (int j = 0; j < 6; j += 2)
                {
                    string value = (string)item.GetRawValue(startIndex + j);

                    if (string.IsNullOrEmpty(value) || value == "0")
                    {
                        continue;
                    }

                    ReadableTuple <int> tuple = (ReadableTuple <int>)(object) item;
                    result.Add(new MobDropView(tuple, startIndex + j, btable));
                }
            }
            catch {
            }

            _lv.ItemsSource = new RangeObservableCollection <MobDropView>(result.OrderBy(p => p, Extensions.BindDefaultSearch <MobDropView>(_lv, "ID")));
        }
Example #2
0
        private void _update(TValue item)
        {
            int    id  = item.GetKey <int>();
            string sid = id.ToString(CultureInfo.InvariantCulture);

            if (id == 0)
            {
                _lv.ItemsSource = null;
                return;
            }

            List <MobSkillView> result = new List <MobSkillView>();

            try {
                result.AddRange(_skillMobsTable.FastItems.Where(p => p.GetStringValue(ServerMobSkillAttributes.MobId.Index) == sid).Select(p => new MobSkillView(_skillsTable.TryGetTuple(p.GetValue <int>(ServerMobSkillAttributes.SkillId)), p, id)));
            }
            catch {
            }

            _lv.ItemsSource = new RangeObservableCollection <MobSkillView>(result.OrderBy(p => p, Extensions.BindDefaultSearch <MobSkillView>(_lv, "Name")));
        }
Example #3
0
 public void Update(List <MobDropView> result)
 {
     _tab.BeginDispatch(delegate {
         _lv.ItemsSource = new RangeObservableCollection <MobDropView>(result.OrderBy(p => p, Extensions.BindDefaultSearch <MobDropView>(_lv, "ID")));
     });
 }
Example #4
0
        private void _update(TValue item)
        {
            if (_item != item)
            {
                _lastSelectedIndex1 = -1;
                _lastSelectedIndex2 = -1;
            }

            _item = item;
            List <PetEvolutionView>           result = new List <PetEvolutionView>();
            Table <int, ReadableTuple <int> > btable = _tab.ProjectDatabase.GetMetaTable <int>(ServerDbs.Mobs);

            try {
                _evolution = new Evolution((string)item.GetRawValue(ServerPetAttributes.Evolution.Index));
                result.AddRange(_evolution.Targets.Select(t => new PetEvolutionView((ReadableTuple <int>)(object) item, t, btable)));
            }
            catch {
            }

            _lv.ItemsSource = new RangeObservableCollection <PetEvolutionView>(result.OrderBy(p => p, Extensions.BindDefaultSearch <PetEvolutionView>(_lv, "ID", true)));

            if (_lv.Items.Count > 0)
            {
                if (_lastSelectedIndex1 == -1)
                {
                    _lv.SelectedIndex = 0;
                }
                else
                {
                    //if (_lastSelectedIndex1 >= _lv.Items.Count) {
                    //	_lastSelectedIndex1 = 0;
                    //}

                    int index2 = _lastSelectedIndex2;

                    _lv.SelectedIndex = _lastSelectedIndex1;

                    if (index2 >= _lvRequirements.Items.Count)
                    {
                        _lastSelectedIndex2 = -1;
                    }
                    else
                    {
                        _lastSelectedIndex2 = index2;
                    }

                    _lvRequirements.SelectedIndex = _lastSelectedIndex2;
                }
            }
        }
Example #5
0
        private void _updateRequirements(PetEvolutionView evolution)
        {
            List <PetEvolutionTargetView>     result = new List <PetEvolutionTargetView>();
            Table <int, ReadableTuple <int> > btable = _tab.ProjectDatabase.GetMetaTable <int>(ServerDbs.Items);
            Table <int, ReadableTuple <int> > ctable = _tab.ProjectDatabase.GetTable <int>(ServerDbs.CItems);

            try {
                result.AddRange(evolution.EvolutionTarget.ItemRequirements.Select(t => new PetEvolutionTargetView(t, btable, ctable)));
            }
            catch {
            }

            _lvRequirements.ItemsSource = new RangeObservableCollection <PetEvolutionTargetView>(result.OrderBy(p => p, Extensions.BindDefaultSearch <PetEvolutionTargetView>(_lvRequirements, "ID", true)));
        }
Example #6
0
        private void _update(TValue item)
        {
            Table <int, ReadableTuple <int> > btable = _tab.GetMetaTable <int>(ServerDbs.Mobs);
            string id = item.GetKey <int>().ToString(CultureInfo.InvariantCulture);

            if (item.GetKey <int>() == 0)
            {
                _lv.ItemsSource = null;
                return;
            }

            List <ReadableTuple <int> > tuples = btable.FastItems;
            List <MobDropView>          result = new List <MobDropView>();

            try {
                int  startIndex;
                bool found;

                for (int i = 0; i < tuples.Count; i++)
                {
                    var p = tuples[i];

                    found      = false;
                    startIndex = ServerMobAttributes.Mvp1ID.Index;

                    for (int j = 0; j < 6; j += 2)
                    {
                        if ((string)p.GetRawValue(startIndex + j) == id)
                        {
                            result.Add(new MobDropView(p, startIndex + j));
                            found = true;
                            break;
                        }
                    }

                    if (found)
                    {
                        continue;
                    }

                    startIndex = ServerMobAttributes.Drop1ID.Index;

                    for (int j = 0; j < 20; j += 2)
                    {
                        if ((string)p.GetRawValue(startIndex + j) == id)
                        {
                            result.Add(new MobDropView(p, startIndex + j));
                            break;
                        }
                    }
                }
            }
            catch {
            }

            _lv.ItemsSource = new RangeObservableCollection <MobDropView>(result.OrderBy(p => p, Extensions.BindDefaultSearch <MobDropView>(_lv, "ID")));
        }
Example #7
0
        public override void Init(GDbTabWrapper <TKey, ReadableTuple <TKey> > tab, DisplayableProperty <TKey, ReadableTuple <TKey> > dp)
        {
            _tab = tab;
            _initSettings(tab, dp);
            _tab.Settings.NewItemAddedFunction += item => item.SetRawValue(ServerItemGroupAttributes.Table, new Dictionary <int, ReadableTuple <int> >());

            GenericDatabase gdb = ((GenericDatabase)_tab.Database);

            _itemGroupsTable.Commands.PreviewCommandUndo     += _previewCommandChanged;
            _itemGroupsTable.Commands.PreviewCommandRedo     += _previewCommandChanged;
            _itemGroupsTable.Commands.PreviewCommandExecuted += _previewCommandChanged;
            _itemGroupsTable.Commands.CommandUndo            += _commandChanged;
            _itemGroupsTable.Commands.CommandRedo            += _commandChanged;
            _itemGroupsTable.Commands.CommandExecuted        += _commandChanged;

            gdb.Commands.PreviewCommandUndo     += _previewCommandChanged2;
            gdb.Commands.PreviewCommandRedo     += _previewCommandChanged2;
            gdb.Commands.PreviewCommandExecuted += _previewCommandChanged2;
            gdb.Commands.CommandUndo            += _commandChanged2;
            gdb.Commands.CommandRedo            += _commandChanged2;
            gdb.Commands.CommandExecuted        += _commandChanged2;

            Grid grid = new Grid();

            grid.SetValue(Grid.RowProperty, _row);
            grid.SetValue(Grid.ColumnProperty, 0);
            grid.SetValue(Grid.ColumnSpanProperty, 1);

            grid.RowDefinitions.Add(new RowDefinition {
                Height = new GridLength(-1, GridUnitType.Auto)
            });
            grid.RowDefinitions.Add(new RowDefinition());
            grid.ColumnDefinitions.Add(new ColumnDefinition());

            Label label = new Label();

            label.Content   = "Item IDs";
            label.FontStyle = FontStyles.Italic;
            label.Padding   = new Thickness(0);
            label.Margin    = new Thickness(3);

            _lv = new RangeListView();
            _lv.SetValue(TextSearch.TextPathProperty, "ID");
            _lv.SetValue(WpfUtils.IsGridSortableProperty, true);
            _lv.SetValue(ScrollViewer.HorizontalScrollBarVisibilityProperty, ScrollBarVisibility.Disabled);
            _lv.SetValue(Grid.RowProperty, 1);
            _lv.FocusVisualStyle    = null;
            _lv.Margin              = new Thickness(3);
            _lv.BorderThickness     = new Thickness(1);
            _lv.HorizontalAlignment = HorizontalAlignment.Left;
            _lv.SelectionChanged   += _lv_SelectionChanged;

            Extensions.GenerateListViewTemplate(_lv, new ListViewDataTemplateHelper.GeneralColumnInfo[] {
                new ListViewDataTemplateHelper.GeneralColumnInfo {
                    Header = ServerItemAttributes.Id.DisplayName, DisplayExpression = "ID", SearchGetAccessor = "ID", FixedWidth = 60, TextAlignment = TextAlignment.Right, ToolTipBinding = "ID"
                },
                new ListViewDataTemplateHelper.RangeColumnInfo {
                    Header = ServerItemAttributes.Name.DisplayName, DisplayExpression = "Name", SearchGetAccessor = "Name", IsFill = true, ToolTipBinding = "Name", TextWrapping = TextWrapping.Wrap, MinWidth = 70
                },
                new ListViewDataTemplateHelper.GeneralColumnInfo {
                    Header = "Freq", DisplayExpression = "Drop", SearchGetAccessor = "Rate", ToolTipBinding = "Rate", FixedWidth = 40, TextAlignment = TextAlignment.Right
                },
                new ListViewDataTemplateHelper.GeneralColumnInfo {
                    Header = "Drop %", DisplayExpression = "Chance", SearchGetAccessor = "ChanceInt", ToolTipBinding = "Chance", FixedWidth = 60, TextAlignment = TextAlignment.Right
                }
            }, new DefaultListViewComparer <ItemView>(), new string[] { "Added", "Blue", "Modified", "Green", "Normal", "Black" });

            _lv.ContextMenu       = new ContextMenu();
            _lv.MouseDoubleClick += new MouseButtonEventHandler(_lv_MouseDoubleClick);

            MenuItem miSelect = new MenuItem {
                Header = "Select", Icon = new Image {
                    Source = (BitmapSource)ApplicationManager.PreloadResourceImage("arrowdown.png")
                }
            };
            MenuItem miEditDrop = new MenuItem {
                Header = "Edit", Icon = new Image {
                    Source = (BitmapSource)ApplicationManager.PreloadResourceImage("properties.png")
                }
            };
            MenuItem miRemoveDrop = new MenuItem {
                Header = "Remove", Icon = new Image {
                    Source = (BitmapSource)ApplicationManager.PreloadResourceImage("delete.png")
                }
            };
            MenuItem miAddDrop = new MenuItem {
                Header = "Add", Icon = new Image {
                    Source = (BitmapSource)ApplicationManager.PreloadResourceImage("add.png")
                }
            };

            _lv.ContextMenu.Items.Add(miSelect);
            _lv.ContextMenu.Items.Add(miEditDrop);
            _lv.ContextMenu.Items.Add(miRemoveDrop);
            _lv.ContextMenu.Items.Add(miAddDrop);

            dp.AddResetField(_lv);

            miSelect.Click     += new RoutedEventHandler(_miSelect_Click);
            miEditDrop.Click   += new RoutedEventHandler(_miEditDrop_Click);
            miRemoveDrop.Click += new RoutedEventHandler(_miRemoveDrop_Click);
            miAddDrop.Click    += new RoutedEventHandler(_miAddDrop_Click);

            dp.AddUpdateAction(new Action <ReadableTuple <TKey> >(delegate(ReadableTuple <TKey> item) {
                Dictionary <int, ReadableTuple <int> > groups = (Dictionary <int, ReadableTuple <int> >)item.GetRawValue(1);

                if (groups == null)
                {
                    groups = new Dictionary <int, ReadableTuple <int> >();
                    item.SetRawValue(1, groups);
                }

                Table <int, ReadableTuple <int> > btable = ((GenericDatabase)tab.Database).GetMetaTable <int>(ServerDbs.Items);

                if (groups.Count == 0)
                {
                    _lv.ItemsSource = new RangeObservableCollection <ItemView>();
                    return;
                }

                List <ItemView> result = new List <ItemView>();

                try {
                    int chances = groups.Where(p => p.Key != 0).Sum(p => p.Value.GetValue <int>(ServerItemGroupSubAttributes.Rate));
                    result.AddRange(groups.Select(keypair => new ItemView(btable, groups, keypair.Key, chances)).OrderBy(p => p, Extensions.BindDefaultSearch <ItemView>(_lv, "ID")));
                }
                catch {
                }

                _lv.ItemsSource = new RangeObservableCollection <ItemView>(result);
            }));

            _dp = new DisplayableProperty <TKey, ReadableTuple <TKey> >();
            int  line    = 0;
            Grid subGrid = GTabsMaker.PrintGrid(ref line, 2, 1, 1, new SpecifiedIndexProvider(new int[] {
                //ServerItemGroupSubAttributes.Id.Index, -1,
                ServerItemGroupSubAttributes.Rate.Index, -1,
                ServerItemGroupSubAttributes.Amount.Index, -1,
                ServerItemGroupSubAttributes.Random.Index, -1,
                ServerItemGroupSubAttributes.IsAnnounced.Index, -1,
                ServerItemGroupSubAttributes.Duration.Index, -1,
                ServerItemGroupSubAttributes.IsNamed.Index, -1,
                ServerItemGroupSubAttributes.IsBound.Index, -1
            }), -1, 0, -1, -1, _dp, ServerItemGroupSubAttributes.AttributeList);

            subGrid.VerticalAlignment = VerticalAlignment.Top;

            grid.Children.Add(label);
            grid.Children.Add(_lv);
            tab.PropertiesGrid.RowDefinitions.Clear();
            tab.PropertiesGrid.RowDefinitions.Add(new RowDefinition());
            tab.PropertiesGrid.ColumnDefinitions.Clear();
            tab.PropertiesGrid.ColumnDefinitions.Add(new ColumnDefinition {
                Width = new GridLength(340)
            });
            tab.PropertiesGrid.ColumnDefinitions.Add(new ColumnDefinition {
                Width = new GridLength(10)
            });
            tab.PropertiesGrid.ColumnDefinitions.Add(new ColumnDefinition());
            tab.PropertiesGrid.Children.Add(grid);
            _dp.Deploy(_tab, null, true);

            foreach (var update in _dp.Updates)
            {
                Tuple <DbAttribute, FrameworkElement> x = update;

                if (x.Item1.DataType == typeof(int))
                {
                    TextBox element = (TextBox)x.Item2;
                    _dp.AddUpdateAction(new Action <ReadableTuple <TKey> >(item => element.Dispatch(
                                                                               delegate {
                        Debug.Ignore(() => element.Text = item.GetValue <int>(x.Item1).ToString(CultureInfo.InvariantCulture));
                        element.UndoLimit = 0;
                        element.UndoLimit = int.MaxValue;
                    })));

                    element.TextChanged += delegate {
                        if (tab.ItemsEventsDisabled)
                        {
                            return;
                        }

                        try {
                            if (tab.List.SelectedItem != null && _lv.SelectedItem != null)
                            {
                                _setSelectedItem(x.Item1, element.Text);
                            }
                        }
                        catch (Exception err) {
                            ErrorHandler.HandleException(err);
                        }
                    };
                }
                else if (x.Item1.DataType == typeof(bool))
                {
                    CheckBox element = (CheckBox)x.Item2;
                    _dp.AddUpdateAction(new Action <ReadableTuple <TKey> >(item => element.Dispatch(p => Debug.Ignore(() => p.IsChecked = item.GetValue <bool>(x.Item1)))));

                    element.Checked += delegate {
                        if (tab.ItemsEventsDisabled)
                        {
                            return;
                        }

                        try {
                            if (tab.List.SelectedItem != null && _lv.SelectedItem != null)
                            {
                                _setSelectedItem(x.Item1, true);
                            }
                        }
                        catch (Exception err) {
                            ErrorHandler.HandleException(err);
                        }
                    };

                    element.Unchecked += delegate {
                        if (tab.ItemsEventsDisabled)
                        {
                            return;
                        }

                        try {
                            if (tab.List.SelectedItem != null && _lv.SelectedItem != null)
                            {
                                _setSelectedItem(x.Item1, false);
                            }
                        }
                        catch (Exception err) {
                            ErrorHandler.HandleException(err);
                        }
                    };
                }
                else if (x.Item1.DataType == typeof(string))
                {
                    TextBox element = (TextBox)x.Item2;
                    _dp.AddUpdateAction(new Action <ReadableTuple <TKey> >(item => element.Dispatch(
                                                                               delegate {
                        try {
                            string val = item.GetValue <string>(x.Item1);

                            if (val == element.Text)
                            {
                                return;
                            }

                            element.Text      = item.GetValue <string>(x.Item1);
                            element.UndoLimit = 0;
                            element.UndoLimit = int.MaxValue;
                        }
                        catch {
                        }
                    })));

                    element.TextChanged += delegate {
                        if (tab.ItemsEventsDisabled)
                        {
                            return;
                        }

                        _validateUndo(tab, element.Text, x.Item1);
                        if (ReferenceEquals(x.Item1, ServerItemGroupSubAttributes.Rate))
                        {
                            ((RangeObservableCollection <ItemView>)_lv.ItemsSource).ToList().ForEach(p => p.VisualUpdate());
                        }
                    };
                }
            }
        }