예제 #1
0
        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);
            }
        }
예제 #2
0
        //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;
        }
예제 #3
0
        /// <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);
        }
예제 #4
0
파일: Rock.cs 프로젝트: eogas/bfrtky
        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;
            }
        }
예제 #5
0
 public TestRock(RockSize size, PointF loc, bool IsNew)
     : base(size, loc, IsNew)
 {
     _xSpeed = 0;
     _ySpeed = 0;
 }
예제 #6
0
파일: Rock.cs 프로젝트: eogas/bfrtky
        // 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()))
        {
        }
예제 #7
0
 public Rock(RockType type, RockSize size)
 {
     _rockType = type;
     _rockSize = size;
     _rockProductionType = GetProductionType(type);
 }