77 lines
		
	
	
		
			1.7 KiB
		
	
	
	
		
			C++
		
	
	
	
	
	
			
		
		
	
	
			77 lines
		
	
	
		
			1.7 KiB
		
	
	
	
		
			C++
		
	
	
	
	
	
#pragma once
 | 
						|
 | 
						|
#include <QString>
 | 
						|
#include <QList>
 | 
						|
 | 
						|
#include "Version.h"
 | 
						|
 | 
						|
namespace ModPlatform {
 | 
						|
class ListModel;
 | 
						|
}
 | 
						|
 | 
						|
class ModAPI {
 | 
						|
   protected:
 | 
						|
    using CallerType = ModPlatform::ListModel;
 | 
						|
 | 
						|
   public:
 | 
						|
    virtual ~ModAPI() = default;
 | 
						|
 | 
						|
    enum ModLoaderType {
 | 
						|
        Unspecified = 0,
 | 
						|
        Forge = 1 << 0,
 | 
						|
        Cauldron = 1 << 1,
 | 
						|
        LiteLoader = 1 << 2,
 | 
						|
        Fabric = 1 << 3,
 | 
						|
        Quilt = 1 << 4
 | 
						|
    };
 | 
						|
    Q_DECLARE_FLAGS(ModLoaderTypes, ModLoaderType)
 | 
						|
 | 
						|
    struct SearchArgs {
 | 
						|
        int offset;
 | 
						|
        QString search;
 | 
						|
        QString sorting;
 | 
						|
        ModLoaderTypes loaders;
 | 
						|
        std::list<Version> versions;
 | 
						|
    };
 | 
						|
 | 
						|
    virtual void searchMods(CallerType* caller, SearchArgs&& args) const = 0;
 | 
						|
 | 
						|
 | 
						|
    struct VersionSearchArgs {
 | 
						|
        QString addonId;
 | 
						|
        std::list<Version> mcVersions;
 | 
						|
        ModLoaderTypes loaders;
 | 
						|
    };
 | 
						|
 | 
						|
    virtual void getVersions(CallerType* caller, VersionSearchArgs&& args) const = 0;
 | 
						|
 | 
						|
    static auto getModLoaderString(ModLoaderType type) -> const QString {
 | 
						|
        switch (type) {
 | 
						|
            case Unspecified:
 | 
						|
                break;
 | 
						|
            case Forge:
 | 
						|
                return "forge";
 | 
						|
            case Cauldron:
 | 
						|
                return "cauldron";
 | 
						|
            case LiteLoader:
 | 
						|
                return "liteloader";
 | 
						|
            case Fabric:
 | 
						|
                return "fabric";
 | 
						|
            case Quilt:
 | 
						|
                return "quilt";
 | 
						|
        }
 | 
						|
        return "";
 | 
						|
    }
 | 
						|
 | 
						|
   protected:
 | 
						|
    inline auto getGameVersionsString(std::list<Version> mcVersions) const -> QString
 | 
						|
    {
 | 
						|
        QString s;
 | 
						|
        for(auto& ver : mcVersions){
 | 
						|
            s += QString("\"%1\",").arg(ver.toString());
 | 
						|
        }
 | 
						|
        s.remove(s.length() - 1, 1); //remove last comma
 | 
						|
        return s;
 | 
						|
    }
 | 
						|
};
 |