/// <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; }
/// <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); }
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); } }