TODO list
Как я уже говорил, генератор будет функционально разделен на две части: это статическая (пассивная) часть (дороги, знаки) и динамическая (активная: машины, велосипедисты пешеходы)
В данный момент прорабатывается пассивная часть и, соответственно все усилия направлены на неё.
Весь интерфейс генерится динамически из базы.
Сейчас мы имеем возможность добавлять / рисовать кривые / прямые, которые будут в дальнейшем позвоночником дороги.
Итак, при переходе в режим редактирования дороги у нас доступны соответствующие инструменты и шаблоны сегментов дорог.
Рассмотрим доступные инструменты (слева направо): рисование по точкам, название участка дороги, тип участка дороги.
1) рисование по точкам.
По дефолту с первого клика по рабочей области (Холст) добавляет последовательно точки кривой. Доступно три типа: прямая, безье и эрмит.
2)3) не работают.
А вот и лист:
1) сделать селектбокс с именами дорог (инструмент 2). По дефолту будут генерироваться шаблонные имена, к рипмеру Road 1, Road 2 и т.д. Селектбокс соответственно редактируемый, т.е. мы можем менять имя созданной нами дороги. При выборе в селектбоксе нужной дороги она соответственно подсвечивается на холсте.
2) сделать селектбокс с типом дороги (1 из 3х, см.выше). сейчас только эрмит. организовать переключение.
3) при активном инструменте 1 (точка) и зажатой клавише Shift + клик по холсту = начинать рисование новой дороги, т.е. новая точка уже не связана с предыдущей кривой (если мы ее нарисовали), а рисуется новая кривая. Получается чтобы начать новый участок дороги нужно поставить новую точку через Shift и продолжить рисование уже без него.
4) при активном инструменте 1 (точка) и зажатой клавише Ctrl + клик по существующей точке = убрать точку. Соответственно кривая перерисовывается после этого.
5) Проработать холст (поворот, масштабирование, сворачивание)
6) Продумать механизм переключение между режимами (от дороги к автомобиоям, к знакам и т.д.)
7) Продумать событийную модель, особенно это касается событий клавы, горячие клавиши в дальнейшем будут очень кстати.
Реализация первых 4 пунктов даст уже некоторое представление о том, куда дальше двигаться, а двигаться можно вот куда (последовательно):
- на основе скелета дороги рисовать полосы (вдоль кривой-позвоночника), соответственно для каждой кривой будет доступен набор свойств, таких как количество полос, ширина полосы (это уже скорее всего относится к глобальным свойствам проекта, лучше туда его и отправить), покрытие.
- объединение и расчленение дорог (перекрестки). это пожалуй самое сложное. существуют множество различных пересечений дорог, всё это придётся учитывать. Но всего конечно не учтешь, поэтому будут ограничения.
Заглядывать дальше пока опасаюсь. Время покажет
