protected virtual void HandleLockStatusChange(bool isHeldNew) { #if DEBUG var status = isHeldNew ? "Active" : "Standby"; _logger.LogDebug($"[Debug] status is ({status}) at {DateTime.Now.ToString("hh:mm:ss")}"); #endif if (lastIsHeld == isHeldNew) { return; } else { lastIsHeld = isHeldNew; } if (LeaderChanged != null) { LeaderChangedEventArgs args = new LeaderChangedEventArgs(lastIsHeld); foreach (EventHandler <LeaderChangedEventArgs> handler in LeaderChanged.GetInvocationList()) { try { handler(this, args); } catch (Exception) { //Log } } } }
private IEnumerable <IClientEvent> WithLeaderCheck(Func <IEnumerable <IClientEvent> > func) { var previousLeader = LeaderUserId; foreach (var @event in func()) { yield return(@event); } var currentLeader = LeaderUserId; if (previousLeader == currentLeader) { yield break; } var leaderChanged = new LeaderChanged(_state.Id, currentLeader); yield return(leaderChanged); }
protected virtual void OnLeaderChanged(Character leader) { PartyHandler.SendPartyLeaderUpdateMessage(Clients, this, leader); LeaderChanged?.Invoke(this, leader); }