# HG changeset patch # User unc0rr # Date 1470168497 -10800 # Node ID 93e6c401cc3df63b50e9e295ce0f3680c99f6688 # Parent 6adf27e85caeb852fdb234f5bab35a89aff226fd Preparation to sending engine messages to net. diff -r 6adf27e85cae -r 93e6c401cc3d hedgewars/uFLNet.pas --- a/hedgewars/uFLNet.pas Fri Jul 15 22:39:07 2016 +0300 +++ b/hedgewars/uFLNet.pas Tue Aug 02 23:08:17 2016 +0300 @@ -1,5 +1,6 @@ unit uFLNet; interface +uses SDLh; procedure connectOfficialServer; @@ -7,11 +8,12 @@ procedure freeModule; procedure sendNet(s: shortstring); procedure sendNetLn(s: shortstring); +procedure passToNet(data: PByteArray; len: Longword); var isConnected: boolean = false; implementation -uses SDLh, uFLIPC, uFLTypes, uFLUICallback, uFLNetTypes, uFLUtils; +uses uFLIPC, uFLUICallback, uFLNetTypes, uFLUtils, uFLTypes; const endCmd: shortstring = #10 + #10; @@ -378,7 +380,7 @@ procedure netSendCallback(p: pointer; msg: PChar; len: Longword); begin - // W A R N I N G: totally thread-unsafe due to use of sock variable + // FIXME W A R N I N G: totally thread-unsafe due to use of sock variable SDLNet_TCP_Send(sock, msg, len); end; @@ -397,6 +399,24 @@ SDL_DetachThread(netReaderThread) end; + +procedure passToNet(data: PByteArray; len: Longword); +var i: Longword; +begin + i:= 0; + + while(i < len) do + begin + if data^[i + 1] = ord('s') then + begin + sendUI(mtRoomChatLine, @(data^[i + 2]), data^[i]); + //sendChatLine() + end; + + inc(i, data^[i] + 1); + end; +end; + procedure initModule; begin sock:= nil; diff -r 6adf27e85cae -r 93e6c401cc3d hedgewars/uFLTypes.pas --- a/hedgewars/uFLTypes.pas Fri Jul 15 22:39:07 2016 +0300 +++ b/hedgewars/uFLTypes.pas Tue Aug 02 23:08:17 2016 +0300 @@ -9,7 +9,7 @@ TMessageType = (mtRenderingPreview, mtPreview, mtPreviewHogCount , mtAddPlayingTeam, mtRemovePlayingTeam , mtAddTeam, mtRemoveTeam, mtTeamColor, mtHedgehogsNumber - , mtNetData + , mtNetData, mtToNet , mtFlibEvent, mtConnected, mtDisconnected, mtAddLobbyClient , mtRemoveLobbyClient, mtLobbyChatLine, mtAddRoomClient , mtRemoveRoomClient, mtRoomChatLine, mtAddRoom, mtUpdateRoom diff -r 6adf27e85cae -r 93e6c401cc3d hedgewars/uFLUICallback.pas --- a/hedgewars/uFLUICallback.pas Fri Jul 15 22:39:07 2016 +0300 +++ b/hedgewars/uFLUICallback.pas Tue Aug 02 23:08:17 2016 +0300 @@ -23,6 +23,7 @@ if isGame then begin + uiCallbackFunction(uiCallbackPointer, mtToNet, msg, len) end else begin if len = 128 * 256 then diff -r 6adf27e85cae -r 93e6c401cc3d qmlFrontend/flib.h --- a/qmlFrontend/flib.h Fri Jul 15 22:39:07 2016 +0300 +++ b/qmlFrontend/flib.h Tue Aug 02 23:08:17 2016 +0300 @@ -18,6 +18,7 @@ , MSG_TEAMCOLOR , MSG_HEDGEHOGSNUMBER , MSG_NETDATA + , MSG_TONET , MSG_FLIBEVENT , MSG_CONNECTED , MSG_DISCONNECTED @@ -73,6 +74,7 @@ typedef void flibInit_t(const char * localPrefix, const char * userPrefix); typedef void flibFree_t(); typedef void passNetData_t(const char * data); +typedef void passToNet_t(const char * data, uint32_t size); typedef void passFlibEvent_t(const char * data); typedef void sendChatLine_t(const char * msg); typedef void joinRoom_t(const char * roomName); diff -r 6adf27e85cae -r 93e6c401cc3d qmlFrontend/hwengine.cpp --- a/qmlFrontend/hwengine.cpp Fri Jul 15 22:39:07 2016 +0300 +++ b/qmlFrontend/hwengine.cpp Tue Aug 02 23:08:17 2016 +0300 @@ -36,6 +36,7 @@ connectOfficialServer_t * flibConnectOfficialServer; passNetData_t * flibPassNetData; + passToNet_t * flibPassToNet; passFlibEvent_t * flibPassFlibEvent; sendChatLine_t * flibSendChatLine; joinRoom_t * flibJoinRoom; @@ -90,6 +91,7 @@ flibConnectOfficialServer = (connectOfficialServer_t*) hwlib.resolve("connectOfficialServer"); flibPassNetData = (passNetData_t*) hwlib.resolve("passNetData"); + flibPassToNet = (passToNet_t*) hwlib.resolve("passToNet"); flibPassFlibEvent = (passFlibEvent_t*) hwlib.resolve("passFlibEvent"); flibSendChatLine = (sendChatLine_t*) hwlib.resolve("sendChatLine"); flibJoinRoom = (joinRoom_t*) hwlib.resolve("joinRoom"); @@ -201,6 +203,10 @@ flibPassNetData(msg.constData()); break; } + case MSG_TONET: { + flibPassToNet(msg.constData(), msg.size()); + break; + } case MSG_FLIBEVENT: { flibPassFlibEvent(msg.constData()); break;