summaryrefslogtreecommitdiffhomepage
path: root/Starshatter/Main.cpp
diff options
context:
space:
mode:
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;
+}
+
+