Пример #1
0
        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);
            }
        }
Пример #2
0
        /// <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);
        }