Наше комьюнити:   OpenGL Shader Lab  •  Half-Life FX  •  Форум  
HLFX.Ru Forum
профиль •  правила •  регистрация •  календарь •  народ •  FAQ •  поиск •  новое •  сутки •  главная •  выход  
HLFX.Ru Forum HLFX.Ru Forum > Теория и практика > Half-Life SDK > нуб вопросы от <censored> и других нубов
чтобы не создавать сто тем создам одну
2 голосов
Страницы (122): « Первая ... « 107 108 109 110 [111] 112 113 114 115 » ... Последняя »   Предыдущая тема   Следующая тема
Автор
Тема Новая тема    Ответить
Smykov
Частый гость

Группа: Неопытный
Дата регистрации: Jul 2017
Проживает: Unknown City
Сообщений: 61
Возраст: 20

Рейтинг



Хочу сделать vgui-класс, выводящий текст на родительской Panel (это только лишь в данный момент хочется чтобы только лишь выводил).

Текст располагается относительно своей позиции, делая отступ в зависимости от textLocation.

Как сейчас я понимаю принцип работы панелей:
1) Создали мы экземпляр класса, унаследованного от Panel;
2) Задали родителя, который вызывает paint'ы дочерних элементов;
3) Вот тут уже под вопросом. Внутри paint'а самого экземпяра система координат либо относительная (К примеру, drawSetTextPos(0, 0) ==getPos(varX, varY), то есть положение экземпляра на родителе), либо абсолютная (drawSetTextPos(varX, varY)==getPos(varX, varY), может мутно, но надеюсь, вы меня поняли :-) )
В итоге, отрисовка только фона, притом, что в конструкторе задал false. текста нету.

C++ Source Code:
using namespace vgui;

class CLinkLabel : public Panel {
public:
    CLinkLabel() {
        setPaintBackgroundEnabled(false);
        m_textLocation=Location::l_left;
    }
CLinkLabel(const char* text) : m_linkValue(text) { CLinkLabel(); }
CLinkLabel(const String& str) : m_linkValue(str) { CLinkLabel(); }

enum Location { l_left=0, l_right=1, l_center=2 };

void setText(const char* text) {
    m_linkValue=text;
}
void setTextLocationOnPos(CLinkLabel::Location argLocation) {
    m_textLocation=argLocation;
}
private:
void paint() {
    const char* text=m_linkValue.getChars();
    int textLength=m_linkValue.getCount();
    
    CSchemeManager *pSchemes=gViewPort->GetSchemeManager();
    SchemeHandle_t hTitleFontScheme=pSchemes->getSchemeHandle("Briefing Text");
    Font* pFont=pSchemes->getFont(hTitleFontScheme);
    
    drawSetTextFont(pFont);
    drawSetTextColor(64, 128, 228, 0);
    
    int x, y, wide, tall;
    getPos(x, y);
    pFont->getTextSize(text, wide, tall);
    
    switch(m_textLocation) {
        case l_left:
            break;
        case l_right:
            x-=wide;
        break;
        case l_center:
            x-=wide/2;
    }
    
    drawSetTextPos(x, y);
    
    drawPrintText(text, textLength);
}
private:
String m_linkValue;
Location m_textLocation;

//Font* m_pFont;
};



C++ Source Code:
// Где-то в конструкторе родителя
// CLinkLabel* m_pLinkLabel; // объявление в заголовочном файле

m_pLinkLabel=new CLinkLabel("SampleText1 it's ROAR");
m_pLinkLabel->setParent(this);
m_pLinkLabel->setPos(325, 250);
m_pLinkLabel->setSize(300, 60);



Размеры элементы задал на всякий крайний, вдруг он внутри самого себя отрисовку делает, то есть drawSetTextPos(0, 0)==m_pLinkLabel->setPos(325, 250).

Отредактировано Smykov 21-04-2018 в 15:36

Сообщить модератору | | IP: Записан
Сообщение: 172332

Старое сообщение 21-04-2018 15:31
- За что?
 ~ X ~
offline

Дата регистрации: Oct 2005
Проживает: (void)
Сообщений: 3197
Нанёс повреждений: 0 ед.

Рейтинг



Награды
 
[1 награда]


Меня малость напрягает
void setText(const char* text) {
m_linkValue=text;
}

к моменту вызова paint() указатель точно валидный? дебаггером смотрел?

