示例#1
0
文件: JSONTool.cs 项目: iTitus/OWLib
        // Outputs JSON using JSON.net
        // Might not output STUs and GUIDs the same as the other one but it supports object inheritance better
        internal void OutputJSONAlt(object jObj, ListFlags toolFlags)
        {
            var serializeSettings = new JsonSerializerSettings();

            serializeSettings.Converters.Add(new StringEnumConverter());

            string json = JsonConvert.SerializeObject(jObj, Formatting.Indented, serializeSettings);

            if (!string.IsNullOrWhiteSpace(toolFlags.Output))
            {
                Log("Writing to {0}", toolFlags.Output);

                CreateDirectoryFromFile(toolFlags.Output);

                var fileName = !toolFlags.Output.EndsWith(".json") ? $"{toolFlags.Output}.json" : toolFlags.Output;

                using (Stream file = File.OpenWrite(fileName)) {
                    file.SetLength(0);
                    using (TextWriter writer = new StreamWriter(file)) {
                        writer.WriteLine(json);
                    }
                }
            }
            else
            {
                Console.Error.WriteLine(json);
            }
        }
示例#2
0
 public void Runscript(string listname, ListFlags flags = ListFlags.Unchanged)
 {
     try {
         this.OpenList(listname, flags).Runscript();
     }
     catch (Exception ex) { Logger.Error(ex); } // Going to try this form, to reduce code verbosity.
 }
 public void ClearList(string listname, ListFlags flags = ListFlags.Unchanged)
 {
     try {
         this.OpenList(listname).Clear();
     }
     catch (Exception ex) { Logger.Debug(ex.ToString()); } // Going to try this form, to reduce code verbosity.
 }
示例#4
0
文件: JSONTool.cs 项目: iTitus/OWLib
        internal void OutputJSON(object jObj, ListFlags toolFlags)
        {
            try {
                CompositeResolver.RegisterAndSetAsDefault(new IJsonFormatter[] {
                    new ResourceGUIDFormatter()
                }, new[] {
                    StandardResolver.Default
                });
            } catch {
                // rip, already registered and set as default???
            }

            byte[] json = Utf8Json.JsonSerializer.NonGeneric.Serialize(jObj.GetType(), jObj);
            if (!string.IsNullOrWhiteSpace(toolFlags.Output))
            {
                byte[] pretty = Utf8Json.JsonSerializer.PrettyPrintByteArray(json);

                Log("Writing to {0}", toolFlags.Output);

                CreateDirectoryFromFile(toolFlags.Output);

                var fileName = !toolFlags.Output.EndsWith(".json") ? $"{toolFlags.Output}.json" : toolFlags.Output;

                using (Stream file = File.OpenWrite(fileName)) {
                    file.SetLength(0);
                    file.Write(pretty, 0, pretty.Length);
                }
            }
            else
            {
                Console.Error.WriteLine(Utf8Json.JsonSerializer.PrettyPrint(json));
            }
        }
