summaryrefslogtreecommitdiffhomepage
path: root/Starshatter/Main.cpp
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/Main.cpp
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/Main.cpp')
-rw-r--r--Starshatter/Main.cpp150
1 files changed, 150 insertions, 0 deletions
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;
+}
+
+