Exemple #1
0
 public void ExitRoom(Player player)
 {
     int k = 0;
     while (k < enemies.Count)
     {
         Enemy enemy = enemies[k];
         if (enemy.temporary)
         {
             enemies.Remove(enemy);
             k--;
         }
         else if (enemy.defaultPosition.HasValue)
         {
             enemy.position = enemy.defaultPosition.Value;
         }
         k++;
     }
     bullets.Clear();
     particles.Clear();
     usePortal = null;
     if (OnExit != null)
     {
         OnExit(this, player);
     }
 }
Exemple #2
0
 public void EnterRoom(Player player)
 {
     if (OnEnter != null)
     {
         OnEnter(this, player);
     }
 }
Exemple #3
0
 public void UpdateEnemy(Room room, Player player)
 {
     if (hurtCool > 0)
     {
         hurtCool--;
     }
     Update(room, player);
 }
Exemple #4
0
 public override void Initialize(Main main)
 {
     base.Initialize(main);
     player = new Player();
     player.position = new Vector2(tileSize * 1.5f, tileSize * 1.5f);
     currentRoom = SetupLevel(player);
     camera = player.position;
 }
Exemple #5
0
 public override bool Collides(Player player)
 {
     if (!collision)
     {
         return false;
     }
     return Vector2.Distance(player.position, position) < player.radius + radius;
 }
 public override bool Update(Room room, Player player, ref Vector2 camera)
 {
     CameraEvent whichEvent = events[currentEvent];
     if (currentEvent < events.Count - 1 && whichEvent.timer >= whichEvent.endAction)
     {
         currentEvent++;
     }
     return events[currentEvent].Update(room, player, ref camera);
 }
Exemple #7
0
        public override sealed bool UpdateBullet(Room room, Player player)
        {
            if (timeLeft < totalTime * 3 / 4)
            {
                this.collision = true;

            }
            timeLeft--;
            return timeLeft < 0;
        }
Exemple #8
0
 public override sealed bool Update(Room room, Player player)
 {
     if (UpdateBullet(room, player))
     {
         return true;
     }
     if (Collides(player))
     {
         player.TakeDamage(1);
     }
     return false;
 }
 public override sealed bool UpdateBullet(Room room, Player player)
 {
     Vector2 oldPos = position;
     UpdateVelocity(room, player);
     if (wallCollide)
     {
         bool collided;
         TopLeft = Collision.MovePos(TopLeft, size, size, velocity, room, out collided);
         if (collided)
         {
             return true;
         }
     }
     else
     {
         position += velocity;
     }
     PostUpdate(room, player);
     timeLeft--;
     return timeLeft < 0;
 }
Exemple #10
0
 public bool TakeDamage(int damage, Room room, Player player)
 {
     if (CanBeHit)
     {
         life -= damage;
         if (life <= 0)
         {
             Kill(room, player);
             return true;
         }
         if (boss)
         {
             hurtCool = 180;
             room.bullets.Clear();
         }
         else
         {
             hurtCool = 60;
         }
     }
     return false;
 }
Exemple #11
0
 public virtual bool Update(Room room, Player player, ref Vector2 camera)
 {
     if (timer == 0 && camera != targetPos)
     {
         Vector2 offset = targetPos - camera;
         if (offset.Length() < speed)
         {
             camera = targetPos;
         }
         else
         {
             offset.Normalize();
             offset *= speed;
             camera += offset;
         }
     }
     else if (timer < endAction)
     {
         timer++;
         if (timer >= 30 && timer < 30 + actionLength)
         {
             DoAction(room, player, timer - 30);
         }
     }
     else
     {
         Vector2 offset = player.position - camera;
         if (offset.Length() < speed)
         {
             camera = player.position;
             return true;
         }
         offset.Normalize();
         offset *= speed;
         camera += offset;
     }
     return false;
 }
Exemple #12
0
 public virtual bool PlayerInteraction(Room room, int x, int y, Player player)
 {
     return false;
 }
Exemple #13
0
 public virtual void OnPlayerCollide(Room room, int x, int y, Player player)
 {
 }
Exemple #14
0
 public virtual void Update(Room room, int x, int y, Player player)
 {
 }
Exemple #15
0
 public virtual void UpdateVelocity(Room room, Player player) { }
Exemple #16
0
 public abstract bool Collides(Player player);
Exemple #17
0
 public abstract bool UpdateBullet(Room room, Player player);
Exemple #18
0
 public abstract Room SetupLevel(Player player);
Exemple #19
0
 public virtual void PostUpdate(Room room, Player player) { }
Exemple #20
0
 public abstract void Update(Room room, Player player);
Exemple #21
0
 public bool Collides(Player player)
 {
     return Vector2.Distance(position, player.position) < radius + player.radius;
 }
Exemple #22
0
 public void Kill(Room room, Player player)
 {
     if (OnDeath != null)
     {
         OnDeath(this, room, player);
     }
     room.enemies.Remove(this);
 }
Exemple #23
0
 public void DoAction(Room room, Player player)
 {
     List<CameraEvent> startEvents = CreateStart(room, player);
     List<CameraEvent> endEvents = CreateEnd(room, player);
     Enemy.DeathAction onDeath = (Enemy e, Room r, Player p) =>
     {
         enemies.Remove(e);
         if (enemies.Count == 0)
         {
             r.cameraEvent = new CameraChainEvent(endEvents);
             cleared = true;
         }
     };
     startEvents.Add(new CameraEvent(spawnEnemyCamera, (Room r, Player p, int time) =>
     {
         CreateEnemies(r, p, enemies);
         foreach (Enemy e in enemies)
         {
             e.temporary = true;
             e.OnDeath += onDeath;
             r.enemies.Add(e);
         }
     }));
     room.cameraEvent = new CameraChainEvent(startEvents);
 }