LINUX.ORG.RU

Lua in C# program


0

1

Хочу добавить в программу на сишарпе, возможность скриптования на луа. Интеграция вроде тривиальная, например:

using System;
using LuaInterface;

class LuaFunctions
{
    void Message(string text)
    {
        Console.WriteLine(text);
        Console.Read();
    }
}

class TestLua
{
    static void Main(string[] args)
    {
        try
        {
            Lua lua = new Lua();
            lua["LUA"] = new LuaFunctions();
            lua.DoString("LUA:Message('Hello world.')");
        }
        catch (LuaException ex)
        {
            Console.WriteLine(ex.Message);
            Console.Read();
            System.Environment.Exit(1);
        }
    }
}
Но что, если нужно зарегистрировать в луа абстрактный сишарповый класс/методы а их реализацию писать в луа? Не понимаю как подобное реализовать...



Последнее исправление: Bacteriophage (всего исправлений: 1)

реализацию методов писать на другом ЯП? Вот это фокусы

stevejobs ★★★★☆
()

Сделай класс целиком на Lua, а на шарпе объяви класс, который будет рефить к-л его инстанс и в методах вызывать его одноименные поля. У вас там похоже интроспекция, можешь генерик враппер написать, если осилишь. Только нафига этот изврат — непонятно.

arturpub ★★
()
Ответ на: комментарий от arturpub

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

bvn13 ★★★★★
()
Ответ на: комментарий от bvn13

Так тс'у же конкретно надо сделать шарп-прокси для луа-класса. По ссылке этого нету, к сожалению.

зы: там еще глубже и от двоеточий «избавляются», дети какие-то.

arturpub ★★
()
Ответ на: комментарий от arturpub

нет, всё куда более запущено: ТС-у нужен луа-прокси для шарп-класса. Да еще и до абстрактного шарп-класса, чтобы его можно было доопределить в луа.

stevejobs ★★★★☆
()

Шарп в Linux? Не пользуйся костылями.

peregrine ★★★★★
()
Ответ на: комментарий от Bacteriophage

Допустим необходимо написать такой класс но на луа:

public class LuaObj : ProgramObj {
protected override void CreateObj() {
//create code
}
}

Bacteriophage
() автор топика
Ответ на: комментарий от Bacteriophage

чтобы писать скрипты

C#:

Class Manager()
public static GameLocalPlayer LocalPlayer { get; set; }

LuaInterace lua = new LuaInterface;
lua["variablename"]=Manager.LocalPlayer;  

LUA:

variablename.Health;
variablename:AttackTarget(target);

stevejobs ★★★★☆
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.