private void Tick(object sender, EventArgs e) { if (Status != (EntityStatus)Api.Player.Status) { Status = (EntityStatus)Api.Player.Status; StatusChanged(this, new StatusChangedEventArgs { Status = Status }); } if (Zone != CurrentZone) { Zone = CurrentZone; ZoneChanged(this, EventArgs.Empty); } CastCheck(); if (OldPosition.Equals(CurrentPosition)) { IsMoving = false; } else if (!OldPosition.Equals(CurrentPosition)) { IsMoving = true; OldPosition = CurrentPosition; if (Tasks.Huntertask.Options.RecordWaypoints) { Navi.LearnRoutine(); } } }
public void OnPositionChanged(object sender, RoutedEventArgs e) { if (!OldPosition.Equals(Position)) { OnPropertyChanged("Position"); OldPosition.Set(Position); } }
public virtual void Draw() { // If the GameObject's position has changed since the last frame, that GameObject is drawn. if (!OldPosition.Equals(Position)) { // To prevent 2 enemies from magically pathing into each other, we must make sure they don't. if (this is Enemy) { for (int x = -2; x < 3; ++x) { for (int y = -2; y < 3; ++y) { if (Game.GameObjects[Position.X + x, Position.Y + y] == null) { continue; } if (!(Game.GameObjects[Position.X + x, Position.Y + y] == this)) { if (Game.GameObjects[Position.X + x, Position.Y + y].Position.Equals(Position)) { Position = OldPosition; } } } } } Game.GameObjects[OldPosition.X, OldPosition.Y] = null; Game.GameObjects[Position.X, Position.Y] = this; Erase(); Console.ForegroundColor = Color; for (int i = 0; i < Game.BoxSize.X; ++i) { for (int j = 0; j < Game.BoxSize.Y; ++j) { Console.SetCursorPosition(Game.BoxSize.X * Position.X + i + offset.X, Game.BoxSize.Y * Position.Y + j + offset.Y); Console.Write("█"); Statistics.Stats["Boxes"].Add(1); } } } }