/// <summary>
        /// Appends a <paramref name="setting"/> in the form <code>SettingName = SettingValue</code>.
        /// The setting will be written only if the value is different from the default value in the
        /// corresponding <paramref name="parameter"/>.
        /// </summary>
        /// <param name="setting"></param>
        /// <param name="parameter"></param>
        public LoliCodeWriter AppendSetting(BlockSetting setting, BlockParameter parameter = null,
                                            int spaces = 2, bool printDefaults = false)
        {
            if (parameter == null)
            {
                AppendLine($"{setting.Name} = {GetSettingValue(setting)}", spaces);
                return(this);
            }

            var isDefaultValue = setting.FixedSetting switch
            {
                StringSetting x => x.Value == (parameter as StringParameter).DefaultValue,
                IntSetting x => x.Value == (parameter as IntParameter).DefaultValue,
                FloatSetting x => x.Value == (parameter as FloatParameter).DefaultValue,
                BoolSetting x => x.Value == (parameter as BoolParameter).DefaultValue,
                ByteArraySetting x => Compare(x.Value, (parameter as ByteArrayParameter).DefaultValue),
                ListOfStringsSetting x => Compare(x.Value, (parameter as ListOfStringsParameter).DefaultValue),
                DictionaryOfStringsSetting x =>
                Compare(x.Value?.Keys, (parameter as DictionaryOfStringsParameter).DefaultValue?.Keys) &&
                Compare(x.Value?.Values, (parameter as DictionaryOfStringsParameter).DefaultValue?.Values),
                EnumSetting x => x.Value == (parameter as EnumParameter).DefaultValue,
                _ => throw new NotImplementedException(),
            };

            if (setting.InputMode != SettingInputMode.Fixed || !isDefaultValue || printDefaults)
            {
                AppendLine($"{parameter.Name} = {GetSettingValue(setting)}", spaces);
            }

            return(this);
        }
 public void SetAllTo(BlockSetting to)
 {
     for (var i = 0; i < 27; i++)
     {
         p[i] = to;
     }
 }
Exemple #3
0
 /// <summary>
 /// Parses a setting value from a LoliCode string (without the setting name) and
 /// assigns it to the given <see cref="BlockSetting"/>.
 /// </summary>
 public static void ParseSettingValue <T>(ref string input, BlockSetting setting,
                                          T param) where T : BlockParameter
 {
     // @myVariable
     // $"interp"
     // "fixedValue"
     if (input[0] == '@') // VARIABLE
     {
         input = input[1..];
 public void AssignValue(int x, int y, int z, BlockSetting bs)
 {
     // Debug.Log("Assigning value " + x + " y " + y + " z " + z);
     if ((Mathf.Abs(x) > 1) || (Mathf.Abs(y) > 1) || (Mathf.Abs(z) > 1))
     {
         return;
     }
     p[(y + 1) * 9 + (z + 1) * 3 + x + 1] = bs;
     //Debug.Log("Success!");
 }
Exemple #5
0
 public IntKey()
 {
     Left = new BlockSetting()
     {
         InputMode = SettingInputMode.Variable, FixedSetting = new IntSetting()
     };
     Right = new BlockSetting()
     {
         FixedSetting = new IntSetting()
     };
 }
        public RawHttpContentSettingsGroup()
        {
            Data = new BlockSetting()
            {
                Name         = "data",
                FixedSetting = new ByteArraySetting {
                    Value = new byte[0]
                }
            };

            ((StringSetting)ContentType.FixedSetting).Value = "application/octet-stream";
        }
Exemple #7
0
        /// <summary>
        /// Converts a <paramref name="setting"/> to a valid C# formulation.
        /// </summary>
        public static string FromSetting(BlockSetting setting)
        {
            if (setting.InputMode == SettingInputMode.Variable)
            {
                return($"{setting.InputVariableName}{GetCasting(setting)}");
            }

            if (setting.InputMode == SettingInputMode.Interpolated)
            {
                return(setting.InterpolatedSetting switch
                {
                    InterpolatedStringSetting x => SerializeInterpString(x.Value),
                    InterpolatedListOfStringsSetting x => SerializeList(x.Value, true),
                    InterpolatedDictionaryOfStringsSetting x => SerializeDictionary(x.Value, true),
                    _ => throw new NotImplementedException()
                });
        /// <summary>
        /// Gets the snippet of the value of a <paramref name="setting"/> in LoliCode syntax.
        /// </summary>
        public static string GetSettingValue(BlockSetting setting)
        {
            // TODO: Make a valid variable name if it's invalid
            if (setting.InputMode == SettingInputMode.Variable)
            {
                return($"@{setting.InputVariableName}");
            }

            if (setting.InputMode == SettingInputMode.Interpolated)
            {
                return('$' + setting.InterpolatedSetting switch
                {
                    InterpolatedStringSetting x => ToLiteral(x.Value),
                    InterpolatedListOfStringsSetting x => SerializeList(x.Value),
                    InterpolatedDictionaryOfStringsSetting x => SerializeDictionary(x.Value),
                    _ => throw new NotImplementedException()
                });
Exemple #9
0
 public FileHttpContentSettingsGroup()
 {
     FileName = BlockSettingFactory.CreateStringSetting("fileName");
     ((StringSetting)ContentType.FixedSetting).Value = "application/octet-stream";
 }
 public StringHttpContentSettingsGroup()
 {
     Data = BlockSettingFactory.CreateStringSetting("data");
     ((StringSetting)ContentType.FixedSetting).Value = "text/plain";
 }