# E m u Z Win v2.3 "Map Builder" add-on

(С) by Vladimir Kladov, 2003

Начиная с версии 2.3 в EmuZWin появился построитель карт. Прежде всего эта новая фунция позиционируется как средство для квестовых игр (Knight Lore, например), позволяющее построить визуальное отражение пройденного пути, облегчить блуждание по лабиринтам, помочь в ориентировке на местности. Данное описание предназначено для того, чтобы прочитав его, возможно было как можно быстрее начать применять новую функцию эмулятора в деле. Хотя очевидные вещи (такие, как вызов построителя карт) я стремлюсь опускать и здесь.

Примечание: под щелчком мыши без уточнения того, какой клавишей мыши выполняется щелчок, здесь понимается щелчок ЛЕВОЙ клавишей мыши.

Hand Mode - включает или выключает ручной режим. По умолчанию режим ручного построения включен при первом запуске эмуляторе, чтобы предотвратить излишнее потребление ресурсов эмулятором. Автоматический режим достаточно хорошо отработан, в плане обнаружения факта переключения в другую комнату (хотя и здесь возможны ошибки: при сильном изменении ландшафта в пределах комнаты, появлении надписей, сильном движении внутренних частей комнаты - автомат может решать, что произошел переход в другую комнату, и соответственно, пытаться добавить ее в карту и пытаться найти для нее место). Для определения возможного местоположения новой комнаты автомат пытается определять динамические характеристики изображения, и во многих случаях оказывается прав.

Map style (Undeterminated / Flat / Isometric) - задает режим построения карты. Для автомата очень полезно указать, изометрия или плоская карта имеет место. "Неопределенный" (Undeterminated) режим, включенный по умолчанию, позволяет размещать комнаты достаточно произвольно друг относительно друга. При выборе "плоского" или "изометрического" режимов используются соответствующие правила размещения комнат в атоматическом режиме, и более строго ограничивается ручное перемещение комнат.

Mask frames - позволяет создать маску комнаты. Маскированная часть не изображается и не участвует в расчетах при определении факта смены комнаты и частично - при определении возможного расположения комнат - в автоматическом режиме.

Fix Direction - позволяет оперативно изменить направление комнаты относительно предыдущей. Полезно при ошибке автоматического определения. Если клавиша Shift не нажималась, комната перемещается вместе со всеми комнатами, которые последовали вслед за перемещаемой (т.е. их относительное расположение не изменится). Если же фиксация выполнялась при нажатой клавише Shift, то изменяется местоположение только самой фиксированной комнаты.

Search Room - находит и делает "текущей" другую комнату, наиболее похожую на ту, в которой сейчас находится игра. Полезно для начальной установки текущей комнаты в начале или после загрузки игры в уже построенной или загруженной карте. Так же может применяться при неправильном определении или создании комнаты в автоматическом режиме, и при телепортации в игре. Данная операция автоматически выполняется при удалении текущей комнаты (так же полезно для фиксации неправильного создания комнаты в автоматическом режиме, или когда на самом деле произошла телепортация).

Add Room - добавляет текущую комнату на карту. В ручном режиме это единственная возможность добавить комнату в карту. Вообще, автоматический режим во многих случаях определяет переход в другую комнату достаточно надежно, и в автоматическом режиме данная кнопка обычно не требуется.

Delete Room - удаляет выделенную комнату с карты. Если комната является (считается) текущей, построитель автоматически выполняет операцию "поиск" наиболее похожей комнаты, чтобы сделать ее текущей.

Undo - отменяет одну последнюю операцию, в том числе: очистку карты, удаление комнаты или пользовательской пометки, перемещение комнаты или пользовательской пометки, привязка стрелки к другой комнате, ручное добавление комнаты. В стеке откатов хранится не более 50 операций, при этом последние несколько перемещений одного и того же объекта или той же группы объектов сливаются в одно.

Clear - очистка всей карты.

Open - загрузка карты из файла (расширение EZM).

Save - сохранение карты в формате EZM. При сохранении состояния игры в файле EZX карта так же сохраняется в нем, соответственно, при загрузке EZX-файла она возобновляется автоматически.

Zoom In / Zoom Out - увеличение/уменьшение масштаба (так же доступно поворотом колеса мыши на/от себя, в том числе и на главном окне эмулятора - при открытом окне карты).

Show Room Numbers - включает/выключает показ номеров комнат прямо в карте (по умолчанию включено).

Back / Forward - позволяет двигаться по комнатам в карте в порядке номеров назад/вперед.

Tools - включает/выключает дополнительную инструментальную линейку, которая позволяет добавлять свои пометки к комнатам в виде текстовых надписей, изображений или линий со стрелками.

Show markers - позволяет скрыть/показать маркеры.

