void SpawnRocks(Vector3 position, RockSize rockSize, int count) { for (int i = 0; i < count; i++) { bool spawnNewRock = true; int rockFree = m_Rocks.Count; for (int rock = 0; rock < rockFree; rock++) { if (!m_Rocks[rock].Active && !m_Rocks[rock].ExplosionActive) { spawnNewRock = false; rockFree = rock; break; } } if (spawnNewRock) { m_Rocks.Add(new Rock(this)); m_Rocks.Last().Create(m_Player, m_UFO); m_Rocks.Last().LoadSound(m_RockExplode); } m_Rocks[rockFree].Spawn(position, rockSize); } }
//ctor public Rock(RockSize size, PointF location, bool IsNew) { _model = new GraphicsPath(); _col = Color.Green; _location = location; _mySizeReadable = size; switch (size) { case RockSize.Small: _size = _baseSize / 4; break; case RockSize.Medium: _size = _baseSize / 2; break; case RockSize.Big: _size = _baseSize; break; } //generate rock model _variance = (float)(_size * 0.5); List <PointF> rockModel = GetPoly(_rng.Next(_minSides, _maxSides), _size, _variance); rockModel.ForEach(o => _model.AddLine(o, (o == rockModel.Last()) ? rockModel.First() : rockModel[rockModel.IndexOf(o) + 1])); //generate rock speed & rotation _xSpeed = _rng.Next(_minSpeed, _maxSpeed + 1); _ySpeed = _rng.Next(_minSpeed, _maxSpeed + 1); _rotDelta = _maxRot * _rng.NextDouble() * ((_rng.Next(1, 3) > 1) ? 1 : -1); IsFadingIn = IsNew; }
/// <summary> /// main CTOR linked to mother class, set center location /// </summary> /// <param name="pos">input center</param> public ShapeRock(PointF pos, RockSize size) : base(pos) { //this is a rock/asteroids _eItem = eItemType.Rock; //set the size of this rock int iScale = (int)size; Radius = iScale * Radius; _rockSize = size; //score as requirements based on this rock size if (size == RockSize.Big) { RScore = 100; } if (size == RockSize.Medium) { RScore = 200; } else { RScore = 300; } //make a separate color for this type _itemColor = BaseColor; //randomize the rotation increment _fRotationIncrement = (float)(_rnd.NextDouble() * 6.0 - 3.0); //randomize speed vectors _fXSpeed = (float)(_rnd.NextDouble() * 5.0 - 2.5); _fYSpeed = (float)(_rnd.NextDouble() * 5.0 - 2.5); //build gp for this instance shape _modelGraphicsPath = MakePolyPath(Radius, _rnd.Next(6, 13), 0.5f); }
public Rock(RockSize size, Vector2 position) { this.Size = size; this.Rotation = (float)Util.Rand.NextDouble() * MathHelper.TwoPi; this.Velocity = Util.Direction(Rotation) * (minSpeed + (float)Util.Rand.NextDouble() * maxSpeed); this.Position = position; Radius = (int)Size; Origin = new Vector2(Radius, Radius); switch (Size) { case RockSize.Small: Texture = TexSmaRock; break; case RockSize.Medium: Texture = TexMedRock; break; case RockSize.Big: Texture = TexBigRock; break; } }
public TestRock(RockSize size, PointF loc, bool IsNew) : base(size, loc, IsNew) { _xSpeed = 0; _ySpeed = 0; }
// there must be a better way public Rock(RockSize size) : this(size, new Vector2( 0 + Util.PLAYFIELD_WIDTH * (float)Util.Rand.NextDouble(), 0 + Util.PLAYFIELD_HEIGHT * (float)Util.Rand.NextDouble())) { }
public Rock(RockType type, RockSize size) { _rockType = type; _rockSize = size; _rockProductionType = GetProductionType(type); }