private void HandleDateTimeSyncMessage(DateTimeSyncMessage message) { this.timestamps[message.PlayerId] = new WcDateTime(message.Seconds); if (Util.EnumeratePlayers(PLAYER_SLOT_STATE_PLAYING, MAP_CONTROL_USER).All(x => this.timestamps.ContainsKey(GetPlayerId(x)))) { var sync = this.method switch { DateTimeSyncMethod.Earliest => ResolveEarliest(), DateTimeSyncMethod.Latest => ResolveLatest(), DateTimeSyncMethod.Average => ResolveAverage(), _ => ResolveBestFit(), }; SyncSystem.Unsubscribe <DateTimeSyncMessage>(HandleDateTimeSyncMessage); WcDateTime.StoreSynchronisedTime(sync.TotalSeconds, this.method); this.action?.Invoke(sync); } }
/// <summary> /// Returns a string representation using the given format. /// <para>See the wiki for more information on the format specification.</para> /// </summary> /// <param name="format">The format to print the string in.</param> public string ToString(string format) { // Lord, forgive me, for I have sinned. if (format.Contains("d")) { format = format.Replace("d", Days.ToString()); } if (format.Contains("hh")) { format = format.Replace("hh", WcDateTime.ZeroPad(Hours, 2)); } else if (format.Contains("h")) { format = format.Replace("h", Hours.ToString()); } if (format.Contains("mm")) { format = format.Replace("mm", WcDateTime.ZeroPad(Minutes, 2)); } else if (format.Contains("m")) { format = format.Replace("m", Minutes.ToString()); } if (format.Contains("ss")) { format = format.Replace("ss", WcDateTime.ZeroPad(Seconds, 2)); } else if (format.Contains("s")) { format = format.Replace("s", Seconds.ToString()); } return(format); }