public bool TryDeserialize(ISmartScriptProjectItem projectItem, out ISolutionItem?solutionItem)
        {
            solutionItem = null;
            if (projectItem.Type == 32 && projectItem.Comment != null)
            {
                var split = projectItem.Comment.Split(':');
                if (split.Length != 2)
                {
                    return(false);
                }

                var table = split[0];
                var items = split[1].Split(',')
                            .Where(i => uint.TryParse(i, out var _))
                            .Select(uint.Parse)
                            .Select(i => new SolutionItemDatabaseEntity(i, true));

                var dbItem = new DatabaseTableSolutionItem(table);
                dbItem.Entries.AddRange(items);
                solutionItem = dbItem;
                return(true);
            }

            return(false);
        }
        public bool TryDeserialize(ISmartScriptProjectItem projectItem, out ISolutionItem?solutionItem)
        {
            solutionItem = null;
            if (projectItem.Type == 32 && projectItem.StringValue != null)
            {
                var split = projectItem.StringValue.Split(':');
                if (split.Length != 2)
                {
                    return(false);
                }

                var table = split[0];
                var items = split[1].Split(',')
                            .Where(i => uint.TryParse(i, out var _))
                            .Select(uint.Parse)
                            .Select(i => new SolutionItemDatabaseEntity(i, true));

                var dbItem = new DatabaseTableSolutionItem(table);
                if (string.IsNullOrEmpty(projectItem.Comment))
                {
                    dbItem.Entries.AddRange(items);
                }
                else
                {
                    var entries = JsonConvert.DeserializeObject <List <SolutionItemDatabaseEntity> >(projectItem.Comment);
                    dbItem.Entries.AddRange(entries);
                }
                solutionItem = dbItem;
                return(true);
            }

            return(false);
        }
Beispiel #3
0
 public bool TryDeserialize(ISmartScriptProjectItem projectItem, out ISolutionItem?solutionItem)
 {
     if (projectItem.Type == 25 && !string.IsNullOrEmpty(projectItem.StringValue))
     {
         solutionItem = new PacketDocumentSolutionItem(projectItem.StringValue);
         return(true);
     }
     solutionItem = null;
     return(false);
 }
Beispiel #4
0
    public bool TryDeserialize(ISmartScriptProjectItem projectItem, out ISolutionItem?solutionItem)
    {
        if (projectItem.Type == 43)
        {
            solutionItem = new QuestChainSolutionItem();
            return(true);
        }

        solutionItem = null;
        return(false);
    }
        public bool TryDeserialize(ISmartScriptProjectItem projectItem, out ISolutionItem?solutionItem)
        {
            solutionItem = null;
            if (projectItem.Type < 100 || projectItem.Type >= 100 + (int)SmartScriptType.END)
            {
                return(false);
            }

            solutionItem = new SmartScriptSolutionItem(projectItem.Value, (SmartScriptType)(projectItem.Type - 100));
            return(true);
        }
        public bool TryDeserialize(ISmartScriptProjectItem item, out ISolutionItem?solutionItem)
        {
            foreach (var deserializer in deserializers)
            {
                if (deserializer.TryDeserialize(item, out solutionItem))
                {
                    return(true);
                }
            }

            solutionItem = null;
            return(false);
        }
Beispiel #7
0
        public bool TryDeserialize(ISmartScriptProjectItem projectItem, out ISolutionItem?solutionItem)
        {
            solutionItem = null;
            if (projectItem.Type == 32 && projectItem.StringValue != null)
            {
                var split = projectItem.StringValue.Split(':');
                if (split.Length != 2 && split.Length != 3)
                {
                    return(false);
                }

                var table = split[0];
                var items = split[1].Split(',')
                            .Where(i => DatabaseKey.TryDeserialize(i, out var _))
                            .Select(DatabaseKey.Deserialize)
                            .Select(i => new SolutionItemDatabaseEntity(i, true));
                var deletedEntries = split.Length == 2 ? null : split[2].Split(',')
                                     .Where(i => DatabaseKey.TryDeserialize(i, out var _))
                                     .Select(DatabaseKey.Deserialize);

                var definition = tableDefinitionProvider.GetDefinition(table);
                if (definition == null)
                {
                    return(false);
                }

                var dbItem = new DatabaseTableSolutionItem(table, definition.IgnoreEquality);
                if (string.IsNullOrEmpty(projectItem.Comment))
                {
                    dbItem.Entries.AddRange(items);
                }
                else
                {
                    var entries = JsonConvert.DeserializeObject <List <SolutionItemDatabaseEntity> >(projectItem.Comment);
                    dbItem.Entries.AddRange(entries);
                }
                if (deletedEntries != null)
                {
                    dbItem.DeletedEntries.AddRange(deletedEntries);
                }
                solutionItem = dbItem;
                return(true);
            }

            return(false);
        }
        public bool TryDeserialize(ISmartScriptProjectItem projectItem, out ISolutionItem?solutionItem)
        {
            solutionItem = null;
            if (projectItem.Type == 42 && projectItem.StringValue != null && projectItem.StringValue.Contains(":"))
            {
                var index = projectItem.StringValue.IndexOf(":");
                var id    = projectItem.StringValue.Substring(0, index);
                var name  = projectItem.StringValue.Substring(index + 1);
                solutionItem = new CustomSqlSolutionItem()
                {
                    Id    = id,
                    Name  = name,
                    Query = (projectItem.Comment ?? "").Replace("\\n", "\n")
                };
                return(true);
            }

            return(false);
        }
 public bool TryDeserialize(ISmartScriptProjectItem projectItem, out ISolutionItem?solutionItem)
 {
     if (projectItem.Type == 25 && !string.IsNullOrEmpty(projectItem.StringValue))
     {
         var indexOfPipe = projectItem.StringValue.IndexOf("|", StringComparison.Ordinal);
         var path        = projectItem.StringValue;
         int?version     = null;
         if (indexOfPipe != -1)
         {
             if (int.TryParse(path.Substring(0, indexOfPipe), out var version_))
             {
                 version = version_;
                 path    = path.Substring(indexOfPipe + 1);
             }
         }
         solutionItem = new PacketDocumentSolutionItem(path, version);
         return(true);
     }
     solutionItem = null;
     return(false);
 }