Такие вещи стоит приаттачивать архивом (чтобы экзешку глянуть, да и скомпилить ручками)
Код, если, честно - так себе. Его пока единственная заслуга - понятные имена переменных, плюс опущу оценку того факт, что они ещё с префиксами типов перменной (Венгерская нотация - достаточно спорная концепция, и сейчас уже от неё многие отвернулись).
Код, в первую очередь, плох тем, что не следует принципу разделения логики и визуализации (интеракции с пользователем). В частности, это формируется тем, что нет никаких структур данных, вся логика зашита в обработчики событий на форме и контролы на ней.
Также, хотя и особняком, стоит плохая декомпозиция (которая коррелирует с отсутствием структур данных), ведущая к большой копипасте кода.
Немного связан с вышеназнываными проблемами и факт использования пачки глобальных переменных, во-первых, не имеющих никакого контроля над ними (как области видимости и доступа на чтение/запись, так и допутсимых значений), во-вторых, никак не структурированных.
Плюс, чисто на любителя - я удаляю стандартные кэпские комменты вида { Public declarations }
Как вижу правильную организаию данной задачи я: Есть сущности сцены и менеджера сцен (на данный момент сцены это сплеш-скрин и меню-скрин, а менеджер осуществляет их переключение, руководствуясь определённой логикой), есть сущности Контролов (на данный момент это кнопки, вроде как я вижу контрол с функцией "Фон", плюс возможно для курсора и прочих), и, конечно, сущность программного цикла, которая по сути некий таймер, рассылающий оповещения другим сущностям что произошёл квант времени и надо обновить свои состояния. Можно добавить и сущность ресурсного менеджера, который отвественен за ресурсы типа графика, шрифты, звуки - он грузит их, выгружает, выдаёт по требованию других сущностей.
Поскольку у Вас много кода отведено кнопкам, можно рассмотреть их подробнее: Кнопка содержит унаследованные от сущности контрол свойства (позиция и размеры) и методы+события для реализации наведения курсора на кнопку, нажатия по кнопке и т.п. Специфичное для кнопки это состояния нажата, отжата, наведена и т.п. Состояние определяет и графические данные, при смене состояния меняются и данные, данные естественно инкапсулированы в сущность кнопки (например, в виде ссылок на конкретные граф.ресурсы из менеджера резурсов).
|