1
0
Fork 1
mirror of https://github.com/TES3MP/openmw-tes3mp.git synced 2025-02-06 09:45:32 +00:00

Add and implement ID_MUSIC_PLAY

This commit is contained in:
David Cernat 2016-11-20 22:54:49 +02:00
parent f9ca98498d
commit ae39daf76a
11 changed files with 79 additions and 9 deletions

View file

@ -570,6 +570,21 @@ void Networking::processWorldPacket(RakNet::Packet *packet)
break; break;
} }
case ID_MUSIC_PLAY:
{
LOG_MESSAGE_SIMPLE(Log::LOG_WARN, "Received ID_MUSIC_PLAY from %s",
player->Npc()->mName.c_str());
myPacket->Read(event);
LOG_APPEND(Log::LOG_WARN, "- filename: %s",
event->filename.c_str());
myPacket->Send(event, true);
break;
}
case ID_VIDEO_PLAY: case ID_VIDEO_PLAY:
{ {
LOG_MESSAGE_SIMPLE(Log::LOG_WARN, "Received ID_VIDEO_PLAY from %s", LOG_MESSAGE_SIMPLE(Log::LOG_WARN, "Received ID_VIDEO_PLAY from %s",
@ -577,8 +592,8 @@ void Networking::processWorldPacket(RakNet::Packet *packet)
myPacket->Read(event); myPacket->Read(event);
LOG_APPEND(Log::LOG_WARN, "- video: %s\n- allowSkipping: %s", LOG_APPEND(Log::LOG_WARN, "- filename: %s\n- allowSkipping: %s",
event->video.c_str(), event->filename.c_str(),
event->allowSkipping ? "true" : "false"); event->allowSkipping ? "true" : "false");
myPacket->Send(event, true); myPacket->Send(event, true);

View file

@ -10,6 +10,7 @@
#include "../mwbase/world.hpp" #include "../mwbase/world.hpp"
#include "../mwbase/environment.hpp" #include "../mwbase/environment.hpp"
#include "../mwbase/mechanicsmanager.hpp" #include "../mwbase/mechanicsmanager.hpp"
#include "../mwbase/soundmanager.hpp"
#include "../mwbase/windowmanager.hpp" #include "../mwbase/windowmanager.hpp"
#include "../mwworld/cellstore.hpp" #include "../mwworld/cellstore.hpp"
@ -946,14 +947,24 @@ void Networking::processWorldPacket(RakNet::Packet *packet)
break; break;
} }
case ID_MUSIC_PLAY:
{
LOG_MESSAGE_SIMPLE(Log::LOG_WARN, "Received ID_MUSIC_PLAY");
LOG_APPEND(Log::LOG_WARN, "- filename: %s",
event->filename.c_str());
MWBase::Environment::get().getSoundManager()->streamMusic(event->filename);
break;
}
case ID_VIDEO_PLAY: case ID_VIDEO_PLAY:
{ {
LOG_MESSAGE_SIMPLE(Log::LOG_WARN, "Received ID_VIDEO_PLAY"); LOG_MESSAGE_SIMPLE(Log::LOG_WARN, "Received ID_VIDEO_PLAY");
LOG_APPEND(Log::LOG_WARN, "- video: %s\n- allowSkipping: %s", LOG_APPEND(Log::LOG_WARN, "- filename: %s\n- allowSkipping: %s",
event->video.c_str(), event->filename.c_str(),
event->allowSkipping ? "true" : "false"); event->allowSkipping ? "true" : "false");
MWBase::Environment::get().getWindowManager()->playVideo(event->video, event->allowSkipping); MWBase::Environment::get().getWindowManager()->playVideo(event->filename, event->allowSkipping);
break; break;
} }

View file

@ -90,7 +90,7 @@ namespace MWScript
// Added by tes3mp // Added by tes3mp
mwmp::WorldEvent *event = mwmp::Main::get().getNetworking()->createWorldEvent(); mwmp::WorldEvent *event = mwmp::Main::get().getNetworking()->createWorldEvent();
event->video = name; event->filename = name;
event->allowSkipping = allowSkipping; event->allowSkipping = allowSkipping;
mwmp::Main::get().getNetworking()->getWorldPacket(ID_VIDEO_PLAY)->Send(event); mwmp::Main::get().getNetworking()->getWorldPacket(ID_VIDEO_PLAY)->Send(event);

View file

@ -1,5 +1,8 @@
#include "extensions.hpp" #include "extensions.hpp"
#include <components/openmw-mp/Base/WorldEvent.hpp>
#include "../mwmp/Main.hpp"
#include <components/compiler/extensions.hpp> #include <components/compiler/extensions.hpp>
#include <components/compiler/opcodes.hpp> #include <components/compiler/opcodes.hpp>
@ -66,6 +69,11 @@ namespace MWScript
std::string sound = runtime.getStringLiteral (runtime[0].mInteger); std::string sound = runtime.getStringLiteral (runtime[0].mInteger);
runtime.pop(); runtime.pop();
// Added by tes3mp
mwmp::WorldEvent *event = mwmp::Main::get().getNetworking()->createWorldEvent();
event->filename = sound;
mwmp::Main::get().getNetworking()->getWorldPacket(ID_MUSIC_PLAY)->Send(event);
MWBase::Environment::get().getSoundManager()->streamMusic (sound); MWBase::Environment::get().getSoundManager()->streamMusic (sound);
} }
}; };

