use pathfinding::prelude::Matrix;
use crate::cats::Colour;
use crate::cell::Cell;
pub fn surround_cnt(m: &Matrix<Cell>, r: usize, c: usize, colour: Colour) -> (usize, bool) {
let mut cnt = 0;
let rows = m.rows - 1;
let cols = m.columns - 1;
let mut edge = true;
if r > 0 && r < rows && c > 0 && c < cols {
if m[(r-1,c)].colour == colour { cnt += 1 };
if m[(r,c-1)].colour == colour { cnt += 1 };
if m[(r-1,c-1)].colour == colour { cnt += 1 };
if m[(r+1,c)].colour == colour { cnt += 1 };
if m[(r,c+1)].colour == colour { cnt += 1 };
if m[(r+1,c+1)].colour == colour { cnt += 1 };
if m[(r+1,c-1)].colour == colour { cnt += 1 };
if m[(r-1,c+1)].colour == colour { cnt += 1 };
edge = false;
} else if r == 0 && c == 0 {
cnt += 5;
if r == rows || m[(r+1,c)].colour == colour { cnt += 1 };
if c == cols || m[(r,c+1)].colour == colour { cnt += 1 };
if r == rows || c == cols || m[(r+1,c+1)].colour == colour { cnt += 1 };
} else if r == 0 {
cnt += 3;
if m[(r,c-1)].colour == colour { cnt += 1 };
if r == rows || m[(r+1,c)].colour == colour { cnt += 1 };
if c == cols || m[(r,c+1)].colour == colour { cnt += 1 };
if r == rows || c == cols || m[(r+1,c+1)].colour == colour { cnt += 1 };
if r == rows || m[(r+1,c-1)].colour == colour { cnt += 1 };
} else if c == 0 {
cnt += 3;
if m[(r-1,c)].colour == colour { cnt += 1 };
if r == rows || m[(r+1,c)].colour == colour { cnt += 1 };
if c == cols || m[(r,c+1)].colour == colour { cnt += 1 };
if r == rows || c == cols || m[(r+1,c+1)].colour == colour { cnt += 1 };
if c == cols || m[(r-1,c+1)].colour == colour { cnt += 1 };
} else if r == rows && c == cols {
cnt += 5;
if m[(r-1,c)].colour == colour { cnt += 1 };
if m[(r,c-1)].colour == colour { cnt += 1 };
if m[(r-1,c-1)].colour == colour { cnt += 1 };
} else if r == rows {
cnt += 3;
if m[(r-1,c)].colour == colour { cnt += 1 };
if m[(r,c-1)].colour == colour { cnt += 1 };
if m[(r-1,c-1)].colour == colour { cnt += 1 };
if m[(r,c+1)].colour == colour { cnt += 1 };
if m[(r-1,c+1)].colour == colour { cnt += 1 };
} else if c == cols {
cnt += 3;
if m[(r-1,c)].colour == colour { cnt += 1 };
if m[(r,c-1)].colour == colour { cnt += 1 };
if m[(r-1,c-1)].colour == colour { cnt += 1 };
if m[(r+1,c)].colour == colour { cnt += 1 };
if m[(r+1,c-1)].colour == colour { cnt += 1 };
}
(cnt, edge)
}