public bool is_adjacent(iTile A, iTile B) { int row_A = A.get_row(); int row_B = B.get_row(); int col_A = A.get_col(); int col_B = B.get_col(); if (Math.Abs(row_A - row_B) > 1 || Math.Abs(col_A - col_B) > 1) return false; if (row_A % 2 == 0) { if (col_B - col_A == 1) return false; } if (row_A % 2 == 1) { if (col_A - col_B == 1) return false; } return true; }
/* haven't tested.. should be working.. */ public List<iTile> Get_Family(iTile Central) { List<iTile> ret = new List<iTile>(); if(Central.get_col() != 0) ret.Add(map[Central.get_row()][Central.get_col() - 1]); if(Central.get_col() != map_width - 1) ret.Add(map[Central.get_row()][Central.get_col() + 1]); if(Central.get_row() % 2 == 0){ if(Central.get_row() == 0){ if(Central.get_col() == 0){ ret.Add(map[Central.get_row() + 1][Central.get_col()]); } else{ ret.Add(map[Central.get_row() + 1][Central.get_col()]); ret.Add(map[Central.get_row() + 1][Central.get_col() - 1]); } } else if(Central.get_row() == map_height - 1){ if(Central.get_col() == 0){ ret.Add(map[Central.get_row() - 1][Central.get_col()]); } else{ ret.Add(map[Central.get_row() - 1][Central.get_col()]); ret.Add(map[Central.get_row() - 1][Central.get_col() - 1]); } } else{ if(Central.get_col() == 0){ ret.Add(map[Central.get_row() - 1][Central.get_col()]); ret.Add(map[Central.get_row() + 1][Central.get_col()]); } else{ ret.Add(map[Central.get_row() - 1][Central.get_col()]); ret.Add(map[Central.get_row() - 1][Central.get_col() - 1]); ret.Add(map[Central.get_row() + 1][Central.get_col()]); ret.Add(map[Central.get_row() + 1][Central.get_col() - 1]); } } } else{ if(Central.get_row() == map_height - 1){ if(Central.get_col() == map_width - 1){ ret.Add(map[Central.get_row() - 1][Central.get_col()]); } else{ ret.Add(map[Central.get_row() - 1][Central.get_col()]); ret.Add(map[Central.get_row() - 1][Central.get_col() + 1]); } } else{ if(Central.get_col() == map_width - 1){ ret.Add(map[Central.get_row() - 1][Central.get_col()]); ret.Add(map[Central.get_row() + 1][Central.get_col()]); } else{ ret.Add(map[Central.get_row() - 1][Central.get_col()]); ret.Add(map[Central.get_row() - 1][Central.get_col() + 1]); ret.Add(map[Central.get_row() + 1][Central.get_col()]); ret.Add(map[Central.get_row() + 1][Central.get_col() + 1]); } } } return ret; }