示例#5
0
        protected override void InitDataSection()
        {
            // why we cannot have the same byte length?
            Read(out byte fuMdf);
            Flags = (ListFlags)fuMdf;
            Reader.Seek(3, SeekOrigin.Current);
            Read(out _blockCount);

            BlockOffsets = new long[BlockCount];
            Time         = new UnknownArray(BlockOffsets.Length);
            Angle        = new UnknownArray(BlockOffsets.Length);
            Distance     = new UnknownArray(BlockOffsets.Length);

            if (Flags.HasFlag(ListFlags.EqualLength))
            {
                Read(out EqualLength);
            }
            else
            {
                Reader.ReadArray(ref BlockOffsets);
            }

            if (Flags.HasFlag(ListFlags.TimeValues))
            {
                Reader.ReadArray(ref Time.Storage);
            }
            if (Flags.HasFlag(ListFlags.AngleValues))
            {
                Reader.ReadArray(ref Angle.Storage);
            }
            if (Flags.HasFlag(ListFlags.DistanceValues))
            {
                Reader.ReadArray(ref Distance.Storage);
            }
        }
 public void runscript(string listname, ListFlags flags = ListFlags.Unchanged)
 {
     try
     {
         OpenList(listname, flags).runscript();
     }
     catch (Exception ex) { Plugin.Log(ex.ToString()); } // Going to try this form, to reduce code verbosity.
 }
        public bool Contains(string listname, string key, ListFlags flags = ListFlags.Unchanged)
        {
            try {
                var list = this.OpenList(listname);
                return(list.Contains(key));
            }
            catch (Exception ex) { Logger.Debug(ex.ToString()); } // Going to try this form, to reduce code verbosity.

            return(false);
        }
            public bool contains(ref string listname, string key, ListFlags flags = ListFlags.Unchanged)
            {
                try
                {
                    StringListManager list = OpenList(listname);
                    return(list.Contains(key));
                }
                catch (Exception ex) { Plugin.Log(ex.ToString()); } // Going to try this form, to reduce code verbosity.

                return(false);
            }
 public override System.Collections.Generic.Queue <Moonfish.Tags.BlamPointer> ReadFields(System.IO.BinaryReader binaryReader)
 {
     System.Collections.Generic.Queue <Moonfish.Tags.BlamPointer> pointerQueue = new System.Collections.Generic.Queue <Moonfish.Tags.BlamPointer>(base.ReadFields(binaryReader));
     this.UserInterfaceListSkinDefinitionListFlags = ((ListFlags)(binaryReader.ReadInt32()));
     this.ArrowsBitmap     = binaryReader.ReadTagReference();
     this.UparrowsOffset   = binaryReader.ReadPoint();
     this.DownarrowsOffset = binaryReader.ReadPoint();
     pointerQueue.Enqueue(binaryReader.ReadBlamPointer(16));
     pointerQueue.Enqueue(binaryReader.ReadBlamPointer(44));
     pointerQueue.Enqueue(binaryReader.ReadBlamPointer(56));
     pointerQueue.Enqueue(binaryReader.ReadBlamPointer(36));
     pointerQueue.Enqueue(binaryReader.ReadBlamPointer(24));
     return(pointerQueue);
 }
        public bool Remove(ref string listname, ref string key, ListFlags flags = ListFlags.Unchanged)
        {
            try {
                var list = this.OpenList(listname);

                list.Removeentry(key);

                if (!(flags.HasFlag(ListFlags.InMemory) | flags.HasFlag(ListFlags.ReadOnly)))
                {
                    list.Writefile(listname);
                }

                return(false);
            }
            catch (Exception ex) { Logger.Debug(ex.ToString()); } // Going to try this form, to reduce code verbosity.

            return(false);
        }
        public bool Add(ref string listname, ref string key, ListFlags flags = ListFlags.Unchanged)
        {
            try {
                var list = this.OpenList(listname);

                list.Add(key);


                if (!(flags.HasFlag(ListFlags.InMemory) | flags.HasFlag(ListFlags.ReadOnly)))
                {
                    list.Writefile(listname);
                }
                return(true);
            }
            catch (Exception ex) { Logger.Debug(ex.ToString()); }

            return(false);
        }
            public bool add(ref string listname, ref string key, ListFlags flags = ListFlags.Unchanged)
            {
                try
                {
                    StringListManager list = OpenList(listname);

                    list.Add(key);


                    if (!(flags.HasFlag(ListFlags.InMemory) | flags.HasFlag(ListFlags.ReadOnly)))
                    {
                        list.Writefile(listname);
                    }
                    return(true);
                }
                catch (Exception ex) { Plugin.Log(ex.ToString()); }

                return(false);
            }
        public StringListManager ClearOldList(string request, TimeSpan delta, ListFlags flags = ListFlags.Unchanged)
        {
            var listfilename = Path.Combine(Plugin.DataPath, request);
            var UpdatedAge   = Utility.GetFileAgeDifference(listfilename);

            var list = this.OpenList(request, flags);

            if (File.Exists(listfilename) && UpdatedAge > delta) // BUG: There's probably a better way to handle this
            {
                //RequestBot.Instance.QueueChatMessage($"Clearing old session {request}");
                list.Clear();
                if (!(flags.HasFlag(ListFlags.InMemory) | flags.HasFlag(ListFlags.ReadOnly)))
                {
                    list.Writefile(request);
                }
            }

            return(list);
        }
 public StringListManager OpenList(string request, ListFlags flags = ListFlags.Unchanged) // All lists are accessed through here, flags determine mode
 {
     if (!this.ListCollection.TryGetValue(request, out var list))
     {
         list = new StringListManager();
         this.ListCollection.Add(request, list);
         if (!flags.HasFlag(ListFlags.InMemory))
         {
             list.Readfile(request);                                     // If in memory, we never read from disk
         }
     }
     else
     {
         if (flags.HasFlag(ListFlags.Uncached))
         {
             list.Readfile(request);                                    // If Cache is off, ALWAYS re-read file.
         }
     }
     return(list);
 }
示例#15
0
        internal void ParseJSON(object jObj, ListFlags toolFlags)
        {
            string json = JsonConvert.SerializeObject(jObj, Formatting.Indented);

            if (!string.IsNullOrWhiteSpace(toolFlags.Output))
            {
                Log("Writing to {0}", toolFlags.Output);

                CreateDirectoryFromFile(toolFlags.Output);

                using (Stream file = File.OpenWrite(toolFlags.Output)) {
                    using (TextWriter writer = new StreamWriter(file)) {
                        writer.WriteLine(json);
                    }
                }
            }
            else
            {
                Console.Error.WriteLine(json);
            }
        }
 public bool Remove(string listname, string key, ListFlags flags = ListFlags.Unchanged) => this.Remove(ref listname, ref key, flags);
 public bool remove(string listname, string key, ListFlags flags = ListFlags.Unchanged)
 {
     return(remove(ref listname, ref key, flags));
 }
            // Callback function prototype here

            public StringListManager(ListFlags ReadOnly = ListFlags.Unchanged)
            {
            }
 public bool Add(string listname, string key, ListFlags flags = ListFlags.Unchanged) => this.Add(ref listname, ref key, flags);
