private void FillCtorParameterTypes(ObjectConfiguration objectConfig) { foreach (ParameterConfiguration ctorParameter in objectConfig.CtorParameterConfigurations) { if (ctorParameter.Value is ObjectConfiguration) { ObjectConfiguration referenceObject = ctorParameter.Value as ObjectConfiguration; ctorParameter.Type = referenceObject.Type; } } }
private void FillFactoryParameterTypes(FactoryConfiguration factoryConfig) { foreach (ParameterConfiguration parameter in factoryConfig.ParameterConfigurations) { if (parameter.Value is ObjectConfiguration) { ObjectConfiguration referenceObject = parameter.Value as ObjectConfiguration; parameter.Type = referenceObject.Type; } } }
private void FillItemTypes(ListConfiguration listConfig) { foreach (ListItemConfiguration listItemConfig in listConfig.ListItemConfigurations) { if (listItemConfig.Value is ObjectConfiguration) { ObjectConfiguration referenceObject = listItemConfig.Value as ObjectConfiguration; listItemConfig.Type = referenceObject.Type; } } }
private IObjectConfiguration GetObjectConfiguration(string name, IContainer container) { IObjectConfiguration objectConfig = container.Configuration.GetObjectConfiguration(name); if (objectConfig == null) { objectConfig = new ObjectConfiguration(); objectConfig.Name = name; container.Configuration.AddObjectConfiguration(objectConfig); } return(objectConfig); }
public override void buildStage(Unit unitInput, string nameInput, int idInput) { base.buildStage(unitInput, nameInput, idInput); foreach (ObjectConfiguration objCon in componentConfigurations) { if (objCon.savedObject.tag == "Goal") { goalConfiguration = objCon; } } if (goalConfiguration == null) { Debug.Log("No goal object found for random position stage"); } Vector3 positionTemp = goalConfiguration.savedObject.transform.position - gameObject.transform.position; magnitude = Mathf.Sqrt(Mathf.Pow(positionTemp.x, 2) + Mathf.Pow(positionTemp.z, 2)); jumps = 1; }
private ConstructorInfo MatchConstructors(ObjectConfiguration objectConfig) { try { ConstructorInfo[] constructors = objectConfig.Type.GetConstructors(); ConstructorInfo bestCtorMatch = null; int bestScore = int.MaxValue; foreach (ConstructorInfo constructor in constructors) { int score = 0; ParameterInfo[] ctorParameters = constructor.GetParameters(); //if param count doesnt match , move to next ctor if (ctorParameters.Length != objectConfig.CtorParameterConfigurations.Count) { continue; } if (ctorParameters.Length == 0) { return(constructor); } #region Match parameters for (int i = 0; i < ctorParameters.Length; i++) { ParameterConfiguration parameterConfig = (ParameterConfiguration)objectConfig.CtorParameterConfigurations[i]; Type type1 = ctorParameters[i].ParameterType; Type type2 = parameterConfig.Type; if (type2 == null) { ValueConfiguration parameterValueConfig = (ValueConfiguration)parameterConfig.Value; if (parameterValueConfig.TypeConverter != null) { if (parameterValueConfig.TypeConverter.CanConvertTo(type1)) { score++; } else { break; } } else { //untyped parameter try { if (type1.IsEnum && parameterValueConfig.Value is string) { object res = Enum.Parse(type1, parameterValueConfig.Value.ToString()); } else { object res = Convert.ChangeType(parameterValueConfig.Value, type1); } } catch { break; } score++; } } else { //typed parameter if (type1.IsAssignableFrom(type2)) { if (type1 == type2) { //same type score++; } else if (type2.IsSubclassOf(type1)) { //subclass Type tmpType = type2; while (tmpType != type1) { score++; tmpType = tmpType.BaseType; } } else { //interface score++; } } else { //ignore this break; } } } #endregion if (score < bestScore && score != 0) { bestCtorMatch = constructor; bestScore = score; } } return(bestCtorMatch); } catch (Exception x) { throw new Exception(string.Format("could not match constructor for object '{0}'", objectConfig.Name), x); } }
private ObjectManager() { _config = ObjectConfiguration.Instance; }