// ---------------------------------------------------------- private void WriteAttribute(string aValue, eAttribType aType, BinaryWriter aWriter) { switch (aType) { case eAttribType.none: break; case eAttribType.str: { byte[] chars = Encoding.Default.GetBytes(aValue); if (chars.Length > 255) { Console.WriteLine("String '" + aValue + "' is longer than 255 chars"); } // write number of chars aWriter.Write((byte)chars.Length); // write chars aWriter.Write(chars); } break; case eAttribType.int8: { int value = int.Parse(aValue); if (value > sbyte.MaxValue || value < sbyte.MinValue) { Console.WriteLine("Value " + value + " is out of int8 range"); } aWriter.Write((sbyte)value); } break; case eAttribType.uint8: { int value = int.Parse(aValue); if (value > byte.MaxValue || value < byte.MinValue) { Console.WriteLine("Value " + value + " is out of uint8 range"); } aWriter.Write((byte)value); } break; case eAttribType.int16: { int value = int.Parse(aValue); if (value > short.MaxValue || value < short.MinValue) { Console.WriteLine("Value " + value + " is out of short range"); } aWriter.Write((short)value); } break; case eAttribType.uint16: { int value = int.Parse(aValue); if (value > ushort.MaxValue || value < ushort.MinValue) { Console.WriteLine("Value " + value + " is out of ushort range"); } aWriter.Write((ushort)value); } break; case eAttribType.int32: { int value = int.Parse(aValue); aWriter.Write(value); } break; case eAttribType.uint32: { int value = int.Parse(aValue); if (value < uint.MinValue) { Console.WriteLine("Value " + value + " is out of uint range"); } aWriter.Write((uint)value); } break; case eAttribType.fixed1_7: { int value = (int) (float.Parse(aValue, CultureInfo.InvariantCulture) * 128 + 0.5f); if (value > byte.MaxValue || value < byte.MinValue) { Console.WriteLine("Value " + value + " is out of 8bit range needed for fixed1_7"); } aWriter.Write((byte)value); } break; case eAttribType.fixed8_8: { int value = (int) (float.Parse(aValue, CultureInfo.InvariantCulture) * 256 + 0.5f); if (value > short.MaxValue || value < short.MinValue) { Console.WriteLine("Value " + value + " is out of 16bit range needed for fixed8_8"); } aWriter.Write((short)value); } break; case eAttribType.fixed16_16: { int value = (int) (float.Parse(aValue, CultureInfo.InvariantCulture) * 65536 + 0.5f); if (value > int.MaxValue || value < int.MinValue) { Console.WriteLine("Value " + value + " is out of 32bit range needed for fixed16_16"); } aWriter.Write(value); } break; case eAttribType.boolean: { var value = aValue.ToLower() == "true" ? 1 : 0; aWriter.Write((byte) value); } break; case eAttribType.curveType: if (aValue == "linear") { aWriter.Write((byte)0); } else if (aValue == "instant") { aWriter.Write((byte)1); } else if (aValue == "quadratic") { aWriter.Write((byte)2); } else if (aValue == "cubic") { aWriter.Write((byte)3); } else { Console.WriteLine("Unknown curve type: " + aValue); } break; case eAttribType.objInfoType: if (aValue != "bone" && aValue != "sprite") { Console.WriteLine("Unknown obj_info type type: " + aValue); } aWriter.Write((byte)(aValue == "bone" ? 1 : 0)); break; case eAttribType.timelineObjType: if (aValue != "bone" && aValue != "sprite") { Console.WriteLine("Unknown timeline object type: " + aValue); } aWriter.Write((byte)(aValue == "bone" ? 1 : 0)); break; } }
// ---------------------------------------------------------- private void WriteAttribute(string aValue, eAttribType aType, BinaryWriter aWriter) { switch (aType) { case eAttribType.none: break; case eAttribType.str: { byte[] chars = Encoding.Default.GetBytes(aValue); if (chars.Length > 255) { Console.WriteLine("String '" + aValue + "' is longer than 255 chars"); } // write number of chars aWriter.Write((byte)chars.Length); // write chars aWriter.Write(chars); } break; case eAttribType.int8: { int value = int.Parse(aValue); if (value > sbyte.MaxValue || value < sbyte.MinValue) { Console.WriteLine("Value " + value + " is out of int8 range"); } aWriter.Write((sbyte)value); } break; case eAttribType.uint8: { int value = int.Parse(aValue); if (value > byte.MaxValue || value < byte.MinValue) { Console.WriteLine("Value " + value + " is out of uint8 range"); } aWriter.Write((byte)value); } break; case eAttribType.int16: { int value = int.Parse(aValue); if (value > short.MaxValue || value < short.MinValue) { Console.WriteLine("Value " + value + " is out of short range"); } aWriter.Write((short)value); } break; case eAttribType.uint16: { int value = int.Parse(aValue); if (value > ushort.MaxValue || value < ushort.MinValue) { Console.WriteLine("Value " + value + " is out of ushort range"); } aWriter.Write((ushort)value); } break; case eAttribType.int32: { int value = int.Parse(aValue); aWriter.Write(value); } break; case eAttribType.uint32: { int value = int.Parse(aValue); if (value < uint.MinValue) { Console.WriteLine("Value " + value + " is out of uint range"); } aWriter.Write((uint)value); } break; case eAttribType.fixed1_7: { int value = (int)(float.Parse(aValue, CultureInfo.InvariantCulture) * 128 + 0.5f); if (value > byte.MaxValue || value < byte.MinValue) { Console.WriteLine("Value " + value + " is out of 8bit range needed for fixed1_7"); } aWriter.Write((byte)value); } break; case eAttribType.fixed8_8: { int value = (int)(float.Parse(aValue, CultureInfo.InvariantCulture) * 256 + 0.5f); if (value > short.MaxValue || value < short.MinValue) { Console.WriteLine("Value " + value + " is out of 16bit range needed for fixed8_8"); } aWriter.Write((short)value); } break; case eAttribType.fixed16_16: { int value = (int)(float.Parse(aValue, CultureInfo.InvariantCulture) * 65536 + 0.5f); if (value > int.MaxValue || value < int.MinValue) { Console.WriteLine("Value " + value + " is out of 32bit range needed for fixed16_16"); } aWriter.Write(value); } break; case eAttribType.boolean: { var value = aValue.ToLower() == "true" ? 1 : 0; aWriter.Write((byte)value); } break; case eAttribType.curveType: if (aValue == "linear") { aWriter.Write((byte)0); } else if (aValue == "instant") { aWriter.Write((byte)1); } else if (aValue == "quadratic") { aWriter.Write((byte)2); } else if (aValue == "cubic") { aWriter.Write((byte)3); } else { Console.WriteLine("Unknown curve type: " + aValue); } break; case eAttribType.objInfoType: if (aValue != "bone" && aValue != "sprite") { Console.WriteLine("Unknown obj_info type type: " + aValue); } aWriter.Write((byte)(aValue == "bone" ? 1 : 0)); break; case eAttribType.timelineObjType: if (aValue != "bone" && aValue != "sprite") { Console.WriteLine("Unknown timeline object type: " + aValue); } aWriter.Write((byte)(aValue == "bone" ? 1 : 0)); break; } }