diff --git a/deerith_engine_client/CMakeLists.txt b/deerith_engine_client/CMakeLists.txt index 6b3b35c..8a310f9 100644 --- a/deerith_engine_client/CMakeLists.txt +++ b/deerith_engine_client/CMakeLists.txt @@ -37,4 +37,9 @@ add_custom_target(DeerithClientShaders ALL ${CMAKE_CURRENT_BINARY_DIR}/shaders ) +target_compile_definitions(DeerithClient + PUBLIC + DEERITH_CLIENT +) + add_dependencies(DeerithClient DeerithClientShaders) \ No newline at end of file diff --git a/deerith_engine_core/include/deerith/engine.h b/deerith_engine_core/include/deerith/engine.h new file mode 100644 index 0000000..b5619bf --- /dev/null +++ b/deerith_engine_core/include/deerith/engine.h @@ -0,0 +1,7 @@ +#pragma once + +namespace deerith +{ + void init_engine(); + void shutdown_enigne(); +} \ No newline at end of file diff --git a/deerith_engine_server/CMakeLists.txt b/deerith_engine_server/CMakeLists.txt index 4764c38..08b8584 100644 --- a/deerith_engine_server/CMakeLists.txt +++ b/deerith_engine_server/CMakeLists.txt @@ -19,3 +19,8 @@ target_link_libraries(DeerithServer PUBLIC DeerithCore ) + +target_compile_definitions(DeerithServer + PUBLIC + DEERITH_SERVER +) \ No newline at end of file diff --git a/deerith_engine_server/include/universe/universe.h b/deerith_engine_server/include/universe/universe.h new file mode 100644 index 0000000..7822240 --- /dev/null +++ b/deerith_engine_server/include/universe/universe.h @@ -0,0 +1,9 @@ +#pragma once + +namespace deerith +{ + void init_universe_serve(int port); + void shutdown_universe(); + + bool is_universe_running(); +} \ No newline at end of file diff --git a/deerith_engine_server/src/network/network.cpp b/deerith_engine_server/src/network/network.cpp new file mode 100644 index 0000000..7f39a65 --- /dev/null +++ b/deerith_engine_server/src/network/network.cpp @@ -0,0 +1,63 @@ +#include +#include + +#include + +#include + +#include "network_internals.h" + +namespace deerith +{ + ENetHost *client; + ENetPeer *client_peer; +} + +void deerith::connect_to_server(const char *address, int port) +{ + ENetAddress eaddress = {0}; + eaddress.port = port; + + int result = enet_address_set_host(&eaddress, address); + deerith_client_assert(result == 0, "connect_to_server invalid address"); + + client = enet_host_create(NULL, 1, 2, 0, 0); + deerith_client_assert(client, "connect_to_server failed to create host"); + + client_peer = enet_host_connect(client, &eaddress, 2, 0); + deerith_client_assert(client_peer, "enet_host_connect failed on connect_to_server"); +} + +int deerith::init_network() +{ + if (enet_initialize() != 0) + { + deerith_client_error("An error occurred while initializing ENet.\n"); + return 1; + } + + return 0; +} + +void deerith::shutdown_network() +{ + enet_deinitialize(); +} + +bool deerith::wait_till_connected_to_server() +{ + ENetEvent event; + if (enet_host_service(client, &event, 5000) > 0 && + event.type == ENET_EVENT_TYPE_CONNECT) + { + deerith_client_info("Connected to server"); + return true; + } + + else + { + enet_peer_reset(client_peer); + deerith_client_error("Failed to connect to server"); + return false; + } +} \ No newline at end of file diff --git a/deerith_engine_server/src/network/network_internals.h b/deerith_engine_server/src/network/network_internals.h new file mode 100644 index 0000000..cb5fa54 --- /dev/null +++ b/deerith_engine_server/src/network/network_internals.h @@ -0,0 +1,9 @@ +#pragma once + +namespace deerith +{ + int init_network(); + void shutdown_network(); + + void init_server(int port); +} \ No newline at end of file diff --git a/sandbox/CMakeLists.txt b/sandbox/CMakeLists.txt index cddda04..d079a58 100644 --- a/sandbox/CMakeLists.txt +++ b/sandbox/CMakeLists.txt @@ -23,11 +23,21 @@ target_link_libraries(SandboxClient DeerithClient ) +target_include_directories(SandboxClient + PRIVATE + ${CMAKE_CURRENT_SOURCE_DIR}/src +) + add_executable(SandboxServer ${SANDBOX_COMMON} ${SANDBOX_SERVER} ) +target_include_directories(SandboxServer + PRIVATE + ${CMAKE_CURRENT_SOURCE_DIR}/src +) + target_link_libraries(SandboxServer PRIVATE DeerithServer diff --git a/sandbox/src/client/main.cpp b/sandbox/src/client/window.cpp similarity index 100% rename from sandbox/src/client/main.cpp rename to sandbox/src/client/window.cpp diff --git a/sandbox/src/client/window.h b/sandbox/src/client/window.h new file mode 100644 index 0000000..ed5976d --- /dev/null +++ b/sandbox/src/client/window.h @@ -0,0 +1,3 @@ +#pragma once + +void execute_window(); \ No newline at end of file diff --git a/sandbox/src/common/main.cpp b/sandbox/src/common/main.cpp new file mode 100644 index 0000000..48cfea2 --- /dev/null +++ b/sandbox/src/common/main.cpp @@ -0,0 +1,24 @@ + +#include +#include +#include + +#ifdef DEERITH_SERVER +#include