/// <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; } }
/// <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!"); }
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"; }
/// <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() });
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"; }