Exemplo n.º 1
0
        public static bool PropertiesMatch(ThingPropertiesCopySettings flags, Thing source, Thing target)
        {
            // Built-in properties
            if (flags.Type && source.Type != target.Type)
            {
                return(false);
            }
            if (flags.Angle && source.AngleDoom != target.AngleDoom)
            {
                return(false);
            }
            if (flags.Action && source.Action != target.Action)
            {
                return(false);
            }
            if (flags.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 (flags.Tag && source.Tag != target.Tag)
            {
                return(false);
            }
            if (flags.Flags && !FlagsMatch(source.GetEnabledFlags(), target.GetEnabledFlags()))
            {
                return(false);
            }
            if (!General.Map.UDMF)
            {
                return(true);
            }

            // UDMF-specific properties
            if (flags.Pitch && source.Pitch != target.Pitch)
            {
                return(false);
            }
            if (flags.Roll && source.Roll != target.Roll)
            {
                return(false);
            }
            if (flags.Scale && (source.ScaleX != target.ScaleX) || (source.ScaleY != target.ScaleY))
            {
                return(false);
            }

            // UI fields
            if (!UIFieldsMatch(flags, source, target))
            {
                return(false);
            }

            // Custom fields
            return(!flags.Fields || UniFields.CustomFieldsMatch(source.Fields, target.Fields));
        }
Exemplo n.º 2
0
        //mxd. Applies selected settings
        public void Apply(ICollection <Thing> things, ThingPropertiesCopySettings settings)
        {
            foreach (Thing t in things)
            {
                if (settings.Type)
                {
                    t.Type = type;
                }

                // Update the setting from the configuration after changing the type. This makes sure all the following
                // actions work, since there can be problems when changing the type from or to thing that has a model defined
                t.UpdateConfiguration();

                if (settings.Angle)
                {
                    t.Rotate(angle);
                }
                if (settings.ZHeight)
                {
                    t.Move(t.Position.x, t.Position.y, zheight);
                }
                if (settings.Pitch)
                {
                    t.SetPitch(pitch);
                }
                if (settings.Roll)
                {
                    t.SetRoll(roll);
                }
                if (settings.Scale)
                {
                    t.SetScale(scalex, scaley);
                }
                if (settings.Flags)
                {
                    t.ClearFlags();
                    foreach (KeyValuePair <string, bool> f in flags)
                    {
                        t.SetFlag(f.Key, f.Value);
                    }
                }
                if (settings.Tag)
                {
                    t.Tag = tag;
                }
                if (settings.Action)
                {
                    t.Action = action;
                }
                if (settings.Arguments)
                {
                    for (int i = 0; i < t.Args.Length; i++)
                    {
                        t.Args[i] = args[i];
                    }
                }
            }

            // Should we bother?
            if (!General.Map.UDMF)
            {
                return;
            }

            foreach (Thing t in things)
            {
                // Apply fields
                t.Fields.BeforeFieldsChange();

                // Apply string arguments
                if (settings.Arguments)
                {
                    Apply(t.Fields, "arg0str");

                    //TODO: re-enable when UI part is ready
                    //Apply(t.Fields, "arg1str");
                    //Apply(t.Fields, "arg2str");
                    //Apply(t.Fields, "arg3str");
                    //Apply(t.Fields, "arg4str");
                }

                // Apply custom fields
                if (settings.Fields)
                {
                    ApplyCustomFields(t.Fields);
                }
            }

            // Apply UI fields
            ApplyUIFields(things, settings);
        }
Exemplo n.º 3
0
        //mxd. Applies selected settings
        public void Apply(ICollection <Thing> things, ThingPropertiesCopySettings settings)
        {
            foreach (Thing t in things)
            {
                if (settings.Type)
                {
                    t.Type = type;
                }
                if (settings.Angle)
                {
                    t.Rotate(angle);
                }
                if (settings.ZHeight)
                {
                    t.Move(t.Position.x, t.Position.y, zheight);
                }
                if (settings.Pitch)
                {
                    t.SetPitch(pitch);
                }
                if (settings.Roll)
                {
                    t.SetRoll(roll);
                }
                if (settings.Scale)
                {
                    t.SetScale(scalex, scaley);
                }
                if (settings.Flags)
                {
                    t.ClearFlags();
                    foreach (KeyValuePair <string, bool> f in flags)
                    {
                        t.SetFlag(f.Key, f.Value);
                    }
                }
                if (settings.Tag)
                {
                    t.Tag = tag;
                }
                if (settings.Action)
                {
                    t.Action = action;
                }
                if (settings.Arguments)
                {
                    for (int i = 0; i < t.Args.Length; i++)
                    {
                        t.Args[i] = args[i];
                    }
                }
            }

            // Should we bother?
            if (!General.Map.UDMF)
            {
                return;
            }

            foreach (Thing t in things)
            {
                // Apply fields
                t.Fields.BeforeFieldsChange();

                // Apply string arguments
                if (settings.Arguments)
                {
                    Apply(t.Fields, "arg0str");

                    //TODO: re-enable when UI part is ready
                    //Apply(t.Fields, "arg1str");
                    //Apply(t.Fields, "arg2str");
                    //Apply(t.Fields, "arg3str");
                    //Apply(t.Fields, "arg4str");
                }

                // Apply custom fields
                if (settings.Fields)
                {
                    ApplyCustomFields(t.Fields);
                }
            }

            // Apply UI fields
            ApplyUIFields(things, settings);
        }