Если тебе не страшно мокнуть голову в говнецо, то сделай класс менеджер, а в классах, где нужно менять поля добавь friend менеджер. Он сможет менять приватные поля. У него делай статический метод update и в него пихай все вот эти вот свои приколы
Решал подобную проблему при помощи EDA, делая логику в отдельных сущностях, закрепляя за ними контроллер По итогу создавал необходимую конфигурацию игрового объекта, определяя в нём разные сущности, работающие через проксированые соединения
Идея теоретически решала почти все мои проблемы, но была очень громоздка, т.к. большая часть логики это наладка соединений сущностей и их контроллеров через прокси
Для того, чтоб читать код было приятнее, рекомендуется добавить его на любой из этих ресурсов, a ссылку на код отправить в чат pastebin.com, paste.ubuntu.com