|
•Итак - Artlav, 09.06.2010 15:33:30 |
|
|
Стейты меню - штука корявая, не спорю. Они делятся на две группы:
//Настройка (zmnunum), касается только графики MS_MULTIPLAYER=0; MS_OPTIONS =1; MS_CLANSELECT =2; MS_BUYUPGRADE =3; MS_LOADSAVE =4; MS_LOAD =41; MS_SAVE =42; MS_SINGLE =5; MS_PLAYERSETUP=6; MS_MAPSELECT =7; MS_MAINMENU =10;
//Игра (gmnunum), касается ядра и графики MG_NOMENU =0; MG_DEBUG =1; MG_BUILD =2; MG_XFER =3; MG_DEPOT =4; MG_BOOM =5; MG_UPGRLAB =6; MG_MINE =7; MG_SAVELOAD =8; MG_UNITINFO =9; MG_UPGRMONEY =10; MG_REPORT =13;
##1. Создать для них константы. Всё равно в коде во многих местах стоят коменты. С константами нагляднее намного.
Согласен, реализовано, подправлено.
##2. Номера сделать полностью уникальными. Не только в пределах стейтов, а вообще уникальными. Константы частично решают возложенную проблему, но уникальные id ещё лучше. По этому id можно сразу стейт определить. Я бы предложил 3х значный id - первая цифра номер стейта (сдвинуть их на 1, чтобы со 100 начиналась нумерация, то есть стейт ST_THEMENU будет 1, стейт ST_THEGAME будет 2 и так далее), а последние две цифры - это id диалога. Например Options будет 100+1=101, Boom будет 205.
Номера уникальные в пределах соответствующей половины игры, уже было, сломано, восстановлено.
##3. В функции calcmnuinfo, draw_framemnu, sdimenuok, onmnubtn и возможно другие добавить все эти константы вместо цифт и коментов.
Согласен, реализовано, подправлено. Коменты всё равно не лишние.
##4. Разделить функции из пункта 3, а также draw_framemnu, draw_framedyn, draw_framebase и подобные, а также mg_msdown, onmnubtn, mg_keydown, mg_keyup и подобные по стейтам. Вызывать из оригиналов эти кусочки.
Согласен, буду ещё менять и дробить.
##5. Разделить обработчик кнопок ionmnubtn на обработчики по стейтам.
Этот обработчик эквивалентен событию onClick в Delphi, привязка идёт к кнопкам а не к стейтам, меню. Получается конечно месиво, которое можно разбить на части но не по стейтам.
И последнее - к изменениям таких масштабов лучше не приступать без предварительного согласования, а то есть вероятность взаимной аннигиляции проделанного труда. |
|
ответы :
-
Вопрос - Hruks, 10.06.2010 1:48:20
-
Кстати, не уверен - Artlav, 10.06.2010 8:17:04
-
На опечатку похоже. - Hruks, 10.06.2010 8:44:14
-
Поменял, вроде это от старого - Artlav, 10.06.2010 10:28:11
-
А зачем зум в дебаге прибил? - Hruks, 10.06.2010 2:00:18
-
В дебаге карту не двигать. - Artlav, 10.06.2010 8:18:42
-
Доработка меню DEBUG - Hruks, 10.06.2010 4:35:21
-
Не плохо. - Artlav, 10.06.2010 8:28:40
|
| |