From 3f320f31fc4f9e90302bd62208a52bfd8d3fd7c2 Mon Sep 17 00:00:00 2001 From: Aki Date: Fri, 1 Apr 2022 21:42:56 +0200 Subject: 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. --- Starshatter/Main.cpp | 150 +++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 150 insertions(+) create mode 100644 Starshatter/Main.cpp (limited to 'Starshatter/Main.cpp') 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; +} + + -- cgit v1.1