quantum-space-buddies/QSB/Instruments/Events/PlayInstrumentEvent.cs

31 lines
1.1 KiB
C#
Raw Normal View History

2020-11-01 12:11:36 +00:00
using QSB.Events;
using QSB.Messaging;
2020-11-01 15:56:48 +00:00
using QSB.Utility;
using System;
2020-11-01 12:11:36 +00:00
namespace QSB.Instruments.Events
{
public class PlayInstrumentEvent : QSBEvent<PlayInstrumentMessage>
{
2020-11-01 15:56:48 +00:00
public override EventType Type => EventType.PlayInstrument;
2020-11-01 12:11:36 +00:00
2020-11-01 15:56:48 +00:00
public override void SetupListener() => GlobalMessenger<InstrumentType>.AddListener(EventNames.QSBPlayInstrument, Handler);
2020-11-01 12:11:36 +00:00
2020-11-01 15:56:48 +00:00
public override void CloseListener() => GlobalMessenger<InstrumentType>.RemoveListener(EventNames.QSBPlayInstrument, Handler);
2020-11-01 12:11:36 +00:00
2020-11-01 15:56:48 +00:00
private void Handler(InstrumentType type) => SendEvent(CreateMessage(type));
2020-11-01 12:11:36 +00:00
2020-11-01 15:56:48 +00:00
private PlayInstrumentMessage CreateMessage(InstrumentType type) => new PlayInstrumentMessage
2020-11-01 12:11:36 +00:00
{
AboutId = LocalPlayerId,
2020-11-01 15:56:48 +00:00
Type = type
2020-11-01 12:11:36 +00:00
};
2020-11-01 15:56:48 +00:00
public override void OnReceiveRemote(PlayInstrumentMessage message)
{
2020-11-03 21:18:40 +00:00
QSBPlayerManager.GetPlayer(message.AboutId).CurrentInstrument = message.Type;
2020-11-01 15:56:48 +00:00
DebugLog.DebugWrite($"Player ID {message.AboutId} now playing instrument {Enum.GetName(typeof(InstrumentType), message.Type)}");
}
2020-11-01 12:11:36 +00:00
}
}