1. Этот сайт использует файлы cookie. Продолжая пользоваться данным сайтом, Вы соглашаетесь на использование нами Ваших файлов cookie. Узнать больше.
  2. Вы находитесь в сообществе Rubukkit. Мы - администраторы серверов Minecraft, разрабатываем собственные плагины и переводим на различные языки плагины наших коллег из других стран.
    Скрыть объявление
Скрыть объявление
В преддверии глобального обновления, мы проводим исследования, которые помогут нам сделать опыт пользования форумом ещё удобнее. Помогите нам, примите участие!

Нужны советы по GUI.

Тема в разделе "Оффтопик", создана пользователем jwplaster, 29 дек 2016.

  1. Автор темы
    jwplaster

    jwplaster Старожил Пользователь

    Баллы:
    173
    Skype:
    jwplaster.smartworld
    Имя в Minecraft:
    QviNSteN
    Всем привет. Пару месяцев назад делал для одного проектика два мини-модика-GUI. К сожалению, проекту не суждено было выйти из pre-alpha, а мне даже не заплатили, потому, забросил разработку где-то на 90% каждый из модов. Но не пропадать же добру, верно?) И решил сегодня пустить всё в open-source.

    Однако, пока мне стыдно выкладывать куда-либо код, поэтому, требуется пока парочка советов/решений.

    1. Естественно, MainMenu!
    Gif со всеми присущими функциями:
    [​IMG]

    Функции, что присутствуют:
    1. Подвижный фон. (готов на 95%. Не решена проблема таковая: когда пользователь уменьшает размер клиента, при несоответствии некоторым пропорция высоты и ширины, все элементы уменьшаются. Собсна, как и координаты положения тех или иных точек. Так вот, при этом картинка, привязанная к тем самым координатам, вырисовывает неверный кусок клиента (спойлер ниже - gif такой ситуации)).
    [​IMG]
    2. Регенерируемый сплэш-текст.
    3. Перемещены кнопки.
    4. Худо-бедная анимация кнопок.
    5. У курсора указываются координаты (Учтен вариант, когда текст координат заходит за границы экрана. В этом случае, текст перемещается в обратную от курсора сторону).
    6. Скин игрока (спасибо @alexandrage).
    7. Над скином игрока, его ник в рамке (цвет я искал, по правде говоря, часа 4 хд)
    8. Кнопочка, скрывающая копирайты (с анимацией)00 ).
    9. Выдвижное меню сверху, двигающее все элементы меню вниз (Учтен вариант, когда оно не отображается. В этом случае, все элементы мгновенно возвращаются на свои места, а, при повторном включении, возвращаются на предыдущую позицию).
    Проблема 9-ки: Я не знаю, зачем его создал :( Что туда можно поместить? Смену фона, отключение/включение указателя координат... больше ничего в голову не приходит).

    2. Help-command-GUI внутри игры.
    [​IMG]
    Функции:
    1. Генерирует необходимое количество страниц, в соответствии с заданным массивом (массив - список команд. Проблема: необходимо как-то получать их с сервера. В данный момент пытаюсь разобраться с передачей с сервера данных, но выходит какая-то лажа и Forge говорит, что я что-то делаю не так).
    2. Полностью графически-генерируемое меню (адаптируется под экран).
    3. Выбранная ячейка заполняется чёрным цветом (Проблема: из-за такого извращения, случаются и графические траблы (При чём, всё при том же уменьшении элементов) (пример в спойлере ниже)).
    upload_2016-12-29_13-41-33.png
    4. Окошко, с информацией о команде при наведении мышкой на ячейку (Осталось графически украсить).



    В общемс, вотс. У кого какие идеи?


    UPD. Призываю @gamerforEA, @svk, @RedEnergy, @redstorm, @sashabelii, @alexandrage
     
    Последнее редактирование: 30 дек 2016
  2. Cliper

    Cliper Новичок

    Баллы:
    6
    Имя в Minecraft:
    Cliper
    Гифки не работают
     
  3. Автор темы
    jwplaster

    jwplaster Старожил Пользователь

    Баллы:
    173
    Skype:
    jwplaster.smartworld
    Имя в Minecraft:
    QviNSteN
    кликни по ней.
    А вообше, всё работает.
     
  4. SoSeDiK

    SoSeDiK Активный участник Пользователь

    Баллы:
    76
    Имя в Minecraft:
    SoSeDiK
    [​IMG]
     
  5. Saharo4ek

    Saharo4ek Активный участник Пользователь

    Баллы:
    96
    Имя в Minecraft:
    tin
    Не робят гифки
     
  6. Linkinkov

    Linkinkov Старожил Пользователь

    Баллы:
    173
    Skype:
    linkinkov1
    Имя в Minecraft:
    linkinkov
    Не лучше ли сделать хелпу по загрузке json файла с сайта?
     
  7. Автор темы
    jwplaster

    jwplaster Старожил Пользователь

    Баллы:
    173
    Skype:
    jwplaster.smartworld
    Имя в Minecraft:
    QviNSteN
    Обновил гифки. Проверил с двух компов и разных браузеров: везде всё окей.

    Тогда, к сожалению, полностью реализована моя идея не будет. Я хочу сделать отправку человеку всех его команд. Например, VIPу будут отправляться команды игрока и випа. Админу - все.
     
  8. Linkinkov

    Linkinkov Старожил Пользователь

    Баллы:
    173
    Skype:
    linkinkov1
    Имя в Minecraft:
    linkinkov
    Годная идея, ничего не сказать)
     
  9. Автор темы
    jwplaster

    jwplaster Старожил Пользователь

    Баллы:
    173
    Skype:
    jwplaster.smartworld
    Имя в Minecraft:
    QviNSteN
    М? Я хочу перенести /help в вид GUI, потому и так необходимо.

    Ну а плагином дополнительно определять группу игрока и отделять вип-комманды от дефолтных.

    P.S. Гифки работают?
     
    Последнее редактирование: 30 дек 2016
  10. Linkinkov

    Linkinkov Старожил Пользователь

    Баллы:
    173
    Skype:
    linkinkov1
    Имя в Minecraft:
    linkinkov
    Да, все отлично. Ждем код, если выложишь в сеть конечно)
     
  11. svk

    svk Старожил Пользователь

    Баллы:
    123
    Имя в Minecraft:
    svk
    Попробуй в рендере писать не целочислительные координаты, а с плавающей точкой. Тогда, по идее, последний баг должен зафикситься.
     
  12. alexandrage

    alexandrage Старожил Пользователь

    Баллы:
    173
    Плагин пакет, он же кастом пайлоад 250. Хоть всю гуищу в пакете передавать можно. Даже картинки. Что касается размера окна клиента, банальное уравнение. Получаешь размер окна, вычисляешь нужные пропорции. Вот пример для менюшки.

    GuiButton fmlModButton = new GuiButton(6, this.field_146294_l - 55, this.field_146295_m - 58, 50, 20, I18n.func_135052_a("menu.mods", new Object[0]));
    this.field_146292_n.add(fmlModButton);

    this.field_146292_n.add(new GuiButton(1, this.field_146294_l - 55, this.field_146295_m - 82, 50, 20, I18n.func_135052_a("menu.smp", new Object[0])));
    this.field_146292_n.add(new GuiButton(0, this.field_146294_l - 55, this.field_146295_m - 35, 50, 20, I18n.func_135052_a("menu.cfg", new Object[0])));
    Func.ml = new GuiButton(2, this.field_146294_l / 2 - 100, this.field_146295_m - 35, 98, 20, Func.ch);
    this.field_146292_n.add(Func.ml);
    Func.ml2 = new GuiButton(22, this.field_146294_l / 2, this.field_146295_m - 35, 98, 20, Func.ch2);
    this.field_146292_n.add(Func.ml2);

    Сорян за sgr names, сурсов не сохранил.
     
    Последнее редактирование: 31 дек 2016
  13. Cliper

    Cliper Новичок

    Баллы:
    6
    Имя в Minecraft:
    Cliper
    Сделай изменение скина, если так возможно)
     
  14. Автор темы
    jwplaster

    jwplaster Старожил Пользователь

    Баллы:
    173
    Skype:
    jwplaster.smartworld
    Имя в Minecraft:
    QviNSteN
    Метод требует int :(

    У меня была идея такая:
    Берём размер окна (высота), вычитаем верх и низ (там по 40 с каждой стороны, вроде), и от низа, циклом, начинаем вычитать по 1, до тех пор, пока не станет число пикселей кратно 11-ти (11 полос мол). Но хз.

    Так с этим у меня всё в порядке. Тут дело в совершенстве...
    вот сейчас такой код фона:

    Код:
        func_146110_a(0-1920/4-this.width/2-mouseX/8,
                0-1080/4-this.height/2-mouseY/8,
                1920+1920/2-this.width/2+mouseX/8,
                (1080+1080/2+mouseY/8-this.height/2)>=mouseY ? 1080+1080/2+mouseY/8-this.height/2 : 1080+1080/2+mouseY/8,
                1920+1920/2-this.width/2,
                1080+1080/2-this.height/2,
                1920+1920/2-this.width/2,
                1080+1080/2-this.height/2);
    (где 1920 и 1080 - размер фона).
     
  15. svk

    svk Старожил Пользователь

    Баллы:
    123
    Имя в Minecraft:
    svk
    Это метод в родителе гуи требует int.
    А ты скопируй его содержимое и переделай аргументы под double, всё равно в тесселятор (оболочка для рендера в майне) забиваются double координаты.
     
  16. alexandrage

    alexandrage Старожил Пользователь

    Баллы:
    173
    Картинку нужно натягивать на this.width this.height. И с this.width this.heigh уже расчитывать прочие разметки. Тогда не уползет.
    [​IMG]
    [​IMG]
     
    Последнее редактирование: 1 янв 2017
  17. Автор темы
    jwplaster

    jwplaster Старожил Пользователь

    Баллы:
    173
    Skype:
    jwplaster.smartworld
    Имя в Minecraft:
    QviNSteN
    Да знаю я... я так и делал сначала. Но проблема возникает, когда я делаю подвижный фон.
     

Поделиться этой страницей