using System;
using UnityEngine;

namespace TriLib
{
	[Serializable]
	public class AssetAdvancedConfig
	{
		public AssetAdvancedConfig()
		{
		}

		public AssetAdvancedConfig(string key)
		{
			this.Key = key;
		}

		public AssetAdvancedConfig(string key, int defaultValue)
		{
			this.Key = key;
			this.IntValue = defaultValue;
		}

		public AssetAdvancedConfig(string key, float defaultValue)
		{
			this.Key = key;
			this.FloatValue = defaultValue;
		}

		public AssetAdvancedConfig(string key, bool defaultValue)
		{
			this.Key = key;
			this.BoolValue = defaultValue;
		}

		public AssetAdvancedConfig(string key, string defaultValue)
		{
			this.Key = key;
			this.StringValue = defaultValue;
		}

		public AssetAdvancedConfig(string key, AiComponent defaultValue)
		{
			this.Key = key;
			this.IntValue = (int)defaultValue;
		}

		public AssetAdvancedConfig(string key, AiPrimitiveType defaultValue)
		{
			this.Key = key;
			this.IntValue = (int)defaultValue;
		}

		public AssetAdvancedConfig(string key, AiUVTransform defaultValue)
		{
			this.Key = key;
			this.IntValue = (int)defaultValue;
		}

		public AssetAdvancedConfig(string key, Vector3 translation, Vector3 rotation, Vector3 scale)
		{
			this.Key = key;
			this.TranslationValue = translation;
			this.RotationValue = rotation;
			this.ScaleValue = scale;
		}

		public static AssetAdvancedConfig CreateConfig(AssetAdvancedPropertyClassNames className, int value)
		{
			return new AssetAdvancedConfig(AssetAdvancedPropertyMetadata.GetConfigKey(className), value);
		}

		public static AssetAdvancedConfig CreateConfig(AssetAdvancedPropertyClassNames className, float value)
		{
			return new AssetAdvancedConfig(AssetAdvancedPropertyMetadata.GetConfigKey(className), value);
		}

		public static AssetAdvancedConfig CreateConfig(AssetAdvancedPropertyClassNames className, bool value)
		{
			return new AssetAdvancedConfig(AssetAdvancedPropertyMetadata.GetConfigKey(className), value);
		}

		public static AssetAdvancedConfig CreateConfig(AssetAdvancedPropertyClassNames className, string value)
		{
			return new AssetAdvancedConfig(AssetAdvancedPropertyMetadata.GetConfigKey(className), value);
		}

		public static AssetAdvancedConfig CreateConfig(AssetAdvancedPropertyClassNames className, AiComponent value)
		{
			return new AssetAdvancedConfig(AssetAdvancedPropertyMetadata.GetConfigKey(className), value);
		}

		public static AssetAdvancedConfig CreateConfig(AssetAdvancedPropertyClassNames className, AiPrimitiveType value)
		{
			return new AssetAdvancedConfig(AssetAdvancedPropertyMetadata.GetConfigKey(className), value);
		}

		public static AssetAdvancedConfig CreateConfig(AssetAdvancedPropertyClassNames className, AiUVTransform value)
		{
			return new AssetAdvancedConfig(AssetAdvancedPropertyMetadata.GetConfigKey(className), value);
		}

		public static AssetAdvancedConfig CreateConfig(AssetAdvancedPropertyClassNames className, Vector3 translation, Vector3 rotation, Vector3 scale)
		{
			return new AssetAdvancedConfig(AssetAdvancedPropertyMetadata.GetConfigKey(className), translation, rotation, scale);
		}

		public string Key;

		public int IntValue;

		public float FloatValue;

		public bool BoolValue;

		public string StringValue;

		public Vector3 TranslationValue;

		public Vector3 RotationValue;

		public Vector3 ScaleValue;
	}
}
