//mxd. Applies selected settings public void Apply(ICollection <Sidedef> sides, SidedefPropertiesCopySettings settings) { foreach (Sidedef s in sides) { if (settings.UpperTexture) { s.SetTextureHigh(hightexture); } if (settings.MiddleTexture) { s.SetTextureMid(middletexture); } if (settings.LowerTexture) { s.SetTextureLow(lowtexture); } if (settings.OffsetX) { s.OffsetX = offsetx; } if (settings.OffsetY) { s.OffsetY = offsety; } if (settings.Flags) { s.ClearFlags(); //mxd foreach (KeyValuePair <string, bool> f in flags) //mxd { s.SetFlag(f.Key, f.Value); } } } // Should we bother? if (!General.Map.UDMF) { return; } // Apply fields foreach (Sidedef s in sides) { s.Fields.BeforeFieldsChange(); if (settings.Fields) { ApplyCustomFields(s.Fields); } } // Apply UI fields ApplyUIFields(sides, settings); }
public static bool PropertiesMatch(SidedefPropertiesCopySettings flags, Sidedef source, Sidedef target) { // Built-in properties if (flags.OffsetX && source.OffsetX != target.OffsetX) { return(false); } if (flags.OffsetY && source.OffsetY != target.OffsetY) { return(false); } if (flags.UpperTexture && source.HighTexture != target.HighTexture) { return(false); } if (flags.MiddleTexture && source.MiddleTexture != target.MiddleTexture) { return(false); } if (flags.LowerTexture && source.LowTexture != target.LowTexture) { return(false); } if (!General.Map.UDMF) { return(true); } // UDMF-specific properties if (flags.Flags && !FlagsMatch(source.GetEnabledFlags(), target.GetEnabledFlags())) { return(false); } // UI fields if (!UIFieldsMatch(flags, source, target)) { return(false); } // Custom fields return(!flags.Fields || UniFields.CustomFieldsMatch(source.Fields, target.Fields)); }
//mxd. Applies selected linededf and sidedef settings public void Apply(ICollection <Linedef> lines, LinedefPropertiesCopySettings settings, SidedefPropertiesCopySettings sidesettings) { List <Sidedef> frontsides = new List <Sidedef>(lines.Count); List <Sidedef> backsides = new List <Sidedef>(lines.Count); foreach (Linedef l in lines) { if (settings.Flags) { l.ClearFlags(); foreach (KeyValuePair <string, bool> f in flags) { l.SetFlag(f.Key, f.Value); } } if (settings.Activation) { l.Activate = activate; } if (settings.Tag) { l.Tags = new List <int>(tags); //mxd } if (settings.Action) { l.Action = action; } if (settings.Arguments) { for (int i = 0; i < l.Args.Length; i++) { l.Args[i] = args[i]; } } if (l.Front != null) { frontsides.Add(l.Front); } if (l.Back != null) { backsides.Add(l.Back); } } // Should we bother? if (General.Map.UDMF) { // Apply fields foreach (Linedef l in lines) { l.Fields.BeforeFieldsChange(); // Apply string arguments if (settings.Arguments) { Apply(l.Fields, "arg0str"); //TODO: re-enable when UI part is ready //Apply(l.Fields, "arg1str"); //Apply(l.Fields, "arg2str"); //Apply(l.Fields, "arg3str"); //Apply(l.Fields, "arg4str"); } // Apply custom fields if (settings.Fields) { ApplyCustomFields(l.Fields); } } // Apply UI fields ApplyUIFields(lines, settings); } // Apply sidedef settings if (sidesettings != null) { if (front != null) { front.Apply(frontsides, sidesettings); } if (back != null) { back.Apply(backsides, sidesettings); } } }
public static bool PropertiesMatch(LinedefPropertiesCopySettings linedefflags, SidedefPropertiesCopySettings sideflags, Linedef source, Linedef target) { // Built-in properties if (linedefflags.Action && source.Action != target.Action) { return(false); } if (linedefflags.Activation && source.Activate != target.Activate) { return(false); } if (linedefflags.Tag && !TagsMatch(source.Tags, target.Tags)) { return(false); } if (linedefflags.Arguments) { // Classic args for (int i = 0; i < source.Args.Length; i++) { if (source.Args[i] != target.Args[i]) { return(false); } } // String args if (General.Map.UDMF) { if (!UniFields.ValuesMatch("arg0str", source, target)) { return(false); } if (!UniFields.ValuesMatch("arg1str", source, target)) { return(false); } if (!UniFields.ValuesMatch("arg2str", source, target)) { return(false); } if (!UniFields.ValuesMatch("arg3str", source, target)) { return(false); } if (!UniFields.ValuesMatch("arg4str", source, target)) { return(false); } } } if (linedefflags.Flags && !FlagsMatch(source.GetEnabledFlags(), target.GetEnabledFlags())) { return(false); } if (General.Map.UDMF) { // UI fields if (!UIFieldsMatch(linedefflags, source, target)) { return(false); } // Custom fields if (linedefflags.Fields && !UniFields.CustomFieldsMatch(source.Fields, target.Fields)) { return(false); } } // Sidedef properties return((source.Front != null && target.Front != null && PropertiesMatch(sideflags, source.Front, target.Front)) || (source.Front != null && target.Back != null && PropertiesMatch(sideflags, source.Front, target.Back)) || (source.Back != null && target.Front != null && PropertiesMatch(sideflags, source.Back, target.Front)) || (source.Back != null && target.Back != null && PropertiesMatch(sideflags, source.Back, target.Back))); }