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; }
private void AddMovingObject(Zombie obj) { this.movingObjects.Add(obj); this.allObjects.Add(obj); }