Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- using System;
- using System.Collections.Generic;
- public class Program
- {
- public enum InitChainType
- {
- ICHAIN_U8 = 0x00, // sets byte
- ICHAIN_S8 = 0x01, //
- ICHAIN_U16 = 0x02, // sets short
- ICHAIN_S16 = 0x03, //
- ICHAIN_U32 = 0x04, // sets word
- ICHAIN_S32 = 0x05, //
- ICHAIN_F32 = 0x06, // sets float
- ICHAIN_F32_DIV1000 = 0x07, // sets float divided by 1000
- ICHAIN_VEC3F = 0x08, // sets Vec3f members
- ICHAIN_VEC3F_DIV1000 = 0x09, // sets Vec3f members divided by 1000
- ICHAIN_VEC3S = 0x0A, // sets Vec3s members
- ICHAIN_0B,
- ICHAIN_0C,
- ICHAIN_0D,
- ICHAIN_0E,
- ICHAIN_0F,
- }
- public static uint[] test = new uint[] { 0xB0F41C20, 0xB0F80320, 0x30FC05DC};
- public static void Main(string[] args)
- {
- List<string> strs = new List<string>();
- foreach (var item in test)
- {
- strs.Add(GetChain(item));
- }
- Console.WriteLine( string.Join(",\n",strs));
- }
- public static string GetChain(uint val)
- {
- bool cont = ((val >> 31) & 1) > 0;
- InitChainType t = (InitChainType)((val >> 27) & 0x0F);
- uint off = (val >> 16) & 0x7FF;
- int v = (int)val & 0xFFFF;
- switch(t)
- {
- case InitChainType.ICHAIN_U8: v = (byte)v; break;
- case InitChainType.ICHAIN_S8: v = (sbyte)v; break;
- case InitChainType.ICHAIN_U16: v = (ushort)v; break;
- case InitChainType.ICHAIN_S16: v = (short)v; break;
- case InitChainType.ICHAIN_U32: goto case InitChainType.ICHAIN_U16;
- case InitChainType.ICHAIN_S32: goto case InitChainType.ICHAIN_S16;
- default:
- goto case InitChainType.ICHAIN_S16;
- }
- string contStr = (cont) ? "ICHAIN_CONTINUE": "ICHAIN_STOP";
- return $"{t}({off:X}, {v}, {contStr})";
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement