aboutsummaryrefslogtreecommitdiff
path: root/libs/game_gamebryo/src/creation
diff options
context:
space:
mode:
Diffstat (limited to 'libs/game_gamebryo/src/creation')
-rw-r--r--libs/game_gamebryo/src/creation/CMakeLists.txt10
-rw-r--r--libs/game_gamebryo/src/creation/creationgameplugins.cpp183
-rw-r--r--libs/game_gamebryo/src/creation/creationgameplugins.h22
-rw-r--r--libs/game_gamebryo/src/creation/game_creation_en.ts12
4 files changed, 0 insertions, 227 deletions
diff --git a/libs/game_gamebryo/src/creation/CMakeLists.txt b/libs/game_gamebryo/src/creation/CMakeLists.txt
deleted file mode 100644
index f2dce97..0000000
--- a/libs/game_gamebryo/src/creation/CMakeLists.txt
+++ /dev/null
@@ -1,10 +0,0 @@
-cmake_minimum_required(VERSION 3.16)
-
-add_library(game_creation STATIC)
-mo2_configure_library(game_creation
- WARNINGS OFF
- TRANSLATIONS ON
- PUBLIC_DEPENDS uibase
- PRIVATE_DEPENDS lz4)
-target_link_libraries(game_creation PUBLIC game_gamebryo)
-mo2_install_target(game_creation)
diff --git a/libs/game_gamebryo/src/creation/creationgameplugins.cpp b/libs/game_gamebryo/src/creation/creationgameplugins.cpp
deleted file mode 100644
index f5cef62..0000000
--- a/libs/game_gamebryo/src/creation/creationgameplugins.cpp
+++ /dev/null
@@ -1,183 +0,0 @@
-#include "creationgameplugins.h"
-#include <ipluginlist.h>
-#include <report.h>
-#include <safewritefile.h>
-#include <scopeguard.h>
-
-#include <QDir>
-#include <QSet>
-#include <QStringEncoder>
-#include <QStringList>
-
-using MOBase::IOrganizer;
-using MOBase::IPluginGame;
-using MOBase::IPluginList;
-using MOBase::reportError;
-using MOBase::SafeWriteFile;
-
-CreationGamePlugins::CreationGamePlugins(IOrganizer* organizer)
- : GamebryoGamePlugins(organizer)
-{}
-
-QStringList CreationGamePlugins::getLoadOrder()
-{
- QString loadOrderPath = organizer()->profile()->absolutePath() + "/loadorder.txt";
- QString pluginsPath = organizer()->profile()->absolutePath() + "/plugins.txt";
-
- bool loadOrderIsNew = !m_LastRead.isValid() || !QFileInfo(loadOrderPath).exists() ||
- QFileInfo(loadOrderPath).lastModified() > m_LastRead;
- bool pluginsIsNew =
- !m_LastRead.isValid() || QFileInfo(pluginsPath).lastModified() > m_LastRead;
-
- if (loadOrderIsNew || !pluginsIsNew) {
- return readLoadOrderList(m_Organizer->pluginList(), loadOrderPath);
- } else {
- return readPluginList(m_Organizer->pluginList());
- }
-}
-
-void CreationGamePlugins::writePluginList(const IPluginList* pluginList,
- const QString& filePath)
-{
- SafeWriteFile file(filePath);
-
- QStringEncoder encoder(QStringConverter::Encoding::System);
-
- file->resize(0);
-
- file->write(
- encoder.encode("# This file was automatically generated by Mod Organizer.\r\n"));
-
- bool invalidFileNames = false;
- int writtenCount = 0;
-
- QStringList plugins = pluginList->pluginNames();
- std::sort(plugins.begin(), plugins.end(),
- [pluginList](const QString& lhs, const QString& rhs) {
- return pluginList->priority(lhs) < pluginList->priority(rhs);
- });
-
- QStringList PrimaryPlugins = organizer()->managedGame()->primaryPlugins();
- QStringList DLCPlugins = organizer()->managedGame()->DLCPlugins();
- QSet<QString> ManagedMods =
- QSet<QString>(PrimaryPlugins.begin(), PrimaryPlugins.end());
- QSet<QString> DLCSet = QSet<QString>(DLCPlugins.begin(), DLCPlugins.end());
- ManagedMods.subtract(DLCSet);
- PrimaryPlugins.append(QList<QString>(ManagedMods.begin(), ManagedMods.end()));
-
- // TODO: do not write plugins in OFFICIAL_FILES container
- for (const QString& pluginName : plugins) {
- if (!PrimaryPlugins.contains(pluginName, Qt::CaseInsensitive)) {
- if (pluginList->state(pluginName) == IPluginList::STATE_ACTIVE) {
- auto result = encoder.encode(pluginName);
- if (encoder.hasError()) {
- invalidFileNames = true;
- qCritical("invalid plugin name %s", qUtf8Printable(pluginName));
- } else {
- file->write("*");
- file->write(result);
- }
- file->write("\r\n");
- ++writtenCount;
- } else {
- auto result = encoder.encode(pluginName);
- if (encoder.hasError()) {
- invalidFileNames = true;
- qCritical("invalid plugin name %s", qUtf8Printable(pluginName));
- } else {
- file->write(result);
- }
- file->write("\r\n");
- ++writtenCount;
- }
- }
- }
-
- if (invalidFileNames) {
- reportError(QObject::tr("Some of your plugins have invalid names! These "
- "plugins can not be loaded by the game. Please see "
- "mo_interface.log for a list of affected plugins "
- "and rename them."));
- }
-
- file->commit();
-}
-
-QStringList CreationGamePlugins::readPluginList(MOBase::IPluginList* pluginList)
-{
- const auto plugins = pluginList->pluginNames();
- const auto primaryPlugins = organizer()->managedGame()->primaryPlugins();
- QStringList loadOrder(primaryPlugins);
-
- for (const QString& pluginName : loadOrder) {
- if (pluginList->state(pluginName) != IPluginList::STATE_MISSING) {
- pluginList->setState(pluginName, IPluginList::STATE_ACTIVE);
- }
- }
-
- QString filePath = organizer()->profile()->absolutePath() + "/plugins.txt";
- QFile file(filePath);
- if (!file.open(QIODevice::ReadOnly)) {
- qWarning("%s not found", qUtf8Printable(filePath));
- return loadOrder;
- }
- ON_BLOCK_EXIT([&]() {
- file.close();
- });
-
- if (file.size() == 0) {
- // MO stores at least a header in the file. if it's completely empty the
- // file is broken
- qWarning("%s empty", qUtf8Printable(filePath));
- return loadOrder;
- }
-
- QStringList pluginsFound;
- while (!file.atEnd()) {
- QByteArray line = file.readLine();
- QString pluginName;
- if ((line.size() > 0) && (line.at(0) != '#')) {
- pluginName = QStringEncoder(QStringConverter::Encoding::System)
- .encode(line.trimmed().constData());
- }
- if (!primaryPlugins.contains(pluginName, Qt::CaseInsensitive)) {
- if (pluginName.startsWith('*')) {
- pluginName.remove(0, 1);
- if (pluginName.size() > 0) {
- pluginList->setState(pluginName, IPluginList::STATE_ACTIVE);
- pluginsFound.append(pluginName);
- if (!loadOrder.contains(pluginName, Qt::CaseInsensitive)) {
- loadOrder.append(pluginName);
- }
- }
- } else {
- if (pluginName.size() > 0) {
- pluginList->setState(pluginName, IPluginList::STATE_INACTIVE);
- pluginsFound.append(pluginName);
- if (!loadOrder.contains(pluginName, Qt::CaseInsensitive)) {
- loadOrder.append(pluginName);
- }
- }
- }
- } else {
- pluginName.remove(0, 1);
- pluginsFound.append(pluginName);
- }
- }
-
- file.close();
-
- // set all plugins not found inactive
- for (const auto& pluginName : plugins) {
- if (!pluginsFound.contains(pluginName, Qt::CaseInsensitive)) {
- pluginList->setState(pluginName, IPluginList::STATE_INACTIVE);
- }
- }
-
- return loadOrder;
-}
-
-bool CreationGamePlugins::lightPluginsAreSupported()
-{
- return true;
-}
diff --git a/libs/game_gamebryo/src/creation/creationgameplugins.h b/libs/game_gamebryo/src/creation/creationgameplugins.h
deleted file mode 100644
index f7afd80..0000000
--- a/libs/game_gamebryo/src/creation/creationgameplugins.h
+++ /dev/null
@@ -1,22 +0,0 @@
-#ifndef CREATIONGAMEPLUGINS_H
-#define CREATIONGAMEPLUGINS_H
-
-#include <gamebryogameplugins.h>
-#include <imoinfo.h>
-#include <iplugingame.h>
-#include <map>
-
-class CreationGamePlugins : public GamebryoGamePlugins
-{
-public:
- CreationGamePlugins(MOBase::IOrganizer* organizer);
-
-protected:
- virtual void writePluginList(const MOBase::IPluginList* pluginList,
- const QString& filePath) override;
- virtual QStringList readPluginList(MOBase::IPluginList* pluginList) override;
- virtual QStringList getLoadOrder() override;
- virtual bool lightPluginsAreSupported() override;
-};
-
-#endif // CREATIONGAMEPLUGINS_H
diff --git a/libs/game_gamebryo/src/creation/game_creation_en.ts b/libs/game_gamebryo/src/creation/game_creation_en.ts
deleted file mode 100644
index f217448..0000000
--- a/libs/game_gamebryo/src/creation/game_creation_en.ts
+++ /dev/null
@@ -1,12 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<!DOCTYPE TS>
-<TS version="2.1" language="en_US">
-<context>
- <name>QObject</name>
- <message>
- <location filename="creationgameplugins.cpp" line="97"/>
- <source>Some of your plugins have invalid names! These plugins can not be loaded by the game. Please see mo_interface.log for a list of affected plugins and rename them.</source>
- <translation type="unfinished"></translation>
- </message>
-</context>
-</TS>