Перейти к контенту

Рекомендуемые сообщения

Romann   

Доброго времени суток. Ув. двигоправы, такой вопрос: вот мы имеем в гл.меню статическую картинку/заставку, в конфиге выглядит так:

	<background x="0" y="0" width="1024" height="768">
		<auto_static x="0" y="0" width="1024" height="768" stretch="1">
			<texture x="0" y="0" width="1920" height="1080">ui\ui_background_new</texture>
		</auto_static>
	</background>

Вместо текстуры стоит видео(ogm) на весь экран, вот xотелось бы "впилить"  сюда <random>, ну т.е. чтоб использовать на подобии, как рандомная музыка в гл.меню, что-то на подобии этого:

	<background x="0" y="0" width="1024" height="768">
		<auto_static x="0" y="0" width="1024" height="768" stretch="1" random="0">
		    	<texture x="0" y="0" width="1920" height="1080">ui\ui_background_new_0</texture>
		    	<texture x="0" y="0" width="1920" height="1080">ui\ui_background_new_1</texture>
		    	<texture x="0" y="0" width="1920" height="1080">ui\ui_background_new_2</texture>
		</auto_static>
	</background>

Что-то вроде "динамической смены заставки гл.меню". Как я понял - надо смотреть в "xrGame\ui\UIXmlInit.cpp" функция:

Скрытый текст

void CUIXmlInit::InitAutoStaticGroup(CUIXml& xml_doc, LPCSTR path, int index, CUIWindow* pParentWnd)
{
	XML_NODE* _stored_root				= xml_doc.GetLocalRoot();
	xml_doc.SetLocalRoot				(xml_doc.NavigateToNode(path,index));

	XML_NODE* curr_root					= xml_doc.GetLocalRoot();
	if(!curr_root)
			curr_root					= xml_doc.GetRoot();
	
	XML_NODE* node						= curr_root->IterateChildren(NULL);
	int cnt_static						= 0;
	int cnt_frameline					= 0;
	int cnt_text						= 0;
	string512							buff;

	while(node)
	{
		LPCSTR node_name			= node->Value();
		if(0==stricmp(node_name,"auto_static"))
		{
			CUIStatic* pUIStatic		= xr_new<CUIStatic>();
			InitStatic					(xml_doc, "auto_static", cnt_static, pUIStatic);
			xr_sprintf					(buff,"auto_static_%d", cnt_static);
			pUIStatic->SetWindowName	(buff);
			pUIStatic->SetAutoDelete	(true);
			pParentWnd->AttachChild		(pUIStatic);

			++cnt_static;
		}else
		if(0==stricmp(node_name,"auto_frameline"))
		{
			CUIFrameLineWnd* pUIFrameline = xr_new<CUIFrameLineWnd>();
			InitFrameLine				(xml_doc, "auto_frameline", cnt_frameline, pUIFrameline);
			xr_sprintf					(buff,"auto_frameline_%d", cnt_frameline);
			pUIFrameline->SetWindowName	(buff);
			pUIFrameline->SetAutoDelete	(true);
			pParentWnd->AttachChild	(pUIFrameline);

			++cnt_frameline;
		}else
		if(0==stricmp(node_name,"auto_text"))
		{
			++cnt_text;
		}
		node						= curr_root->IterateChildren(node);
	}
	xml_doc.SetLocalRoot				(_stored_root);
}

 

 

Или в другом месте копать? А то я тут не соображу, как сюда "внедрить" этот <random="0">..

П.С.: платформа ЗП(CoC_1.5_R6).

 

Изменено пользователем Romann

Поделиться этим сообщением


Ссылка на сообщение
Поделиться на других сайтах
drksnc   
В 17.11.2017 в 06:06, drksnc сказал:

Клиент получает её один раз, просто сталкеров было двое :biggrin:.

С позицией и поворотами разобрался. Теперь косяк с анимацией - на клиенте после вызова PlayCycle, даже с включеным лупом, анимка останавливается на последнем кадре (вроде), причем на сервере с такими же параметрами все замечательно пашет. 

Еще есть animation().update(), но результат его работы оставляет желать лучшего :( 

Изменено пользователем drksnc

Поделиться этим сообщением


Ссылка на сообщение
Поделиться на других сайтах
WinCap   

@Romann 

Если я не ошибаюсь, в оригинальном ЗП инициализация главного меню происходит в скрипте "ui_main_menu.script". Там можно и реализовать выбор заставки.

Поделиться этим сообщением


Ссылка на сообщение
Поделиться на других сайтах
Romann   
3 часа назад, WinCap сказал:

Там можно и реализовать выбор заставки.

Неа, пробовал скриптом, не выходит. Да и движком эстетичней, что ли, будет.

Поделиться этим сообщением


Ссылка на сообщение
Поделиться на других сайтах
WinCap   

@Romann 

Если в движке, тогда нужно править функцию InitStatic в файле xrGame\ui\UIXmlInit.cpp.

А конкретно строчку:

InitTexture(xml_doc, path, index, pWnd);

В ней используется переданный в функцию параметр index. Нужно добавить проверку на наличие атрибута "random" и при его наличии генерировать новый index, а при отсутствии использовать переданный.


  • http://www.amk-team.ru/forum/uploads//ratings/bf.gif × 1

Поделиться этим сообщением


Ссылка на сообщение
Поделиться на других сайтах

Создайте аккаунт или авторизуйтесь, чтобы оставить комментарий

Комментарии могут оставлять только зарегистрированные пользователи

Создать аккаунт

Зарегистрировать новый аккаунт в нашем сообществе. Это несложно!

Зарегистрировать новый аккаунт

Войти

Есть аккаунт? Войти.

Войти

  • Недавно просматривали   0 пользователей

    Ни один зарегистрированный пользователь не просматривает эту страницу.

×