Beispiel #1
0
 private IDMigrationStepCard CreateIDMigrationStepCard(SourceTargetRange r, int index)
 {
     return(new IDMigrationStepCard(r)
     {
         Margin = new MarginPadding {
             Top = CardMargin
         },
         Index = index,
         CardDragged = (c, e) => RearrangeCards(index, e),
         CardClicked = HandleCardClicked
     });
 }
Beispiel #2
0
        public void AddStep(SourceTargetRange range, bool addToEditor = true, int?newIndex = null)
        {
            var newCard = CreateIDMigrationStepCard(range, newIndex ?? TabRanges.Count);

            Cards.Add(newCard);
            stepList.Add(newCard);
            if (addToEditor)
            {
                editor.AddIDMigrationStep(range);
            }
            UpdateNoStepDialogVisibility(TabRanges);
        }
        public void ValueAdjustment()
        {
            var range = new SourceTargetRange(1, 5, 11);

            Assert.AreEqual(15, range.TargetTo);
            range.SourceFrom = 5;
            Assert.AreEqual(5, range.SourceFrom);
            Assert.AreEqual(11, range.TargetTo);

            range.SourceFrom = 1;
            range.SourceTo   = 3;
            Assert.AreEqual(3, range.SourceTo);
            Assert.AreEqual(13, range.TargetTo);

            range.SourceTo   = 5;
            range.TargetFrom = 21;
            Assert.AreEqual(21, range.TargetFrom);
            Assert.AreEqual(25, range.TargetTo);

            range.TargetFrom = 11;
            range.TargetTo   = 20;
            Assert.AreEqual(20, range.TargetTo);
            Assert.AreEqual(10, range.SourceTo);
        }
Beispiel #4
0
        public IDMigrationStepCard(SourceTargetRange range)
        {
            StepRange = range;

            CornerRadius = 5;
            Masking      = true;

            RelativeSizeAxes = Axes.X;
            Height           = 25;

            Children = new Drawable[]
            {
                hoverBox = new Box
                {
                    RelativeSizeAxes = Axes.Both,
                    Colour           = FromHex("181818")
                },
                new FillFlowContainer
                {
                    Direction        = FillDirection.Horizontal,
                    RelativeSizeAxes = Axes.Y,

                    Children = new Drawable[]
                    {
                        selectionBar = new Box
                        {
                            RelativeSizeAxes = Axes.Y,
                            Width            = 5,
                            Colour           = FromHex("808080"),
                            Alpha            = 0.5f // Transparency will allow the background to lighten the container up
                        },
                        stepIndexContainer = new Container
                        {
                            RelativeSizeAxes = Axes.Y,
                            Width            = 25,

                            Children = new Drawable[]
                            {
                                stepIndexContainerBackground = new Box
                                {
                                    RelativeSizeAxes = Axes.Both,
                                    Colour           = new ColourInfo
                                    {
                                        BottomLeft  = FromHex("606060"),
                                        BottomRight = FromHex("606060"),
                                        TopLeft     = FromHex("606060"),
                                        TopRight    = FromHex("606060")
                                    },
                                    Alpha = 0.5f
                                },
                                stepIndex = new SpriteText
                                {
                                    Anchor = Anchor.Centre,
                                    Origin = Anchor.Centre,
                                    Text   = Index.ToString(),
                                    Font   = new FontUsage(size: 20)
                                }
                            }
                        }
                    }
                },
                // TODO: Migrate to a class called IDMigrationStepText
                new Container
                {
                    RelativeSizeAxes = Axes.Both,
                    Anchor           = Anchor.Centre,
                    Origin           = Anchor.Centre,

                    Children = new Drawable[]
                    {
                        sourceText = new SpriteText
                        {
                            Anchor = Anchor.Centre,
                            Origin = Anchor.Centre,
                            RelativePositionAxes = Axes.X,
                            X      = -0.25f,
                            Margin = new MarginPadding {
                                Left = 30
                            },
                            Text = range.SourceToString(),
                            Font = new FontUsage(size: 20)
                        },
                        rightArrow = new SpriteText
                        {
                            Anchor = Anchor.Centre,
                            Origin = Anchor.Centre,
                            Text   = ">",
                            Font   = new FontUsage(size: 20),
                            Alpha  = 0.5f
                        },
                        targetText = new SpriteText
                        {
                            Anchor = Anchor.Centre,
                            Origin = Anchor.Centre,
                            RelativePositionAxes = Axes.X,
                            X      = 0.25f,
                            Margin = new MarginPadding {
                                Right = 25
                            },
                            Text = range.TargetToString(),
                            Font = new FontUsage(size: 20)
                        }
                    }
                },
                stepDragContainer = new DraggableCardContainer
                {
                    RelativeSizeAxes = Axes.Y,
                    Anchor           = Anchor.CentreRight,
                    Origin           = Anchor.CentreRight,
                    Width            = 25,
                    Children         = new Drawable[]
                    {
                        new SpriteIcon
                        {
                            Icon             = FontAwesome.Solid.Bars,
                            Origin           = Anchor.Centre,
                            Anchor           = Anchor.Centre,
                            RelativeSizeAxes = Axes.Both,
                            Size             = new Vector2(0.7f),
                            Y     = -1, // I have no f*****g idea why this happens, but it's necessary to make the sprite appear centered
                            Alpha = 0.6f
                        }
                    },
                    CardDragged = e =>
                    {
                        Position += e.Delta;
                        CardDragged?.Invoke(this, e);
                    }
                }
            };

            Selected.ValueChanged += OnSelected;
            StepRange.SourceTargetRangeChanged += (a, b, c, d) =>
            {
                sourceText.Text = StepRange.SourceToString();
                targetText.Text = StepRange.TargetToString();
            };
        }
