| Author |
Message |
|
|
Ок, спасибо, вроде стало понятнее, буду ковырять
|
 |
|
|
Спасибо! Очень наглядно, но можно ли увидеть побольше, например хочется увидеть описание класса CAstro?
Не совсем понятно как будет выполнено присваивание типов на этапе выполнения, если например есть CDate и CInt и CString (так?), как это всё потом вместе уживется?
Вы простите за глупые вопросы, просто пытаюсь понять как можно больше прежде чем нагородить в программе непонятно что
|
 |
|
|
Переменые глобальны и вызов функции для обновления
Это как я описал в первом посте, так? Но разве это можно назвать "удобным" и "гибким" решением?
Я не говорил что это проблема, мне просто интересно как это делают другие?
Вот с метатаблицей это интересное решение, но опять же создает некие дополнительные условия для луа-программиста, а это нежелательно.
|
 |
|
|
Вообще, мысль интересная Но это вариант с выгрузкой данных в луа (установкой значений на старте, и получением при завершении)
Опять же, тогда вопрос встает - как лучше обеспечить доступ к таким переменным из c++?
Смысл такой, есть некий набор "переменных", к которым будут иметь доступ скрипты, а эти переменные потом будут обрабатываться c++ кодом, например - для "визуализации" этих параметров (как пример, - параметры персонажа игры - отображаются где-то в каком-то виде )
Опять же, надо ведь продумать как из луа "указать" что именно этот параметр - отображать, причем отображать так-то, что этот - текст, а этот - число ну или наподобии
Пришло в голову такое решение:
луа:
x = value("x", 5);
где value это с-функция, которая создает переменную x в списке параметров (которые потом и инициализирует её 5ой. Но потом и работать с этими параметрами придется функциями типа set_as_visible("x", "int")
В общем, просто не уверен что всё это будет гибко и удобно
|
 |
|
|
Вгрызаясь в доки про луа, не смог понять как же сделать сабж
Можно конечно перед запуском скрипта обновлять значения в луа, а после луа обновлять их оттуда, но решение какое-то кривоватое... или так тоже кто-то использует? Хочется получить "раасширяемое" решение.
Например, как я понял, c-closure - делается для того, чтобы, например после изменения переменной(ых) в скрипте, вызвать одну c-функцию и она будет иметь доступ к свои переменным, типа этого (lua):
x = 1
y = 2
update_xy() // c-функция читает x и y и обновляет состояние программы
но это не совсем то что мне нужно
Насколько я понимаю, для того чтобы мне сделать что мне нужно, необходимо в луа запихнуть свой класс, у которого как-то перегрузить оператор присваивания (=), тогда возможно получится что-то навроде этого:
x = cppValue("x"); // здесь c-конструктор сопоствляет Lua-Cpp значения
x = 10; // если возможно, вызывается "set"-метод класса
y = cppValue("y");
y = 15;
Такое было бы наверное самым оптимальным решением.
Кто как делает?
|
 |
|
|
|
|