__________________
Минутка полезного:
Бесплатный UT-подобный Half-Life mod.
Бесплатный редактор для 32-битных текстур. Без дотнета.
Бесплатный IDE для любых компиляторов и ЯП.
Бесплатная Windows-подобная ОС.
Проверка грамматики русского языка.
Связь со мной здесь: [email protected]

Сообщить модератору | | IP: Записан
Сообщение: 172354

Старое сообщение 23-04-2018 08:38
-
Smykov
Частый гость

Группа: Неопытный
Дата регистрации: Jul 2017
Проживает: Unknown City
Сообщений: 61
Возраст: 20

Рейтинг



~ X ~ там конструкторы есть, которые инициализируют m_linkValue.
Сейчас уже кое-что прояснилось, система координат относительная, а проблема была в том, что у объекта не было size'а, он отрисовывался, но не было места куда выводить.
Другая проблема.

Создаём объект

C++ Source Code:
m_pLinkLabel=new CLinkLabel("SampleText1 it's ROAR");
m_pLinkLabel->setParent(this);
m_pLinkLabel->setPos(15, 60);
m_pLinkLabel->setSize(300, 150);



Стандартное значение m_textLocaition равно l_left, то есть текст "не съезжает" никуда.

Функция paint, у которой для теста мы зададим x и y координаты текста.
C++ Source Code:
const char* text=m_linkValue.getChars();
int textLength=m_linkValue.getCount();

CSchemeManager *pSchemes=gViewPort->GetSchemeManager();
SchemeHandle_t hTitleFontScheme=pSchemes->getSchemeHandle("Briefing Text");
Font* pFont=pSchemes->getFont(hTitleFontScheme);

drawSetTextFont(pFont);
drawSetTextColor(64, 128, 228, 0);

int x=0, y=0, wide, tall;
pFont->getTextSize(text, wide, tall);

switch(m_textLocation) {
    case l_left:
        break;
    case l_right:
        x-=wide;
    break;
    case l_center:
        x-=wide/2;
}

drawSetTextPos(x, y);
drawPrintText(text, textLength);



Я приведу несколько примеров, изменяя x. Всё это на Xash3D

1) x=0 y=0


2) x=-10 y=0


3) x=-11 y=0
Вроде всё нормас, на один пиксель сместились


4) x=-12 y=0
И ещё на один пиксель, и аж на два символа сместились


Вот всё это к чему, и опять таки повторюсь. Может я неправильно расставляю позиции, или ещё что делаю не так?
Просто у меня догадок особо не стало, когда этот же код на GoldSrc (SDK 2005 с этого сайта вроде бы) скопировал, и там нормально работает, по крайней мере без всяких этих тестов, уже текст нормально позиционируется.

GoldSrc. Зададим уже сразу l_center
x=getPosX(/*функция для наглядности*/)-wide/2; y=0


Думаю в подробностях объяснил свой вопрос, что посоветуете?

Сообщить модератору | | IP: Записан
Сообщение: 172365

Старое сообщение 23-04-2018 19:07
- За что?
Crystallize
Липучка

Дата регистрации: Jul 2007
Проживает: (void)
Сообщений: 1890

Рейтинг



А gaitsequence как-то влияет на viewangles и направление движения игрока как энтити или оно просто для красоты, для модельки? И есть ли в ХЛ какой-то ограничитель скорости поворота игрока? (при thirdperson)

Сообщить модератору | | IP: Записан
Сообщение: 172369

Старое сообщение 24-04-2018 07:10
- За что?
 Дядя Миша
who said meow?

Дата регистрации: Oct 2005
Проживает: Кубань
Сообщений: 21883
Нанёс повреждений: 360 ед.

Рейтинг



Crystallize только для модельки

__________________
В действительности всё может оказаться иначе, чем оно есть на самом деле

My Projects: download page

Сообщить модератору | | IP: Записан
Сообщение: 172371

Старое сообщение 24-04-2018 08:00
-
 ~ X ~
offline

Дата регистрации: Oct 2005
Проживает: (void)
Сообщений: 3197
Нанёс повреждений: 0 ед.

Рейтинг



Награды
 
[1 награда]


VGUI - это местный ад для хл-моддеров. В него ссылают по плохим указателям... )
Я сам уже не помню, каким чудом что-то там сделал. Хотя, нет. Так и не сделал. Меню с игроками появляется не там где я изначально хотел

__________________
Минутка полезного:
Бесплатный UT-подобный Half-Life mod.
Бесплатный редактор для 32-битных текстур. Без дотнета.
Бесплатный IDE для любых компиляторов и ЯП.
Бесплатная Windows-подобная ОС.
Проверка грамматики русского языка.
Связь со мной здесь: [email protected]

