From 4d557709e0a4e3994515d6c84fe99c12f934fe42 Mon Sep 17 00:00:00 2001 From: Xadhoom <> Date: Sun, 24 Feb 2019 10:46:16 +0000 Subject: [PATCH] Clean headers for network code --- CMakeLists.txt | 19 +++++++++++++-- SourceS/miniwin.h | 1 + SourceS/miniwin_ddraw.h | 2 ++ SourceS/miniwin_dsound.h | 2 ++ SourceS/miniwin_rand.h | 4 ++++ SourceS/miniwin_sdlrender.h | 2 ++ SourceS/miniwin_thread.h | 2 ++ SourceS/stub_rand.h | 7 ------ SourceX/DiabloUI/credits.cpp | 2 +- SourceX/DiabloUI/diabloui.cpp | 2 +- SourceX/DiabloUI/dialogs.cpp | 2 +- SourceX/DiabloUI/mainmenu.cpp | 2 +- SourceX/DiabloUI/progress.cpp | 2 +- SourceX/DiabloUI/selconn.cpp | 2 +- SourceX/DiabloUI/selgame.cpp | 2 +- SourceX/DiabloUI/selhero.cpp | 2 +- SourceX/DiabloUI/title.cpp | 2 +- SourceX/asserts.h | 11 --------- SourceX/capture.cpp | 2 +- SourceX/devilution.h | 3 +++ SourceX/dvlnet/abstract_net.cpp | 26 +++++++++++++++++++++ SourceX/dvlnet/{dvlnet.h => abstract_net.h} | 20 ++++++++-------- SourceX/dvlnet/base.cpp | 12 ++++++---- SourceX/dvlnet/base.h | 14 +++++++++-- SourceX/dvlnet/frame_queue.cpp | 4 +++- SourceX/dvlnet/frame_queue.h | 4 ++++ SourceX/dvlnet/loopback.cpp | 2 +- SourceX/dvlnet/loopback.h | 8 ++++++- SourceX/dvlnet/packet.cpp | 2 +- SourceX/dvlnet/packet.h | 7 ++++++ SourceX/dvlnet/tcp_client.cpp | 2 +- SourceX/dvlnet/tcp_client.h | 12 ++++++++++ SourceX/dvlnet/tcp_server.cpp | 5 ++-- SourceX/dvlnet/tcp_server.h | 12 ++++++++++ SourceX/dvlnet/udp_p2p.cpp | 6 ++--- SourceX/dvlnet/udp_p2p.h | 12 ++++++++++ SourceX/dx.cpp | 2 +- SourceX/fault.cpp | 2 +- SourceX/init.cpp | 2 +- SourceX/main.cpp | 2 +- SourceX/miniwin.cpp | 2 +- SourceX/miniwin_io.cpp | 2 +- SourceX/miniwin_msg_sdl.cpp | 2 +- SourceX/miniwin_thread.cpp | 2 +- SourceX/movie.cpp | 2 +- SourceX/{pchheader.h => pch.h} | 14 +---------- SourceX/pchheader.cpp | 1 - SourceX/restrict.cpp | 2 +- SourceX/sound.cpp | 2 +- SourceX/storm.cpp | 2 +- SourceX/storm_net.cpp | 16 ++++--------- SourceX/stub_rand.cpp | 6 ++--- SourceX/stubs.h | 6 +++++ types.h | 6 ----- 54 files changed, 191 insertions(+), 103 deletions(-) create mode 100644 SourceS/miniwin_rand.h delete mode 100644 SourceS/stub_rand.h delete mode 100644 SourceX/asserts.h create mode 100644 SourceX/devilution.h create mode 100644 SourceX/dvlnet/abstract_net.cpp rename SourceX/dvlnet/{dvlnet.h => abstract_net.h} (82%) rename SourceX/{pchheader.h => pch.h} (54%) delete mode 100644 SourceX/pchheader.cpp diff --git a/CMakeLists.txt b/CMakeLists.txt index 027e8f873..0878c73c3 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -12,6 +12,11 @@ endif() option(ASAN "Enable address sanitizer" ON) option(DEBUG "Enable debug mode in engine" ON) +option(COTIRE "Enable cotire" OFF) + +if(COTIRE) + include(CMake/cotire.cmake) +endif() list(APPEND CMAKE_MODULE_PATH "${devilutionX_SOURCE_DIR}/CMake") @@ -143,6 +148,7 @@ add_executable(devilutionx SourceX/sound.cpp SourceX/storm.cpp SourceX/storm_net.cpp + SourceX/dvlnet/abstract_net.cpp SourceX/dvlnet/loopback.cpp SourceX/dvlnet/packet.cpp SourceX/dvlnet/base.cpp @@ -160,7 +166,8 @@ add_executable(devilutionx SourceX/DiabloUI/selhero.cpp SourceX/DiabloUI/title.cpp SourceX/main.cpp) -target_include_directories(devilutionx PRIVATE SourceS SourceX 3rdParty/asio/include) + +target_include_directories(devilutionx PRIVATE SourceS SourceX 3rdParty/asio/include .) target_link_libraries(devilution PUBLIC StormLib @@ -200,7 +207,7 @@ target_compile_options(devilution PRIVATE -fpermissive -Wno-write-strings -Wno-m target_compile_options(devilution PRIVATE -fno-aggressive-loop-optimizations -fno-strict-aliasing) # Warnings for devilutionX target_compile_options(devilution PUBLIC -Wno-unknown-pragmas) -target_compile_options(devilutionx PRIVATE -fpermissive -Wall -Wextra -Wno-multichar) +target_compile_options(devilutionx PRIVATE -fpermissive -Wall -Wextra -Wno-multichar -Wno-unused-parameter) if(CMAKE_CXX_COMPILER_ID MATCHES "Clang") # Style issues @@ -210,3 +217,11 @@ if(CMAKE_CXX_COMPILER_ID MATCHES "Clang") # Fix: error: cast from pointer to smaller type 'unsigned char' loses information target_compile_options(devilutionx PRIVATE -fms-extensions) endif() + +if(COTIRE) + set_target_properties(devilutionx PROPERTIES COTIRE_ADD_UNITY_BUILD FALSE) + set_target_properties(devilutionx PROPERTIES + COTIRE_PREFIX_HEADER_INCLUDE_PATH "${devilutionX_SOURCE_DIR}" + COTIRE_PREFIX_HEADER_IGNORE_PATH "${devilutionX_SOURCE_DIR}/SourceX") + cotire(devilutionx) +endif() diff --git a/SourceS/miniwin.h b/SourceS/miniwin.h index 3f6d63785..bdd174259 100644 --- a/SourceS/miniwin.h +++ b/SourceS/miniwin.h @@ -580,3 +580,4 @@ extern BOOL __cdecl LoadArtWithPal(char *pszFile, void **pBuffer, int frames, DW #include "miniwin_dsound.h" #include "miniwin_sdlrender.h" #include "miniwin_thread.h" +#include "miniwin_rand.h" diff --git a/SourceS/miniwin_ddraw.h b/SourceS/miniwin_ddraw.h index 43f82d94d..a46b3e9b1 100644 --- a/SourceS/miniwin_ddraw.h +++ b/SourceS/miniwin_ddraw.h @@ -1,3 +1,5 @@ +#pragma once + typedef struct _DDCOLORKEY { DWORD dwColorSpaceLowValue; DWORD dwColorSpaceHighValue; diff --git a/SourceS/miniwin_dsound.h b/SourceS/miniwin_dsound.h index 4487493a0..1dbd9968b 100644 --- a/SourceS/miniwin_dsound.h +++ b/SourceS/miniwin_dsound.h @@ -1,3 +1,5 @@ +#pragma once + typedef void *LPDSBCAPS, *LPCDSBUFFERDESC; struct IDirectSound; diff --git a/SourceS/miniwin_rand.h b/SourceS/miniwin_rand.h new file mode 100644 index 000000000..76c874297 --- /dev/null +++ b/SourceS/miniwin_rand.h @@ -0,0 +1,4 @@ +#pragma once + +int rand(void); +void srand(unsigned int seed); diff --git a/SourceS/miniwin_sdlrender.h b/SourceS/miniwin_sdlrender.h index 0a148ad09..07277813c 100644 --- a/SourceS/miniwin_sdlrender.h +++ b/SourceS/miniwin_sdlrender.h @@ -1,3 +1,5 @@ +#pragma once + #include #include diff --git a/SourceS/miniwin_thread.h b/SourceS/miniwin_thread.h index 5c39c2b57..89562d5af 100644 --- a/SourceS/miniwin_thread.h +++ b/SourceS/miniwin_thread.h @@ -1,3 +1,5 @@ +#pragma once + #include typedef SDL_mutex *CRITICAL_SECTION, **LPCRITICAL_SECTION; diff --git a/SourceS/stub_rand.h b/SourceS/stub_rand.h deleted file mode 100644 index eb22d1277..000000000 --- a/SourceS/stub_rand.h +++ /dev/null @@ -1,7 +0,0 @@ -#pragma once - -int rand_miniwin(void); -void srand_miniwin(unsigned int seed); - -#define srand srand_miniwin -#define rand rand_miniwin diff --git a/SourceX/DiabloUI/credits.cpp b/SourceX/DiabloUI/credits.cpp index e6cfc6ca6..413453741 100644 --- a/SourceX/DiabloUI/credits.cpp +++ b/SourceX/DiabloUI/credits.cpp @@ -1,4 +1,4 @@ -#include "pchheader.h" +#include "pch.h" #define CREDIT_LINES 13 diff --git a/SourceX/DiabloUI/diabloui.cpp b/SourceX/DiabloUI/diabloui.cpp index e8e0a1a9f..93e77d6e7 100644 --- a/SourceX/DiabloUI/diabloui.cpp +++ b/SourceX/DiabloUI/diabloui.cpp @@ -1,4 +1,4 @@ -#include "pchheader.h" +#include "pch.h" #include TTF_Font *font; diff --git a/SourceX/DiabloUI/dialogs.cpp b/SourceX/DiabloUI/dialogs.cpp index 9fdde6ecc..01812eb5b 100644 --- a/SourceX/DiabloUI/dialogs.cpp +++ b/SourceX/DiabloUI/dialogs.cpp @@ -1,4 +1,4 @@ -#include "pchheader.h" +#include "pch.h" UI_Item OKCANCEL_DIALOG[] = { { { 180, 168, 280, 144 }, UI_IMAGE, 0, 0, "ui_art\\spopup.pcx" }, diff --git a/SourceX/DiabloUI/mainmenu.cpp b/SourceX/DiabloUI/mainmenu.cpp index e2f5de9d5..b4aef3000 100644 --- a/SourceX/DiabloUI/mainmenu.cpp +++ b/SourceX/DiabloUI/mainmenu.cpp @@ -1,4 +1,4 @@ -#include "pchheader.h" +#include "pch.h" int MainMenuResult; UI_Item MAINMENU_DIALOG[] = { diff --git a/SourceX/DiabloUI/progress.cpp b/SourceX/DiabloUI/progress.cpp index eac8158d5..362e625cc 100644 --- a/SourceX/DiabloUI/progress.cpp +++ b/SourceX/DiabloUI/progress.cpp @@ -1,4 +1,4 @@ -#include "pchheader.h" +#include "pch.h" Art ArtPopupSm; Art ArtProgBG; diff --git a/SourceX/DiabloUI/selconn.cpp b/SourceX/DiabloUI/selconn.cpp index 8586d8304..68c58b42d 100644 --- a/SourceX/DiabloUI/selconn.cpp +++ b/SourceX/DiabloUI/selconn.cpp @@ -1,4 +1,4 @@ -#include "pchheader.h" +#include "pch.h" #include "selconn.h" char selconn_MaxPlayers[21]; diff --git a/SourceX/DiabloUI/selgame.cpp b/SourceX/DiabloUI/selgame.cpp index 87a6f9c87..67969fcde 100644 --- a/SourceX/DiabloUI/selgame.cpp +++ b/SourceX/DiabloUI/selgame.cpp @@ -1,4 +1,4 @@ -#include "pchheader.h" +#include "pch.h" #include "selgame.h" char selgame_Lable[32]; diff --git a/SourceX/DiabloUI/selhero.cpp b/SourceX/DiabloUI/selhero.cpp index 15a8fdbcb..1e2fc4548 100644 --- a/SourceX/DiabloUI/selhero.cpp +++ b/SourceX/DiabloUI/selhero.cpp @@ -1,4 +1,4 @@ -#include "pchheader.h" +#include "pch.h" #include "selhero.h" int selhero_SaveCount = 0; diff --git a/SourceX/DiabloUI/title.cpp b/SourceX/DiabloUI/title.cpp index 6df092667..ff5948899 100644 --- a/SourceX/DiabloUI/title.cpp +++ b/SourceX/DiabloUI/title.cpp @@ -1,4 +1,4 @@ -#include "pchheader.h" +#include "pch.h" void title_Load() { diff --git a/SourceX/asserts.h b/SourceX/asserts.h deleted file mode 100644 index 44f31c7f9..000000000 --- a/SourceX/asserts.h +++ /dev/null @@ -1,11 +0,0 @@ -#pragma once - -#include -#include -#include - -#define ASSERT(x) \ - if (!(x)) { \ - fprintf(stderr, "Assertion failed in %s:%d: %s\n", __FILE__, __LINE__, #x); \ - abort(); \ - } diff --git a/SourceX/capture.cpp b/SourceX/capture.cpp index 7b7bb82ca..588fb3a87 100644 --- a/SourceX/capture.cpp +++ b/SourceX/capture.cpp @@ -1,4 +1,4 @@ -#include "pchheader.h" +#include "pch.h" void __cdecl CaptureScreen() { diff --git a/SourceX/devilution.h b/SourceX/devilution.h new file mode 100644 index 000000000..41e446c13 --- /dev/null +++ b/SourceX/devilution.h @@ -0,0 +1,3 @@ +#include +#include "stubs.h" +#include "miniwin_sdl.h" diff --git a/SourceX/dvlnet/abstract_net.cpp b/SourceX/dvlnet/abstract_net.cpp new file mode 100644 index 000000000..b36c36d4d --- /dev/null +++ b/SourceX/dvlnet/abstract_net.cpp @@ -0,0 +1,26 @@ +#include "dvlnet/abstract_net.h" + +#include "stubs.h" +#include "dvlnet/tcp_client.h" +#include "dvlnet/udp_p2p.h" +#include "dvlnet/loopback.h" + +using namespace dvlnet; + +abstract_net::~abstract_net() +{ +} + +std::unique_ptr abstract_net::make_net(provider_t provider) +{ + if (provider == 'TCPN') { + return std::make_unique(); + } else if (provider == 'UDPN') { + return std::make_unique(); + } else if (provider == 'SCBL' || provider == 0) { + return std::make_unique(); + } else { + ABORT(); + } +} + diff --git a/SourceX/dvlnet/dvlnet.h b/SourceX/dvlnet/abstract_net.h similarity index 82% rename from SourceX/dvlnet/dvlnet.h rename to SourceX/dvlnet/abstract_net.h index f3c2edb3a..03e4d2dd4 100644 --- a/SourceX/dvlnet/dvlnet.h +++ b/SourceX/dvlnet/abstract_net.h @@ -1,11 +1,17 @@ #pragma once +#include +#include + +#include "devilution.h" + namespace dvlnet { typedef std::vector buffer_t; typedef void(__stdcall *snet_event_func)(struct _SNETEVENT*); + typedef unsigned long provider_t; class dvlnet_exception : public std::exception {}; - class dvlnet { + class abstract_net { public: virtual int create(std::string addrstr, std::string passwd) = 0; virtual int join(std::string addrstr, std::string passwd) = 0; @@ -23,15 +29,9 @@ namespace dvlnet { snet_event_func func) = 0; virtual bool SNetLeaveGame(int type) = 0; virtual void setup_gameinfo(buffer_t info) = 0; - virtual ~dvlnet() {} + virtual ~abstract_net(); + + static std::unique_ptr make_net(provider_t provider); }; } -#include "dvlnet/packet.h" -#include "dvlnet/frame_queue.h" -#include "dvlnet/loopback.h" -#include "dvlnet/base.h" -#include "dvlnet/tcp_server.h" -#include "dvlnet/tcp_client.h" -#include "dvlnet/udp_p2p.h" - diff --git a/SourceX/dvlnet/base.cpp b/SourceX/dvlnet/base.cpp index 0c768d1c6..137e02efc 100644 --- a/SourceX/dvlnet/base.cpp +++ b/SourceX/dvlnet/base.cpp @@ -1,4 +1,6 @@ -#include "pchheader.h" +#include "dvlnet/base.h" + +#include using namespace dvlnet; @@ -55,7 +57,7 @@ void base::recv_local(packet& pkt) message_queue.push_back(message_t(pkt.src(), pkt.message())); break; case PT_TURN: - turn_queue[pkt.src()].push(pkt.turn()); + turn_queue[pkt.src()].push_back(pkt.turn()); break; case PT_JOIN_ACCEPT: handle_accept(pkt); @@ -76,11 +78,13 @@ void base::recv_local(packet& pkt) connected_table[pkt.newplr()] = false; active_table[pkt.newplr()] = false; clear_msg(pkt.newplr()); - turn_queue[pkt.newplr()] = {}; + turn_queue[pkt.newplr()].clear(); } else { // problem } break; + default: + break; // otherwise drop } } @@ -134,7 +138,7 @@ bool base::SNetReceiveTurns(char** data, unsigned int* size, DWORD* status) size[i] = sizeof(turn_t); status[i] |= PS_TURN_ARRIVED; turn_last[i] = turn_queue[i].front(); - turn_queue[i].pop(); + turn_queue[i].pop_front(); data[i] = reinterpret_cast(&turn_last[i]); } } diff --git a/SourceX/dvlnet/base.h b/SourceX/dvlnet/base.h index 8730bde87..e8f091e63 100644 --- a/SourceX/dvlnet/base.h +++ b/SourceX/dvlnet/base.h @@ -1,5 +1,15 @@ #pragma once +#include +#include +#include +#include +#include + +#include "devilution.h" +#include "dvlnet/abstract_net.h" +#include "dvlnet/packet.h" + #define PS_CONNECTED 0x10000 #define PS_TURN_ARRIVED 0x20000 #define PS_ACTIVE 0x40000 @@ -8,7 +18,7 @@ #define LEAVE_ENDING 0x40000004 namespace dvlnet { - class base : public dvlnet { + class base : public abstract_net { public: virtual int create(std::string addrstr, std::string passwd) = 0; virtual int join(std::string addrstr, std::string passwd) = 0; @@ -43,7 +53,7 @@ namespace dvlnet { message_t message_last; std::deque message_queue; std::array turn_last = {}; - std::array, MAX_PLRS> turn_queue; + std::array, MAX_PLRS> turn_queue; std::array active_table = {}; std::array connected_table = {}; diff --git a/SourceX/dvlnet/frame_queue.cpp b/SourceX/dvlnet/frame_queue.cpp index b5588f5e7..0cf128d0e 100644 --- a/SourceX/dvlnet/frame_queue.cpp +++ b/SourceX/dvlnet/frame_queue.cpp @@ -1,4 +1,6 @@ -#include "pchheader.h" +#include "dvlnet/frame_queue.h" + +#include "dvlnet/packet.h" using namespace dvlnet; diff --git a/SourceX/dvlnet/frame_queue.h b/SourceX/dvlnet/frame_queue.h index 73c91a305..12cf099af 100644 --- a/SourceX/dvlnet/frame_queue.h +++ b/SourceX/dvlnet/frame_queue.h @@ -1,5 +1,9 @@ #pragma once +#include + +#include "dvlnet/abstract_net.h" + namespace dvlnet { class frame_queue_exception : public dvlnet_exception {}; diff --git a/SourceX/dvlnet/loopback.cpp b/SourceX/dvlnet/loopback.cpp index c0a1c4708..ee1a93504 100644 --- a/SourceX/dvlnet/loopback.cpp +++ b/SourceX/dvlnet/loopback.cpp @@ -1,4 +1,4 @@ -#include "pchheader.h" +#include "dvlnet/loopback.h" using namespace dvlnet; diff --git a/SourceX/dvlnet/loopback.h b/SourceX/dvlnet/loopback.h index eef93ef7d..aa9af5b48 100644 --- a/SourceX/dvlnet/loopback.h +++ b/SourceX/dvlnet/loopback.h @@ -1,7 +1,13 @@ #pragma once +#include +#include + +#include "devilution.h" +#include "dvlnet/abstract_net.h" + namespace dvlnet { - class loopback : public dvlnet { + class loopback : public abstract_net { private: std::queue message_queue; buffer_t message_last; diff --git a/SourceX/dvlnet/packet.cpp b/SourceX/dvlnet/packet.cpp index 858bc355e..62760ad48 100644 --- a/SourceX/dvlnet/packet.cpp +++ b/SourceX/dvlnet/packet.cpp @@ -1,4 +1,4 @@ -#include "pchheader.h" +#include "dvlnet/packet.h" using namespace dvlnet; diff --git a/SourceX/dvlnet/packet.h b/SourceX/dvlnet/packet.h index fe87811d1..3af6682a2 100644 --- a/SourceX/dvlnet/packet.h +++ b/SourceX/dvlnet/packet.h @@ -1,5 +1,12 @@ #pragma once +#include +#include +#include +#include + +#include "dvlnet/abstract_net.h" + namespace dvlnet { enum packet_type : uint8_t { PT_MESSAGE = 0x01, diff --git a/SourceX/dvlnet/tcp_client.cpp b/SourceX/dvlnet/tcp_client.cpp index 4d68b9c97..82fc802e0 100644 --- a/SourceX/dvlnet/tcp_client.cpp +++ b/SourceX/dvlnet/tcp_client.cpp @@ -1,4 +1,4 @@ -#include "pchheader.h" +#include "dvlnet/tcp_client.h" using namespace dvlnet; diff --git a/SourceX/dvlnet/tcp_client.h b/SourceX/dvlnet/tcp_client.h index d0924b26a..33c4d3a08 100644 --- a/SourceX/dvlnet/tcp_client.h +++ b/SourceX/dvlnet/tcp_client.h @@ -1,5 +1,17 @@ #pragma once +#include +#include +#include +#include +#include +#include + +#include "dvlnet/packet.h" +#include "dvlnet/frame_queue.h" +#include "dvlnet/base.h" +#include "dvlnet/tcp_server.h" + namespace dvlnet { class tcp_client : public base { public: diff --git a/SourceX/dvlnet/tcp_server.cpp b/SourceX/dvlnet/tcp_server.cpp index daf48854a..7382736b7 100644 --- a/SourceX/dvlnet/tcp_server.cpp +++ b/SourceX/dvlnet/tcp_server.cpp @@ -1,4 +1,5 @@ -#include "pchheader.h" +#include "pch.h" +#include "dvlnet/tcp_server.h" using namespace dvlnet; @@ -120,7 +121,7 @@ void tcp_server::send_packet(packet& pkt) if(i != pkt.src() && connections[i]) start_send(connections[i], pkt); } else { - if(pkt.dest() < 0 || pkt.dest() >= MAX_PLRS) + if(pkt.dest() >= MAX_PLRS) throw server_exception(); if((pkt.dest() != pkt.src()) && connections[pkt.dest()]) start_send(connections[pkt.dest()], pkt); diff --git a/SourceX/dvlnet/tcp_server.h b/SourceX/dvlnet/tcp_server.h index 08f2e250c..60f00f5ee 100644 --- a/SourceX/dvlnet/tcp_server.h +++ b/SourceX/dvlnet/tcp_server.h @@ -1,5 +1,17 @@ #pragma once +#include +#include +#include +#include +#include +#include +#include + +#include "dvlnet/packet.h" +#include "dvlnet/abstract_net.h" +#include "dvlnet/frame_queue.h" + namespace dvlnet { class server_exception : public dvlnet_exception {}; diff --git a/SourceX/dvlnet/udp_p2p.cpp b/SourceX/dvlnet/udp_p2p.cpp index 74c1c950b..0467accab 100644 --- a/SourceX/dvlnet/udp_p2p.cpp +++ b/SourceX/dvlnet/udp_p2p.cpp @@ -1,4 +1,4 @@ -#include "pchheader.h" +#include "dvlnet/udp_p2p.h" using namespace dvlnet; @@ -109,7 +109,7 @@ std::set udp_p2p::dests_for_addr(plr_t dest, endpoint sender) if (dest == plr_self) return ret; - if (0 <= dest && dest < MAX_PLRS) { + if (dest < MAX_PLRS) { if (active_table[dest]) ret.insert(nexthop_table[dest]); } else if (dest == PLR_BROADCAST) { @@ -153,7 +153,7 @@ void udp_p2p::recv_decrypted(packet& pkt, endpoint sender) } } // normal packets - if (pkt.src() < 0 || pkt.src() >= MAX_PLRS) + if (pkt.src() >= MAX_PLRS) return; //drop packet if (active_table[pkt.src()]) { //WRONG?!? if (sender != nexthop_table[pkt.src()]) diff --git a/SourceX/dvlnet/udp_p2p.h b/SourceX/dvlnet/udp_p2p.h index abe8b8c96..09125a4d4 100644 --- a/SourceX/dvlnet/udp_p2p.h +++ b/SourceX/dvlnet/udp_p2p.h @@ -1,3 +1,15 @@ +#pragma once + +#include +#include +#include +#include +#include +#include + +#include "dvlnet/packet.h" +#include "dvlnet/base.h" + namespace dvlnet { class udp_p2p : public base { public: diff --git a/SourceX/dx.cpp b/SourceX/dx.cpp index c59042658..22ebd988b 100644 --- a/SourceX/dx.cpp +++ b/SourceX/dx.cpp @@ -1,4 +1,4 @@ -#include "pchheader.h" +#include "pch.h" Screen *gpBuffer; diff --git a/SourceX/fault.cpp b/SourceX/fault.cpp index d2a031fc3..441e198ed 100644 --- a/SourceX/fault.cpp +++ b/SourceX/fault.cpp @@ -1,4 +1,4 @@ -#include "pchheader.h" +#include "pch.h" LPTOP_LEVEL_EXCEPTION_FILTER __cdecl exception_get_filter() { diff --git a/SourceX/init.cpp b/SourceX/init.cpp index e3550cbbd..83d1d33e8 100644 --- a/SourceX/init.cpp +++ b/SourceX/init.cpp @@ -1,4 +1,4 @@ -#include "pchheader.h" +#include "pch.h" _SNETVERSIONDATA fileinfo; int gbActive; // weak diff --git a/SourceX/main.cpp b/SourceX/main.cpp index 41e6c9a66..5dc13ac4a 100644 --- a/SourceX/main.cpp +++ b/SourceX/main.cpp @@ -1,4 +1,4 @@ -#include "pchheader.h" +#include "pch.h" extern "C" const char *__asan_default_options() { diff --git a/SourceX/miniwin.cpp b/SourceX/miniwin.cpp index ecb0c2f6d..05be5b4b5 100644 --- a/SourceX/miniwin.cpp +++ b/SourceX/miniwin.cpp @@ -1,4 +1,4 @@ -#include "pchheader.h" +#include "pch.h" #include DWORD last_error; diff --git a/SourceX/miniwin_io.cpp b/SourceX/miniwin_io.cpp index 394252b2a..103b7e90c 100644 --- a/SourceX/miniwin_io.cpp +++ b/SourceX/miniwin_io.cpp @@ -1,4 +1,4 @@ -#include "pchheader.h" +#include "pch.h" void TranslateFileName(char *dst, int dstLen, const char *src) { diff --git a/SourceX/miniwin_msg_sdl.cpp b/SourceX/miniwin_msg_sdl.cpp index ca1b25cc0..ff8a82fdc 100644 --- a/SourceX/miniwin_msg_sdl.cpp +++ b/SourceX/miniwin_msg_sdl.cpp @@ -1,4 +1,4 @@ -#include "pchheader.h" +#include "pch.h" /** @file * * * Windows message handling and keyboard event conversion for SDL. diff --git a/SourceX/miniwin_thread.cpp b/SourceX/miniwin_thread.cpp index 1b3e862ae..95f70d14d 100644 --- a/SourceX/miniwin_thread.cpp +++ b/SourceX/miniwin_thread.cpp @@ -1,4 +1,4 @@ -#include "pchheader.h" +#include "pch.h" static std::set threads; static std::set events; diff --git a/SourceX/movie.cpp b/SourceX/movie.cpp index 0f716dece..e767dd234 100644 --- a/SourceX/movie.cpp +++ b/SourceX/movie.cpp @@ -1,4 +1,4 @@ -#include "pchheader.h" +#include "pch.h" #include "../3rdParty/libsmacker/smacker.h" BYTE movie_playing; diff --git a/SourceX/pchheader.h b/SourceX/pch.h similarity index 54% rename from SourceX/pchheader.h rename to SourceX/pch.h index 2fdaacbb5..f61eafcd0 100644 --- a/SourceX/pchheader.h +++ b/SourceX/pch.h @@ -1,5 +1,3 @@ -#pragma once - #include #include #include @@ -19,14 +17,4 @@ #include #include -#include -#include -#include -#include -#include - -#include "../types.h" -#include "stubs.h" -#include "asserts.h" -#include "miniwin_sdl.h" -#include "dvlnet/dvlnet.h" +#include "devilution.h" diff --git a/SourceX/pchheader.cpp b/SourceX/pchheader.cpp deleted file mode 100644 index f498695f5..000000000 --- a/SourceX/pchheader.cpp +++ /dev/null @@ -1 +0,0 @@ -#include "pchheader.h" diff --git a/SourceX/restrict.cpp b/SourceX/restrict.cpp index ab673afc8..84ab38024 100644 --- a/SourceX/restrict.cpp +++ b/SourceX/restrict.cpp @@ -1,4 +1,4 @@ -#include "pchheader.h" +#include "pch.h" BOOL __cdecl RestrictedTest() { diff --git a/SourceX/sound.cpp b/SourceX/sound.cpp index 3428ee8da..a1411c937 100644 --- a/SourceX/sound.cpp +++ b/SourceX/sound.cpp @@ -1,4 +1,4 @@ -#include "pchheader.h" +#include "pch.h" bool SoundInited; char gbSndInited; diff --git a/SourceX/storm.cpp b/SourceX/storm.cpp index f9daa1181..78aa92f49 100644 --- a/SourceX/storm.cpp +++ b/SourceX/storm.cpp @@ -1,4 +1,4 @@ -#include "pchheader.h" +#include "pch.h" #include "../3rdParty/Radon/Radon/include/Radon.hpp" DWORD nLastError = 0; diff --git a/SourceX/storm_net.cpp b/SourceX/storm_net.cpp index 7495ceeb3..06bb9a6c5 100644 --- a/SourceX/storm_net.cpp +++ b/SourceX/storm_net.cpp @@ -1,6 +1,7 @@ -#include "pchheader.h" +#include "pch.h" +#include "dvlnet/abstract_net.h" -static std::unique_ptr dvlnet_inst; +static std::unique_ptr dvlnet_inst; BOOL STORMAPI SNetReceiveMessage(int *senderplayerid, char **data, int *databytes) { @@ -84,16 +85,7 @@ int __stdcall SNetInitializeProvider(unsigned long provider, struct _SNETPROGRAM struct _SNETPLAYERDATA *user_info, struct _SNETUIDATA *ui_info, struct _SNETVERSIONDATA *fileinfo) { - if (provider == 'TCPN') { - dvlnet_inst = std::make_unique(); - } else if (provider == 'UDPN') { - dvlnet_inst = std::make_unique(); - } else if (provider == 'SCBL' || provider == 0) { - dvlnet_inst = std::make_unique(); - } else { - ABORT(); - } - + dvlnet_inst = dvlnet::abstract_net::make_net(provider); return ui_info->selectnamecallback(client_info, user_info, ui_info, fileinfo, provider, NULL, 0, NULL, 0, NULL); } diff --git a/SourceX/stub_rand.cpp b/SourceX/stub_rand.cpp index eb1723f7c..d8490db3d 100644 --- a/SourceX/stub_rand.cpp +++ b/SourceX/stub_rand.cpp @@ -1,14 +1,14 @@ -#include "pchheader.h" +#include "devilution.h" unsigned int rand_state = 1; -int rand_miniwin(void) +int rand(void) { rand_state = rand_state * 214013 + 2531011; return (rand_state >> 16) & 0x7FFF; } -void srand_miniwin(unsigned int seed) +void srand(unsigned int seed) { rand_state = seed; } diff --git a/SourceX/stubs.h b/SourceX/stubs.h index 483876471..8ea96bbd6 100644 --- a/SourceX/stubs.h +++ b/SourceX/stubs.h @@ -35,3 +35,9 @@ static inline const char *nullstr(const char *a) { return a ? a : "(null)"; } + +#define ASSERT(x) \ + if (!(x)) { \ + fprintf(stderr, "Assertion failed in %s:%d: %s\n", __FILE__, __LINE__, #x); \ + abort(); \ + } diff --git a/types.h b/types.h index a39e880ce..32da1c41f 100644 --- a/types.h +++ b/types.h @@ -53,12 +53,6 @@ #include "3rdParty/Storm/Source/storm.h" #include "3rdParty/PKWare/pkware.h" -#ifdef DEVILUTION_STUB - -#include "stub_rand.h" - -#endif - // If defined, use copy protection [Default -> Defined] //#define COPYPROT // If defined, don't reload for debuggers [Default -> Undefined]