forked from mirror/openmw-tes3mp
[General] Add packet GUIWindow
This commit is contained in:
parent
0a35b897be
commit
c276ff4bd9
6 changed files with 112 additions and 2 deletions
|
@ -195,6 +195,33 @@ namespace mwmp
|
||||||
std::string data;
|
std::string data;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
struct GUIWindow
|
||||||
|
{
|
||||||
|
int32_t id;
|
||||||
|
short width, height;
|
||||||
|
enum class WidgetType: int
|
||||||
|
{
|
||||||
|
Button,
|
||||||
|
Editbox,
|
||||||
|
Label,
|
||||||
|
ListBoxActive,
|
||||||
|
ListBoxPassive,
|
||||||
|
Slider
|
||||||
|
};
|
||||||
|
|
||||||
|
struct Widget
|
||||||
|
{
|
||||||
|
WidgetType type;
|
||||||
|
std::string name;
|
||||||
|
bool disabled;
|
||||||
|
short posX, posY;
|
||||||
|
short width, height;
|
||||||
|
std::vector<std::string> data;
|
||||||
|
};
|
||||||
|
|
||||||
|
std::vector<Widget> widgets;
|
||||||
|
};
|
||||||
|
|
||||||
BasePlayer(RakNet::RakNetGUID guid) : guid(guid)
|
BasePlayer(RakNet::RakNetGUID guid) : guid(guid)
|
||||||
{
|
{
|
||||||
inventoryChanges.action = 0;
|
inventoryChanges.action = 0;
|
||||||
|
@ -219,6 +246,7 @@ namespace mwmp
|
||||||
GUIMessageBox guiMessageBox;
|
GUIMessageBox guiMessageBox;
|
||||||
int month;
|
int month;
|
||||||
int day;
|
int day;
|
||||||
|
GUIWindow guiWindow;
|
||||||
double hour;
|
double hour;
|
||||||
|
|
||||||
AttributeChanges attributeChanges;
|
AttributeChanges attributeChanges;
|
||||||
|
|
|
@ -3,6 +3,7 @@
|
||||||
#include "../Packets/Player/PacketPlayerCharGen.hpp"
|
#include "../Packets/Player/PacketPlayerCharGen.hpp"
|
||||||
#include "../Packets/Player/PacketHandshake.hpp"
|
#include "../Packets/Player/PacketHandshake.hpp"
|
||||||
#include "../Packets/Player/PacketGUIBoxes.hpp"
|
#include "../Packets/Player/PacketGUIBoxes.hpp"
|
||||||
|
#include "../Packets/Player/PacketGUIWindow.hpp"
|
||||||
#include "../Packets/Player/PacketLoaded.hpp"
|
#include "../Packets/Player/PacketLoaded.hpp"
|
||||||
#include "../Packets/Player/PacketGameSettings.hpp"
|
#include "../Packets/Player/PacketGameSettings.hpp"
|
||||||
#include "../Packets/Player/PacketGameTime.hpp"
|
#include "../Packets/Player/PacketGameTime.hpp"
|
||||||
|
@ -54,6 +55,7 @@ mwmp::PlayerPacketController::PlayerPacketController(RakNet::RakPeerInterface *p
|
||||||
AddPacket<PacketChatMessage>(&packets, peer);
|
AddPacket<PacketChatMessage>(&packets, peer);
|
||||||
AddPacket<PacketHandshake>(&packets, peer);
|
AddPacket<PacketHandshake>(&packets, peer);
|
||||||
AddPacket<PacketGUIBoxes>(&packets, peer);
|
AddPacket<PacketGUIBoxes>(&packets, peer);
|
||||||
|
AddPacket<PacketGUIWindow>(&packets, peer);
|
||||||
AddPacket<PacketLoaded>(&packets, peer);
|
AddPacket<PacketLoaded>(&packets, peer);
|
||||||
AddPacket<PacketGameSettings>(&packets, peer);
|
AddPacket<PacketGameSettings>(&packets, peer);
|
||||||
AddPacket<PacketGameTime>(&packets, peer);
|
AddPacket<PacketGameTime>(&packets, peer);
|
||||||
|
@ -95,7 +97,7 @@ mwmp::PlayerPacketController::PlayerPacketController(RakNet::RakPeerInterface *p
|
||||||
|
|
||||||
mwmp::PlayerPacket *mwmp::PlayerPacketController::GetPacket(RakNet::MessageID id)
|
mwmp::PlayerPacket *mwmp::PlayerPacketController::GetPacket(RakNet::MessageID id)
|
||||||
{
|
{
|
||||||
return packets[(unsigned char)id].get();
|
return packets[(RakNet::MessageID)id].get();
|
||||||
}
|
}
|
||||||
|
|
||||||
void mwmp::PlayerPacketController::SetStream(RakNet::BitStream *inStream, RakNet::BitStream *outStream)
|
void mwmp::PlayerPacketController::SetStream(RakNet::BitStream *inStream, RakNet::BitStream *outStream)
|
||||||
|
|
|
@ -18,7 +18,7 @@ namespace mwmp
|
||||||
|
|
||||||
bool ContainsPacket(RakNet::MessageID id);
|
bool ContainsPacket(RakNet::MessageID id);
|
||||||
|
|
||||||
typedef std::unordered_map<unsigned char, std::unique_ptr<PlayerPacket> > packets_t;
|
typedef std::unordered_map<RakNet::MessageID, std::unique_ptr<PlayerPacket> > packets_t;
|
||||||
private:
|
private:
|
||||||
packets_t packets;
|
packets_t packets;
|
||||||
};
|
};
|
||||||
|
|
|
@ -17,6 +17,7 @@ enum GameMessages
|
||||||
ID_HANDSHAKE,
|
ID_HANDSHAKE,
|
||||||
ID_LOADED,
|
ID_LOADED,
|
||||||
ID_GUI_MESSAGEBOX,
|
ID_GUI_MESSAGEBOX,
|
||||||
|
ID_GUI_WINDOW,
|
||||||
|
|
||||||
ID_GAME_TIME,
|
ID_GAME_TIME,
|
||||||
ID_GAME_WEATHER,
|
ID_GAME_WEATHER,
|
||||||
|
|
60
components/openmw-mp/Packets/Player/PacketGUIWindow.cpp
Normal file
60
components/openmw-mp/Packets/Player/PacketGUIWindow.cpp
Normal file
|
@ -0,0 +1,60 @@
|
||||||
|
//
|
||||||
|
// Created by koncord on 15.11.17.
|
||||||
|
//
|
||||||
|
|
||||||
|
#include <components/openmw-mp/NetworkMessages.hpp>
|
||||||
|
#include "PacketGUIWindow.hpp"
|
||||||
|
|
||||||
|
using namespace mwmp;
|
||||||
|
|
||||||
|
PacketGUIWindow::PacketGUIWindow(RakNet::RakPeerInterface *peer) : PlayerPacket(peer)
|
||||||
|
{
|
||||||
|
|
||||||
|
packetID = ID_GUI_WINDOW;
|
||||||
|
orderChannel = CHANNEL_SYSTEM;
|
||||||
|
}
|
||||||
|
|
||||||
|
void PacketGUIWindow::Packet(RakNet::BitStream *bs, bool send)
|
||||||
|
{
|
||||||
|
BasePacket::Packet(bs, send);
|
||||||
|
|
||||||
|
RW(player->guiWindow.id, send);
|
||||||
|
RW(player->guiWindow.height, send);
|
||||||
|
RW(player->guiWindow.width, send);
|
||||||
|
|
||||||
|
int32_t size;
|
||||||
|
if (send)
|
||||||
|
size = player->guiWindow.widgets.size();
|
||||||
|
RW(size, send);
|
||||||
|
|
||||||
|
if(!send)
|
||||||
|
player->guiWindow.widgets.resize(size);
|
||||||
|
|
||||||
|
|
||||||
|
for (auto &&widget : player->guiWindow.widgets)
|
||||||
|
{
|
||||||
|
RW(widget.type, send);
|
||||||
|
RW(widget.name, send);
|
||||||
|
RW(widget.posX, send);
|
||||||
|
RW(widget.posY, send);
|
||||||
|
|
||||||
|
if (widget.type != BasePlayer::GUIWindow::WidgetType::Label)
|
||||||
|
{
|
||||||
|
RW(widget.disabled, send);
|
||||||
|
|
||||||
|
if(widget.type != BasePlayer::GUIWindow::WidgetType::Button)
|
||||||
|
{
|
||||||
|
RW(widget.width, send);
|
||||||
|
RW(widget.height, send);
|
||||||
|
|
||||||
|
size = widget.data.size();
|
||||||
|
RW(size, send);
|
||||||
|
if (!send)
|
||||||
|
widget.data.resize(size);
|
||||||
|
for (auto &&str : widget.data)
|
||||||
|
RW(str, send);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
19
components/openmw-mp/Packets/Player/PacketGUIWindow.hpp
Normal file
19
components/openmw-mp/Packets/Player/PacketGUIWindow.hpp
Normal file
|
@ -0,0 +1,19 @@
|
||||||
|
//
|
||||||
|
// Created by koncord on 15.11.17.
|
||||||
|
//
|
||||||
|
|
||||||
|
#pragma once
|
||||||
|
|
||||||
|
|
||||||
|
#include <components/openmw-mp/Packets/Player/PlayerPacket.hpp>
|
||||||
|
|
||||||
|
namespace mwmp
|
||||||
|
{
|
||||||
|
class PacketGUIWindow : public PlayerPacket
|
||||||
|
{
|
||||||
|
public:
|
||||||
|
PacketGUIWindow(RakNet::RakPeerInterface *peer);
|
||||||
|
|
||||||
|
virtual void Packet(RakNet::BitStream *bs, bool send);
|
||||||
|
};
|
||||||
|
}
|
Loading…
Reference in a new issue