So, I'm trying to implement Lua as a scripting language in C#. It's simple enough, really, if you use it as part of a console application. But I want to be able to create a game console within XNA. The problem is that Lua.DoString() seems to return a console line, rather than a string - which, as I said, is fine for console applications, but I want to add it to an output buffer as a string so I can display it in-game, rather than in a console window. I apologize if this is confusing - hopefully the code will clear it up.
using System;
using System.Collections.Generic;
using LuaInterface;
namespace LuaConsoleLibrary
{
public class LuaConsole
{
private Lua lua;
private bool isRunning = true;
private string input;
private List<string> outputBuffer;
public bool IsRunning
{
get { return isRunning; }
}
public LuaConsole()
{
this.lua = lua;
}
public void Run()
{
int i = 0;
while(isRunning)
{
outputBuffer.Add("> ");
input = Console.ReadLine();
outputBuffer.Add("");
try
{
lua.DoString(input);
}
catch(Exception e)
{
outputBuffer.Add(e.Message);
}
finally
{
outputBuffer.Add("");
}
}
}
}
}
Basically, I'm confused as to why lua.DoString(input);
should work as opposed to having to use Console.WriteLine(lua.DoString(input));
. I've even tried outputBuffer.Add(lua.DoString(input).ToString());
, which, being that ToString is valid there, should work in theory. Instead it performs lua.DoString
and then throws an exception - "Object reference not set to an instance of an object". Unless I'm mistaken, the object in question is Lua
, which makes lua
a valid object reference. Anyway, seeing as these two solutions don't work, I was wondering if anyone knows enough about LuaInterface to suggest an alternative way to get the same result. I essentially want something to the effect of outputBuffer.Add(lua.DoString(input));
. By the way, the Lua command I've been using to test this is print("test")
- maybe print
is somehow returning a console line instead of a string, but I can't think of another way to return a string from Lua.
I apologize if my problem is rambling or poorly explained - I tried to be as concise as possible, but it's kind of a niche issue and I don't know how else to explain it, really. Oh, and I did try Google, and I browsed all 65 or so LuaInterface questions on Stack Overflow, so I'm 95% sure I've done my due diligence before asking this question. LuaInterface is just not that well-known of a tool, I guess.