// Path: src/main/java/pl/joegreen/sergeants/framework/model/Position.java
// @Value
// @Wither
// public class Position {
//     int row;
//     int col;
// 
//     public static Position fromIndex(int index, int columns) {
//         return new Position(index / columns, index % columns);
//     }
// 
//     public int toIndex(int columns) {
//         return getCol() + getRow() * columns;
//     }
// 
//     public boolean isVisibleFrom(Position otherPosition) {
//         return Math.abs(row - otherPosition.row) <= 1 && Math.abs(col - otherPosition.col) <= 1;
//     }
// 
//     public boolean isMovableFrom(Position otherPosition) {
//         return Math.abs(row - otherPosition.row) + Math.abs(col - otherPosition.col) == 1;
//     }
// }


import lombok.Value;
import pl.joegreen.sergeants.framework.model.Position;
package pl.joegreen.sergeants.simulator.viewer;


@Value
public class ViewerField {
// Path: src/main/java/pl/joegreen/sergeants/framework/model/Position.java
// @Value
// @Wither
// public class Position {
//     int row;
//     int col;
// 
//     public static Position fromIndex(int index, int columns) {
//         return new Position(index / columns, index % columns);
//     }
// 
//     public int toIndex(int columns) {
//         return getCol() + getRow() * columns;
//     }
// 
//     public boolean isVisibleFrom(Position otherPosition) {
//         return Math.abs(row - otherPosition.row) <= 1 && Math.abs(col - otherPosition.col) <= 1;
//     }
// 
//     public boolean isMovableFrom(Position otherPosition) {
//         return Math.abs(row - otherPosition.row) + Math.abs(col - otherPosition.col) == 1;
//     }
// }


// Path: src/main/java/pl/joegreen/sergeants/simulator/viewer/ViewerField.java
import lombok.Value;
import pl.joegreen.sergeants.framework.model.Position;

package pl.joegreen.sergeants.simulator.viewer;


@Value
public class ViewerField {
    Position position;