예제 #1
0
 /// <summary>Создаёт обычную дверь</summary>
 /// <param name="door_image_type">Тип изображения двери</param>
 /// <param name="key">Ключ от двери</param>
 public DungeonDoor(DungeonDoorImageType door_image_type, DungeonItemKey key)
     : this(door_image_type)
 {
     m_code = null;
     Key    = key;
     SetImages(door_image_type, Key.Color);
 }
예제 #2
0
 /// <summary>Создаёт дверь с кодовым замком</summary>
 /// <param name="door_image_type">Тип изображения двери</param>
 /// <param name="code">Код от двери</param>
 /// <param name="papers">Записки, содержащие подсказки к коду</param>
 public DungeonDoor(DungeonDoorImageType door_image_type, string code, List <DungeonItemPaper> papers)
     : this(door_image_type)
 {
     m_code   = code;
     Key      = null;
     m_papers = new List <DungeonItemPaper>();
     for (int i = 0; i < 4; i++)
     {
         m_papers.Add(papers[i]);
     }
     SetImages(door_image_type, Color.Yellow);
 }
예제 #3
0
        /// <summary>Устанавливает изображение двери из текстуры, заменяя зелёный цвет на указанный</summary>
        /// <param name="door_image_type">Тип изображения двери</param>
        /// <param name="color">Цвет</param>
        private void SetImages(DungeonDoorImageType door_image_type, Color color)
        {
            // изображение закрытой двери
            Bitmap image_closed;

            if (door_image_type == DungeonDoorImageType.Horizontal)
            {
                if (IsCode)
                {
                    image_closed = new Bitmap(Properties.Resources.door_code_h_closed_100px);
                }
                else
                {
                    image_closed = new Bitmap(Properties.Resources.door_h_closed_100px);
                }
            }
            else
            {
                if (IsCode)
                {
                    image_closed = new Bitmap(Properties.Resources.door_code_v_closed_100px);
                }
                else
                {
                    image_closed = new Bitmap(Properties.Resources.door_v_closed_100px);
                }
            }
            for (int y = 0; y < image_closed.Height; y++)
            {
                for (int x = 0; x < image_closed.Width; x++)
                {
                    Color pixel_color = image_closed.GetPixel(x, y);
                    if (pixel_color.R == 0 && pixel_color.G == 255 && pixel_color.B == 0)
                    {
                        image_closed.SetPixel(x, y, color);
                    }
                }
            }
            m_image_closed = image_closed;
            Image          = m_image_closed;

            // изображение открытой двери
            Color  m_color_alpha = Color.FromArgb(128, color);
            Bitmap image_opened;

            if (door_image_type == DungeonDoorImageType.Horizontal)
            {
                if (IsCode)
                {
                    image_opened = new Bitmap(Properties.Resources.door_code_h_opened_100px);
                }
                else
                {
                    image_opened = new Bitmap(Properties.Resources.door_h_opened_100px);
                }
            }
            else
            {
                if (IsCode)
                {
                    image_opened = new Bitmap(Properties.Resources.door_code_v_opened_100px);
                }
                else
                {
                    image_opened = new Bitmap(Properties.Resources.door_v_opened_100px);
                }
            }
            for (int y = 0; y < image_opened.Height; y++)
            {
                for (int x = 0; x < image_opened.Width; x++)
                {
                    Color pixel_color = image_opened.GetPixel(x, y);
                    if (pixel_color.R == 0 && pixel_color.G == 255 && pixel_color.B == 0)
                    {
                        image_opened.SetPixel(x, y, m_color_alpha);
                    }
                }
            }
            m_image_opened = image_opened;
        }
예제 #4
0
 /// <summary>Создаёт дверь</summary>
 /// <param name="door_image_type">Тип изображения двери</param>
 private DungeonDoor(DungeonDoorImageType door_image_type)
     : base(Properties.Resources.error, DungeonObjectCollision.StaticCollision)
 {
     m_is_opened      = false;
     m_collision_type = DungeonObjectCollision.StaticCollision;
 }