Example #1
0
        /// <summary>
        /// Set up the galaxy
        /// </summary>
        /// <param name="galaxyType"></param>
        /// <param name="minPlanets"></param>
        /// <param name="maxPlanets"></param>
        /// <param name="r"></param>
        /// <param name="reason"></param>
        public bool GenerateGalaxy(GALAXYTYPE galaxyType, int minPlanets, int maxPlanets, Random r, out string reason)
        {
            if (_bw.IsBusy)
            {
                reason = "Already in process of generating a galaxy";
                return false;
            }
            _bw.DoWork += GenerateGalaxyThread;
            _bw.RunWorkerCompleted += GenerateGalaxyCompleted;
            GalaxyArgs args = new GalaxyArgs();
            args.GalaxyType = galaxyType;
            args.MinPlanets = minPlanets;
            args.MaxPlanets = maxPlanets;
            args.Random = r;
            _bw.RunWorkerAsync(args);

            reason = null;
            return true;
        }
Example #2
0
        /// <summary>
        /// Set up the galaxy
        /// </summary>
        /// <param name="galaxyType"></param>
        /// <param name="minPlanets"></param>
        /// <param name="maxPlanets"></param>
        /// <param name="r"></param>
        /// <param name="reason"></param>
        public bool GenerateGalaxy(GALAXYTYPE galaxyType, int minPlanets, int maxPlanets, Random r, out string reason)
        {
            if (_bw.IsBusy)
            {
                reason = "Already in process of generating a galaxy";
                return(false);
            }
            _bw.DoWork             += GenerateGalaxyThread;
            _bw.RunWorkerCompleted += GenerateGalaxyCompleted;
            GalaxyArgs args = new GalaxyArgs();

            args.GalaxyType = galaxyType;
            args.MinPlanets = minPlanets;
            args.MaxPlanets = maxPlanets;
            args.Random     = r;
            _bw.RunWorkerAsync(args);

            reason = null;
            return(true);
        }
Example #3
0
        private void GenerateGalaxyThread(object sender, DoWorkEventArgs e)
        {
            lock (_lockGalaxy)
            {
                GALAXYTYPE galaxyType;
                int        minPlanets;
                int        maxPlanets;
                Random     r;
                try
                {
                    GalaxyArgs args = (GalaxyArgs)e.Argument;
                    galaxyType = args.GalaxyType;
                    minPlanets = args.MinPlanets;
                    maxPlanets = args.MaxPlanets;
                    r          = args.Random;
                }
                catch (Exception)
                {
                    return;
                }

                bool[][] grid = GenerateRandom(galaxyType);

                /*switch (galaxyType)
                 * {
                 * case GALAXYTYPE.RANDOM:
                 *      {
                 *              grid = GenerateRandom(size);
                 *      } break;
                 * case GALAXYTYPE.CLUSTER:
                 *      {
                 *              grid = GenerateCluster(size);
                 *      } break;
                 * case GALAXYTYPE.STAR:
                 *      {
                 *              grid = GenerateStar(size);
                 *      } break;
                 * case GALAXYTYPE.DIAMOND:
                 *      {
                 *              grid = GenerateDiamond(size);
                 *      } break;
                 * case GALAXYTYPE.RING:
                 *      {
                 *              grid = GenerateRing(size);
                 *      } break;
                 * }*/

                GalaxySize = grid.Length;
                int numberOfStars = 0;
                switch (galaxyType)
                {
                case GALAXYTYPE.SMALL:
                    numberOfStars = 24;
                    break;

                case GALAXYTYPE.MEDIUM:
                    numberOfStars = 48;
                    break;

                case GALAXYTYPE.LARGE:
                    numberOfStars = 70;
                    break;

                case GALAXYTYPE.HUGE:
                    numberOfStars = 108;
                    break;
                }

                FillGalaxyWithStars(numberOfStars, minPlanets, maxPlanets, grid, r);
            }
        }