示例#20
0
        public void SaveAnimNodes(ICLIFlags toolFlags)
        {
            ListFlags flags = toolFlags as ListFlags;

            // I didn't want to write code for a viewer so use: https://github.com/cb109/qtnodes

            foreach (ulong key in TrackedFiles[0x20])
            {
                if (key != 1116892707587883363)
                {
                    continue;                             // 020 reaper hero select
                }
                STUAnimBlendTree tree = GetInstance <STUAnimBlendTree>(key);
                GraphRoot        root = new GraphRoot {
                    nodes = new List <GraphNode>(), edges = new List <GraphEdge>()
                };
                if (tree?.AnimNodes == null)
                {
                    continue;
                }
                List <uint> doneNodes = new List <uint>();
                foreach (STUAnimNode_Base node in tree.AnimNodes)
                {
                    if (node == null)
                    {
                        continue;
                    }
                    string uuid = node.UniqueID.ToString();
                    if (doneNodes.Contains(node.UniqueID))
                    {
                        continue;
                    }
                    doneNodes.Add(node.UniqueID);
                    root.nodes.Add(new GraphNode {
                        x = node.Pos.X, y = node.Pos.Y, uuid = uuid, @class = "MaxObject", name = node.GetType().Name
                    });


                    if (node.m_0DE1BA16 == null)
                    {
                        continue;
                    }
                    foreach (STU_40274C18 stu_6C0Bbd69 in node.m_0DE1BA16)
                    {
                        if (stu_6C0Bbd69.m_AF632ACD != null)
                        {
                            uint parId = stu_6C0Bbd69.m_AF632ACD.UniqueID;
                            root.edges.Add(new GraphEdge {
                                source_nodeId = node.UniqueID.ToString(), target_name = "parent", source_name = "children", target_nodeId = parId.ToString()
                            });
                        }
                    }
                }
                ParseJSON(root, flags);

                // notes: (all oldhash)
                // {STU_2D84E49E} for strafe stuff

                // <= breakpoint here
            }
        }
示例#21
0
        // Расчет после завершения хода игроком
        internal void CalcFinalityTurn()
        {
            // Убеждаемся, что у нас не сломалось соответствие флагов
            foreach (PlayerLair pl in Lairs)
            {
                if (pl != null)
                {
                    if (pl.PriorityFlag != PriorityExecution.None)
                    {
                        Debug.Assert(ListFlags.IndexOf(pl) != -1);
                    }
                    else
                    {
                        Debug.Assert(ListFlags.IndexOf(pl) == -1);
                    }
                }
            }

            // Расчет флагов на логова
            List <PlayerLair> tempListLair = ListFlags.ToList();// Работаем с копией списка, так как текущий будет меняться по мере обработки флагов

            foreach (PlayerLair pl in tempListLair)
            {
                Battle             b;
                FormBattle         formBattle;
                FormProgressBattle formProgressBattle = null;

                if ((pl != null) && (pl.listAttackedHero.Count > 0))
                {
                    Debug.Assert((pl.TypeFlag == TypeFlag.Scout) || (pl.TypeFlag == TypeFlag.Attack) || (pl.TypeFlag == TypeFlag.Defense));

                    if (pl.TypeFlag == TypeFlag.Scout)
                    {
                        pl.DoScout();
                    }
                    else if (pl.TypeFlag == TypeFlag.Attack)
                    {
                        Debug.Assert(pl.Monsters.Count > 0);

                        PreparingForBattle();

                        // Включить, когда ИИ может выбирать цель
                        pl.PreparingForBattle();

                        //Debug.Assert(p.TargetLair.CombatHeroes.Count > 0);

                        bool showForPlayer = TypePlayer == TypePlayer.Human;
                        b = new Battle(this, pl, Lobby.Turn, FormMain.Rnd, showForPlayer);

                        if (showForPlayer)
                        {
                            formBattle = new FormBattle();
                            formBattle.ShowBattle(b);
                            formBattle.Dispose();
                        }
                        else
                        {
                            if (formProgressBattle == null)
                            {
                                formProgressBattle = new FormProgressBattle();
                            }

                            formProgressBattle.SetBattle(b, 1, 1);
                        }

                        if (b.Winner == this)
                        {
                            // Победил игрок
                            pl.DoCapture();
                        }
                        else
                        {
                        }
                    }
                    else
                    {
                        pl.DoDefense();
                    }
                }
            }
        }