View file

@ -162,7 +162,7 @@ add_component_dir (openmw-mp
Packets/World/PacketObjectRotate Packets/World/PacketObjectAnimPlay Packets/World/PacketObjectRotate Packets/World/PacketObjectAnimPlay
Packets/World/PacketContainerAdd Packets/World/PacketContainerRemove Packets/World/PacketDoorActivate Packets/World/PacketContainerAdd Packets/World/PacketContainerRemove Packets/World/PacketDoorActivate
Packets/World/PacketVideoPlay Packets/World/PacketMusicPlay Packets/World/PacketVideoPlay
Packets/World/PacketScriptLocalShort Packets/World/PacketScriptLocalFloat Packets/World/PacketScriptMemberShort Packets/World/PacketScriptLocalShort Packets/World/PacketScriptLocalFloat Packets/World/PacketScriptMemberShort
Packets/World/PacketScriptGlobalShort) Packets/World/PacketScriptGlobalShort)

View file

@ -32,7 +32,7 @@ namespace mwmp
int lockLevel; int lockLevel;
float scale; float scale;
std::string video; std::string filename;
bool allowSkipping; bool allowSkipping;
std::string animGroup; std::string animGroup;

View file

@ -14,6 +14,7 @@
#include "../Packets/World/PacketContainerAdd.hpp" #include "../Packets/World/PacketContainerAdd.hpp"
#include "../Packets/World/PacketContainerRemove.hpp" #include "../Packets/World/PacketContainerRemove.hpp"
#include "../Packets/World/PacketDoorActivate.hpp" #include "../Packets/World/PacketDoorActivate.hpp"
#include "../Packets/World/PacketMusicPlay.hpp"
#include "../Packets/World/PacketVideoPlay.hpp" #include "../Packets/World/PacketVideoPlay.hpp"
#include "../Packets/World/PacketScriptLocalShort.hpp" #include "../Packets/World/PacketScriptLocalShort.hpp"
@ -45,6 +46,7 @@ mwmp::WorldPacketController::WorldPacketController(RakNet::RakPeerInterface *pee
AddPacket<PacketContainerAdd>(&packets, peer); AddPacket<PacketContainerAdd>(&packets, peer);
AddPacket<PacketContainerRemove>(&packets, peer); AddPacket<PacketContainerRemove>(&packets, peer);
AddPacket<PacketDoorActivate>(&packets, peer); AddPacket<PacketDoorActivate>(&packets, peer);
AddPacket<PacketMusicPlay>(&packets, peer);
AddPacket<PacketVideoPlay>(&packets, peer); AddPacket<PacketVideoPlay>(&packets, peer);
AddPacket<PacketScriptLocalShort>(&packets, peer); AddPacket<PacketScriptLocalShort>(&packets, peer);

View file

@ -45,6 +45,7 @@ enum GameMessages
ID_CONTAINER_ADD, ID_CONTAINER_ADD,
ID_CONTAINER_REMOVE, ID_CONTAINER_REMOVE,
ID_DOOR_ACTIVATE, ID_DOOR_ACTIVATE,
ID_MUSIC_PLAY,
ID_VIDEO_PLAY, ID_VIDEO_PLAY,
ID_SCRIPT_LOCAL_SHORT, ID_SCRIPT_LOCAL_SHORT,

View file

@ -0,0 +1,16 @@
#include <components/openmw-mp/NetworkMessages.hpp>
#include "PacketMusicPlay.hpp"
using namespace mwmp;
PacketMusicPlay::PacketMusicPlay(RakNet::RakPeerInterface *peer) : WorldPacket(peer)
{
packetID = ID_VIDEO_PLAY;
}
void PacketMusicPlay::Packet(RakNet::BitStream *bs, WorldEvent *event, bool send)
{
WorldPacket::Packet(bs, event, send);
RW(event->filename, send);
}

View file

@ -0,0 +1,17 @@
#ifndef OPENMW_PACKETMUSICPLAY_HPP
#define OPENMW_PACKETMUSICPLAY_HPP
#include <components/openmw-mp/Packets/World/WorldPacket.hpp>
namespace mwmp
{
class PacketMusicPlay : public WorldPacket
{
public:
PacketMusicPlay(RakNet::RakPeerInterface *peer);
virtual void Packet(RakNet::BitStream *bs, WorldEvent *event, bool send);
};
}
#endif //OPENMW_PACKETMUSICPLAY_HPP

View file

@ -12,6 +12,6 @@ void PacketVideoPlay::Packet(RakNet::BitStream *bs, WorldEvent *event, bool send
{ {
WorldPacket::Packet(bs, event, send); WorldPacket::Packet(bs, event, send);
RW(event->video, send); RW(event->filename, send);
RW(event->allowSkipping, send); RW(event->allowSkipping, send);
} }