Exemplo n.º 1
0
            static ImaginaryObject[] GetConstructorParameters(Type type)
            {
                Output.Log($"Constructor parameter wizard for {type.FullName}.");

                Output.Log("Please select a constructor.");
                ConstructorInfo constructorInfo = SelectItem(type.GetConstructors());

                ParameterInfo[] parameterInfoArray = constructorInfo.GetParameters();

                ImaginaryObject[] parameters = new ImaginaryObject[parameterInfoArray.Length];

                Output.Log("Now provide values for the different parameters.");
                for (var i = 0; i < parameterInfoArray.Length; i++)
                {
                    ParameterInfo parameter = parameterInfoArray[i];

                    if (parameter.IsOptional)
                    {
                        if (AskYOrNQuestion(
                                $"{parameter.Name} is optional, and defaults to {(parameter.DefaultValue is null ? "null" : parameter.DefaultValue)}, do you want to change it?")
                            )
                        {
                            parameters[i] = null;
                        }
                    }
                    else
                    {
                        Output.Log($"{parameter.Name}:");
                        parameters[i] = CreateImaginaryObject(parameter.ParameterType);
                    }
                }

                return(parameters);
            }
Exemplo n.º 2
0
        public Script(ImaginaryObject scriptBase, HierarchyObject attachedTo = null)
        {
            if (!IsScript(((IGeneralImaginaryObject)scriptBase).TypeData.GetConstructionType()))
            {
                throw new ArgumentException("ScriptBase is not a Script!");
            }

            ScriptInstance = scriptBase.CreateInstance();

            ScriptType = ((IGeneralImaginaryObject)scriptBase).TypeData.GetConstructionType();

            if (ScriptType.IsHierarchyScript())
            {
                HierarchyScript.SetUp(ScriptInstance, attachedTo);
            }

            EventSystem.EventSystem.SubscribeEvents(ScriptType, ScriptInstance);
        }