Spaces:
Runtime error
Runtime error
| using Photon.Deterministic; | |
| using System; | |
| using System.Collections.Generic; | |
| namespace Quantum | |
| { | |
| public partial class AIConfig : AssetObject | |
| { | |
| public enum EValueType | |
| { | |
| None, | |
| Int, | |
| Bool, | |
| Byte, | |
| FP, | |
| FPVector2, | |
| FPVector3, | |
| String, | |
| EntityRef, | |
| } | |
| [] | |
| public class KeyValuePair | |
| { | |
| public string Key; | |
| public EValueType Type; | |
| public Value Value; | |
| } | |
| [] | |
| public struct Value | |
| { | |
| public Int32 Integer; | |
| public Boolean Boolean; | |
| public Byte Byte; | |
| public FP FP; | |
| public FPVector2 FPVector2; | |
| public FPVector3 FPVector3; | |
| public string String; | |
| public EntityRef EntityRef; | |
| } | |
| public int Count { get { return KeyValuePairs.Count; } } | |
| public AssetRefAIConfig DefaultConfig; | |
| public List<KeyValuePair> KeyValuePairs = new List<KeyValuePair>(32); | |
| public KeyValuePair Get(string key) | |
| { | |
| for (int i = 0; i < KeyValuePairs.Count; i++) | |
| { | |
| if (KeyValuePairs[i].Key == key) | |
| return KeyValuePairs[i]; | |
| } | |
| return null; | |
| } | |
| public void Set<T>(string key, T value) | |
| { | |
| if (string.IsNullOrEmpty(key) == true) | |
| return; | |
| KeyValuePair pair = Get(key); | |
| if (pair == null) | |
| { | |
| pair = new KeyValuePair(); | |
| pair.Key = key; | |
| KeyValuePairs.Add(pair); | |
| } | |
| Set(pair, value); | |
| } | |
| private void Set<T>(KeyValuePair pair, T value) | |
| { | |
| if (value is int intValue) | |
| { | |
| pair.Type = EValueType.Int; | |
| pair.Value.Integer = intValue; | |
| } | |
| else if (value is bool boolValue) | |
| { | |
| pair.Type = EValueType.Bool; | |
| pair.Value.Boolean = boolValue; | |
| } | |
| else if (value is Byte byteValue) | |
| { | |
| pair.Type = EValueType.Byte; | |
| pair.Value.Byte = byteValue; | |
| } | |
| else if (value is FP fpValue) | |
| { | |
| pair.Type = EValueType.FP; | |
| pair.Value.FP = fpValue; | |
| } | |
| else if (value is FPVector2 fpVector2Value) | |
| { | |
| pair.Type = EValueType.FPVector2; | |
| pair.Value.FPVector2 = fpVector2Value; | |
| } | |
| else if (value is FPVector3 fpVector3Value) | |
| { | |
| pair.Type = EValueType.FPVector3; | |
| pair.Value.FPVector3 = fpVector3Value; | |
| } | |
| else if (value is string stringValue) | |
| { | |
| pair.Type = EValueType.String; | |
| pair.Value.String = stringValue; | |
| } | |
| else if (value is EntityRef entityRefValue) | |
| { | |
| pair.Type = EValueType.EntityRef; | |
| pair.Value.EntityRef = entityRefValue; | |
| } | |
| else | |
| { | |
| throw new NotSupportedException(string.Format("AIConfig - Type not supported. Type: {0} Key: {1}", typeof(T), pair.Key)); | |
| } | |
| } | |
| } | |
| } | |