Example #1
0
        public void PatchProperty(TagIndexEntry tagInfo, TagPropertyPatch patch)
        {
            var propertyInfo = ResolvePropertyInfo(tagInfo, patch.PropertySelector);

            Logger.Log(propertyInfo.PropertyType.ToString() + " @ " + propertyInfo.RelativeOffset, Logger.Color.Magenta);

            WritePropertyValue(tagInfo, propertyInfo, patch);
        }
Example #2
0
        private void WritePropertyValue(TagIndexEntry tagInfo, ResolvedTagPropertyInfo info, TagPropertyPatch patch)
        {
            if (info.RelativeOffset < 0)
            {
                Debugger.Break();
            }

            var propType = info.PropertyType;

            if (propType.IsGenericType)
            {
                propType = propType.GetGenericTypeDefinition();
            }

            if (propType.IsEnum)
            {
                propType = propType.GetEnumUnderlyingType();
            }

            if (this.DataWriters.TryGetValue(propType, out var writer))
            {
                writer(this.mapToPatch, tagInfo.Offset.Value + info.RelativeOffset, patch.Value);
            }
            else
            {
                Console.WriteLine($"Writing '{info.PropertyType}' values is not configured, skipping");
            }
        }