private void SetData(TreeNode Node, byte[] New) { ShowStatus("Inserting new data, please wait..."); byte[] File = Prot.Files[GetDepthIndex(Node, 0)]; if (Node.Level > 0) { LPack Pack = LPack.FromData(File); if (Node.Level > 1) { byte[] Data = Pack.Files[GetDepthIndex(Node, 1)].Data; LScript Script = LScript.FromData(Data); Script.Scripts[Node.Index] = New; New = LScript.ToData(Script); Node = Node.Parent; } Pack.Files[Node.Index].Data = New; New = LPack.ToData(Pack); Node = Node.Parent; } Prot.Files[Node.Index] = New; ShowStatus("Ready"); }
public static void SCPT(Game _assets, BinaryReader _reader, Chunk _chunk) { HandleKVP(_assets, _reader, delegate(Int32 _offset) { LScript _scriptGet = new LScript(_assets, _reader); _assets.Scripts.Add(_scriptGet.Name, _scriptGet); _assets.ScriptMapping.Insert((Int32)_scriptGet.Index, _scriptGet); }); }
private void Open(string FileName) { Prot = LProt.FromFile(FileName); TreeNode[] ProtNodes = new TreeNode[Prot.Files.Length]; for (int i = 0; i < Prot.Files.Length; i++) { LPack Pack = LPack.FromData(Prot.Files[i]); ProtNodes[i] = MakeNode( "File", i, Pack != null ? 1 : 0, Prot.Files[i].Length); //Add Pack nodes if file is Pack if (Pack != null) { TreeNode[] PackNodes = new TreeNode[Pack.Files.Length]; for (int j = 0; j < Pack.Files.Length; j++) { LScript Script = LScript.FromData(Pack.Files[j].Data); PackNodes[j] = MakeNode( "Data", j, Script != null ? 1 : 0, Pack.Files[j].Data.Length); //Add Script nodes if file is Script if (Script != null) { for (int k = 0; k < Script.Scripts.Length; k++) { PackNodes[j].Nodes.Add(MakeNode("Script", k, 2, Script.Scripts[k].Length)); } } } ProtNodes[i].Nodes.AddRange(PackNodes); } } TreeFiles.Nodes.Clear(); TreeFiles.Nodes.AddRange(ProtNodes); CurrNode = null; HasNewText = false; TextEdit.Text = string.Empty; }
protected override object EvalEntry(ParseTree tree, params object[] paramlist) { string entry_name = Nodes.First(n => n.Token.Type == TokenType.WORD || n.Token.Type == TokenType.META).Token.Text; var payload = Nodes.Where(n => n.Token.Type == TokenType.Payload).FirstOrDefault(); if (payload == null) { return(new LScript(entry_name)); } LScript entry = null; var f_node = payload.Nodes.Where(n => n.Token.Type == TokenType.Token).FirstOrDefault(); if (f_node != null) { entry = f_node.Eval(tree, entry_name) as LScript; } else { f_node = payload.Nodes.First(n => n.Token.Type == TokenType.Group); var entries = f_node.Nodes.Where(n => n.Token.Type == TokenType.Entry) .Select(e => e.Eval(tree, paramlist) as LScript) .Where(e => e != null); entry = new ComplexLS(entry_name, entries.ToArray()); } var content_node = payload.Nodes.Where(n => n.Token.Type == TokenType.NEWNAME).FirstOrDefault(); if (content_node != null) { ContentReferences[content_node.Token.Text.Substring(content_node.Token.Text.IndexOf('$'))] = entry; } if (Nodes.Any(n => n.Token.Type == TokenType.META)) { var got = ApplyMeta?.Invoke(entry); return(got); } return(entry); }
private byte[] GetData(TreeNode Node) { byte[] File = Prot.Files[GetDepthIndex(Node, 0)]; if (Node.Level > 0) { LPack Pack = LPack.FromData(File); if (Node.Level > 1) { byte[] Data = Pack.Files[GetDepthIndex(Node, 1)].Data; LScript Script = LScript.FromData(Data); return(Script.Scripts[Node.Index]); } return(Pack.Files[Node.Index].Data); } return(File); }
private void SearchCallback(object sender, SearchEventArgs e) { string Results = string.Empty; int Matches = 0; ShowStatus("Searching, please wait..."); for (int i = 0; i < Prot.Files.Length; i++) { LPack Pack = LPack.FromData(Prot.Files[i]); //Add Pack nodes if file is Pack if (Pack != null) { for (int j = 0; j < Pack.Files.Length; j++) { LScript Script = LScript.FromData(Pack.Files[j].Data); //Add Script nodes if file is Script if (Script != null) { for (int k = 0; k < Script.Scripts.Length; k++) { string Text = Utils.Data2Text(Script.Scripts[k]); if (Text.Contains(e.Text)) { Results += Environment.NewLine + string.Format("...at {0:D5}/{1:D5}/{2:D5}", i, j, k); if (++Matches == 10) { Results += Environment.NewLine + "...output truncated"; i = Prot.Files.Length; j = Pack.Files.Length; break; } } } } } } } ShowStatus("Ready"); if (Results != string.Empty) { MessageBox.Show( "Text found..." + Environment.NewLine + Results, "Search", MessageBoxButtons.OK, MessageBoxIcon.Information); } else { MessageBox.Show( "Sorry, the text you're looking for was not found...", "Search", MessageBoxButtons.OK, MessageBoxIcon.Information); } }
public LScript RunScript(LScript dDLScripts) { throw new NotImplementedException(); }