/// <summary>Создаёт объект</summary> /// <param name="image">Изображение объекта</param> /// <param name="collision_type">Тип столкновения с данным объектом</param> protected DungeonObject(Bitmap image, DungeonObjectCollision collision_type) : base() { m_image = image; m_size = image.Size; m_collision_type = collision_type; m_collision_size = m_size; m_collision_offset = new Point(0, 0); DungeonLevel = null; m_location = new DungeonPoint(0, 0); ObjectStatus = DungeonObjectStatus.CreatedNotAdded; }
/// <summary>Рисует объект, проверяя, что он создан, но не уничтожен</summary> /// <param name="player_location">Координаты игрока (персонаж игрока находится в центре экрана)</param> public bool Paint(object sender, PaintEventArgs e, Point player_location, Size showing_size) { if (ObjectStatus == DungeonObjectStatus.AddedNotDestroyed) { Size form_size = ((MainForm)sender).Size; Point center_screen = new Point(((MainForm)sender).ClientSize.Width / 2, ((MainForm)sender).ClientSize.Height / 2); Point screen_location = new DungeonPoint(Location.X - player_location.X + form_size.Width / 2 - Size.Width / 2, Location.Y - player_location.Y + form_size.Height / 2 - Size.Height / 2).Point; if (IsInView(screen_location, center_screen, showing_size)) { e.Graphics.DrawImage(m_image, screen_location); return(true); } } return(false); }
/// <summary>Задаёт координаты (центр) объекта</summary> /// <param name="x">X-координата</param> /// <param name="y">Y-координата</param> public void SetLocation(double x, double y = 0) { Location = new DungeonPoint(x, y); }
/// <summary>Возвращает расстояние от этой точки до заданной</summary> /// <param name="point">Вторая точка</param> /// <returns>Расстояние между точками</returns> public double GetLengthTo(DungeonPoint point) { return(Math.Sqrt(Math.Pow(X - point.X, 2) + Math.Pow(Y - point.Y, 2))); }