RocksmithToolkitLib.Sng2014HSL.Sng2014File.writeField C# (CSharp) Method

writeField() private method

private writeField ( EndianBinaryWriter w, object value ) : void
w EndianBinaryWriter
value object
return void
        private void writeField(EndianBinaryWriter w, object value)
        {
            Type type = value.GetType();
            string typeName = type.Name;

            if (type.IsArray) {
                if (type.GetElementType().IsPrimitive) {
                    foreach (var v in (IEnumerable)value) {
                        if (consoleMode)
                            Console.WriteLine("{0}", v);
                        writeField(w, v);
                    }
                } else {
                    foreach (var v in (IEnumerable)value)
                        writeStruct(w, v);
                }
            } else {
                switch (typeName) {
                    case "UInt32":
                        w.Write((UInt32)value);
                        if (consoleMode)
                            Console.WriteLine("mask: {0:x}", value);
                        break;
                    case "Int32":
                        w.Write((Int32)value);
                        break;
                    case "Int16":
                        w.Write((Int16)value);
                        break;
                    case "Byte":
                        w.Write((Byte)value);
                        break;
                    case "Single":
                        w.Write((float)value);
                        break;
                    case "Double":
                        w.Write((double)value);
                        break;
                    default:
                        if (consoleMode)
                            Console.WriteLine("Unhandled type {0} (value: {1})", typeName, value);
                        throw new System.Exception("Unhandled type");
                }
            }
        }