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)); }
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(); }
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(); }
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); } }
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); } } }
// 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); }