Сообщить модератору | | IP: Записан
Сообщение: 172375

Старое сообщение 24-04-2018 09:51
-
Chyvachok
Житель форума

Дата регистрации: Jul 2011
Проживает: (void)
Сообщений: 1415

Рейтинг



Математический вопрос есть по эффекту дымка из паранои, который я использовал как базу для своих эффектов, вернее по его размеру, он там при отскакивании от стены с нуля увеличиваться к тому времени к которому он должен исчезнуть до своего полного размера:

C++ Source Code:
float frac = (time - birthTime) / m_fLife;
if (frac > 1)
    return 1; // delete object

float size = PuffSize * frac;



А как правильно сделать наоборот, чтобы он заранее появлялся в своем полном размере, и уменьшался до нуля к frac 1? Я пробовал как-то так но мне что-то кажется что это не совсем корректно: size = PuffSize - (frac*PuffSize);

Сообщить модератору | | IP: Записан
Сообщение: 172467

Старое сообщение 28-04-2018 10:09
- За что?
 XaeroX
Crystice Softworks

Дата регистрации: Oct 2005
Проживает: Новосибирск
Сообщений: 28023
Нанёс повреждений: 466 ед.
Возраст: 32

Рейтинг



Награды
 
[1 награда]


frac = 1 - frac;
перед умножением

__________________
So she began again: 'Où est ma chatte?' which was the first sentence in her French lesson-book. The Mouse gave a sudden leap out of the water, and seemed to quiver all over with fright. 'Oh, I beg your pardon!' cried Alice hastily, afraid that she had hurt the poor animal's feelings. 'I quite forgot you didn't like cats.'

Сообщить модератору | | IP: Записан
Сообщение: 172468

Старое сообщение 28-04-2018 10:21
-
Chyvachok
Житель форума

Дата регистрации: Jul 2011
Проживает: (void)
Сообщений: 1415

Рейтинг



XaeroX спасибо, работает, я чуть по другому сделал: size = PuffSize * (1 - frac); по идее так тоже пойдет?

Сообщить модератору | | IP: Записан
Сообщение: 172470

Старое сообщение 28-04-2018 11:19
- За что?
 XaeroX
Crystice Softworks

Дата регистрации: Oct 2005
Проживает: Новосибирск
Сообщений: 28023
Нанёс повреждений: 466 ед.
Возраст: 32

Рейтинг



Награды
 
[1 награда]


Chyvachok да, конечно, это все то же самое. Вопрос вкуса.

__________________
So she began again: 'Où est ma chatte?' which was the first sentence in her French lesson-book. The Mouse gave a sudden leap out of the water, and seemed to quiver all over with fright. 'Oh, I beg your pardon!' cried Alice hastily, afraid that she had hurt the poor animal's feelings. 'I quite forgot you didn't like cats.'

Сообщить модератору | | IP: Записан
Сообщение: 172475

Старое сообщение 28-04-2018 13:06
-
Smykov
Частый гость

Группа: Неопытный
Дата регистрации: Jul 2017
Проживает: Unknown City
Сообщений: 61
Возраст: 20

Рейтинг



makevfont
1) можно ли с его помощью создать шрифт с Кириллицей? Если да, то подробнее пожалуйста.
2) Правильно ли я понимаю, в значении параметра font нужно указывать шрифт, который установлен в системе? то есть, есть у меня ttf Terminus, windows открывает его своим стандартным приложением просмотра шрифтов, в котором можно установить шрифт.

Сообщить модератору | | IP: Записан
Сообщение: 172482

Старое сообщение 29-04-2018 14:54
- За что?
 Дядя Миша
who said meow?

Дата регистрации: Oct 2005
Проживает: Кубань
Сообщений: 21883
Нанёс повреждений: 360 ед.

Рейтинг



Цитата:
Smykov писал:
можно ли с его помощью создать шрифт с Кириллицей? Если да, то подробнее пожалуйста.

makevfont или makefont? Если первое, то да, должен поидее. Если второе, то только ксашевская реализация.

Добавлено 29-04-2018 в 22:25:

Цитата:
Smykov писал:
Правильно ли я понимаю, в значении параметра font нужно указывать шрифт, который установлен в системе?

Правильно. Я так для римейка кваки делал шрифты.

Добавлено 29-04-2018 в 22:26:

