protected virtual Enum ParseEnum(Type type) { var enumNames = type.GetEnumNames(); //TODO: support for enums other than int var enumValues = type.GetEnumValues().Cast <int>().Select(x => x.ToString()).ToArray(); var zipped = enumNames.Zip(enumValues); IDictionary <string, string> values = zipped .ToDictionary <(string, string), string, string>(pair => pair.Item1, pair => pair.Item2); AccessModifier accessModifier = ReflectionUtility.GetAccessModifier(type); var parameters = new EnumParameters { Name = type.Name, Values = values, AccessModifier = accessModifier, FullName = type.FullName, RawType = type }; var @enum = new Enum(parameters); return(@enum); }
public float GetParameter(EnumParameters _key) { if (parameters.ContainsKey(_key)) { return(parameters[_key]); } else { return(0.0f); } }
public float GetSelfParameter(EnumParameters _id) { var param = selfParameters.Find(x => x.id == _id); if (param != null) { return(param.value); } else { return(0.0f); } }
public void SetDeltaParameter(EnumParameters _key, float _value) { var max = GetMaxParameter(_key); parameters.AddOrUpdate(_key, _value); if (GetParameter(_key) > max) { parameters[_key] = max; } if (_key == EnumParameters.speed && isPlayer) { EventManager.CallOnPlayerChangeSpeed(); } }
public float GetParameter(EnumParameters _param) { if (parameters.Count < 1) { UpdateParametersDictionary(); } //TODO: //Добавить поиск по бонусам к параметрам в инвентаре if (parameters.ContainsKey(_param)) { return(parameters[_param]); } else { return(0.0f); } }
public void SetParameter(EnumParameters _key, float _value) { var max = GetMaxParameter(_key); if (!parameters.ContainsKey(_key)) { parameters.Add(_key, _value); } else { parameters[_key] = _value; } if (GetParameter(_key) > max) { parameters[_key] = max; } if (_key == EnumParameters.speed && isPlayer) { EventManager.CallOnPlayerChangeSpeed(); } }
public Enum(EnumParameters parameters) : base(parameters) { Values = parameters.Values; }
public ParameterData(EnumParameters _id, float _value = 0.0f) { id = _id; value = _value; }
public float GetCurrentParameterNormalize(EnumParameters _param) { return(Mathf.InverseLerp(0.0f, GetMaxParameter(_param), GetParameter(_param))); }
public static void AddOrUpdate(this Dictionary <EnumParameters, float> _dictionary, EnumParameters _key, float _value) { if (_dictionary.ContainsKey(_key)) //Ключ уже есть в словаре - обновляем значение { _dictionary[_key] += _value; } else //Ключа в словаре нет, добавляем новый ключ { _dictionary.Add(_key, _value); } }
public ParameterData(EnumParameters _param, float _value) { id = _param.ToString(); value = _value; }