using QSB.Events; using QSB.MeteorSync.WorldObjects; using QSB.WorldSync; using QSB.WorldSync.Events; using EventType = QSB.Events.EventType; namespace QSB.MeteorSync.Events { public class MeteorLaunchEvent : QSBEvent { public override EventType Type => EventType.MeteorLaunch; public override void SetupListener() => GlobalMessenger.AddListener(EventNames.QSBMeteorLaunch, Handler); public override void CloseListener() => GlobalMessenger.RemoveListener(EventNames.QSBMeteorLaunch, Handler); private void Handler(int id, bool preLaunch) => SendEvent(CreateMessage(id, preLaunch)); private BoolWorldObjectMessage CreateMessage(int id, bool preLaunch) => new BoolWorldObjectMessage { ObjectId = id, State = preLaunch }; public override void OnReceiveRemote(bool isHost, BoolWorldObjectMessage message) { var qsbMeteorLauncher = QSBWorldSync.GetWorldFromId(message.ObjectId); qsbMeteorLauncher.LaunchMeteor(message.State); } } }