public override void Read(BinaryReader file, uint size) { CVariable parsedvar = null; var varsize = file.ReadUInt32(); var buffer = file.ReadBytes((int)varsize - 4); using (var ms = new MemoryStream(buffer)) using (var br = new BinaryReader(ms)) { var typeId = br.ReadUInt16(); var nameId = br.ReadUInt16(); if (nameId == 0) { return; } var typename = cr2w.names[typeId].Str; var varname = cr2w.names[nameId].Str; parsedvar = CR2WTypeManager.Get().GetByName(typename, varname, cr2w); parsedvar.Read(br, size); parsedvar.nameId = nameId; parsedvar.typeId = typeId; } variable = parsedvar; }
public CVariable ReadVariable(BinaryReader file) { var nameId = file.ReadUInt16(); if (nameId == 0) { return(null); } var typepos = file.BaseStream.Position; var typeId = file.ReadUInt16(); var size = file.ReadUInt32() - 4; var typename = strings[typeId].str; var varname = strings[nameId].str; var parsedvar = CR2WTypeManager.Get().GetByName(typename, varname, this); parsedvar.Read(file, size); parsedvar.nameId = nameId; parsedvar.typeId = typeId; return(parsedvar); }
private void addVariableToolStripMenuItem_Click(object sender, EventArgs e) { var node = (VariableListNode)treeView.SelectedObject; if (node?.Variable == null || !node.Variable.CanAddVariable(null)) { return; } CVariable newvar = null; if (node.Variable is CArray) { var nodearray = (CArray)node.Variable; newvar = CR2WTypeManager.Get().GetByName(nodearray.elementtype, "", Chunk.cr2w, false); if (newvar == null) { return; } } else { var frm = new frmAddVariable(); if (frm.ShowDialog() != DialogResult.OK) { return; } newvar = CR2WTypeManager.Get().GetByName(frm.VariableType, frm.VariableName, Chunk.cr2w, false); if (newvar == null) { return; } newvar.Name = frm.VariableName; newvar.Type = frm.VariableType; } if (newvar is CHandle) { var result = MessageBox.Show("Add as chunk handle? (Yes for chunk handle, No for normal handle)", "Adding handle.", MessageBoxButtons.YesNoCancel); if (result == DialogResult.Cancel) { return; } ((CHandle)newvar).ChunkHandle = result == DialogResult.Yes; } node.Variable.AddVariable(newvar); var subnode = AddListViewItems(newvar, node); node.Children.Add(subnode); treeView.RefreshObject(node); treeView.RefreshObject(subnode); }
public CVariable CreateVariable(string type, string varname = "") { var var = CR2WTypeManager.Get().GetByName(type, varname, this, false); var.Type = type; var.Name = varname; return(var); }
public void CreateDefaultData() { data = CR2WTypeManager.Get().GetByName(Type, "", cr2w, false); if (data == null) { // default chunks to vector type data = new CVector(cr2w); } data.Name = Name; }
public frmAddVariable() { InitializeComponent(); var mng = CR2WTypeManager.Get(); var types = mng.AvailableTypes; types.Sort(); txType.Items.AddRange(types.ToArray()); }
public AddChunkDialogView() { InitializeComponent(); var mng = CR2WTypeManager.Get(); var types = mng.AvailableTypes; types.Sort(); comboBoxEditType.Properties.Items.AddRange(types.ToArray()); }
public CVariable ReadVariable(BinaryReader file) { var num1 = file.ReadUInt16(); if (num1 == (ushort)0) { return((CVariable)null); } var position = file.BaseStream.Position; var num2 = file.ReadUInt16(); var size = file.ReadUInt32() - 4U; var byName = CR2WTypeManager.Get().GetByName(strings[num2].str, strings[num1].str, this, true); byName.Read(file, size); byName.nameId = num1; byName.typeId = num2; return(byName); }
public CVariable ReadVariable(BinaryReader file) { // Read Name var nameId = file.ReadUInt16(); if (nameId == 0) { return(null); } var varname = names[nameId].Str; // Read Type var typeId = file.ReadUInt16(); var typename = names[typeId].Str; // Read Size var sizepos = file.BaseStream.Position; var size = file.ReadUInt32(); // Read Value var parsedvar = CR2WTypeManager.Get().GetByName(typename, varname, this); parsedvar.Read(file, size - 4); var afterVarPos = file.BaseStream.Position; var bytesleft = size - (afterVarPos - sizepos); if (bytesleft > 0) { var unreadBytes = file.ReadBytes((int)bytesleft); //Debugger.Break(); } else if (bytesleft < 0) { throw new InvalidParsingException("Parsing Variable read too far."); } parsedvar.nameId = nameId; parsedvar.typeId = typeId; return(parsedvar); }
public frmAddChunk(List <string> list = null) { InitializeComponent(); if (list != null) { var types = list; types.Sort(); txType.Items.AddRange(types.ToArray()); } else { var mng = CR2WTypeManager.Get(); var types = mng.AvailableTypes; types.Sort(); txType.Items.AddRange(types.ToArray()); } }