public static int VerticalCollisionIndex(Zombie moving, List<GameObj> objects)
        {
            List<Position> profile = moving.GetCollisionProfile();

            List<Position> verticalProfile = new List<Position>();

            foreach (var coord in profile)
            {
                verticalProfile.Add(new Position(coord.Y + moving.Speed.Y, coord.X));
            }

            int collisionIndex = GetCollisionIndex(moving, objects, verticalProfile);

            return collisionIndex;
        }
        private static int GetCollisionIndex(Zombie moving, ICollection<GameObj> objects, List<Position> movingProfile)
        {
            int collisionIndex = 0;

            foreach (var obj in objects)
            {
                if (moving.CanCollideWith(obj.GetCollisionGroupString()) || obj.CanCollideWith(moving.GetCollisionGroupString()))
                {
                    List<Position> objProfile = obj.GetCollisionProfile();

                    if (ProfilesIntersect(movingProfile, objProfile))
                    {
                        return collisionIndex;
                    }
                }

                collisionIndex++;
            }

            return -1;
        }
Example #3
0
 private void AddMovingObject(Zombie obj)
 {
     this.movingObjects.Add(obj);
     this.allObjects.Add(obj);
 }