コード例 #1
0
ファイル: vdrive.cpp プロジェクト: WeyrSDev/gamecode3
int LS_VirtualDrive_ProcessFileList(LuaState* state, LuaStackObject* args)
{
	VirtualDrive* drive = VirtualDriveFromLua(state, args[1]);
	if (args[2].IsTable())
	{
        VirtualDrive::FileOrderInfoArray fileOrder;
        VirtualDrive::FileOrderInfo info;
		LuaObject tableObj = args[2];
        int index = 1;
		while (true)
		{
			LuaObject entryNameObj = tableObj[index++];
			if (!entryNameObj.IsString())
				break;
			info.entryName = entryNameObj.GetString();

			LuaObject srcPathObj = tableObj[index++];
			if (srcPathObj.IsNil())
				break;
			info.srcPath = srcPathObj.GetString();

			info.compressionMethod = 8;
			LuaObject compressionMethodObj = tableObj[index];
			if (compressionMethodObj.IsNumber())
			{
				info.compressionMethod = compressionMethodObj.GetInteger();
				index++;
			}

            fileOrder.Add(info);
		}
    	bool ret = drive->ProcessFileList(fileOrder);
		state->PushBoolean(ret);
		if (!ret)
		{
			state->PushString(drive->errorString);
			return 2;
		}
        return 1;
	}

    if (args[2].IsString())
    {
        state->PushBoolean(drive->ProcessFileList(args[2].GetString()) != 0);
	    return 1;
    }

    return 0;
}