public bool BlocksPlayer(Labdata labdata, bool wallsOnly = false) { if (MapBorder) { return(true); } if (WallIndex != 0) { var wallFlags = labdata.Walls[((int)WallIndex - 1) % labdata.Walls.Count].Flags; return(wallFlags.HasFlag(Tileset.TileFlags.BlockAllMovement) || !wallFlags.HasFlag(Tileset.TileFlags.AllowMovementWalk)); } if (!wallsOnly && ObjectIndex != 0) { var obj = labdata.Objects[((int)ObjectIndex - 1) % labdata.Objects.Count]; foreach (var subObject in obj.SubObjects) { var objectFlags = subObject.Object.Flags; if (objectFlags.HasFlag(Tileset.TileFlags.BlockAllMovement) || !objectFlags.HasFlag(Tileset.TileFlags.AllowMovementWalk)) { return(true); } } } return(false); }
public static Labdata Load(ILabdataReader labdataReader, IDataReader dataReader, IGameData gameData) { var labdata = new Labdata(); labdataReader.ReadLabdata(labdata, dataReader, gameData); return(labdata); }
public bool BlocksPlayerSight(Labdata labdata) { if (MapBorder) { return(true); } if (WallIndex != 0) { var wallFlags = labdata.Walls[((int)WallIndex - 1) % labdata.Walls.Count].Flags; return(wallFlags.HasFlag(Tileset.TileFlags.BlockSight)); } return(false); }