Пример #1
0
        public static void ItemGroupCopyEntries(List <ReadableTuple <int> > items, BaseDb gdb, TabControl control, ServerType serverType)
        {
            var parent = WpfUtilities.FindDirectParentControl <SdeEditor>(control);

            parent.AsyncOperation.SetAndRunOperation(new GrfThread(delegate {
                items = items.OrderBy(p => p.GetKey <int>()).ToList();

                StringBuilder builder = new StringBuilder();

                try {
                    AProgress.Init(parent);
                    DbLoaderErrorHandler.Start();

                    var dbItems = gdb.GetMeta <int>(ServerDbs.Items);

                    List <string> aegisNames = dbItems.FastItems.Select(p => p.GetStringValue(ServerItemAttributes.AegisName.Index)).ToList();
                    List <string> names      = dbItems.FastItems.Select(p => p.GetStringValue(ServerItemAttributes.Name.Index)).ToList();

                    for (int i = 0; i < items.Count; i++)
                    {
                        AProgress.IsCancelling(parent);
                        DbWriterMethods.DbItemGroupWriter2(items[i], serverType, builder, gdb, aegisNames, names);
                        parent.Progress = (i + 1f) / items.Count * 100f;
                    }
                }
                catch (OperationCanceledException) { }
                finally {
                    AProgress.Finalize(parent);
                    DbLoaderErrorHandler.Stop();
                }

                Clipboard.SetText(builder.ToString());
            }, parent, 200, null, true, true));
        }
Пример #2
0
        public static void DbSqlMobSkills <TKey>(DbDebugItem <TKey> debug, AbstractDb <TKey> db)
        {
            DbSqlWriter writer = new DbSqlWriter();

            writer.Init(debug);
            DbWriterMethods.DbUniqueWriter(debug, db);

            if (debug.DestinationServer == ServerType.RAthena)
            {
                writer.AppendHeader(RAthenaMobSkillDbSqlHeader);
            }
            else if (debug.DestinationServer == ServerType.Hercules)
            {
                writer.AppendHeader(HerculesMobSkillDbSqlHeader, writer.TableName.Replace("_re", ""));
                writer.TableName = "mob_skill_db";
            }

            foreach (string line in writer.Read())
            {
                string[] elements = TextFileHelper.ExcludeBrackets(line.Trim('\t'));
                if (!_getMobSkill(writer.IsHercules, writer.TableName, writer.Builder, elements))
                {
                    writer.Line(writer.IsHercules ? line.ReplaceFirst("//", "-- ") : line.ReplaceFirst("//", "#"));
                }
            }

            writer.Write();
        }
Пример #3
0
        public static void DbSqlItems <TKey>(DbDebugItem <TKey> debug, AbstractDb <TKey> db)
        {
            DbSqlWriter writer = new DbSqlWriter();

            writer.Init(debug);

            if (debug.DestinationServer == ServerType.RAthena)
            {
                DbWriterMethods.DbItemsCommaWriter(debug, db);
                writer.AppendHeader(writer.IsRenewal ? RAthenaItemDbSqlHeaderRenewal : RAthenaItemDbSqlHeader);

                foreach (string line in writer.Read())
                {
                    string[] elements = TextFileHelper.ExcludeBrackets(line.Trim('\t'));
                    if (!_getItems(writer.IsRenewal, writer.TableName, writer.Builder, elements))
                    {
                        writer.Line(line.ReplaceFirst("//", "#"));
                    }
                }
            }
            else
            {
                var table = db.Table;
                writer.AppendHeader(HerculesItemDbSqlHeader, writer.TableName.Replace("_re", ""));

                foreach (var tuple in table.FastItems.OrderBy(p => p.GetKey <TKey>()))
                {
                    _getItemsHercules(writer.TableName, writer.Builder, tuple);
                }
            }

            writer.Write();
        }
