summaryrefslogtreecommitdiffhomepage
path: root/Starshatter
diff options
context:
space:
mode:
authorAki <please@ignore.pl>2022-04-01 21:42:56 +0200
committerAki <please@ignore.pl>2022-04-01 22:21:44 +0200
commit3f320f31fc4f9e90302bd62208a52bfd8d3fd7c2 (patch)
tree234fe74a29b15e37b8dbd40d1d58da9286c6b851 /Starshatter
parent3c487c5cd69c53d6fea948643c0a76df03516605 (diff)
downloadstarshatter-3f320f31fc4f9e90302bd62208a52bfd8d3fd7c2.zip
starshatter-3f320f31fc4f9e90302bd62208a52bfd8d3fd7c2.tar.gz
starshatter-3f320f31fc4f9e90302bd62208a52bfd8d3fd7c2.tar.bz2
Separated Main to own module
Intent is to separate headless server and game and make a dedicated executable for each. While this can be done without any directory changes, this is intended to cause as many compilation and linking errors as possible in order to clean them up and refactor general structure of the whole project.
Diffstat (limited to 'Starshatter')
-rw-r--r--Starshatter/CMakeLists.txt23
-rw-r--r--Starshatter/Main.cpp150
-rw-r--r--Starshatter/Stars.icobin0 -> 2998 bytes
-rw-r--r--Starshatter/Starshatter.rc.conf39
-rw-r--r--Starshatter/resource.h6
5 files changed, 218 insertions, 0 deletions
diff --git a/Starshatter/CMakeLists.txt b/Starshatter/CMakeLists.txt
new file mode 100644
index 0000000..9623f9a
--- /dev/null
+++ b/Starshatter/CMakeLists.txt
@@ -0,0 +1,23 @@
+project(Starshatter)
+include(GitDescribe)
+include(GitToResource)
+add_executable(
+ Starshatter WIN32
+ Main.cpp
+ )
+target_include_directories(
+ Starshatter
+ PRIVATE ${CMAKE_CURRENT_SOURCE_DIR}
+ )
+target_link_libraries(
+ Starshatter
+ PRIVATE StarsEx
+ )
+git_describe(VERSION)
+git_to_resource(RC_VERSION ${VERSION})
+configure_file(Starshatter.rc.conf ${CMAKE_CURRENT_BINARY_DIR}/Starshatter.rc @ONLY)
+target_sources(
+ Starshatter
+ PUBLIC ${CMAKE_CURRENT_BINARY_DIR}/Starshatter.rc
+ )
+install(TARGETS Starshatter RUNTIME DESTINATION ${CMAKE_INSTALL_PREFIX})
diff --git a/Starshatter/Main.cpp b/Starshatter/Main.cpp
new file mode 100644
index 0000000..a71476d
--- /dev/null
+++ b/Starshatter/Main.cpp
@@ -0,0 +1,150 @@
+/* Starshatter: The Open Source Project
+ Copyright (c) 2021-2022, Starshatter: The Open Source Project Contributors
+ Copyright (c) 2011-2012, Starshatter OpenSource Distribution Contributors
+ Copyright (c) 1997-2006, Destroyer Studios LLC.
+
+ AUTHOR: John DiCamillo
+*/
+
+
+#include "Starshatter.h"
+#include "StarServer.h"
+#include "HUDView.h"
+#include "Utils.h"
+
+#include "NetHost.h"
+#include "NetAddr.h"
+#include "NetLayer.h"
+#include "NetBrokerClient.h"
+#include "NetClient.h"
+#include "HttpClient.h"
+
+#include "Color.h"
+#include "DataLoader.h"
+#include "Pcx.h"
+#include "MachineInfo.h"
+#include "Encrypt.h"
+#include "FormatUtil.h"
+#include "Panic.h"
+#include "ParseUtil.h"
+#include "Random.h"
+#include "VersionInfo.h"
+
+// +--------------------------------------------------------------------+
+// WinMain
+// +--------------------------------------------------------------------+
+
+extern int VD3D_describe_things;
+int dump_missions = 0;
+
+static void PrintLogHeader()
+{
+ Text sTime = FormatTimeString();
+
+ Print("+====================================================================+\n");
+ Print("| STARSHATTER %-25s%29s |\n", versionInfo, sTime.data());
+
+ MachineInfo::DescribeMachine();
+}
+
+int APIENTRY WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance,
+ LPSTR lpCmdLine, int nCmdShow)
+{
+ int result = 0;
+ int test_mode = 0;
+ int do_server = 0;
+
+ if (strstr(lpCmdLine, "-server"))
+ AssignErrLog(fopen("serverlog.txt", "wb"));
+ else
+ AssignErrLog(fopen("errlog.txt", "wb"));
+
+ PrintLogHeader();
+
+ if (strstr(lpCmdLine, "-test")) {
+ Print(" Request TEST mode\n");
+ test_mode = 1;
+ }
+
+ if (strstr(lpCmdLine, "-fps")) {
+ HUDView::ShowFPS(true);
+ }
+
+ if (strstr(lpCmdLine, "-dump")) {
+ Print(" Request dump dynamic missions\n");
+ dump_missions = 1;
+ }
+
+ if (strstr(lpCmdLine, "-lan")) {
+ Print(" Request LAN ONLY mode\n");
+ NetBrokerClient::Disable();
+ }
+
+ if (strstr(lpCmdLine, "-server")) {
+ do_server = 1;
+ Print(" Request Standalone Server Mode\n");
+ }
+
+ char* d3dinfo = strstr(lpCmdLine, "-d3d");
+ if (d3dinfo) {
+ int n = d3dinfo[4] - '0';
+
+ if (n >= 0 && n <= 5)
+ VD3D_describe_things = n;
+
+ Print(" D3D Info Level: %d\n", VD3D_describe_things);
+ }
+ else {
+ VD3D_describe_things = 0;
+ }
+
+ try {
+ NetLayer net;
+
+ if (do_server) {
+ StarServer* server = new StarServer();
+
+ if (server->Init(hInstance, hPrevInstance, lpCmdLine, nCmdShow))
+ result = server->Run();
+
+ Print("\n+====================================================================+\n");
+ Print(" Begin Shutdown...\n");
+
+ delete server;
+ }
+
+ else {
+ Starshatter* stars = 0;
+
+ stars = new Starshatter;
+ stars->SetTestMode(test_mode);
+
+ if (stars->Init(hInstance, hPrevInstance, lpCmdLine, nCmdShow))
+ result = stars->Run();
+
+ Print("\n+====================================================================+\n");
+ Print(" Begin Shutdown...\n");
+
+ delete stars;
+ }
+
+ Token::close();
+
+ if (Panic::Panicked())
+ MessageBox(0, Panic::Message(), "Starshatter - Error", MB_OK);
+ }
+
+ catch (const char* msg) {
+ Print(" FATAL EXCEPTION: '%s'\n", msg);
+ }
+ /* } */
+
+ Print("+====================================================================+\n");
+ Print(" END OF LINE.\n");
+
+ CloseErrLog();
+
+ return result;
+}
+
+
diff --git a/Starshatter/Stars.ico b/Starshatter/Stars.ico
new file mode 100644
index 0000000..69980ca
--- /dev/null
+++ b/Starshatter/Stars.ico
Binary files differ
diff --git a/Starshatter/Starshatter.rc.conf b/Starshatter/Starshatter.rc.conf
new file mode 100644
index 0000000..45479d3
--- /dev/null
+++ b/Starshatter/Starshatter.rc.conf
@@ -0,0 +1,39 @@
+#include <winres.h>
+
+#include "resource.h"
+
+Stars ICON DISCARDABLE "Stars.ico"
+
+VS_VERSION_INFO VERSIONINFO
+ FILEVERSION @RC_VERSION@
+ PRODUCTVERSION @RC_VERSION@
+ FILEFLAGSMASK 0x3fL
+#ifdef _DEBUG
+ FILEFLAGS 0x1L
+#else
+ FILEFLAGS 0x0L
+#endif
+ FILEOS 0x40004L
+ FILETYPE 0x1L
+ FILESUBTYPE 0x0L
+BEGIN
+ BLOCK "StringFileInfo"
+ BEGIN
+ BLOCK "040904b0"
+ BEGIN
+ VALUE "Comments", "A military space combat simulator\0"
+ VALUE "CompanyName", "Starshatter: The Open Source Project Contributors\0"
+ VALUE "FileDescription", "Stars\0"
+ VALUE "FileVersion", "@VERSION@\0"
+ VALUE "InternalName", "Stars45\0"
+ VALUE "LegalCopyright", "Copyright (c) 2022, Starshatter: The Open Source Project Contributors\0"
+ VALUE "OriginalFilename", "Stars45.exe\0"
+ VALUE "ProductName", "Starshatter: The Open Source Project\0"
+ VALUE "ProductVersion", "@VERSION@\0"
+ END
+ END
+ BLOCK "VarFileInfo"
+ BEGIN
+ VALUE "Translation", 0x409, 1200
+ END
+END
diff --git a/Starshatter/resource.h b/Starshatter/resource.h
new file mode 100644
index 0000000..4dd9864
--- /dev/null
+++ b/Starshatter/resource.h
@@ -0,0 +1,6 @@
+#ifndef resource_h
+#define resource_h
+
+#define Stars 100
+
+#endif // resource_h