Example #1
0
        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;
        }
Example #2
0
        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);
        }
Example #3
0
        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);
        }
Example #4
0
        public CVariable CreateVariable(string type, string varname = "")
        {
            var var = CR2WTypeManager.Get().GetByName(type, varname, this, false);

            var.Type = type;
            var.Name = varname;
            return(var);
        }
Example #5
0
 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;
 }
Example #6
0
        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());
        }
Example #8
0
        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);
        }
Example #9
0
        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);
        }
Example #10
0
        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());
            }
        }