NOISSUE tiny skeleton for a CLI wonko client
This commit is contained in:
		@@ -119,3 +119,4 @@ include(Coverity)
 | 
			
		||||
add_subdirectory(tests)
 | 
			
		||||
add_subdirectory(logic)
 | 
			
		||||
add_subdirectory(application)
 | 
			
		||||
add_subdirectory(wonkoclient)
 | 
			
		||||
 
 | 
			
		||||
							
								
								
									
										10
									
								
								wonkoclient/CMakeLists.txt
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										10
									
								
								wonkoclient/CMakeLists.txt
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,10 @@
 | 
			
		||||
project(wonkoclient)
 | 
			
		||||
 | 
			
		||||
SET( SRC_FILES
 | 
			
		||||
main.cpp
 | 
			
		||||
WonkoClient.cpp
 | 
			
		||||
WonkoClient.h
 | 
			
		||||
)
 | 
			
		||||
 | 
			
		||||
add_executable(WonkoClient ${SRC_FILES})
 | 
			
		||||
target_link_libraries(WonkoClient MultiMC_logic)
 | 
			
		||||
							
								
								
									
										85
									
								
								wonkoclient/WonkoClient.cpp
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										85
									
								
								wonkoclient/WonkoClient.cpp
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,85 @@
 | 
			
		||||
//
 | 
			
		||||
// Created by robotbrain on 3/27/16.
 | 
			
		||||
//
 | 
			
		||||
 | 
			
		||||
#include <minecraft/MinecraftVersionList.h>
 | 
			
		||||
#include <Env.h>
 | 
			
		||||
#include <minecraft/liteloader/LiteLoaderVersionList.h>
 | 
			
		||||
#include <minecraft/forge/ForgeVersionList.h>
 | 
			
		||||
#include <minecraft/legacy/LwjglVersionList.h>
 | 
			
		||||
#include <java/JavaInstallList.h>
 | 
			
		||||
#include <settings/INISettingsObject.h>
 | 
			
		||||
#include <resources/Resource.h>
 | 
			
		||||
#include "WonkoClient.h"
 | 
			
		||||
