using QSB.Events; using QSB.MeteorSync.WorldObjects; using QSB.WorldSync; using QSB.WorldSync.Events; namespace QSB.MeteorSync.Events { public class MeteorSpecialImpactEvent : QSBEvent { public override bool RequireWorldObjectsReady => true; public override void SetupListener() => GlobalMessenger.AddListener(EventNames.QSBMeteorSpecialImpact, Handler); public override void CloseListener() => GlobalMessenger.RemoveListener(EventNames.QSBMeteorSpecialImpact, Handler); private void Handler(QSBMeteor qsbMeteor) => SendEvent(CreateMessage(qsbMeteor)); private WorldObjectMessage CreateMessage(QSBMeteor qsbMeteor) => new() { ObjectId = qsbMeteor.ObjectId }; public override void OnReceiveRemote(bool isHost, WorldObjectMessage message) { var qsbMeteor = QSBWorldSync.GetWorldFromId(message.ObjectId); qsbMeteor.SpecialImpact(); } } }