예제 #1
0
        public static List <BackgroundObject> CreateBackgroundObjects(int amountToCreate, Transform transform, Vector2 generationBounds, Vector2 spacing, StyleManager.LevelStyle style, int depth)
        {
            List <BackgroundObject> result   = new List <BackgroundObject>();
            int maxAmountOfObjectsHorizontal = (int)(generationBounds.X / spacing.X);

            if (spacing.X == 0)
            {
                maxAmountOfObjectsHorizontal = 1;
            }
            int maxAmountOfObjectsVertical = (int)(generationBounds.Y / spacing.Y);

            if (spacing.Y == 0)
            {
                maxAmountOfObjectsVertical = 1;
            }
            int maxAmountOfObjects = maxAmountOfObjectsHorizontal * maxAmountOfObjectsVertical;

            List <int> indexes = new List <int>();

            for (int i = 0; i < maxAmountOfObjects; ++i)
            {
                indexes.Add(i);
            }

            for (int i = 0; i < amountToCreate; ++i)
            {
                int selectionIndex = Globals.Random.Next(0, indexes.Count);
                int placementX     = indexes[selectionIndex] % maxAmountOfObjectsHorizontal;
                int placementY     = indexes[selectionIndex] / maxAmountOfObjectsVertical;
                indexes.RemoveAt(selectionIndex);

                BackgroundObject objectToGenerateFrom = Globals.Backgrounds.GetObject(style, depth);
                BackgroundObject newObject            = new BackgroundObject(objectToGenerateFrom);
                if (transform != null)
                {
                    newObject.Transform.ParentTransform = transform;
                }
                newObject.Transform.PosX = spacing.X * placementX;
                newObject.Transform.PosY = spacing.Y * placementY;
                newObject.ApplyJitter();
                result.Add(newObject);
            }
            return(result);
        }
예제 #2
0
 public BackgroundObject GetObject(StyleManager.LevelStyle style, int depth)
 {
     return(_backgroundObjects[style][depth][Globals.Random.Next(0, _backgroundObjects[style][depth].Length)]);
 }