Взаимодействие персонажа и карты в игрушке

Времени суток добрейшего!

Значит-ся. Язык - C++. Игрушка. Пошаговая. на клетчатом поле. (что-бы был хоть какой-то контекст).

Есть класс Level. Хранит в себе само игровое поле, указатели на объекты с их координатами и проч. ; среди такового - my_pathfinding_layout, представляющий из себя двумерный массив булей : где может ступать нога человека, а где - нифига. Этот лэйаут обновляется при каждом соответствующем изменении в Level-е.

Есть класс Character. Хранит персонажей, их координаты, текстуры etc.

Есть класс Action. Универсальный класс прародитель, который подтыкаеться к кнопкам ( позволю себе не расписывать UI), и позволяет им делать вещи. Он-же подтыкаеться к персонажам ( и в последствии - и к их кнопкам), и дает делать вещи и им.

Теперь, собственно вопрос:

У нас есть подкласс Action-а Walk. Он, ожидаемо, позволяет персонажу переместиться с одной клетки на другую. Но что-бы определить, куда персонаж может переместиться, нужно осуществить Pathfinding. Кто должен его делать?

Точно не персонаж, ибо плевать он хотел на pathfinding_layout - его это не касается. Да и вообще, Action-ы действуют на персонажей, а не являются их частями.

По идее - не Level. Ему тоже пофиг и на Action-ы, и на Character-ов. Ну нет у него необходимости владеть паthфайндингом, не его это компетенция.

Но, блин, и не Walk ведь! Ибо у него нет никакого морального права получать доступ к pathfinding layout-у, ибо это свойство левела. И, даже если забить на последний факт, это что-же, для каждого подобного Action-а по новой ваять весь pathfinding?

Сам опыт объектно ориентированной разработки имею малый, первый ( сравнительно) крупный проект. Посоветуйте, люди добрые!