Пример #4
0
        public override void WriteDb(string dbPath, string subPath, ServerType serverType, FileType fileType = FileType.Detect)
        {
            DbDebugItem <int> debug = new DbDebugItem <int>(this);

            debug.DbSource = ServerDbs.Skills;
            if (debug.Write(dbPath, subPath, serverType, fileType))
            {
                DbWriterMethods.DbIntCommaRange(debug, this, 0, 18);
            }

            debug.DbSource = ServerDbs.SkillsNoDex;
            if (debug.Write(dbPath, subPath, serverType, fileType))
            {
                DbWriterMethods.DbSkillsNoDexCommaRange(debug, this, ServerSkillAttributes.Cast.Index, 2);
            }

            debug.DbSource = ServerDbs.SkillsNoCast;
            if (serverType == ServerType.RAthena && debug.Write(dbPath, subPath, serverType, fileType))
            {
                DbWriterMethods.DbSkillsNoCastCommaRange(debug, this, ServerSkillAttributes.Flag.Index, 1);
            }

            debug.DbSource = ServerDbs.SkillsCast;
            if (debug.Write(dbPath, subPath, serverType, fileType))
            {
                DbWriterMethods.DbSkillsCastCommaRange(debug, this, ServerSkillAttributes.Cast.Index + 2, 6);
            }
        }
Пример #5
0
        public override void WriteDb(string dbPath, string subPath, ServerType serverType, FileType fileType = FileType.Detect)
        {
            DbDebugItem <int> debug = new DbDebugItem <int>(this);

            debug.DbSource = DbSource;
            if (debug.Write(dbPath, subPath, serverType, fileType))
            {
                DbWriterMethods.DbItemsCommaWriter(debug, this);
            }

            if (serverType == ServerType.RAthena)
            {
                debug.DbSource = ServerDbs.ItemsAvail;
                if (debug.Write(dbPath, subPath, serverType, fileType))
                {
                    DbWriterMethods.DbItemsCommaRange(debug, this, ServerItemAttributes.Sprite.Index, 1, "");
                }

                debug.DbSource = ServerDbs.ItemsDelay;
                if (debug.Write(dbPath, subPath, serverType, fileType))
                {
                    DbWriterMethods.DbItemsCommaRange(debug, this, ServerItemAttributes.Delay.Index, 1, "");
                }

                debug.DbSource = ServerDbs.ItemsNoUse;
                if (debug.Write(dbPath, subPath, serverType, fileType))
                {
                    DbWriterMethods.DbItemsNouse(debug, this);
                }

                debug.DbSource = ServerDbs.ItemsStack;
                if (debug.Write(dbPath, subPath, serverType, fileType))
                {
                    DbWriterMethods.DbItemsStack(debug, this);
                }

                debug.DbSource = ServerDbs.ItemsTrade;
                if (debug.Write(dbPath, subPath, serverType, fileType))
                {
                    DbWriterMethods.DbItemsTrade(debug, this);
                }

                debug.DbSource = ServerDbs.ItemsBuyingStore;
                if (debug.Write(dbPath, subPath, serverType, fileType))
                {
                    DbWriterMethods.DbItemsBuyingStore(debug, this);
                }
            }
        }
