コード例 #1
0
 public override void OnDrawSprite(QSpriteRenderer renderer)
 {
     if (QVec.Distance(Transform.Position, Camera.Position) < Scene.Window.Width)
     {
         renderer.Draw(Sprite, Transform);
     }
 }
コード例 #2
0
 public void OnDrawSprite(QSpriteRenderer spriteRenderer)
 {
     if (QVec.Distance(Position, Camera.Position) < Scene.Window.Width)
     {
         spriteRenderer.Draw(sprite, Transform);
     }
 }
コード例 #3
0
 public override void OnDrawSprite(QSpriteRenderer spriteRenderer)
 {
     if (CheckDistance || QVec.Distance(Position, Camera.Position) < 1000)
     {
         spriteRenderer.Draw(sprite, Transform);
     }
 }
コード例 #4
0
 public override void OnDrawSprite(QSpriteRenderer renderer)
 {
     if (QVec.Distance(Transform.Position, Camera.Position) < Scene.Window.Width)
     {
         //TODO
         Sprite.Source = Mushroom;
         //DrawSource(renderer, Position + mushPos); //FIX DIS
         renderer.Draw(Sprite, Transform, Transform.Position + mushPos);
         Sprite.Source = Tile;
         //DrawSource(renderer);
         renderer.Draw(Sprite, Transform);
     }
 }
コード例 #5
0
        public void OnDrawSprite(QSpriteRenderer renderer)
        {
            //copy here so less references
            var renderWidth = Scene.Window.Width;

            Sprite.Color = QColor.White;
            var cpos = Camera.Position;

            for (int i = 0; i < BackgroundTiles.Count; ++i)
            {
                if (QVec.Distance(BackgroundTiles[i].Position, cpos) < renderWidth)
                {
                    renderer.Draw(BackgroundTiles[i].Source, Sprite, Transform, BackgroundTiles[i].Position);
                }
            }
            Sprite.Color *= 0.3f;
            for (int i = 0; i < LevelTiles.Count; ++i)
            {
                if (QVec.Distance(LevelTiles[i].Position, cpos) < renderWidth)
                {
                    renderer.Draw(LevelTiles[i].Source, Sprite, Transform, LevelTiles[i].Position);
                }
            }
            //quad tree rendering
//
//
//			for(int i = 0; i < tiles.Count; i++)
//			{
//				List<QRect> t = new List<QRect>();
//				quad.Retrieve(t, new QRect(tiles[i].Position, new QVec(64, 64)));
//				//quad.Retrieve(t, tiles[i].Source);
//
//				for(int j = 0; j < t.Count; j++)
//				{
//					renderer.Draw(tiles[i].Source, Sprite, Transform, tiles[i].Position);
//				}
//			}
        }
コード例 #6
0
        public override void OnUpdate(QTime time)
        {
            var s = Speed;

            if (Health < 1)
            {
                Scene.Destroy(this);
            }
            if (!CanTakeDamage && Accumulator.CheckAccum("BatCanTakeDamage", 0.2f, time))
            {
                CanTakeDamage = true;
            }
            if (Health < MaxHealth)
            {
                s = Speed * 2;
            }
            if (Health == 1)
            {
                s = Speed * 3;
            }
            var distanceFromPlayer = QVec.Distance(player.Transform.Position, Transform.Position);

            if (player.Position.Y > Position.Y)
            {
                WillAttack = true;
            }
            if (!WillAttack)
            {
                return;
            }
            //flies to player
            if (distanceFromPlayer < 800)            // && player.Transform.Position.Y > Transform.Position.Y)
            {
                if (player.Position.X > Position.X)
                {
                    Sprite.Effect = QRenderEffects.FlipHorizontally;
                }
                else
                {
                    Sprite.Effect = QRenderEffects.None;
                }
                Position     += QVec.MoveTowards(Position, player.Position) * time.Delta * s;
                Sprite.Source = BatFlap.Play(time.Delta);
            }
            else
            {
                //runs back to spawn
                if (QVec.Distance(Transform.Position, spawnerPosition) > 1)
                {
                    if (spawnerPosition.X > Position.X)
                    {
                        Sprite.Effect = QRenderEffects.FlipHorizontally;
                    }
                    else
                    {
                        Sprite.Effect = QRenderEffects.None;
                    }
                    Position     += QVec.MoveTowards(Position, spawnerPosition) * time.Delta * Speed;
                    Sprite.Source = BatFlap.Play(time.Delta);
                }
                else if (distanceFromPlayer > 1000)
                {
                    //closes eyes
                    Sprite.Effect = QRenderEffects.FlipVertically;
                    Sprite.Source = Frames[30];
                }
                else if (distanceFromPlayer < 1000)
                {
                    //opens eyes
                    Sprite.Effect = QRenderEffects.FlipVertically;
                    Sprite.Source = Frames[28];
                }
            }
        }