AndreySol 215 Опубликовано 14 Декабря 2017 Поделиться Опубликовано 14 Декабря 2017 1 час назад, Winsor сказал: ... UIItemInfo.cpp. Знаю. 2 часа назад, Winsor сказал: броня CUIOutfitParams Поиском в 1.0007rc1 такой класс не найден. Ссылка на комментарий
Winsor 177 Опубликовано 14 Декабря 2017 Поделиться Опубликовано 14 Декабря 2017 (изменено) У нас наверное разные 1.0007 xr_3da\xrGame\ui\UIOutfitParams.cpp === хотя, да. возможно это уже мое расширение. Но тем не менее - это не отменяет того факта что все задается через конфиг. изучайте исходники - там указан xml файл, с которого все загружается. дальше - по конкретным элементам смотрите координаты. Изменено 14 Декабря 2017 пользователем Winsor Ссылка на комментарий
dsh 3 824 Опубликовано 14 Декабря 2017 Поделиться Опубликовано 14 Декабря 2017 @Winsor если уж взялся помогать, так не стесняйся, покажи этот UIOutfitParams.cpp или ссылку на него дай. Может это и поможет вопрошающему. А то, как сам вопросы задавать, так это пожалуйста, помогите люди сами мы не местные, а как другим помочь, так не, мое. dsh mod: https://github.com/dsh2dsh/op2ogse Ссылка на комментарий
Earth2Space 305 Опубликовано 15 Декабря 2017 Поделиться Опубликовано 15 Декабря 2017 @Winsor так 11 часов назад, Winsor сказал: CUIOutfitParams или 8 часов назад, Winsor сказал: UIOutfitParams ? Ссылка на комментарий
AndreySol 215 Опубликовано 15 Декабря 2017 Поделиться Опубликовано 15 Декабря 2017 Ладно, отбой... Я уже понял, что ничего конкретного я не увижу. Всем спасибо.... Ссылка на комментарий
Battemen | Mr. Pred 62 Опубликовано 15 Декабря 2017 Поделиться Опубликовано 15 Декабря 2017 Посильно ли чайнику вставить раскачку из "раскачки ЛА для тч 1.0006" в огсешные xrcore, xrgame и xrnetserver? Ссылка на комментарий
Winsor 177 Опубликовано 18 Декабря 2017 Поделиться Опубликовано 18 Декабря 2017 (изменено) В 14.12.2017 в 23:23, dsh сказал: как другим помочь, так не, мое не понятна агрессия по данному поводу, да ладно. Там где я могу - там я помогаю. содержимое данного класса не относиться к вопросу, тем более у меня переписаны и другие классы вывода информации для итемов, т.е. человек не сможет использовать "мой" класс без остальных изменений в классе CUIItemInfo. На свои вопросы, я к сожалению, так же не всегда получаю ответы, приходится разбираться самому. Вот Вам класс. https://drive.google.com/file/d/1-zIzxMqteZvmsd-2rkOlT58HLEnP4_Wc/view?usp=sharinghttps://drive.google.com/file/d/1FnpLY4ysZYzn-FAGqa9EC-1omwuhv3yX/view?usp=sharing Помог? Суть моего поста была в том что абсолютно не важен класс, либо еще что - вся разметка UI находится в конфигах игры. и движком элементы UI не сдвигаются. если человек не захотел, банально, посмотреть на содержимое void CUIItemInfo::Init(LPCSTR xml_name) и увидеть что нет там сдвигов - хоть давай я ему исходники своего класса - хоть не давай - ну не поможет. В 15.12.2017 в 07:50, Earth2Space сказал: @Winsor так или ? UIOutfitParams - так называется файл, где описан класс CUIOutfitParams В 15.12.2017 в 15:44, AndreySol сказал: конкретного я не увижу ну куда уж конкретнее.... Движок не делает сдвиг элементов UI , вся разметка описана в конфигах xml. Вы не можете конфиг найти? или каким образом определяется тип итема? Изменено 18 Декабря 2017 пользователем Winsor Ссылка на комментарий
AndreySol 215 Опубликовано 18 Декабря 2017 Поделиться Опубликовано 18 Декабря 2017 6 часов назад, Winsor сказал: Движок не делает сдвиг элементов UI , вся разметка описана в конфигах xml. Продемонстрируйте мне конкретный конфиг, в котором прописано, что при отображении описания аптечки текст описания должен выводится сразу от верхнего края окна описания, а при отображении описания пистолета - текст должен быть смещен на N кол-во пикселей, для того чтоб выше текста уместились индикаторы параметров ствола. В том самом CUIItemInfo::Init имеем: if(uiXml.NavigateToNode("descr_list",0)) <--- это и есть тот самый конфиг UI-контрола описания предметов, выделенных кликом в инвентаре ? { UIWpnParams = xr_new<CUIWpnParams>(); UIArtefactParams = xr_new<CUIArtefactParams>(); UIWpnParams->InitFromXml (uiXml); UIArtefactParams->InitFromXml (uiXml); UIDesc = xr_new<CUIScrollView>(); AttachChild (UIDesc); UIDesc->SetAutoDelete (true); m_desc_info.bShowDescrText = !!uiXml.ReadAttribInt("descr_list",0,"only_text_info", 1); xml_init.InitScrollView (uiXml, "descr_list", 0, UIDesc); xml_init.InitFont (uiXml, "descr_list:font", 0, m_desc_info.uDescClr, m_desc_info.pDescFont); } в CUIItemInfo::InitItem: if(UIDesc) { UIDesc->Clear(); VERIFY (0==UIDesc->GetSize()); TryAddWpnInfo (pInvItem->object().cNameSect()); TryAddArtefactInfo (pInvItem->object().cNameSect()); if(m_desc_info.bShowDescrText) { CUIStatic* pItem = xr_new<CUIStatic>(); pItem->SetTextColor (m_desc_info.uDescClr); pItem->SetFont (m_desc_info.pDescFont); pItem->SetWidth (UIDesc->GetDesiredChildWidth()); pItem->SetTextComplexMode (true); pItem->SetText (*pInvItem->ItemDescription()); pItem->AdjustHeightToText (); UIDesc->AddWindow (pItem, true); } UIDesc->ScrollToBegin(); } В конфиге "config\ui\inventory_item.xml"(конкретно для инвентаря) смотрим: <descr_list x="12" y="223" width="298" height="140" always_show_scroll="0" left_ident="16"> <font font="letterica16" r="240" g="217" b="182"/> </descr_list> Ну ткните уже меня носом, где в этих строках учитывается, какой предмет мы кликнули и как должно выбираться смещение текста описания, если кликнули оружие или артефакт, с учетом того, что для стволов и артов - разное кол-во индикаторов ? Ссылка на комментарий
abramcumner 1 153 Опубликовано 18 Декабря 2017 Поделиться Опубликовано 18 Декабря 2017 43 минуты назад, AndreySol сказал: UIDesc = xr_new<CUIScrollView>(); UIDesc - CScrollView - располагает элементы друг под другом. 45 минут назад, AndreySol сказал: TryAddWpnInfo (pInvItem->object().cNameSect()); TryAddArtefactInfo (pInvItem->object().cNameSect()); CUIStatic* pItem = xr_new<CUIStatic>(); UIDesc->AddWindow (pItem, true); Сначала добавляются параметры оружия, если можно, потом параметры артефакта, потом описание. Они все располагаются друг под другом. Учет предмета, на котором кликнули, внутри TryAddWpnInfo и TryAddArtefactInfo. Смещение внутри CUIScrollView. Разное количество индикаторов внутри CUIWpnParams и CUIArtefactParams. Ссылка на комментарий
AndreySol 215 Опубликовано 18 Декабря 2017 Поделиться Опубликовано 18 Декабря 2017 32 минуты назад, abramcumner сказал: CScrollView - располагает элементы друг под другом. Ага... Добавил у себя(1.0007rc1) индикаторы для брони - сделал по образу и подобию оружейных. Все нормально, за исключением - при клике на бронике, текст описания налагается поверх индикаторов. Что я мог скопипастить из оружейных классов\ui-конфигов не так ? Уже неделю заглядываю в код и никак не соображу, чем добавленный мной код не гож движку... Цитата Смещение внутри CUIScrollView Подскажите, в какой именно ф-ции ? Смотрел там уже ранее, не увидел. Здравой логикой понимаю(или надеюсь ?), что метод смещения должен быть универсален и не зависеть от того, что добавлено - т.е. в коде класса CUIScrollView не должно быть каких-то прямых проверок, что добавлено что-то связанное именно с CUIWpnParams или CUIArtefactParams ? Ссылка на комментарий
dsh 3 824 Опубликовано 18 Декабря 2017 Поделиться Опубликовано 18 Декабря 2017 (изменено) @AndreySol может ты как-нибудь не так добавляешь? В скроллвью добавляется статик. Это статик является как бы строкой. Все статики, которые будут добавляться в этот скроллвью позже, будут всегда отображаться под ним. Может ты статик с текстом не добавляешь в этот скроллвью, а аттачишь к родителю? Изменено 18 Декабря 2017 пользователем dsh dsh mod: https://github.com/dsh2dsh/op2ogse Ссылка на комментарий
AndreySol 215 Опубликовано 18 Декабря 2017 Поделиться Опубликовано 18 Декабря 2017 20 минут назад, dsh сказал: может ты как-нибудь не так добавляешь? я ж написил, что было все сделано по образу и подобию оружейных индикаторов. Один в один, за исключением естественно названия класса и его наполнения, ну и в ui-конфиге чуток поправил под другое кол-во индикаторов. Ссылка на комментарий
abramcumner 1 153 Опубликовано 18 Декабря 2017 Поделиться Опубликовано 18 Декабря 2017 (изменено) 2 часа назад, AndreySol сказал: Подскажите, в какой именно ф-ции ? Смотрел там уже ранее, не увидел. Здравой логикой понимаю(или надеюсь ?), что метод смещения должен быть универсален и не зависеть от того, что добавлено - т.е. в коде класса CUIScrollView не должно быть каких-то прямых проверок, что добавлено что-то связанное именно с CUIWpnParams или CUIArtefactParams ? Да, все так и есть - никаких проверок на CUIWpnParams или CUIArtefactParams. Просто перебор всех добавленных элементов и расстановка. Метод void CUIScrollView::RecalcSize() if(GetVertFlip()){ for(WINDOW_LIST::reverse_iterator it = m_pad->GetChildWndList().rbegin(); m_pad->GetChildWndList().rend() != it; ++it) { (*it)->SetWndPos (item_pos); item_pos.y += (*it)->GetWndSize().y; item_pos.y += m_vertInterval; ... } Что-то ты не так скопипастил или в xml не тот размер прописал. Как написал @dsh, надо обязательно вызвать AddWindow для твоего индикатора, только тогда он добавится именно в список и сдвинет остальные элементы. Изменено 18 Декабря 2017 пользователем abramcumner Ссылка на комментарий
AndreySol 215 Опубликовано 18 Декабря 2017 Поделиться Опубликовано 18 Декабря 2017 1 час назад, abramcumner сказал: или в xml не тот размер прописал Во, оно! Забыл после копи-пасты сам размер окна изменить. Тут кстати еще с толку сбило, что в движке все-же не по-русски сделано - когда грузишь в UI-контрол к примеру текст, который вылазит за вертикальный размер, вместо обрезания по границе контрола текст отобразится полностью.Так бы увидел, что не все индикаторы видны - уже бы давно исправил. 1 Ссылка на комментарий
AndreySol 215 Опубликовано 19 Декабря 2017 Поделиться Опубликовано 19 Декабря 2017 (изменено) Два вопроса: 1). в xr_src\xrCore\_color.h IC SelfRef lerp(SelfCRef c1, SelfCRef c2, T t) { T invt = 1.f-t; r = c1.r*invt + c2.r*t; g = c1.g*invt + c2.g*t; b = c1.b*invt + c2.b*t; a = c1.a*invt + c2.a*t; return *this; } Пример использования: void CUIProgressBar::UpdateProgressBar() { .......................... if(m_bUseColor) { Fcolor curr; curr.lerp(m_minColor,m_maxColor,fCurrentLength); m_UIProgressItem.GetStaticItem()->SetColor(curr); } } Что делает эта ф-ция? Если я правильно понял - это уменьшение яркости полоски прогресса при приближении к мин. значению ? 2). А что это ? UI()->PushScissor(rect); m_UIBackgroundItem.Draw(); UI()->PopScissor(); В чем смысл ? Изменено 19 Декабря 2017 пользователем AndreySol Ссылка на комментарий
dsh 3 824 Опубликовано 19 Декабря 2017 Поделиться Опубликовано 19 Декабря 2017 @AndreySol насколько я вижу, не то, что бы уменьшение яркости, в как бы переход первого цвета во второй. Т.е. на примере полоски, постепенный переход из зеленого в красный по мере уменьшении полоски. 1 dsh mod: https://github.com/dsh2dsh/op2ogse Ссылка на комментарий
Winsor 177 Опубликовано 21 Декабря 2017 Поделиться Опубликовано 21 Декабря 2017 В 18.12.2017 в 23:43, AndreySol сказал: который вылазит за вертикальный размер, вместо обрезания по границе контрола текст отобразится полностью За это отвечает отдельный параметр в конфиге xml - complex_mode для текста в статике (либо выводить в одну строчку либо по ширине контрола переносить строки). Есть еще попытка поддерживать нормальный wordwrap через EElipsisPosition - но в 1.0007 код закомменчен - разработчики не доделали. Ссылка на комментарий
yurikteam 0 Опубликовано 23 Декабря 2017 Поделиться Опубликовано 23 Декабря 2017 Всем привет, объясните как мне вернуть квадратную форму миникарты в зп? Ссылка на комментарий
AndreySol 215 Опубликовано 23 Декабря 2017 Поделиться Опубликовано 23 Декабря 2017 Подскажите, кто в курсе для ТЧ 1.0007rc1: для оружия, откуда брать боеприпасы для зарядки\перезарядки - это где-то в базовом классе прописано или раскидано по разным классам. Где конкретно ? Добавлено НаноБот, 23 Декабря 2017 Ты во обще про что? Патроны прописаны в m_pAmmo, и ещё в других проперти, смотри исходники, Weapon.h. Ссылка на комментарий
НаноБот 742 Опубликовано 24 Декабря 2017 Поделиться Опубликовано 24 Декабря 2017 Столкнулся с одним багом. В классе CExplosive метод UpdateCL вызывается не каждый фрейм, через раз, т.е. работает как метод shedule_Update, в результате свет не гаснет через m_fExplodeDurationMax. Так и не понял почему, метод виртуальный и вызывается из нескольких точек. Вызываться должен вроде из модуля xr_object.cpp ...в конце концов, важен лишь, машинный код. СТАЛКЕР только для ПК! Ссылка на комментарий
Рекомендуемые сообщения
Создайте аккаунт или авторизуйтесь, чтобы оставить комментарий
Комментарии могут оставлять только зарегистрированные пользователи
Создать аккаунт
Зарегистрировать новый аккаунт в нашем сообществе. Это несложно!
Зарегистрировать новый аккаунтВойти
Есть аккаунт? Войти.
Войти