// 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); } }
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. }
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)); } }
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); }
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);
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 } }
// Расчет после завершения хода игроком 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(); } } } }