예제 #1
0
        internal static string CreateIntPropStr(int val, DisplayType displayType, DemoInfo demoInfo)
        {
            switch (displayType)
            {
            case DisplayType.Int:
                return(val.ToString());

            case DisplayType.Bool:
                return((val != 0).ToString());

            case DisplayType.AreaBits:
                return(Convert.ToString(val, 2).PadLeft(AreaBitsNumBits, '0'));

            case DisplayType.Color:                     // pretty sure this is rgba
                return($"0x{val:X8}");

            case DisplayType.Handle:
                return(((EHandle)val).ToString());

            case DisplayType.DT_BaseEntity__m_CollisionGroup:
                return(demoInfo.CollisionsGroupList[val].ToString());

            case DisplayType.DT_BasePlayer__m_fFlags:
                return($"({demoInfo.PlayerMfFlagChecker.ToFlagString(val)})");

            default:
                return(EntityPropertyEnumManager.CreateEnumPropStr(val, displayType));                        // must be last
            }
        }
예제 #2
0
        private static DisplayType IdentifyTypeForInt(string name, SendTableProp propInfo)
        {
            if (propInfo.NumBits == 32 && name.ToLower().Contains("color"))
            {
                return(DisplayType.Color);
            }

            // check for flags and special cases first
            if (EntityPropertyEnumManager.DetermineIntSpecialType(propInfo.TableRef.Name, propInfo.Name, out DisplayType disp))
            {
                return(disp);
            }

            string[] split = name.Split('.');

            if (propInfo.NumBits == DemoInfo.NetworkedEHandleBits && split.Any(s => HandleMatcher.IsMatch(s)))
            {
                return(DisplayType.Handle);
            }

            // bool check is kinda dumb, maybe I shouldn't bother tbh
            if (propInfo.NumBits == 1)
            {
                var lowername = name.ToLower();
                if (split.Any(s => BoolMatcher.IsMatch(s)) ||
                    name.Contains("Has") ||
                    name.Contains("Is") ||
                    lowername.Contains("disable") ||
                    lowername.Contains("enable"))
                {
                    return(DisplayType.Bool);
                }
            }

            return(DisplayType.Int);
        }