public GameplayScreen(ScreensComponent manager)
            : base(manager)
        {
            phyWorld = new World(Vector2.Zero);

            powerupMgr = new Powerups.PowerupManager(phyWorld, this);

            fireParticles = new Particles.FireParticleSystem(manager.Game, Content);
            fireParticles.Initialize();
        }
        public GameOverScreen(ScreensComponent manager, bool blueWins)
            : base(manager)
        {
            blue = blueWins;

            rand = new Random();
            timeToNextFirework = 1;

            elapsedSeconds = 0;

            fireworksParticles = new Particles.FireworksParticleSystem(manager.Game, Content, blue);
            fireworksParticles.Initialize();
        }
コード例 #3
0
        public Base(World world, Vector2 position, bool isVertical, Particles.ParticleSystem fire)
            : base(world)
        {
            health = isVertical ? 20 : 40;
            vertical = isVertical;
            warning = 0;
            fireParticles = fire;

            Position = position / 100;
            BodyType = BodyType.Static;
            Rotation = 0;
            if (vertical) FixtureFactory.AttachRectangle(texV.Width / 100f, texV.Height / 100f, 1, Vector2.Zero, this);
            else FixtureFactory.AttachRectangle(texH.Width / 100f, texH.Height / 100f, 1, Vector2.Zero, this);
            OnCollision += (fA, fB, c) =>
            {
                if (!(fB.Body is Projectile)) return true;

                var p = (Projectile)fB.Body;

                if (p.Damage == 0) return true;

                damage += p.Damage;

                hitSnd.Play(0.2f, -p.Damage / 20f, 0);

                fireParticles.AddParticle(new Vector3(p.Position.X * 100 - 512, 0, p.Position.Y * 100 - 384),
                    Vector3.Zero, p.Damage * 2 + 8);

                if (damage >= health)
                {
                    var pos = new Vector3(position.X - 512, 0, position.Y - 384);
                    if (vertical) pos.Z -= texV.Height / 2f;
                    else pos.X -= texH.Width / 2f;

                    for (int i = 0; vertical && i <= texV.Height || !vertical && i <= texH.Width; i+=2)
                    {
                        fireParticles.AddParticle(pos, Vector3.Zero);

                        if (vertical) pos.Z += 2;
                        else pos.X += 2;
                    }
                }

                return true;
            };
        }
コード例 #4
0
ファイル: Game1.cs プロジェクト: MenosGrandes/mrowisko-pbl
        public Game1()
        {
            graphics = new GraphicsDeviceManager(this);
            Content.RootDirectory = "Content";
            // Construct our particle system components.
            explosionParticles = new Particles.ParticleSystems.ExplosionParticleSystem(this, Content);
            explosionSmokeParticles = new Particles.ParticleSystems.ExplosionSmokeParticleSystem(this, Content);
            projectileTrailParticles = new Particles.ParticleSystems.ProjectileTrailParticleSystem(this, Content);
            smokePlumeParticles = new Particles.ParticleSystems.SmokePlumeParticleSystem(this, Content);
            fireParticles = new Particles.ParticleSystems.FireParticleSystem(this, Content);

            fireParticles.Interval = 3f;
            projectileTrailParticles.Interval = 2.5f;
            smokePlumeParticles.Interval = 3f;

            // Set the draw order so the explosions and fire
            // will appear over the top of the smoke.
            smokePlumeParticles.DrawOrder = 100;
            explosionSmokeParticles.DrawOrder = 200;
            projectileTrailParticles.DrawOrder = 300;
            explosionParticles.DrawOrder = 400;
            fireParticles.DrawOrder = 500;

            // Register the particle system components.
            Components.Add(explosionParticles);
            Components.Add(explosionSmokeParticles);
            Components.Add(projectileTrailParticles);
            Components.Add(smokePlumeParticles);
            Components.Add(fireParticles);
        }
コード例 #5
0
        public Concept()         : base()
        {            
            ps = Particles.ParticleManager.CreateParticleSystem(Particles.ParticleManager.defaultParticle);
            m_backgroundSprite = content.Load<Texture2D>("Images/levelbackground");
            m_playerSprite = content.Load<Texture2D>("Images/playergreen");
            m_enemySprite = content.Load<Texture2D>("Images/littleship");
            m_crosshairSprite = content.Load<Texture2D>("Images/crosshair");
            m_lineSprite = content.Load<Texture2D>("Images/line");

            m_playerOne = new ConceptPlayer();

            m_missleEnemyList = new List<ConceptMissileEnemy>();
            m_missleEnemyList.Add(new ConceptMissileEnemy(new Vector2(100, 200)));
            m_missleEnemyList.Add(new ConceptMissileEnemy(new Vector2(700, 250)));
            m_missleEnemyList.Add(new ConceptMissileEnemy(new Vector2(300, 450)));

            m_seekerEnemyList = new List<ConceptSeekerEnemy>();
            m_seekerEnemyList.Add(new ConceptSeekerEnemy(new Vector2(110, 250)));
            m_seekerEnemyList.Add(new ConceptSeekerEnemy(new Vector2(210, 150)));
            m_seekerEnemyList.Add(new ConceptSeekerEnemy(new Vector2(710, 400)));
            m_seekerEnemyList.Add(new ConceptSeekerEnemy(new Vector2(510, 350)));

        }
