コード例 #1
0
ファイル: TestUtilities.cs プロジェクト: branpk/STROOP
        public static void MoveBoxes(bool upwards)
        {
            List <double> marioPositions = upwards ? marioPositions1 : marioPositions2;
            int           yDiff          = upwards ? 78 : -100;

            List <double> qSteps = new List <double>();

            for (int i = 0; i < marioPositions.Count - 1; i++)
            {
                double x1   = marioPositions[i];
                double x2   = marioPositions[i + 1];
                double diff = x2 - x1;
                qSteps.Add(x1 + diff * 1 / 4.0);
                qSteps.Add(x1 + diff * 2 / 4.0);
                qSteps.Add(x1 + diff * 3 / 4.0);
                qSteps.Add(x1 + diff * 4 / 4.0);
            }
            List <int>             qStepsTruncated = qSteps.ConvertAll(qStep => (int)Math.Truncate(qStep));
            List <ObjectDataModel> objects         = Config.ObjectSlotsManager.SelectedObjects;

            if (objects.Count == 0)
            {
                return;
            }

            objects.Sort((obj1, obj2) =>
            {
                string label1 = Config.ObjectSlotsManager.GetSlotLabelFromObject(obj1);
                string label2 = Config.ObjectSlotsManager.GetSlotLabelFromObject(obj2);
                int pos1      = ParsingUtilities.ParseInt(label1);
                int pos2      = ParsingUtilities.ParseInt(label2);
                return(pos1 - pos2);
            });

            int initialX = (int)objects[0].X;
            int initialY = (int)objects[0].Y;
            int initialZ = (int)objects[0].Z;
            int xOffset  = initialX - qStepsTruncated[0];

            for (int i = 0; i < objects.Count; i++)
            {
                objects[i].X = qStepsTruncated[i] + xOffset;
                objects[i].Y = initialY + i * yDiff;
                objects[i].Z = initialZ;
            }
        }