Text - добавляет к выделенной комнате текстовой маркер, и позволяет ввести текст. По окончании набора текста (нажатие Enter, щелчок мыши) такой маркер становится простым графическим прямоугольным маркером.

Grab Rectangle - добавляет к выделенной комнате прямоугольник и позволяет "сграбить" прямоугольный регион из текущего экрана в окне эмулятора. Для чего следует выбрать мышью верхний левый угол прямоугольника в окне эмулятора, щелкнуть левой клавишей мыши, выбрать размер "сграбленного" прямоугольника, перемещая мышь, и выполнить повторный щелчок.

Grab Circle - аналогично предыдущему, но грабится круглая область. При перемещении мыши до первого щелчка следует выбрать центр будущей окружности, до второго щелчка - выбирается радиус.

Line - рисует линию без конечных стрелок. Для привязки второго конца линии к нужной (другой) комнате следует щелкнуть на ней (или в ее окрестности) ПРАВОЙ клавишей мыши. Толщина и цвет линии могут быть заданы или изменены, см. ниже.

Arrow Forward - то же, что и Line, но со стрелкой на втором конце.

Arrow Back, Arrow Both - аналогично Line и Arrow Forward, меняется только состав стрелок.

Delete Mark - удаляет выделенный пользовательский маркер.

Line Width - меняет (или устанавливает) толщину линии для четырех вышеозначенных команд.

Color - меняет (или устанавливает) цвет линии, или заднего фона текста (цвет шрифта выбирается противоположный).

Load Mark From Bitmap - замещает изображение маркера (размер так же автоматически меняется по размеру загруженной картинки).

Save Mark As Bitmap - сохраняет изображение маркера в графическом файле.

Copy To Clipboard - копирует графическое изображение маркера в буфер обмена.

Paste From Clipboard - вставляет графическое изображение маркера из буфера обмена, соответственно изменяет размер маркера. Если маркер уже определен как эллиптический, он обрезается соответственно.

Ручное редактирование карты.

Выделен в каждый момент времени может быть только один графический объект - комната или пользователький маркер. Выделенная комната на карте по возможности центрируется. Выделенная комната или графический/текстовой маркер отмечается анимированной рамкой ("муравьи"), выделенная линия мигает. Чтобы вернуть выделение текущей комнате, достаточно щелкнуть на свободном поле карты (на некотором удалении от линий). Чтобы выделить комнату или графический маркер, надо по нему щелкнуть. При этом, если на одном месте (пересекаются или геометрически совпадают) две комнаты или пользовательских объектов, выбирается тот, центр которого ближе к точке щелчка, а при полном совпадении центров - тот, который скрыт (что позволяет щелчками перебирать расположенные на одной позиции объекты).

Для выделения линейного маркера следует щелкнуть как можно ближе к середине линии, или на небольшом расстоянии от линии на поле, свободном от комнат и маркеров.

Комнату или маркер можно передвинуть на карте перетаскиванием мыши. При перемещении комнат следует учитывать, что в изометрическом и плоском режиме, если они выбраны, позиция комнаты не может быть произвольной, и выравнивается на некоторую (невидимую) сетку. Важно: если клавиша Shift не нажата, то при перемещении комнаты вместе с ней перемещаются все комнаты, следующие из этой и созданные после нее. С нажатой клавишей Shift комната перемещается сама по себе (вместе с маркерами, привязанными к ней).

Другой способ перемещения комнаты - это использование команд фиксации (корректировки) направления. Среди них есть команда "фиксации на прежнее место". Ее следует использовать при ошибочном решении автопостроителя о необходимости создания новой комнаты.

При перемещении прямоугольного или круглого маркера он остается привязанным к своей комнате, к которой он был приписан при создании маркера. И далее при перемещении родительской комнаты, не изменяет своей позиции относительно нее.

Перемещение выделенной линии так же перемещает начальную позицию привязки линии (второй конец линии перемещается только если оба конца привязаны к одной комнате). Для привязки второго конца линии к другой комнате следует выполнять щелчок ПРАВОЙ клавишей мыши на целевой комнате. Если требуется привязать второй конец линии к комнате, которая не видна сейчас на карте, следует уменьшить масштаб карты (и возможно, развернуть карту на весь экран).

Что еще планируется сделать:

- Изменение размеров пользовательских графических маркеров
- Сохранение карты или ее части в виде графического файла (формат bmp)
- Карта с этажами, отдельный стиль "изометрия с этажами"
- Учет скроллинга (комнат), и перекрытия комнат, учет всплывающих надписей (как в Dizzy, Винни-Пух), лучшее распознавание направления выхода (при выходе в изометрии через двери на втором ярусе в комнате)

http://bonanzas.rinet.ru

mailto: bonanzas@online.sinor.ru