summaryrefslogtreecommitdiffstats
path: root/wonkoclient
diff options
context:
space:
mode:
authorPetr Mrázek <peterix@gmail.com>2016-04-09 23:51:01 +0200
committerPetr Mrázek <peterix@gmail.com>2016-04-30 23:59:23 +0200
commitfcd4a482f759cd58ee319a51082d0146b7e426e2 (patch)
tree52bd8227d4889d7e02b3cce43c24d48fec825e60 /wonkoclient
parent00e5968bd28ab1df33b3a39dbac8cda99aa2a0d2 (diff)
downloadMultiMC-fcd4a482f759cd58ee319a51082d0146b7e426e2.tar
MultiMC-fcd4a482f759cd58ee319a51082d0146b7e426e2.tar.gz
MultiMC-fcd4a482f759cd58ee319a51082d0146b7e426e2.tar.lz
MultiMC-fcd4a482f759cd58ee319a51082d0146b7e426e2.tar.xz
MultiMC-fcd4a482f759cd58ee319a51082d0146b7e426e2.zip
NOISSUE tiny skeleton for a CLI wonko client
Diffstat (limited to 'wonkoclient')
-rw-r--r--wonkoclient/CMakeLists.txt10
-rw-r--r--wonkoclient/WonkoClient.cpp85
-rw-r--r--wonkoclient/WonkoClient.h36
-rw-r--r--wonkoclient/main.cpp29
4 files changed, 160 insertions, 0 deletions
diff --git a/wonkoclient/CMakeLists.txt b/wonkoclient/CMakeLists.txt
new file mode 100644
index 00000000..3638f69b
--- /dev/null
+++ b/wonkoclient/CMakeLists.txt
@@ -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)
diff --git a/wonkoclient/WonkoClient.cpp b/wonkoclient/WonkoClient.cpp
new file mode 100644
index 00000000..83efb285
--- /dev/null
+++ b/wonkoclient/WonkoClient.cpp
@@ -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"}, "");
+}
diff --git a/wonkoclient/WonkoClient.h b/wonkoclient/WonkoClient.h
new file mode 100644
index 00000000..e6b35805
--- /dev/null
+++ b/wonkoclient/WonkoClient.h
@@ -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);
+};
diff --git a/wonkoclient/main.cpp b/wonkoclient/main.cpp
new file mode 100644
index 00000000..1ee6d881
--- /dev/null
+++ b/wonkoclient/main.cpp
@@ -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();
+}