diff options
author | Aki <please@ignore.pl> | 2022-04-01 21:42:56 +0200 |
---|---|---|
committer | Aki <please@ignore.pl> | 2022-04-01 22:21:44 +0200 |
commit | 3f320f31fc4f9e90302bd62208a52bfd8d3fd7c2 (patch) | |
tree | 234fe74a29b15e37b8dbd40d1d58da9286c6b851 /Starshatter/Main.cpp | |
parent | 3c487c5cd69c53d6fea948643c0a76df03516605 (diff) | |
download | starshatter-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.cpp | 150 |
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; +} + + |