Beispiel #5
0
        public TestSceneIDMigrationBackend()
        {
            Children = new Drawable[]
            {
                new SpriteText
                {
                    Anchor = Anchor.Centre,
                    Origin = Anchor.Centre,
                    Font   = new FontUsage(size: 26),
                    Text   = "Nothing to see here, too bored to make friendly visualized messages indicating test cases"
                }
            };

            var normalBlocks         = new GeneralObject[5];
            var moveTriggers         = new MoveTrigger[5];
            var pickupItems          = new PickupItem[5];
            var pickupTriggers       = new PickupTrigger[5];
            var colorTriggers        = new ColorTrigger[5];
            var instantCountTriggers = new InstantCountTrigger[5];
            var collisionBlocks      = new CollisionBlock[5];
            var collisionTriggers    = new CollisionTrigger[5];

            for (var i = 0; i < 5; i++)
            {
                normalBlocks[i] = new GeneralObject(1)
                {
                    GroupIDs = new[] { i + 1 },
                    Color1ID = i + 1,
                    Color2ID = i + 21
                }
            }
            ;
            for (var i = 0; i < 5; i++)
            {
                moveTriggers[i] = new MoveTrigger(0, i + 1);
            }
            for (var i = 0; i < 5; i++)
            {
                pickupItems[i] = new PickupItem(1275)
                {
                    TargetItemID = i + 1
                }
            }
            ;
            for (var i = 0; i < 5; i++)
            {
                pickupTriggers[i] = new PickupTrigger(i + 1, 0);
            }
            for (var i = 0; i < 5; i++)
            {
                colorTriggers[i] = new ColorTrigger(i + 1)
                {
                    CopiedColorID = i + 21
                }
            }
            ;
            for (var i = 0; i < 5; i++)
            {
                instantCountTriggers[i] = new InstantCountTrigger(i + 1, i + 1, 0);
            }
            for (var i = 0; i < 5; i++)
            {
                collisionBlocks[i] = new CollisionBlock
                {
                    BlockID = i + 1
                }
            }
            ;
            for (var i = 0; i < 5; i++)
            {
                collisionTriggers[i] = new CollisionTrigger(i + 1, i + 21, i + 1);
            }

            var allObjects = new LevelObjectCollection(normalBlocks.Concat(moveTriggers).Concat(pickupItems)
                                                       .Concat(pickupTriggers).Concat(colorTriggers).Concat(instantCountTriggers).Concat(collisionBlocks)
                                                       .Concat(collisionTriggers).ToList());

            var level = new Level
            {
                Name         = "ID Migration Test Level",
                Description  = "This is a test level to help testing the ID migration feature in the backend",
                LevelObjects = allObjects
            };

            var editor = new Editor(level);

            var step0 = new SourceTargetRange(1, 5, 6);
            var step1 = new SourceTargetRange(21, 25, 46);
            var step2 = new SourceTargetRange(1, 25, 26);
            var step3 = new SourceTargetRange(8, 8, 10);

            AddStep("Perform Group ID migration 1-5 > 6-10",
                    () => editor.PerformGroupIDMigration(new List <SourceTargetRange> {
                step0
            }));
            AddAssert("Verify Group ID migration", () => VerifyGroupIDMigration(step0.TargetFrom));
            AddStep("Perform Color ID migration 1-25 > 26-50",
                    () => editor.PerformColorIDMigration(new List <SourceTargetRange> {
                step2
            }));
            AddAssert("Verify Color ID migration", () => VerifyColorIDMigration(step2.TargetFrom, step1.TargetFrom));
            AddStep("Perform Item ID migration 1-5 > 6-10",
                    () => editor.PerformItemIDMigration(new List <SourceTargetRange> {
                step0
            }));
            AddAssert("Verify Item ID migration", () => VerifyItemIDMigration(step0.TargetFrom));
            AddStep("Perform Block ID migration 21-25 > 46-50",
                    () => editor.PerformBlockIDMigration(new List <SourceTargetRange> {
                step1
            }));
            AddAssert("Verify Block ID migration", () => VerifyBlockIDMigration(step0.SourceFrom, step1.TargetFrom));
            // TODO: Add more test steps with multiple step ID migrations

            bool VerifyGroupIDMigration(int targetFrom)
            {
                for (var i = 0; i < 5; i++)
                {
                    if (normalBlocks[i].GetGroupID(0) != i + targetFrom)
                    {
                        return(false);
                    }
                }
                for (var i = 0; i < 5; i++)
                {
                    if (moveTriggers[i].TargetGroupID != i + targetFrom)
                    {
                        return(false);
                    }
                }
                for (var i = 0; i < 5; i++)
                {
                    if (instantCountTriggers[i].TargetGroupID != i + targetFrom)
                    {
                        return(false);
                    }
                }
                for (var i = 0; i < 5; i++)
                {
                    if (collisionTriggers[i].TargetGroupID != i + targetFrom)
                    {
                        return(false);
                    }
                }
                return(true);
            }

            bool VerifyColorIDMigration(int targetFromA, int targetFromB)
            {
                for (var i = 0; i < 5; i++)
                {
                    if (normalBlocks[i].Color1ID != i + targetFromA)
                    {
                        return(false);
                    }
                    if (normalBlocks[i].Color2ID != i + targetFromB)
                    {
                        return(false);
                    }
                }

                for (var i = 0; i < 5; i++)
                {
                    if (colorTriggers[i].TargetColorID != i + targetFromA)
                    {
                        return(false);
                    }
                    if (colorTriggers[i].CopiedColorID != i + targetFromB)
                    {
                        return(false);
                    }
                }

                return(true);
            }

            bool VerifyItemIDMigration(int targetFrom)
            {
                for (var i = 0; i < 5; i++)
                {
                    if (pickupItems[i].TargetItemID != i + targetFrom)
                    {
                        return(false);
                    }
                }
                for (var i = 0; i < 5; i++)
                {
                    if (pickupTriggers[i].TargetItemID != i + targetFrom)
                    {
                        return(false);
                    }
                }
                return(true);
            }

            bool VerifyBlockIDMigration(int targetFromA, int targetFromB)
            {
                for (var i = 0; i < 5; i++)
                {
                    if (collisionBlocks[i].BlockID != i + targetFromA)
                    {
                        return(false);
                    }
                }
                for (var i = 0; i < 5; i++)
                {
                    if (collisionTriggers[i].PrimaryBlockID != i + targetFromA)
                    {
                        return(false);
                    }
                    if (collisionTriggers[i].SecondaryBlockID != i + targetFromB)
                    {
                        return(false);
                    }
                }

                return(true);
            }
        }
    }
}
Beispiel #6
0
        public void IDMigration()
        {
            var normalBlocks         = new GeneralObject[5];
            var moveTriggers         = new MoveTrigger[5];
            var pickupItems          = new PickupItem[5];
            var pickupTriggers       = new PickupTrigger[5];
            var colorTriggers        = new ColorTrigger[5];
            var instantCountTriggers = new InstantCountTrigger[5];
            var collisionBlocks      = new CollisionBlock[5];
            var collisionTriggers    = new CollisionTrigger[5];

            for (int i = 0; i < 5; i++)
            {
                normalBlocks[i] = new GeneralObject(1)
                {
                    GroupIDs = new int[] { i + 1 },
                    Color1ID = i + 1,
                    Color2ID = i + 21,
                }
            }
            ;
            for (int i = 0; i < 5; i++)
            {
                moveTriggers[i] = new MoveTrigger(0, i + 1);
            }
            for (int i = 0; i < 5; i++)
            {
                pickupItems[i] = new PickupItem(1275)
                {
                    TargetItemID = i + 1,
                }
            }
            ;
            for (int i = 0; i < 5; i++)
            {
                pickupTriggers[i] = new PickupTrigger(i + 1, 0);
            }
            for (int i = 0; i < 5; i++)
            {
                colorTriggers[i] = new ColorTrigger(i + 1)
                {
                    CopiedColorID = i + 21,
                }
            }
            ;
            for (int i = 0; i < 5; i++)
            {
                instantCountTriggers[i] = new InstantCountTrigger(i + 1, i + 1, 0);
            }
            for (int i = 0; i < 5; i++)
            {
                collisionBlocks[i] = new CollisionBlock
                {
                    BlockID = i + 1,
                }
            }
            ;
            for (int i = 0; i < 5; i++)
            {
                collisionTriggers[i] = new CollisionTrigger(i + 1, i + 21, i + 1);
            }

            var allObjects = new LevelObjectCollection(normalBlocks.Concat(moveTriggers).Concat(pickupItems).Concat(pickupTriggers).Concat(colorTriggers).Concat(instantCountTriggers).Concat(collisionBlocks).Concat(collisionTriggers).ToList());

            var level = new Level
            {
                Name         = "ID Migration Test Level",
                Description  = "This is a test level to help testing the ID migration feature in the backend",
                LevelObjects = allObjects,
            };

            var editor = new Editor(level);

            var step0 = new SourceTargetRange(1, 5, 6);
            var step1 = new SourceTargetRange(21, 25, 46);
            var step2 = new SourceTargetRange(1, 25, 26);
            var step3 = new SourceTargetRange(8, 8, 10);

            editor.PerformGroupIDMigration(new List <SourceTargetRange> {
                step0
            });
            Assert.IsTrue(VerifyGroupIDMigration(step0.TargetFrom));
            editor.PerformColorIDMigration(new List <SourceTargetRange> {
                step2
            });
            Assert.IsTrue(VerifyColorIDMigration(step2.TargetFrom, step1.TargetFrom));
            editor.PerformItemIDMigration(new List <SourceTargetRange> {
                step0
            });
            Assert.IsTrue(VerifyItemIDMigration(step0.TargetFrom));
            editor.PerformBlockIDMigration(new List <SourceTargetRange> {
                step1
            });
            Assert.IsTrue(VerifyBlockIDMigration(step0.SourceFrom, step1.TargetFrom));
            // TODO: Add more test steps with multiple step ID migrations

            bool VerifyGroupIDMigration(int targetFrom)
            {
                for (int i = 0; i < 5; i++)
                {
                    if (normalBlocks[i].GetGroupID(0) != i + targetFrom)
                    {
                        return(false);
                    }
                }
                for (int i = 0; i < 5; i++)
                {
                    if (moveTriggers[i].TargetGroupID != i + targetFrom)
                    {
                        return(false);
                    }
                }
                for (int i = 0; i < 5; i++)
                {
                    if (instantCountTriggers[i].TargetGroupID != i + targetFrom)
                    {
                        return(false);
                    }
                }
                for (int i = 0; i < 5; i++)
                {
                    if (collisionTriggers[i].TargetGroupID != i + targetFrom)
                    {
                        return(false);
                    }
                }
                return(true);
            }

            bool VerifyColorIDMigration(int targetFromA, int targetFromB)
            {
                for (int i = 0; i < 5; i++)
                {
                    if (normalBlocks[i].Color1ID != i + targetFromA)
                    {
                        return(false);
                    }
                    if (normalBlocks[i].Color2ID != i + targetFromB)
                    {
                        return(false);
                    }
                }
                for (int i = 0; i < 5; i++)
                {
                    if (colorTriggers[i].TargetColorID != i + targetFromA)
                    {
                        return(false);
                    }
                    if (colorTriggers[i].CopiedColorID != i + targetFromB)
                    {
                        return(false);
                    }
                }
                return(true);
            }

            bool VerifyItemIDMigration(int targetFrom)
            {
                for (int i = 0; i < 5; i++)
                {
                    if (pickupItems[i].TargetItemID != i + targetFrom)
                    {
                        return(false);
                    }
                }
                for (int i = 0; i < 5; i++)
                {
                    if (pickupTriggers[i].TargetItemID != i + targetFrom)
                    {
                        return(false);
                    }
                }
                return(true);
            }

            bool VerifyBlockIDMigration(int targetFromA, int targetFromB)
            {
                for (int i = 0; i < 5; i++)
                {
                    if (collisionBlocks[i].BlockID != i + targetFromA)
                    {
                        return(false);
                    }
                }
                for (int i = 0; i < 5; i++)
                {
                    if (collisionTriggers[i].PrimaryBlockID != i + targetFromA)
                    {
                        return(false);
                    }
                    if (collisionTriggers[i].SecondaryBlockID != i + targetFromB)
                    {
                        return(false);
                    }
                }
                return(true);
            }
        }
    }
}
Beispiel #7
0
        public void IDMigration()
        {
            var step0 = new SourceTargetRange(1, 5, 6);    //  1 -  5 >  6 - 10
            var step1 = new SourceTargetRange(21, 25, 46); // 21 - 25 > 46 - 50
            var step2 = new SourceTargetRange(1, 25, 26);  //  1 - 25 > 26 - 50
            var step3 = new SourceTargetRange(8, 8, 10);   //       8 >      10

            ReinitializeLevelStuff();

            migrationEditor.PerformGroupIDMigration(new List <SourceTargetRange> {
                step0
            });
            VerifyGroupIDMigration(step0.TargetFrom);

            migrationEditor.PerformColorIDMigration(new List <SourceTargetRange> {
                step2
            });
            VerifyColorIDMigration(step2.TargetFrom, step1.TargetFrom);

            migrationEditor.PerformItemIDMigration(new List <SourceTargetRange> {
                step0
            });
            VerifyItemIDMigration(step0.TargetFrom);

            migrationEditor.PerformBlockIDMigration(new List <SourceTargetRange> {
                step1
            });
            VerifyBlockIDMigration(step0.SourceFrom, step1.TargetFrom);
            // TODO: Add more test steps with multiple step ID migrations

            void VerifyGroupIDMigration(int offset)
            {
                for (int i = 0; i < 5; i++)
                {
                    Assert.AreEqual(i + offset, normalBlocks[i].GetGroupID(0));
                    Assert.AreEqual(i + offset, moveTriggers[i].TargetGroupID);
                    Assert.AreEqual(i + offset, instantCountTriggers[i].TargetGroupID);
                    Assert.AreEqual(i + offset, collisionTriggers[i].TargetGroupID);
                }
            }

            void VerifyColorIDMigration(int offsetA, int offsetB)
            {
                for (int i = 0; i < 5; i++)
                {
                    Assert.AreEqual(i + offsetA, normalBlocks[i].Color1ID);
                    Assert.AreEqual(i + offsetB, normalBlocks[i].Color2ID);

                    Assert.AreEqual(i + offsetA, colorTriggers[i].TargetColorID);
                    Assert.AreEqual(i + offsetB, colorTriggers[i].CopiedColorID);
                }
                for (int i = 26; i <= 50; i++)
                {
                    int origin = i - 25;
                    Assert.AreEqual(i, level.ColorChannels[i].CopiedColorID);
                    Assert.AreEqual(i, level.ColorChannels[i].ColorChannelID);
                    Assert.AreEqual(origin, level.ColorChannels[origin].ColorChannelID);
                }
            }

            void VerifyItemIDMigration(int offset)
            {
                for (int i = 0; i < 5; i++)
                {
                    Assert.AreEqual(i + offset, pickupItems[i].TargetItemID);
                    Assert.AreEqual(i + offset, pickupTriggers[i].TargetItemID);
                }
            }

            void VerifyBlockIDMigration(int offsetA, int offsetB)
            {
                for (int i = 0; i < 5; i++)
                {
                    Assert.AreEqual(i + offsetA, collisionBlocks[i].BlockID);
                    Assert.AreEqual(i + offsetA, collisionTriggers[i].PrimaryBlockID);
                    Assert.AreEqual(i + offsetB, collisionTriggers[i].SecondaryBlockID);
                }
            }
        }