aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorGeckoEidechse <40122905+GeckoEidechse@users.noreply.github.com>2023-09-17 01:41:27 +0200
committerGitHub <noreply@github.com>2023-09-17 01:41:27 +0200
commitb7823492e802456d44e4919940267081bf436f08 (patch)
tree818e06bafd5c01691028a7b2ca7265cc603e905d
parent8c0ce09205ecc28073468b55964f4433f16e3a65 (diff)
parentaf1df846a32f66e02ab1dbb1b7d12007e893204c (diff)
downloadNorthstarLauncher-b7823492e802456d44e4919940267081bf436f08.tar.gz
NorthstarLauncher-b7823492e802456d44e4919940267081bf436f08.zip
Merge branch 'main' into indentation
-rw-r--r--.github/workflows/release.yml1
-rw-r--r--BUILD.md10
-rw-r--r--Dockerfile26
-rw-r--r--NorthstarDLL/CMakeLists.txt1
-rw-r--r--NorthstarDLL/mods/modmanager.cpp39
-rw-r--r--NorthstarDLL/resource1.h16
-rw-r--r--NorthstarDLL/resources.rc79
-rw-r--r--NorthstarDLL/squirrel/squirrel.cpp2
8 files changed, 155 insertions, 19 deletions
diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml
index 6b762227..8aebf495 100644
--- a/.github/workflows/release.yml
+++ b/.github/workflows/release.yml
@@ -26,6 +26,7 @@ jobs:
shell: bash
run: |
sed -i 's/DEV/${{ env.NORTHSTAR_VERSION }}/g' NorthstarLauncher/resources.rc
+ sed -i 's/DEV/${{ env.NORTHSTAR_VERSION }}/g' NorthstarDLL/resources.rc
FILEVERSION=$(echo ${{ env.NORTHSTAR_VERSION }} | tr '.' ',' | sed -E 's/-rc[0-9]+//' | tr -d '[:alpha:]')
sed -i "s/0,0,0,1/${FILEVERSION}/g" NorthstarDLL/ns_version.h
- name: Build
diff --git a/BUILD.md b/BUILD.md
index b44817f2..06dc1fb9 100644
--- a/BUILD.md
+++ b/BUILD.md
@@ -3,6 +3,7 @@ The following steps will allow you to compile your own NorthstarLauncher executa
*This guide assumes you have already installed Northstar as shown in [this page](https://r2northstar.gitbook.io/r2northstar-wiki/installing-northstar/basic-setup)*
+## Windows
### Steps
1. **Install Git** from [this link](https://git-scm.com)
2. **Clone** the [R2Northstar/NorthstarLauncher](https://github.com/R2Northstar/NorthstarLauncher) repo with submodules using this command `git clone --recurse-submodules https://github.com/R2Northstar/NorthstarLauncher.git`
@@ -39,3 +40,12 @@ Developers who can work a command line may be interested in using [Visual Studio
- Run `cmake . -G "Ninja"` to generate build files.
- Run `cmake --build .` to build the project.
+
+## Linux
+### Steps
+1. Clone the GitHub repo
+2. Use `cd` to navigate to the cloned repo's directory
+3. Then, run the following commands in order:
+* `docker build --rm -t northstar-build-fedora .`
+* `docker run --rm -it -e CC=cl -e CXX=cl --mount type=bind,source="$(pwd)",destination=/build northstar-build-fedora cmake . -DCMAKE_BUILD_TYPE=Release -DCMAKE_SYSTEM_NAME=Windows -G "Ninja"`
+* `docker run --rm -it -e CC=cl -e CXX=cl --mount type=bind,source="$(pwd)",destination=/build northstar-build-fedora cmake --build .`
diff --git a/Dockerfile b/Dockerfile
new file mode 100644
index 00000000..261d649f
--- /dev/null
+++ b/Dockerfile
@@ -0,0 +1,26 @@
+FROM registry.fedoraproject.org/fedora-toolbox:38
+RUN dnf update -y && \
+ dnf install -y \
+ git \
+ wine \
+ wine-mono \
+ python3 \
+ msitools \
+ python3-simplejson \
+ python3-six \
+ cmake \
+ ninja-build \
+ make \
+ samba \
+ libunwind && \
+ dnf clean all && \
+ mkdir /opt/msvc/ /build
+
+RUN git config --global --add safe.directory /build
+RUN git clone https://github.com/mstorsjo/msvc-wine && \
+ ./msvc-wine/vsdownload.py --accept-license --dest /opt/msvc/ && \
+ ./msvc-wine/install.sh /opt/msvc/ && \
+ rm -rf ~/.wine ./msvc-wine/ && \
+ git config --global --add safe.directory '/build'
+ENV PATH="/opt/msvc/bin/x64:${PATH}"
+WORKDIR /build/
diff --git a/NorthstarDLL/CMakeLists.txt b/NorthstarDLL/CMakeLists.txt
index 126812e9..a7ca1028 100644
--- a/NorthstarDLL/CMakeLists.txt
+++ b/NorthstarDLL/CMakeLists.txt
@@ -4,6 +4,7 @@ find_package(minhook REQUIRED)
find_package(libcurl REQUIRED)
add_library(NorthstarDLL SHARED
+ "resources.rc"
"client/audio.cpp"
"client/audio.h"
"client/chatcommand.cpp"
diff --git a/NorthstarDLL/mods/modmanager.cpp b/NorthstarDLL/mods/modmanager.cpp
index 044ec6d4..1ca51ad7 100644
--- a/NorthstarDLL/mods/modmanager.cpp
+++ b/NorthstarDLL/mods/modmanager.cpp
@@ -612,32 +612,35 @@ void ModManager::LoadMods()
// get mod directories
std::filesystem::directory_iterator classicModsDir = fs::directory_iterator(GetModFolderPath());
std::filesystem::directory_iterator remoteModsDir = fs::directory_iterator(GetRemoteModFolderPath());
+ std::filesystem::directory_iterator thunderstoreModsDir = fs::directory_iterator(GetThunderstoreModFolderPath());
- for (std::filesystem::directory_iterator modIterator : {classicModsDir, remoteModsDir})
- for (fs::directory_entry dir : modIterator)
- if (fs::exists(dir.path() / "mod.json"))
- modDirs.push_back(dir.path());
+ for (fs::directory_entry dir : classicModsDir)
+ if (fs::exists(dir.path() / "mod.json"))
+ modDirs.push_back(dir.path());
- // Special case for Thunderstore mods dir
- std::filesystem::directory_iterator thunderstoreModsDir = fs::directory_iterator(GetThunderstoreModFolderPath());
+ // Special case for Thunderstore and remote mods directories
// Set up regex for `AUTHOR-MOD-VERSION` pattern
std::regex pattern(R"(.*\\([a-zA-Z0-9_]+)-([a-zA-Z0-9_]+)-(\d+\.\d+\.\d+))");
- for (fs::directory_entry dir : thunderstoreModsDir)
+
+ for (fs::directory_iterator dirIterator : {thunderstoreModsDir, remoteModsDir})
{
- fs::path modsDir = dir.path() / "mods"; // Check for mods folder in the Thunderstore mod
- // Use regex to match `AUTHOR-MOD-VERSION` pattern
- if (!std::regex_match(dir.path().string(), pattern))
- {
- spdlog::warn("The following directory did not match 'AUTHOR-MOD-VERSION': {}", dir.path().string());
- continue; // skip loading mod that doesn't match
- }
- if (fs::exists(modsDir) && fs::is_directory(modsDir))
+ for (fs::directory_entry dir : dirIterator)
{
- for (fs::directory_entry subDir : fs::directory_iterator(modsDir))
+ fs::path modsDir = dir.path() / "mods"; // Check for mods folder in the Thunderstore mod
+ // Use regex to match `AUTHOR-MOD-VERSION` pattern
+ if (!std::regex_match(dir.path().string(), pattern))
{
- if (fs::exists(subDir.path() / "mod.json"))
+ spdlog::warn("The following directory did not match 'AUTHOR-MOD-VERSION': {}", dir.path().string());
+ continue; // skip loading mod that doesn't match
+ }
+ if (fs::exists(modsDir) && fs::is_directory(modsDir))
+ {
+ for (fs::directory_entry subDir : fs::directory_iterator(modsDir))
{
- modDirs.push_back(subDir.path());
+ if (fs::exists(subDir.path() / "mod.json"))
+ {
+ modDirs.push_back(subDir.path());
+ }
}
}
}
diff --git a/NorthstarDLL/resource1.h b/NorthstarDLL/resource1.h
new file mode 100644
index 00000000..bb584502
--- /dev/null
+++ b/NorthstarDLL/resource1.h
@@ -0,0 +1,16 @@
+//{{NO_DEPENDENCIES}}
+// Microsoft Visual C++ generated include file.
+// Used by resources.rc
+//
+#define IDI_ICON1 101
+
+// Next default values for new objects
+//
+#ifdef APSTUDIO_INVOKED
+#ifndef APSTUDIO_READONLY_SYMBOLS
+#define _APS_NEXT_RESOURCE_VALUE 102
+#define _APS_NEXT_COMMAND_VALUE 40001
+#define _APS_NEXT_CONTROL_VALUE 1001
+#define _APS_NEXT_SYMED_VALUE 101
+#endif
+#endif
diff --git a/NorthstarDLL/resources.rc b/NorthstarDLL/resources.rc
new file mode 100644
index 00000000..7e996617
--- /dev/null
+++ b/NorthstarDLL/resources.rc
@@ -0,0 +1,79 @@
+// Microsoft Visual C++ generated resource script.
+//
+#include "resource1.h"
+#include "../NorthstarDLL/ns_version.h"
+
+#define APSTUDIO_READONLY_SYMBOLS
+/////////////////////////////////////////////////////////////////////////////
+//
+// Generated from the TEXTINCLUDE 2 resource.
+//
+#include "winres.h"
+
+/////////////////////////////////////////////////////////////////////////////
+#undef APSTUDIO_READONLY_SYMBOLS
+
+#ifdef APSTUDIO_INVOKED
+/////////////////////////////////////////////////////////////////////////////
+//
+// TEXTINCLUDE
+//
+
+1 TEXTINCLUDE
+BEGIN
+ "resource1.h\0"
+END
+
+2 TEXTINCLUDE
+BEGIN
+ "#include ""winres.h""\r\n"
+ "\0"
+END
+
+3 TEXTINCLUDE
+BEGIN
+ "\r\n"
+ "\0"
+END
+
+#endif // APSTUDIO_INVOKED
+
+/////////////////////////////////////////////////////////////////////////////
+//
+// Version
+//
+
+VS_VERSION_INFO VERSIONINFO
+ FILEVERSION NORTHSTAR_VERSION
+ PRODUCTVERSION NORTHSTAR_VERSION
+ FILEFLAGSMASK 0x3fL
+#ifdef _DEBUG
+ FILEFLAGS 0x1L
+#else
+ FILEFLAGS 0x0L
+#endif
+ FILEOS 0x40004L
+ FILETYPE 0x1L
+ FILESUBTYPE 0x0L
+BEGIN
+ BLOCK "StringFileInfo"
+ BEGIN
+ BLOCK "080904b0"
+ BEGIN
+ VALUE "CompanyName", "Northstar Developers"
+ VALUE "FileVersion", "DEV"
+ VALUE "InternalName", "Northstar.dll"
+ VALUE "LegalCopyright", "Copyright (C) 2021"
+ VALUE "OriginalFilename", "Northstar.dll"
+ VALUE "ProductVersion", "DEV"
+ END
+ END
+ BLOCK "VarFileInfo"
+ BEGIN
+ VALUE "Translation", 0x809, 1200
+ END
+END
+
+/////////////////////////////////////////////////////////////////////////////
+
+
diff --git a/NorthstarDLL/squirrel/squirrel.cpp b/NorthstarDLL/squirrel/squirrel.cpp
index 43dd0cad..0ee04508 100644
--- a/NorthstarDLL/squirrel/squirrel.cpp
+++ b/NorthstarDLL/squirrel/squirrel.cpp
@@ -893,7 +893,7 @@ ON_DLL_LOAD_RELIESON("server.dll", ServerSquirrel, ConCommand, (CModule module))
MAKEHOOK(module.Offset(0x26E20), &DestroyVMHook<ScriptContext::SERVER>, &DestroyVM<ScriptContext::SERVER>);
MAKEHOOK(module.Offset(0x799E0), &ScriptCompileErrorHook<ScriptContext::SERVER>, &SQCompileError<ScriptContext::SERVER>);
MAKEHOOK(module.Offset(0x1D5C0), &CallScriptInitCallbackHook<ScriptContext::SERVER>, &CallScriptInitCallback<ScriptContext::SERVER>);
- MAKEHOOK(module.Offset(0x17BE0), &CSquirrelVM_initHook<ScriptContext::SERVER>, &CSquirrelVM_init<ScriptContext::SERVER>);
+ MAKEHOOK(module.Offset(0x1B7E0), &CSquirrelVM_initHook<ScriptContext::SERVER>, &CSquirrelVM_init<ScriptContext::SERVER>);
// FCVAR_CHEAT and FCVAR_GAMEDLL_FOR_REMOTE_CLIENTS allows clients to execute this, but since it's unsafe we only allow it when cheats
// are enabled for script_client and script_ui, we don't use cheats, so clients can execute them on themselves all they want
RegisterConCommand(