Добавлен , опубликован

cJass

Содержание:

В поставку cJass, кроме парсера, входят также файлы стандартной библиотеки, найти которые вы можете в подпапке "lib" папки "AdicHelper". Эти файлы были созданы специально для облегчения написания кода, а также простой оптимизации некоторых его аспектов. Для использования их при разработке, вы просто подключаете нужные директивой include. Все стандартные подключаемые файлы имеют префикс "cj_" расширение ".j"

8.1 cj_types и cj_typesEx

  include "cj_types.j"
  include "cj_typesEx.j"
  include "cj_types_priv.j"
  include "cj_typesEx_priv.j"
Данные подключаемые файлы содержат макросы, приближающие работу с типами в JASS2 к таковой в C++. В первом из них вводятся псевдонимы для элементарных типов, соответствующие наименованиям этих типов в языке C:
  define {
      int   = integer
      bool  = boolean
      void  = nothing
      float = real
  }
Во втором файле определяются конструкции вида new <type> для всех основных типов, например:
  define <new timer> = CreateTimer()
Полный список этих конструкций вы можете посмотреть, открыв в текстовом редакторе файл "cj_typesEx.j".
Для использования при создании своих библиотек, созданы версии этих двух файлов, в которых все макросы определяются как приватные. Данные файлы имеют постфикс "_priv" в названии файла.

8.2 cj_order и cj_antibj_base

  include "cj_order.j"
  include "cj_antibj_base.j"
Данные подключаемые файлы предназначены для удобства и небольшой оптимизации карт во время сохранения.
Первый из них заменяет все вызовы функций вида OrderId("smart") на соответствующие им целочисленные значения приказов, а также вводит макросы вида order_smart для целочисленных значений всех существующих приказов.
Второй же выполняет легкую оптимизацию при использовании в карте функций и констант из файла "Blizzard.j". Используемые константы заменяются на их значения, а многие функции заменяются на свои аналоги из "common.j". Хочу заметить, что эта оптимизация работает даже на ГУИ-триггерах в вашей карте.

8.3 cj_print

  include "cj_print.j"
Включение данного файла позволяет вам использовать функции форматирования вывода согласно заданным шаблонам. Эти шаблоны определяются составленной по специальным правилам строкой (форматной строкой). Аргументы, передаваемые для форматирования, должны следовать после форматной строки в порядке, указазанном в ней.

Список функций

В описаниях функций строка формата записана как string format, а аргументы для форматирования показаны в виде ...
Функция sprintf форматирует принимаемую строку и возращает ее в качестве результата. После трансляции не является вызовом функции, а полностью заменяется на результирующую строку.
Функция printf выводит форматированную строку на экран локальному игроку. Для вывода используется DisplayTimedTextToPlayer.
Приведенные ниже функции делают то же самое, что их стандартные аналоги, но в качестве текстового аргумента принимают форматную строку и список аргументов для форматирования.
  void     sBJDebugMsg                 (string format, ...)
  void     sDisplayTextToPlayer        (player p, real x, real y, string format, ...)
  void     sDisplayTimedTextToPlayer   (player p, real x, real y, real time, string format, ...)
  void     sDisplayTimedTextFromPlayer (player p, real x, real y, real time, string format, ...)
  void     sSetTextTagText             (texttag t, string format, ..., real h)
  void     sQuestSetTitle              (quest q, string format, ...)
  void     sQuestSetDescription        (quest q, string format, ...)
  void     sQuestItemSetDescription    (questitem q, string format, ...)
  void     sMultiboardSetTitleText     (multiboard m, string format, ...)
  void     sMultiboardSetItemsValue    (multiboard m, string format, ...)
  void     sMultiboardSetItemValue     (multiboarditem m, string format, ...)
  void     sDialogSetMessage           (dialog d, string format, ...)
  button   sDialogAddButton            (dialog d, string format, ..., int hotkey)
  button   sDialogAddQuitButton        (dialog d, bool b, string format, ..., int hotkey)
  void     sLeaderboardAddItem         (leaderboard l, string format, ..., player p)

Строка формата

Форматная строка является шаблоном для подстановки передаваемых значений. Все символы строки форматирования, кроме управляющих последовательностей, копируются в итоговую строку без изменений. Стандартным признаком начала управляющей последовательности является символ % (процент), для вывода самого знака % используется его экранирование \%. В управляющую последовательность, кроме знака её начала, также входит название типа подставляемой переменной. По умолчанию определены следующие типы:
  %p     - имя игрока, принимает player
  %pc    - цветное имя игрока, принимает player
  %i     - десятичное число, принимает int
  %igold - десятичное число, золото, принимает int
  %ilumb - десятичное число, древесина, принимает int
  %ip    - имя игрока, принимает int (номер игрока)
  %ipc   - цветное имя игрока, принимает int (номер игрока)
  %b     - bool, выводит "true" или "false"
  %r     - вещественное число, без форматирования, принимает real
  %s     - строка, в случае передачи immed значение "склеится" с источником
  %v     - var, прямая подстановка аргумента в строку
  %h     - десятичное число, ид дескриптора, принимает соответсвенно дескриптор (handle)
Кроме того, пользователь может легко добавить свою разметку типов. Для этого требуется переназначить макрос cj_sprintf_argTyp_User, отвечающий за пользовательскую разметку.
  // сначала переопределяем макрос
  setdef cj_sprintf_argTyp_User = /*разметка*/
  
  // здесь мы форматируем строки, используя нашу разметку
  
  // затем откатываем нашу разметку, чтобы другие библиотеки могли назначить ее заново
  setdef cj_sprintf_argTyp_User =
Разберем синтаксис определения обработчиков на примере %i:
Внимание! В секции нестандартного кода (в дереве триггеров имеет иконку карты) символ % ведет себя странным образом при сохранении карты. Это — ошибка редактора мира, но она до сих пор не исправлена. Чтобы использовать в секции нестандартного кода функции форматирования, приведенные в данном разделе, в качестве символа начала управляющей последовательности стоит использовать ^

`
ОЖИДАНИЕ РЕКЛАМЫ...