Вторник, 26 Ноября 2024, 14:19

Приветствую Вас Гость

[ Новые сообщения · Игроделы · Правила · Поиск ]
  • Страница 1 из 1
  • 1
Отображение спрайта.
CmaujlukДата: Вторник, 20 Августа 2013, 02:29 | Сообщение # 1
участник
Сейчас нет на сайте
Всем привет! столкнулся с такой проблемой.
У меня есть таблица спрайтов при наведение на один из спрайтов показывается текст с информация о данной ячейке.
Выглядит примерно так:
Код

//obj_inv_items.sprite_dx и obj_inv_items.sprite_dy левый угол таблицы
if mouse_x>view_xview[0]+obj_inv_items.sprite_dx
&& mouse_x<view_xview[0]+obj_inv_items.sprite_dx + 500
&& mouse_y>view_yview[0]+obj_inv_items.sprite_dy
&& mouse_y<view_yview[0]+obj_inv_items.sprite_dy + 300//вычисляется входит ли мышка в таблицу
&& obj_inv_items.visible=1
{
      current_x=(mouse_x-(view_xview[0]+obj_inv_items.sprite_dx)) div obj_inv_items.cell_size//вычисляется ячейка по X
      current_y=(mouse_y-(view_yview[0]+obj_inv_items.sprite_dy)) div obj_inv_items.cell_size//вычисляется ячейка по Y
      // obj_inv_items.cell_size - размер ячейки

Далее когда ячейки вычисляются, через массивы рисуются текст и обложка(спрайт) позади него.
Код

if obj_inv_items.item_sprite[current_x,current_y]>0
{
draw_sprite_ext(spr_txt_back,-1,mouse_x-string_width(obj_inv_items.txt[current_x,current_y]),mouse_y+25,
string_width(obj_inv_items.txt[current_x,current_y])+2,string_height(obj_inv_items.txt[current_x,current_y]),0,c_white,0.8);
draw_text(mouse_x-string_width(obj_inv_items.txt[current_x,current_y])+1,mouse_y+25,string(obj_inv_items.txt[current_x,current_y]))
}

Теперь собственно вопрос
cell_size=32 но до следующей ячейки остаётся ещё 18 свободного места т.е. с начала первой ячейки и до начала второй 50 пикселей
если я ставлю cell_size 32 то при наведении на 1 ячейку все нормально, но дальше они сильно смещаются влево
если я ставлю cell_size 50 то всё работает нормально, но при наведении на 18 лишних пикселей тоже отображается текст и спрайт под ним.
Можно ли каким либо способом сделать так чтобы при наведении на эти лишние 18 пикселей информация не показывалась?
Это большая таблица по этому в ручную прописать все координаты к сожалению не получится.
Извините за стену текста, с меня плюс.


Не жадный на плюсы.
Наши проекты:
Clicker Mine Mania 2 - Увлекательный кликер в стиле Minecraft
Angry Bee Evolution - Эволюция с элементами кликера
Чего не хватает? - Викторина на логику"


Сообщение отредактировал Cmaujluk - Вторник, 20 Августа 2013, 02:30
Dmi7ryДата: Вторник, 20 Августа 2013, 05:42 | Сообщение # 2
почетный гость
Сейчас нет на сайте
Вставьте ещё одну дополнительную проверку. Координаты ячейки вы можете легко узнать - проверяйте, входит ли мышь в прямоугольник с координатами ячейки и размером 32*32
Если не ошибаюсь, получится что-то вроде:
Код
if obj_inv_items.item_sprite[current_x,current_y]>0   
{
      cx = view_xview[0] + obj_inv_items.sprite_dx + obj_inv_items.cell_size * current_x
      cy = view_yview[0] + obj_inv_items.sprite_dy + obj_inv_items.cell_size * current_y
      if mouse_x<cx+32 and mouse_y<cy+32
      {
          draw_sprite_ext(spr_txt_back, -1, mouse_x-string_width(obj_inv_items.txt[current_x,current_y]), mouse_y+25,   
          string_width(obj_inv_items.txt[current_x,current_y])+2, string_height(obj_inv_items.txt[current_x,current_y]), 0, c_white, 0.8);   
          draw_text(mouse_x-string_width(obj_inv_items.txt[current_x,current_y])+1, mouse_y+25, string(obj_inv_items.txt[current_x,current_y]))
      }
}


Сообщение отредактировал Dmi7ry - Вторник, 20 Августа 2013, 05:44
CmaujlukДата: Вторник, 20 Августа 2013, 07:18 | Сообщение # 3
участник
Сейчас нет на сайте
Dmi7ry, Выручил! Спасибо огромное happy

Не жадный на плюсы.
Наши проекты:
Clicker Mine Mania 2 - Увлекательный кликер в стиле Minecraft
Angry Bee Evolution - Эволюция с элементами кликера
Чего не хватает? - Викторина на логику"
  • Страница 1 из 1
  • 1
Поиск:

Все права сохранены. GcUp.ru © 2008-2024 Рейтинг