Пример #6
0
        // TODO: The TabGenerator class works better than these custom generators
        public static GDbTab LoadSItemsTab <TKey>(GenericDatabase database, TabControl control, BaseDb gdb)
        {
            AbstractDb <TKey> db   = gdb.To <TKey>();
            AttributeList     list = ServerItemProperties.AttributeList;

            GDbTabWrapper <TKey, ReadableTuple <TKey> > tab      = new GDbTabWrapper <TKey, ReadableTuple <TKey> >();
            GTabSettings <TKey, ReadableTuple <TKey> >  settings = new GTabSettings <TKey, ReadableTuple <TKey> >(db);

            SInit(settings);
            settings.AttributeList = list;
            settings.AttId         = list.PrimaryAttribute;
            settings.AttDisplay    = ServerItemProperties.Name;

            DisplayableProperty <TKey, ReadableTuple <TKey> > generalProperties = new DisplayableProperty <TKey, ReadableTuple <TKey> >();

            generalProperties.Spacing = 0;

            int line = 0;

            Print(ref line, new SpecifiedRangeIndexProvider(new int[] {
                ServerItemProperties.Id.Index, 1,
                ServerItemProperties.Type.Index, 1,
                ServerItemProperties.AegisName.Index, 2,
                ServerItemProperties.Buy.Index, 2,
                ServerItemProperties.Weight.Index, 16
            }), generalProperties, list);

            generalProperties.AddCustomProperty(new CustomQueryViewerMobDroppedBy <TKey, ReadableTuple <TKey> >(line, 0, 1, 2));
            generalProperties.SetRow(line, new GridLength(1, GridUnitType.Star));

            Grid grid = PrintGrid(ref line, 3, 1, 2, new DefaultIndexProvider(ServerItemProperties.BindOnEquip.Index, 8), -1, 0, -1, 0, generalProperties, list);

            generalProperties.AddDeployAction(delegate {
                grid.Children[0].IsEnabled = false;
                grid.Children[1].IsEnabled = false;
                grid.Children[4].IsEnabled = false;
                grid.Children[5].IsEnabled = false;
            });

            settings.DisplayablePropertyMaker = generalProperties;
            settings.ClientDatabase           = database;
            settings.SearchEngine.SetAttributes(
                settings.AttId, settings.AttDisplay,
                ServerItemProperties.AegisName, null,
                ServerItemProperties.ApplicableJob, ServerItemProperties.Script,
                ServerItemProperties.OnEquipScript, ServerItemProperties.OnUnequipScript,
                ServerItemProperties.Type, ServerItemProperties.Gender
                );

            settings.SearchEngine.SetSettings(ServerItemProperties.Id, true);
            settings.SearchEngine.SetSettings(ServerItemProperties.Name, true);
            settings.SearchEngine.SetSettings(ServerItemProperties.AegisName, true);

            settings.SearchEngine.SetupImageDataGetter = delegate(ReadableTuple <TKey> tuple) {
                tuple.GetImageData = delegate {
                    try {
                        var cDb = database.GetTable <int>(ServerDbs.ClientResourceDb);

                        if (cDb == null)
                        {
                            return(null);
                        }

                        int id = tuple.GetKey <int>();

                        if (!cDb.ContainsKey(id))
                        {
                            return(null);
                        }

                        byte[] data = database.MetaGrf.GetData(EncodingService.FromAnyToDisplayEncoding(@"data\texture\À¯ÀúÀÎÅÍÆäÀ̽º\item\" + cDb.GetTuple(id).GetValue <string>(ClientResourceAttributes.ResourceName) + ".bmp"));

                        if (data != null)
                        {
                            GrfImage gimage = new GrfImage(ref data);
                            gimage.MakePinkTransparent();
                            return(gimage.Cast <BitmapSource>());
                        }

                        return(null);
                    }
                    catch {
                        return(null);
                    }
                };
            };

            settings.AddedCommands.Add(new GItemCommand <TKey, ReadableTuple <TKey> > {
                AllowMultipleSelection = true,
                DisplayName            = "Copy entries to clipboard (rAthena)",
                ImagePath          = "export.png",
                InsertIndex        = 3,
                Shortcut           = ApplicationShortcut.Copy,
                AddToCommandsStack = false,
                GenericCommand     = delegate(List <ReadableTuple <TKey> > items) {
                    StringBuilder builder = new StringBuilder();
                    DbWriterMethods.DbItemsWriterSub(builder, db, items.OrderBy(p => p.GetKey <TKey>()), ServerType.RAthena);
                    Clipboard.SetText(builder.ToString());
                }
            });

            settings.AddedCommands.Add(new GItemCommand <TKey, ReadableTuple <TKey> > {
                AllowMultipleSelection = true,
                DisplayName            = "Copy entries to clipboard (Hercules)",
                ImagePath          = "export.png",
                InsertIndex        = 4,
                Shortcut           = ApplicationShortcut.Copy2,
                AddToCommandsStack = false,
                GenericCommand     = delegate(List <ReadableTuple <TKey> > items) {
                    StringBuilder builder = new StringBuilder();
                    DbWriterMethods.DbItemsWriterSub(builder, db, items, ServerType.Hercules);
                    Clipboard.SetText(builder.ToString(), TextDataFormat.UnicodeText);
                }
            });

            settings.Table = db.Table;
            tab.Initialize(settings);
            AddTagGeneratorTabChangedEvent(control, tab, settings, gdb);
            return(tab);
        }