Введение в Lua

Интеграция в Наш Код


Сейчас Вы можете заметить, что у нас не произошло сильного внедрения lua в наше приложение. Но какой прок в использование всего этого, если Вы не можете заставить скрипт делать что-нибудь с вашим приложением. Подумайте об этом. Сейчас мы имеем скрипт-систему, но не имеем никакой реальной интеграции с вашим кодом. Я не могу использовать то, что я пока создал, чтобы фактически сделать что-нибудь, типа AI врагов ищущих игрока в игре. Что нам сейчас необходимо - это поддержка функций, так же как методов lua. Так что это наш следующий шаг.
Чтобы сделать это, мы создадим несколько простых функций, к которым обратимся через lua.

Создаём простую модель Менеджера для персонажей NPC. Нам достаточно только одного такого объекта, чтобы создавать, управлять и удалять персонажей NPC имеющихся в игре. Я хочу предупредить, менеджер, который я создал - только для образовательных целей. Это никоим образом не отражает реально используемые мной NPC менеджеры.

Так или иначе, вернемся к проекту. Я создал Binding01 как пример того, что Вы можете сделать, когда интегрируете lua в ваш существующий код. Вот краткий обзор того, что происходит.

Я создал единственный объект с именем NPCManager. Он, по существу, создает и управляет NPCObjects. Использует список STL, чтобы следить за ними (и снова, это всего лишь пример). Сейчас NPCObjects содержит только 'имена' объектов. Этот объект никогда напрямую не используется lua. Когда нам нужен доступ к одному из этих объектов, мы делаем это через его имя. Это грубо и не должно быть использовано в реальном приложении, но это утрированный пример.

Итак, наш  NPCManager создает и управляет NPCObjects. NPCManager создается один раз перед использованием и существует в пределах области видимости. Следующий вопрос, как мы предоставляем функциональные возможности NPCManager lua? Мы делаем это через склеивающую [glue] функцию. И что же из себя представляет эта функция? По существу, это функция связи между lua и нашим кодом. Итак, почему мы нуждаемся в этой связи? Это все нужно, потому что lua не имеет тех же типов переменных как C/C++.



Содержание раздела