#include <icons/IconList.h>
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
WonkoClient &WonkoClient::getInstance() {
 | 
			
		||||
    static WonkoClient instance;
 | 
			
		||||
    return instance;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
void WonkoClient::registerLists() {
 | 
			
		||||
    ENV.initHttpMetaCache();
 | 
			
		||||
    auto mcList = std::make_shared<MinecraftVersionList>();
 | 
			
		||||
    ENV.registerVersionList("net.minecraft", mcList);
 | 
			
		||||
    runTask(mcList->getLoadTask());
 | 
			
		||||
    auto llList = std::make_shared<LiteLoaderVersionList>();
 | 
			
		||||
    ENV.registerVersionList("com.mumfrey.liteloader", llList);
 | 
			
		||||
    runTask(llList->getLoadTask());
 | 
			
		||||
    auto forgeList = std::make_shared<ForgeVersionList>();
 | 
			
		||||
    ENV.registerVersionList("net.minecraftforge", forgeList);
 | 
			
		||||
    runTask(forgeList->getLoadTask());
 | 
			
		||||
    auto lwjglList = std::make_shared<LWJGLVersionList>();
 | 
			
		||||
    ENV.registerVersionList("org.lwjgl.legacy", lwjglList);
 | 
			
		||||
    runTask(lwjglList->getLoadTask());
 | 
			
		||||
    auto javaList = std::make_shared<JavaInstallList>();
 | 
			
		||||
    ENV.registerVersionList("com.java", javaList);
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
WonkoClient::WonkoClient() {
 | 
			
		||||
    m_settings.reset(new INISettingsObject("multimc.cfg", this));
 | 
			
		||||
    m_instanceList.reset(new InstanceList(m_settings, ".", this));
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
void WonkoClient::runTask(Task *pTask) {
 | 
			
		||||
    if (pTask == nullptr)
 | 
			
		||||
        return;
 | 
			
		||||
    QEventLoop loop;
 | 
			
		||||
    QObject::connect(pTask, &Task::finished, &loop, &QEventLoop::quit);
 | 
			
		||||
    pTask->start();
 | 
			
		||||
    loop.exec();
 | 
			
		||||
    delete pTask;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
void WonkoClient::initGlobalSettings()
 | 
			
		||||
{
 | 
			
		||||
    m_settings->registerSetting("ShowConsole", true);
 | 
			
		||||
    m_settings->registerSetting("RaiseConsole", true);
 | 
			
		||||
    m_settings->registerSetting("AutoCloseConsole", true);
 | 
			
		||||
    m_settings->registerSetting("LogPrePostOutput", true);
 | 
			
		||||
    // Window Size
 | 
			
		||||
    m_settings->registerSetting({"LaunchMaximized", "MCWindowMaximize"}, false);
 | 
			
		||||
    m_settings->registerSetting({"MinecraftWinWidth", "MCWindowWidth"}, 854);
 | 
			
		||||
    m_settings->registerSetting({"MinecraftWinHeight", "MCWindowHeight"}, 480);
 | 
			
		||||
 | 
			
		||||
    // Memory
 | 
			
		||||
    m_settings->registerSetting({"MinMemAlloc", "MinMemoryAlloc"}, 512);
 | 
			
		||||
    m_settings->registerSetting({"MaxMemAlloc", "MaxMemoryAlloc"}, 1024);
 | 
			
		||||
    m_settings->registerSetting("PermGen", 128);
 | 
			
		||||
 | 
			
		||||
    // Java Settings
 | 
			
		||||
    m_settings->registerSetting("JavaPath", "");
 | 
			
		||||
    m_settings->registerSetting("JavaTimestamp", 0);
 | 
			
		||||
    m_settings->registerSetting("JavaVersion", "");
 | 
			
		||||
    m_settings->registerSetting("LastHostname", "");
 | 
			
		||||
    m_settings->registerSetting("JavaDetectionHack", "");
 | 
			
		||||
    m_settings->registerSetting("JvmArgs", "");
 | 
			
		||||
 | 
			
		||||
    // Wrapper command for launch
 | 
			
		||||
    m_settings->registerSetting("WrapperCommand", "");
 | 
			
		||||
 | 
			
		||||
    // Custom Commands
 | 
			
		||||
    m_settings->registerSetting({"PreLaunchCommand", "PreLaunchCmd"}, "");
 | 
			
		||||
    m_settings->registerSetting({"PostExitCommand", "PostExitCmd"}, "");
 | 
			
		||||
}
 | 
			
		||||
							
								
								
									
										36
									
								
								wonkoclient/WonkoClient.h
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										36
									
								
								wonkoclient/WonkoClient.h
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,36 @@
 | 
			
		||||
//
 | 
			
		||||
// Created by robotbrain on 3/27/16.
 | 
			
		||||
//
 | 
			
		||||
 | 
			
		||||
#pragma once
 | 
			
		||||
 | 
			
		||||
#include <memory>
 | 
			
		||||
#include <InstanceList.h>
 | 
			
		||||
 | 
			
		||||
#if defined(MMCC)
 | 
			
		||||
#undef MMCC
 | 
			
		||||
#endif
 | 
			
		||||
#define MMCC (WonkoClient::getInstance())
 | 
			
		||||
 | 
			
		||||
class WonkoClient : public QObject {
 | 
			
		||||
Q_OBJECT
 | 
			
		||||
 | 
			
		||||
private:
 | 
			
		||||
    WonkoClient();
 | 
			
		||||
 | 
			
		||||
public:
 | 
			
		||||
    static WonkoClient &getInstance();
 | 
			
		||||
 | 
			
		||||
    void registerLists();
 | 
			
		||||
    void initGlobalSettings();
 | 
			
		||||
 | 
			
		||||
    std::shared_ptr<InstanceList> instances() const {
 | 
			
		||||
        return m_instanceList;
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
private:
 | 
			
		||||
    std::shared_ptr<InstanceList> m_instanceList;
 | 
			
		||||
    std::shared_ptr<SettingsObject> m_settings;
 | 
			
		||||
 | 
			
		||||
    void runTask(Task *pTask);
 | 
			
		||||
};
 | 
			
		||||
							
								
								
									
										29
									
								
								wonkoclient/main.cpp
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										29
									
								
								wonkoclient/main.cpp
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,29 @@
 | 
			
		||||
//
 | 
			
		||||
// Created by robotbrain on 3/26/16.
 | 
			
		||||
//
 | 
			
		||||
 | 
			
		||||
#include "WonkoClient.h"
 | 
			
		||||
#include <QApplication>
 | 
			
		||||
#include <QDebug>
 | 
			
		||||
#include <QtWidgets/QInputDialog>
 | 
			
		||||
#include <QtGui/QDesktopServices>
 | 
			
		||||
#include <QDir>
 | 
			
		||||
 | 
			
		||||
int main(int argc, char *argv[])
 | 
			
		||||
{
 | 
			
		||||
	QApplication a(argc, argv);
 | 
			
		||||
	if (a.arguments().contains("-d"))
 | 
			
		||||
	{
 | 
			
		||||
		int i = a.arguments().lastIndexOf("-d") + 1;
 | 
			
		||||
		if (i < a.arguments().length())
 | 
			
		||||
		{
 | 
			
		||||
			QDir dir = QDir::current();
 | 
			
		||||
			dir.cd(a.arguments()[i]);
 | 
			
		||||
			QDir::setCurrent(dir.absolutePath());
 | 
			
		||||
			qDebug() << "Using " << dir.absolutePath();
 | 
			
		||||
		}
 | 
			
		||||
	}
 | 
			
		||||
	MMCC.initGlobalSettings();
 | 
			
		||||
	MMCC.registerLists();
 | 
			
		||||
	return a.exec();
 | 
			
		||||
}
 | 
			
		||||
		Reference in New Issue
	
	Block a user