コード例 #6
0
        public ConceptMissileEnemy(Vector2 position)
        {
            m_facingDirection = new Vector2();
            rng = Globals.m_rng;
            m_position = position;
            m_rotationAngle = 0.0f;
            m_spriteScale = 0.25f;
            m_dimensions = new Vector2(74, 70) * m_spriteScale;
            m_origin = (m_dimensions / 2.0f) / m_spriteScale;
            m_seekPosition = new Vector2(0, 0);
            m_seeking = false;
            m_speed = 150.0f;
            m_detectionRadius = new Circle(m_position, 128);
            m_collisionRadius = new Circle(m_position, m_dimensions.X / 2);
            m_dying = false;
            m_dead = false;

            #region PARTICLE SYSTEM
            m_line = AIE.GameStateManager.Game.Content.Load<Texture2D>("Images/line");
            m_deathExplosion = Particles.ParticleManager.CreateParticleSystem(m_line);
            
            m_deathExplosion.rate = 0.01f;
            m_deathExplosion.startColor = Color.White;
            m_deathExplosion.endColor = Color.Red;
            m_deathExplosion.normColor = 0.5f;

            m_deathExplosion.spawnArea = 3f;
            m_deathExplosion.spawnAngle = 6.28f;
                        
            m_deathExplosion.lifeTime = new Particles.Range(0.4f, 1.2f);
            m_deathCooldown = 2.0f;            

            m_deathExplosion.startSpeed = new Particles.Range(10.0f, 300.0f);
            m_deathExplosion.endSpeed = new Particles.Range(0.0f, 0.0f);
            #endregion

            t = new Texture2D(AIE.GameStateManager.Game.GraphicsDevice, 1, 1);
            t.SetData(new[] { Color.White });
        }
コード例 #7
0
        public ConceptBullets(Vector2 position, float rotation, Vector2 facingDir)
        {
            m_position = position;
            m_rotationAngle = rotation;
            m_facingDirection = facingDir;
            //m_facingDirection = new Vector2((float)Math.Sin(m_rotationAngle), -(float)Math.Cos(m_rotationAngle));
            m_spriteScale = 1f;
            m_dimensions = new Vector2(8, 8) * m_spriteScale;
            m_origin = (m_dimensions / 2.0f) / m_spriteScale;
            m_collisionRadius = new Circle(m_position, m_dimensions.X / 2);
            m_speed = 950.0f;
            m_dying = false;
            m_dead = false;

            #region PARTICLE SYSTEM
            m_line = AIE.GameStateManager.Game.Content.Load<Texture2D>("Images/line");
            m_deathExplosion = Particles.ParticleManager.CreateParticleSystem(m_line);

            m_deathExplosion.rate = 0.01f;
            m_deathExplosion.startColor = Color.White;
            m_deathExplosion.endColor = Color.Blue;
            m_deathExplosion.normColor = 0.5f;

            m_deathExplosion.spawnArea = 3f;
            m_deathExplosion.spawnAngle = 6.28f;

            m_deathExplosion.lifeTime = new Particles.Range(0.4f, 1.2f);
            m_deathCooldown = 2.0f;

            m_deathExplosion.startSpeed = new Particles.Range(10.0f, 100.0f);
            m_deathExplosion.endSpeed = new Particles.Range(0.0f, 0.0f);
            #endregion


            t = new Texture2D(AIE.GameStateManager.Game.GraphicsDevice, 1, 1);
            t.SetData(new[] { Color.White });
        }
コード例 #8
0
        public Concept()         : base()
        {            
            ps = Particles.ParticleManager.CreateParticleSystem(Particles.ParticleManager.defaultParticle);
            m_backgroundSprite = content.Load<Texture2D>("Images/LevelBackground");
            m_playerSprite = content.Load<Texture2D>("Images/PlayerGreen");
            m_enemySprite = content.Load<Texture2D>("Images/littleship");
            m_crosshairSprite = content.Load<Texture2D>("Images/crosshair");
            m_lineSprite = content.Load<Texture2D>("Images/line");
            m_redExplosionSpriteSheet = content.Load<Texture2D>("Images/red3");

            m_redExplosionAnimation = new TextureAtlas.AnimatedSprite(m_redExplosionSpriteSheet, 5, 16);
            
            m_playerOne = new ConceptPlayer();

            m_missleEnemyList = new List<ConceptMissileEnemy>();
            m_missleEnemyList.Add(new ConceptMissileEnemy(new Vector2(100, 200)));
            m_missleEnemyList.Add(new ConceptMissileEnemy(new Vector2(700, 250)));
            m_missleEnemyList.Add(new ConceptMissileEnemy(new Vector2(300, 450)));

            m_seekerEnemyList = new List<ConceptSeekerEnemy>();
            m_seekerEnemyList.Add(new ConceptSeekerEnemy(new Vector2(110, 250)));
            m_seekerEnemyList.Add(new ConceptSeekerEnemy(new Vector2(210, 150)));
            m_seekerEnemyList.Add(new ConceptSeekerEnemy(new Vector2(710, 400)));
            m_seekerEnemyList.Add(new ConceptSeekerEnemy(new Vector2(510, 350)));

        }