예제 #1
0
int LS_VirtualDrive_FileOpen(LuaState* state, LuaStackObject* args)
{
	VirtualDrive* drive = VirtualDriveFromLua(state, args[1]);
	const char* fileName = NULL;
	int entryIndex = -1;
	if (args[2].IsString())
		fileName = args[2].GetString();
	else if (args[2].IsNumber())
		entryIndex = args[2].GetInteger();
	else
		luaL_error(*state, "Argument 2 is not a string or integer.");

	VirtualFileHandle* file = PushVirtualFileHandleObj(state);
	if (fileName)
	{
		if (!drive->FileOpen(fileName, *file))
			return 0;
	}
	else
	{
		if (!drive->FileOpenIndex((size_t)entryIndex, *file))
			return 0;
	}

	return 1;
}