Example #1
0
 private void PluginOnPluginDisabled(object sender, EventArgs e)
 {
     Plugin.PluginDisabled -= PluginOnPluginDisabled;
     if (IsInStore)
     {
         DataBindingModifierTypeStore.Remove(this);
     }
 }
Example #2
0
        private void Initialize()
        {
            DataBindingModifierTypeStore.DataBindingModifierAdded   += DataBindingModifierTypeStoreOnDataBindingModifierAdded;
            DataBindingModifierTypeStore.DataBindingModifierRemoved += DataBindingModifierTypeStoreOnDataBindingModifierRemoved;

            // Modifier type
            if (Entity.ModifierTypePluginGuid != null && ModifierType == null)
            {
                BaseDataBindingModifierType?modifierType = DataBindingModifierTypeStore.Get(Entity.ModifierTypePluginGuid.Value, Entity.ModifierType)?.DataBindingModifierType;
                if (modifierType != null)
                {
                    UpdateModifierType(modifierType);
                }
            }

            // Dynamic parameter
            if (ParameterType == ProfileRightSideType.Dynamic && Entity.ParameterPath != null)
            {
                ParameterPath = new DataModelPath(null, Entity.ParameterPath);
            }
            // Static parameter
            else if (ParameterType == ProfileRightSideType.Static && Entity.ParameterStaticValue != null)
            {
                // Use the target type so JSON.NET has a better idea what to do
                Type?  parameterType = ModifierType?.ParameterType ?? DirectDataBinding.DataBinding.GetTargetType();
                object?staticValue   = null;

                try
                {
                    staticValue = parameterType != null
                        ? CoreJson.DeserializeObject(Entity.ParameterStaticValue, parameterType)
                        : CoreJson.DeserializeObject(Entity.ParameterStaticValue);
                }
                // If deserialization fails, use the type's default
                catch (JsonSerializationException e)
                {
                    DeserializationLogger.LogModifierDeserializationFailure(GetType().Name, e);
                    if (parameterType != null)
                    {
                        staticValue = Activator.CreateInstance(parameterType);
                    }
                }

                UpdateParameterStatic(staticValue);
            }
        }