ЗЫ. Имя шрифта нужно указывать именно так как он в системе отображается со всеми пробелами и заключать в кавычки.

__________________
В действительности всё может оказаться иначе, чем оно есть на самом деле

My Projects: download page

Сообщить модератору | | IP: Записан
Сообщение: 172483

Старое сообщение 29-04-2018 19:26
-
Smykov
Частый гость

Группа: Неопытный
Дата регистрации: Jul 2017
Проживает: Unknown City
Сообщений: 61
Возраст: 20

Рейтинг



Дядя Миша всё понял спасибо.
Сразу назревает вопрос, что не так я делаю?
makevfont.exe -font "Times New Roman" -pointsize 16 "1024_MyFont.tga"
И на месте где должна быть кириллица "кракозябра"

Сообщить модератору | | IP: Записан
Сообщение: 172485

Старое сообщение 30-04-2018 08:02
- За что?
 Дядя Миша
who said meow?

Дата регистрации: Oct 2005
Проживает: Кубань
Сообщений: 21883
Нанёс повреждений: 360 ед.

Рейтинг



Надо его исправлять значит.

__________________
В действительности всё может оказаться иначе, чем оно есть на самом деле

My Projects: download page

Сообщить модератору | | IP: Записан
Сообщение: 172487

Старое сообщение 30-04-2018 08:33
-
Smykov
Частый гость

Группа: Неопытный
Дата регистрации: Jul 2017
Проживает: Unknown City
Сообщений: 61
Возраст: 20

Рейтинг



Не совсем понял, makevfont? Если вы про него, то может, чисто ради эксперимента, у вас на компьютере есть makevfont. Не зальёте ли его на файлообменник? буду признателен

Добавлено 30-04-2018 в 13:09:

Отмена с "заливом".
Нашёл интересный пост: https://hlfx.ru/forum/showthread.php?threadid=1827
Он меня натолкнул на решение проблемы со шрифтом TTF, установленным пользователем. Может кому пригодится.
Установил, скаченный из интернета, Terminus. До этого у меня проблем с ним не было, потому что в программах задавал путь к файлу ttf. А тут не получается -font "Terminus". Зашел в реестр (путь из того поста, только не в FontSubstitutes, а Fonts). И увидел там свой шрифт - Terminus (TTF) (там у всех шрифтов в конце дописывается "%пробел% (TrueType)"). В итоге font "Terminus (TTF)" прокатил. но кракозябры остались. Вот тут уже пошёл по совету автора поста - сделать RUSSIAN_CHARSET в функции CreateFont проекта makevfont. Только сегодня скачал full sdk, и увидел эти проекты. Единственное, что осталось "одолеть", это makefont, с первого раза не получилось сделать.

Сообщить модератору | | IP: Записан
Сообщение: 172488

Старое сообщение 30-04-2018 10:09
- За что?
Тема: (Опционально)
Ваш ответ:



Переводчик транслита


[проверить длину сообщения]
Опции: Автоматическое формирование ссылок: автоматически добавлять [url] и [/url] вокруг интернет адресов.
Уведомление по E-Mail: отправить вам уведомление, если кто-то ответил в тему (только для зарегистрированных пользователей).
Отключить смайлики в сообщении: не преобразовывать текстовые смайлики в картинки.
Показать подпись: добавить вашу подпись в конец сообщения (только зарегистрированные пользователи могут иметь подписи).

Временная зона GMT. Текущее время 10:49. Новая тема    Ответить
Страницы (122): « Первая ... « 107 108 109 110 [111] 112 113 114 115 » ... Последняя »   Предыдущая тема   Следующая тема
HLFX.Ru Forum HLFX.Ru Forum > Теория и практика > Half-Life SDK > нуб вопросы от <censored> и других нубов
чтобы не создавать сто тем создам одну
2 голосов
Версия для печати | Отправить тему по E-Mail | Подписаться на эту тему

Быстрый переход:
Оцените эту тему:

Правила Форума:
Вы not можете создавать новые темы
Вы not можете отвечать в темы
Вы not можете прикреплять вложения
Вы not можете редактировать ваши сообщения
HTML Код ВЫКЛ
vB Код ВКЛ
Смайлики ВКЛ
[IMG] Код ВКЛ
 

< Обратная связь - HLFX.ru >

На основе vBulletin
Авторское право © 2000 - 2002, Jelsoft Enterprises Limited.
Дизайн и программирование: Chain Studios © 2005-2018

Рейтинг@Mail.ru