Fix game crashing on NetworkingInit on Windows. Also add a 32-bit Windows build.
Also stubbed out InitSingleplayer in menu.cpp cuz this client doesn't want to work with servers correctly.
This commit is contained in:
@@ -33,7 +33,7 @@ jobs:
|
||||
rm raylib -r
|
||||
rm yaml-cpp -r
|
||||
|
||||
wget https://github.com/lsalzman/enet/archive/refs/heads/master.zip
|
||||
wget https://github.com/zpl-c/enet/archive/refs/heads/master.zip
|
||||
unzip master.zip
|
||||
mv enet-master enet
|
||||
rm master.zip
|
||||
@@ -64,6 +64,7 @@ jobs:
|
||||
sh ${{ gitea.workspace }}/compile.sh
|
||||
zip -r release-linux.zip OUTPUT-Linux || true
|
||||
zip -r release-w64.zip OUTPUT-w64 || true
|
||||
zip -r release-w32.zip OUTPUT-w32 || true
|
||||
|
||||
- name: Upload artifacts
|
||||
uses: actions/upload-artifact@v3
|
||||
@@ -72,3 +73,4 @@ jobs:
|
||||
path: |
|
||||
release-linux.zip
|
||||
release-w64.zip
|
||||
release-w32.zip
|
||||
|
||||
+2
-1
@@ -7,4 +7,5 @@ android
|
||||
__UTILS__
|
||||
snapshots
|
||||
OUTPUT-Linux
|
||||
OUTPUT-w64
|
||||
OUTPUT-w64
|
||||
OUTPUT-w32
|
||||
@@ -0,0 +1,11 @@
|
||||
#ifdef WIN32 // FUCK WINDOWS
|
||||
#include "external/fix_win32_compatibility.h"
|
||||
#undef PlaySound
|
||||
#endif
|
||||
|
||||
#include <enet/enet.h>
|
||||
|
||||
#ifdef WIN32 // FUCK WINDOWS 2
|
||||
#undef PlaySound
|
||||
#undef Sound
|
||||
#endif
|
||||
+3
-25
@@ -1,27 +1,5 @@
|
||||
#/usr/bin/bash
|
||||
|
||||
./makeheaders/makeheaders -h src/helpers/vars.hpp src/helpers/chunks.cpp src/helpers/debug.cpp src/helpers/entities.cpp src/helpers/input.cpp src/helpers/menu.cpp src/helpers/mesher.cpp src/helpers/networking.cpp src/helpers/utils.cpp src/helpers/inlines.hpp src/helpers/inventory.cpp src/helpers/locale.cpp src/helpers/recipes.cpp src/helpers/particles.cpp src/helpers/player.cpp src/helpers/multisound.cpp src/helpers/svlib.cpp -v > src/helpers/common.hpp
|
||||
|
||||
rm -r build
|
||||
echo Building Linux...
|
||||
cmake -B build -DUNIX=ON -DUNIX=true
|
||||
cd build
|
||||
make -j12
|
||||
cd ..
|
||||
mkdir OUTPUT-Linux
|
||||
cp build/src/RCRAFT OUTPUT-Linux
|
||||
cp -r data/resources OUTPUT-Linux
|
||||
mkdir OUTPUT-Linux/user
|
||||
mkdir OUTPUT-Linux/user/worlds
|
||||
|
||||
rm -r build
|
||||
echo Building Windows...
|
||||
cmake -DCMAKE_TOOLCHAIN_FILE=toolchains/mingw-w64.cmake -DWIN32=ON -DWIN32=true -B build
|
||||
cd build
|
||||
make -j12
|
||||
cd ..
|
||||
mkdir OUTPUT-w64
|
||||
cp build/src/RCRAFT.exe OUTPUT-w64
|
||||
cp -r data/resources OUTPUT-w64
|
||||
mkdir OUTPUT-w64/user
|
||||
mkdir OUTPUT-w64/user/worlds
|
||||
sh compile_linux.sh
|
||||
sh compile_windows_64.sh
|
||||
sh compile_windows.sh
|
||||
@@ -0,0 +1,17 @@
|
||||
#/usr/bin/bash
|
||||
|
||||
./makeheaders/makeheaders -h src/helpers/vars.hpp src/helpers/chunks.cpp src/helpers/debug.cpp src/helpers/entities.cpp src/helpers/input.cpp src/helpers/menu.cpp src/helpers/mesher.cpp src/helpers/networking.cpp src/helpers/utils.cpp src/helpers/inlines.hpp src/helpers/inventory.cpp src/helpers/locale.cpp src/helpers/recipes.cpp src/helpers/particles.cpp src/helpers/player.cpp src/helpers/multisound.cpp src/helpers/svlib.cpp -v > tmp.hpp
|
||||
cat additions.hpp tmp.hpp > src/helpers/common.hpp
|
||||
rm tmp.hpp
|
||||
|
||||
echo Building x86-64 Linux...
|
||||
rm -rf build
|
||||
cmake -B build -DUNIX=ON -DUNIX=true
|
||||
cd build
|
||||
make -j12
|
||||
cd ..
|
||||
mkdir OUTPUT-Linux
|
||||
cp build/src/RCRAFT OUTPUT-Linux/CubeGame
|
||||
cp -r data/resources OUTPUT-Linux
|
||||
mkdir OUTPUT-Linux/user
|
||||
mkdir OUTPUT-Linux/user/worlds
|
||||
@@ -0,0 +1,17 @@
|
||||
#/usr/bin/bash
|
||||
|
||||
./makeheaders/makeheaders -h src/helpers/vars.hpp src/helpers/chunks.cpp src/helpers/debug.cpp src/helpers/entities.cpp src/helpers/input.cpp src/helpers/menu.cpp src/helpers/mesher.cpp src/helpers/networking.cpp src/helpers/utils.cpp src/helpers/inlines.hpp src/helpers/inventory.cpp src/helpers/locale.cpp src/helpers/recipes.cpp src/helpers/particles.cpp src/helpers/player.cpp src/helpers/multisound.cpp src/helpers/svlib.cpp -v > tmp.hpp
|
||||
cat additions.hpp tmp.hpp > src/helpers/common.hpp
|
||||
rm tmp.hpp
|
||||
|
||||
echo Building i686 Windows...
|
||||
rm -rf build
|
||||
cmake -DCMAKE_TOOLCHAIN_FILE=toolchains/mingw-w32.cmake -DWIN32=ON -DWIN32=true -B build
|
||||
cd build
|
||||
make -j12
|
||||
cd ..
|
||||
mkdir OUTPUT-w32
|
||||
cp build/src/RCRAFT.exe OUTPUT-w32/CubeGame.exe
|
||||
cp -r data/resources OUTPUT-w32
|
||||
mkdir OUTPUT-w32/user
|
||||
mkdir OUTPUT-w32/user/worlds
|
||||
@@ -0,0 +1,17 @@
|
||||
#/usr/bin/bash
|
||||
|
||||
./makeheaders/makeheaders -h src/helpers/vars.hpp src/helpers/chunks.cpp src/helpers/debug.cpp src/helpers/entities.cpp src/helpers/input.cpp src/helpers/menu.cpp src/helpers/mesher.cpp src/helpers/networking.cpp src/helpers/utils.cpp src/helpers/inlines.hpp src/helpers/inventory.cpp src/helpers/locale.cpp src/helpers/recipes.cpp src/helpers/particles.cpp src/helpers/player.cpp src/helpers/multisound.cpp src/helpers/svlib.cpp -v > tmp.hpp
|
||||
cat additions.hpp tmp.hpp > src/helpers/common.hpp
|
||||
rm tmp.hpp
|
||||
|
||||
echo Building x86-64 Windows...
|
||||
rm -rf build
|
||||
cmake -DCMAKE_TOOLCHAIN_FILE=toolchains/mingw-w64.cmake -DWIN32=ON -DWIN32=true -B build
|
||||
cd build
|
||||
make -j12
|
||||
cd ..
|
||||
mkdir OUTPUT-w64
|
||||
cp build/src/RCRAFT.exe OUTPUT-w64/CubeGame.exe
|
||||
cp -r data/resources OUTPUT-w64
|
||||
mkdir OUTPUT-w64/user
|
||||
mkdir OUTPUT-w64/user/worlds
|
||||
+12
-8
@@ -2,24 +2,28 @@ cmake_minimum_required(VERSION 3.23)
|
||||
|
||||
project(RCRAFT)
|
||||
add_subdirectory(helpers)
|
||||
#add_subdirectory(dedicated_server)
|
||||
|
||||
set(YAML_BUILD_SHARED_LIBS OFF)
|
||||
set(YAML_MSVC_SHARED_RT OFF)
|
||||
set(OPENGL_VERSION 4.3)
|
||||
set(OPENGL_VERSION 1.1)
|
||||
|
||||
add_subdirectory(libraries/raylib)
|
||||
add_subdirectory(libraries/enet)
|
||||
add_subdirectory(libraries/yaml-cpp)
|
||||
add_subdirectory(libraries/Lua)
|
||||
if (WIN32)
|
||||
add_compile_definitions(WIN32)
|
||||
add_compile_options(-DWIN32)
|
||||
link_libraries(ws2_32)
|
||||
endif()
|
||||
|
||||
execute_process(COMMAND date +v.%yw%W OUTPUT_VARIABLE BUILD_DATE OUTPUT_STRIP_TRAILING_WHITESPACE)
|
||||
add_compile_definitions(GAME_VERSION="${BUILD_DATE}")
|
||||
|
||||
add_executable(RCRAFT rcraft.cpp)
|
||||
|
||||
if (WIN32)
|
||||
add_compile_definitions(WIN32)
|
||||
add_compile_options(-DWIN32)
|
||||
target_link_libraries(RCRAFT INTERFACE winmm ws2_32)
|
||||
endif()
|
||||
add_compile_options(-Wno-narrowing)
|
||||
target_link_directories(RCRAFT PRIVATE ${CMAKE_SOURCE_DIR}/build/src/libraries/enet/)
|
||||
target_include_directories(RCRAFT PRIVATE
|
||||
libraries/enet/include/.
|
||||
libraries/yaml-cpp/include/.
|
||||
@@ -28,8 +32,8 @@ target_include_directories(RCRAFT PRIVATE
|
||||
)
|
||||
target_link_libraries(RCRAFT PRIVATE
|
||||
raylib
|
||||
enet
|
||||
helpers
|
||||
enet
|
||||
yaml-cpp
|
||||
lua_static
|
||||
)
|
||||
@@ -18,6 +18,12 @@ add_library(helpers STATIC
|
||||
svlib.cpp
|
||||
)
|
||||
|
||||
if (WIN32)
|
||||
add_compile_definitions(WIN32)
|
||||
add_compile_options(-DWIN32)
|
||||
target_link_libraries(helpers INTERFACE winmm ws2_32)
|
||||
endif()
|
||||
|
||||
execute_process(COMMAND date +v.%yw%W OUTPUT_VARIABLE BUILD_DATE OUTPUT_STRIP_TRAILING_WHITESPACE)
|
||||
add_compile_definitions(GAME_VERSION="${BUILD_DATE}")
|
||||
|
||||
@@ -36,4 +42,4 @@ target_sources(helpers
|
||||
FILE_SET headers TYPE HEADERS BASE_DIRS ${CMAKE_CURRENT_SOURCE_DIR} FILES common.hpp
|
||||
)
|
||||
|
||||
target_link_libraries(helpers PRIVATE raylib yaml-cpp lua_static)
|
||||
target_link_libraries(helpers PRIVATE raylib yaml-cpp lua_static enet)
|
||||
+10
-5
@@ -1,9 +1,16 @@
|
||||
#if defined(WIN32)
|
||||
#include "external/fix_win32_compatibility.h"
|
||||
#ifdef WIN32 // FUCK WINDOWS
|
||||
#include "external/fix_win32_compatibility.h"
|
||||
#undef PlaySound
|
||||
#endif
|
||||
|
||||
#include <enet/enet.h>
|
||||
|
||||
#ifdef WIN32 // FUCK WINDOWS 2
|
||||
#undef PlaySound
|
||||
#undef Sound
|
||||
#endif
|
||||
#include "glfw_keycodes_to_string.h"
|
||||
#include "../PerlinNoise.hpp"
|
||||
#include <enet/enet.h>
|
||||
#include "raylib.h"
|
||||
#include "raymath.h"
|
||||
#include <stdint.h>
|
||||
@@ -371,7 +378,6 @@ extern int currentlySelected;
|
||||
extern GameState state;
|
||||
extern Texture2D cubemap;
|
||||
int TryConnect(const char *hostname);
|
||||
void InitSingleplayer();
|
||||
void GameModeCleanup();
|
||||
void DrawBackground();
|
||||
void InitMenu();
|
||||
@@ -610,7 +616,6 @@ void SavePlayerData();
|
||||
bool LoadPlayerData();
|
||||
void MS_PlaySound(Sound src,float pitch,float volume,Vector3 position);
|
||||
void MS_Update(float dt,Camera camera);
|
||||
void StartInternalServer(bool&started);
|
||||
void ServerNetworkUpdate();
|
||||
void StopInternalServer();
|
||||
#define INTERFACE 0
|
||||
|
||||
@@ -29,7 +29,7 @@ static int MakeUIPOI(int x, int y) {
|
||||
std::unordered_set<uint32_t> ui_pois;
|
||||
|
||||
int TryConnect(const char* hostname);
|
||||
void InitSingleplayer();
|
||||
//void InitSingleplayer();
|
||||
void GameModeCleanup();
|
||||
|
||||
static int mouseX = -1;
|
||||
@@ -503,7 +503,7 @@ void DrawWorldSelect() {
|
||||
}
|
||||
if (Button(LocaleGet("create_world").c_str(), GetScreenWidth()/2+196-128, GetScreenHeight()-48, 128, 0)) {
|
||||
UIResetMousePos();
|
||||
InitSingleplayer();
|
||||
//InitSingleplayer();
|
||||
return;
|
||||
}
|
||||
if (Button(LocaleGet("create_world").c_str(), GetScreenWidth()/2+196-128, GetScreenHeight()-48-48, 128, 0)) {
|
||||
|
||||
@@ -9,6 +9,7 @@
|
||||
|
||||
#ifndef SERVER
|
||||
#ifndef LEGACY_GL
|
||||
|
||||
MeshData GenerateChunkMesh(ChunkRenderData chunkRenderData, Chunk chunk, int chunkWorldX, int chunkWorldY, uint8_t sideMask)
|
||||
{
|
||||
MeshData out = {0};
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
#include <cstdio>
|
||||
#include "common.hpp"
|
||||
#include <cstring>
|
||||
|
||||
#include <iostream>
|
||||
|
||||
int NetworkingStart()
|
||||
{
|
||||
@@ -10,7 +10,7 @@ int NetworkingStart()
|
||||
fprintf (stderr, "An error occurred while initializing ENet.\n");
|
||||
return EXIT_FAILURE;
|
||||
}
|
||||
atexit(enet_deinitialize);
|
||||
return 0;
|
||||
}
|
||||
|
||||
ENetHost* StartServer() {
|
||||
@@ -57,7 +57,7 @@ ENetHost* StartClient() {
|
||||
void SendPacket(ENetPeer* peer, void* data, int len)
|
||||
{
|
||||
ENetPacket* packet = enet_packet_create(data, len, ENET_PACKET_FLAG_UNSEQUENCED);
|
||||
|
||||
std::cout << (packet == NULL) << std::endl;
|
||||
int c = enet_peer_send(peer, 0, packet);
|
||||
if(c!=0) {
|
||||
printf("Failed sending packet! ");
|
||||
|
||||
@@ -50,6 +50,7 @@ void LoadRecipes() {
|
||||
{
|
||||
Recipe _recipe;
|
||||
const std::string path = dir_entry.path().u8string();
|
||||
std::cout << "loading " << path << std::endl;
|
||||
YAML::Node recipe = YAML::LoadFile(path);
|
||||
_recipe.requiredStation = recipe["station"].as<std::string>();
|
||||
for (auto s : recipe["inputs"]) {
|
||||
|
||||
+12
-9
@@ -8,6 +8,7 @@
|
||||
#include <memory>
|
||||
#include <filesystem>
|
||||
#include <lua.hpp>
|
||||
#include <atomic>
|
||||
|
||||
static std::list<NetPlayer> players;
|
||||
static Chunk world[MAX_WORLD_AREA];
|
||||
@@ -163,6 +164,9 @@ static int PeerToPlayerID(ENetPeer* peer) {
|
||||
return -1;
|
||||
}
|
||||
|
||||
static bool CompareAddress(NetPlayer plr, ENetPeer* peer) {
|
||||
return plr.addr == peer->address.host && plr.port == (int)(peer->address.port);
|
||||
}
|
||||
static void ParseData(ENetPacket* packet, ENetPeer* peer) {
|
||||
int len = packet->dataLength;
|
||||
unsigned char data[len];
|
||||
@@ -191,7 +195,7 @@ static void ParseData(ENetPacket* packet, ENetPeer* peer) {
|
||||
response[0] = NET_ARG_ECHOMOVE;
|
||||
for (NetPlayer &plr : players)
|
||||
{
|
||||
if(plr.addr == peer->address.host && plr.port == peer->address.port) {
|
||||
if(CompareAddress(plr, peer)) {
|
||||
float x = DeserializeFloat(data[1], data[2]);
|
||||
float y = DeserializeFloat(data[3], data[4]);
|
||||
float z = DeserializeFloat(data[5], data[6]);
|
||||
@@ -211,7 +215,7 @@ static void ParseData(ENetPacket* packet, ENetPeer* peer) {
|
||||
response[0] = NET_ARG_ECHOYAW;
|
||||
for (NetPlayer &plr : players)
|
||||
{
|
||||
if(plr.addr == peer->address.host && plr.port == peer->address.port) {
|
||||
if(CompareAddress(plr, peer)) {
|
||||
response[1] = plr.id;
|
||||
plr.yaw = data[1];
|
||||
response[2] = plr.yaw;
|
||||
@@ -226,7 +230,7 @@ static void ParseData(ENetPacket* packet, ENetPeer* peer) {
|
||||
{
|
||||
unsigned char responseP[9];
|
||||
responseP[0] = NET_ARG_PLRREG;
|
||||
if(plr.addr != peer->address.host || plr.port != peer->address.port) {
|
||||
if(!CompareAddress(plr, peer)) {
|
||||
SerializeFloat2Data(plr.x, responseP, 2);
|
||||
SerializeFloat2Data(plr.y, responseP, 4);
|
||||
SerializeFloat2Data(plr.z, responseP, 6);
|
||||
@@ -240,7 +244,7 @@ static void ParseData(ENetPacket* packet, ENetPeer* peer) {
|
||||
response[0] = NET_ARG_BLOCK;
|
||||
for (NetPlayer &plr : players)
|
||||
{
|
||||
if(plr.addr == peer->address.host || plr.port == peer->address.port) {
|
||||
if(CompareAddress(plr, peer)) {
|
||||
unsigned char responseB[6];
|
||||
responseB[0] = NET_ARG_BLOCK;
|
||||
responseB[1] = plr.id;
|
||||
@@ -268,7 +272,7 @@ static int FirstFreeID(const std::list<NetPlayer>& players) {
|
||||
return id;
|
||||
}
|
||||
static bool serverStarted = false;
|
||||
void StartInternalServer(bool& started) {
|
||||
void StartInternalServer(std::atomic_bool& started) {
|
||||
int worldType = 0;
|
||||
InitWorldgen(worldType);
|
||||
std::cout << "Building chunks..." << std::endl;
|
||||
@@ -290,7 +294,7 @@ void StartInternalServer(bool& started) {
|
||||
void ServerNetworkUpdate() {
|
||||
if(serverStarted) {
|
||||
ENetEvent event;
|
||||
while(enet_host_service (server, &event, 1) > 0)
|
||||
while(enet_host_service (server, &event, 0) > 0)
|
||||
{
|
||||
switch (event.type)
|
||||
{
|
||||
@@ -308,7 +312,7 @@ void ServerNetworkUpdate() {
|
||||
NetPlayer netPlayer;
|
||||
netPlayer.id = id;
|
||||
netPlayer.addr = event.peer->address.host;
|
||||
netPlayer.port = event.peer->address.port;
|
||||
netPlayer.port = (int)(event.peer->address.port);
|
||||
netPlayer.peer = event.peer;
|
||||
players.push_back(netPlayer);
|
||||
|
||||
@@ -316,7 +320,6 @@ void ServerNetworkUpdate() {
|
||||
response[1] = netPlayer.id;
|
||||
BroadcastPacketR(server, response, sizeof(response));
|
||||
}
|
||||
// notify plugins
|
||||
CallPluginOnConnect(id);
|
||||
break;
|
||||
|
||||
@@ -329,7 +332,7 @@ void ServerNetworkUpdate() {
|
||||
printf ("%s disconnected.\n", event.peer -> data);
|
||||
event.peer -> data = NULL;
|
||||
for (auto it = players.begin(); it != players.end(); ++it) {
|
||||
if (it->addr == event.peer->address.host && it->port == event.peer->address.port) {
|
||||
if (CompareAddress(*it, event.peer)) {
|
||||
char responseD[2];
|
||||
responseD[0] = NET_ARG_PLRDCN;
|
||||
responseD[1] = it->id;
|
||||
|
||||
@@ -1,18 +1,15 @@
|
||||
#if INTERFACE
|
||||
|
||||
#ifdef WIN32
|
||||
#include "external/fix_win32_compatibility.h"
|
||||
#endif
|
||||
#ifdef Escape
|
||||
#undef Escape
|
||||
#endif
|
||||
#include "glfw_keycodes_to_string.h"
|
||||
#include "../PerlinNoise.hpp"
|
||||
|
||||
#include <enet/enet.h>
|
||||
#ifdef PlaySound
|
||||
#undef PlaySound
|
||||
#ifdef WIN32
|
||||
#include "external/fix_win32_compatibility.h"
|
||||
#endif
|
||||
|
||||
#include "raylib.h"
|
||||
#include "raymath.h"
|
||||
#include <stdint.h>
|
||||
|
||||
+24
-16
@@ -16,6 +16,7 @@
|
||||
#include <climits>
|
||||
#include <queue>
|
||||
#include <thread>
|
||||
#include <atomic>
|
||||
#define MAX_RAY_DISTANCE 8.0f
|
||||
struct MessageData {
|
||||
std::string message;
|
||||
@@ -450,7 +451,7 @@ void SetBlockNetwork(Chunk world[], int bx, int by, int bz, int t) {
|
||||
data[2] = (uint8_t)by;
|
||||
data[3] = (uint8_t)bz;
|
||||
data[4] = (uint8_t)t;
|
||||
SendPacketR(peer, data, 5);
|
||||
SendPacketR(peer, data, sizeof(data));
|
||||
}
|
||||
else {
|
||||
SetBlock(world, bx, by, bz, t);
|
||||
@@ -481,7 +482,7 @@ static void TickAvailableBlocks() {
|
||||
}
|
||||
}
|
||||
}
|
||||
static bool serverStarted;
|
||||
std::atomic_bool serverStarted;
|
||||
int TryConnect(const char* hostname) {
|
||||
client = StartClient();
|
||||
|
||||
@@ -506,16 +507,14 @@ int TryConnect(const char* hostname) {
|
||||
"No available peers for initiating an ENet connection.\n");
|
||||
return NET_ERROR_NOTFOUND;
|
||||
}
|
||||
printf("Found a host\n");
|
||||
while (!serverStarted)
|
||||
|
||||
if (enet_host_service (client, & event, 5000) > 0 &&
|
||||
event.type == ENET_EVENT_TYPE_CONNECT)
|
||||
{
|
||||
if(!online) serverStarted = true;
|
||||
}
|
||||
if (enet_host_service (client, & event, 10000) && event.type == ENET_EVENT_TYPE_CONNECT){
|
||||
puts ("Connection succeeded.");
|
||||
char data[1];
|
||||
data[0] = NET_ARG_REQWORLD;
|
||||
SendPacketR(peer, data, 1); // Tell the server to send all chunks
|
||||
SendPacketR(peer, data, 1);
|
||||
online = true;
|
||||
state = GAME_STATE_LOADING;
|
||||
return 0;
|
||||
@@ -529,22 +528,26 @@ int TryConnect(const char* hostname) {
|
||||
return -1;
|
||||
}
|
||||
|
||||
std::thread serverThread;
|
||||
|
||||
void ServerThread(bool& started) {
|
||||
//std::thread serverThread;
|
||||
std::atomic_bool stop_server = false;
|
||||
void StartInternalServer(std::atomic_bool& started);
|
||||
/*void ServerThread(std::atomic_bool& started) {
|
||||
StartInternalServer(started);
|
||||
stop_server = false;
|
||||
while(true) {
|
||||
if (stop_server)
|
||||
return;
|
||||
ServerNetworkUpdate();
|
||||
}
|
||||
}
|
||||
void InitSingleplayer() {
|
||||
}*/
|
||||
/*void InitSingleplayer() {
|
||||
online = true;
|
||||
serverThread = std::thread(ServerThread, std::ref(serverStarted));
|
||||
int result = TryConnect("localhost");
|
||||
if(result == NET_ERROR_FAILED) {
|
||||
state = GAME_STATE_MAINMENU;
|
||||
}
|
||||
}
|
||||
}*/
|
||||
std::vector<MessageData> messages;
|
||||
bool survival = false;
|
||||
bool chatOpen = false;
|
||||
@@ -1400,10 +1403,14 @@ void NetworkUpdate() {
|
||||
|
||||
void GameModeCleanupFull() {
|
||||
if(online) {
|
||||
|
||||
enet_host_destroy(client);
|
||||
online = false;
|
||||
}
|
||||
|
||||
|
||||
stop_server = true;
|
||||
//serverThread.join();
|
||||
|
||||
for (int idx = 0; idx < MAX_WORLD_AREA; idx++)
|
||||
{
|
||||
if(loadedChunks[idx]) {
|
||||
@@ -1432,6 +1439,7 @@ extern void InitMenu();
|
||||
int main(void)
|
||||
{
|
||||
SetTraceLogLevel(LOG_WARNING);
|
||||
NetworkingStart();
|
||||
SetConfigFlags(FLAG_WINDOW_RESIZABLE);
|
||||
InitWindow(WIDTH, HEIGHT, GAME_NAME);
|
||||
InitWorldgen(0);
|
||||
@@ -1595,7 +1603,7 @@ int main(void)
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
enet_deinitialize();
|
||||
GameModeCleanupFull();
|
||||
|
||||
UnloadTexture(terrain);
|
||||
|
||||
@@ -0,0 +1,14 @@
|
||||
set(CMAKE_SYSTEM_NAME Windows)
|
||||
set(CMAKE_SYSTEM_VERSION 1)
|
||||
|
||||
set(CMAKE_C_COMPILER i686-w64-mingw32-gcc)
|
||||
set(CMAKE_CXX_COMPILER i686-w64-mingw32-g++)
|
||||
set(CMAKE_RC_COMPILER i686-w64-mingw32-windres)
|
||||
|
||||
set(CMAKE_FIND_ROOT_PATH_MODE_PROGRAM NEVER)
|
||||
set(CMAKE_FIND_ROOT_PATH_MODE_LIBRARY ONLY)
|
||||
set(CMAKE_FIND_ROOT_PATH_MODE_INCLUDE ONLY)
|
||||
set(CMAKE_FIND_ROOT_PATH_MODE_PACKAGE ONLY)
|
||||
|
||||
set(CMAKE_C_FLAGS "-static-libgcc -static-libstdc++ -g -O0 -fno-omit-frame-pointer ${CMAKE_C_FLAGS}")
|
||||
set(CMAKE_CXX_FLAGS "-static-libgcc -static-libstdc++ -g -O0 -fno-omit-frame-pointer ${CMAKE_CXX_FLAGS}")
|
||||
Reference in New Issue
Block a user