private void timelapsed(object sender, GameTimerEventArgs e) { switch (e.timeInterval) { case TimeInterval.Minute: DateTime start = DateTime.Now; GameServer.Instance.Send(this.gameId, Guid.Empty, "Hour Elapsed"); Mobile[] mobiles = Mobiles.ToArray(); foreach (Mobile m in mobiles) { if (Game.Random.Next(1) > 0) break; int x = (int)(m.Position.X + (Game.Random.Next(2) - 1)); int y = (int)(m.Position.Y + (Game.Random.Next(2) - 1)); if (x > 99) x = 99; if (y > 99) y = 99; if (x < 0) x = 0; if (y < 0) y = 0; Position newPosition = new Position(x, y, 0); m.Move(newPosition); } Console.WriteLine((DateTime.Now - start).TotalMilliseconds); break; case TimeInterval.Day: GameServer.Instance.Send(this.gameId, Guid.Empty, "Day Elapsed"); break; } }
/// <summary> /// Checks the time interval. /// /// This takes a the difference in times and tries to make a determination as to which time interval has /// passed. /// </summary> private void checkTimeInterval() { if (previousWorldTime.Minute != worldTime.Minute) { GameTimerEventArgs e = new GameTimerEventArgs(TimeInterval.Minute); onTimeLapsed(e); } if (previousWorldTime.Hour != worldTime.Hour) { GameTimerEventArgs e = new GameTimerEventArgs(TimeInterval.Hour); onTimeLapsed(e); } if (previousWorldTime.Day != worldTime.Day) { GameTimerEventArgs e = new GameTimerEventArgs(TimeInterval.Day); onTimeLapsed(e); // Check if WEEK int dateDiff = worldTime.Day - referencePoint.Day; if (dateDiff % 7 == 0) { e.timeInterval = TimeInterval.Week; onTimeLapsed(e); } } if (previousWorldTime.Year != worldTime.Year) { GameTimerEventArgs e = new GameTimerEventArgs(TimeInterval.Year); onTimeLapsed(e); } }
/// <summary> /// Triggers the timelapsed event. /// </summary> /// <param name="e">The <see cref="ZiMB.Library.Game.ZiMBGameClasses.GameTimerEventArgs"/> instance containing the event data.</param> protected virtual void onTimeLapsed(GameTimerEventArgs e) { if (timeLapsed != null) { timeLapsed(this, e); } }