Как закрыть и открыть главное окно управления(где текущее од, оружие, кнопки инвентаря и т.д)

Автор темы #1
Дата рег
22 Мар 2014
Сообщения
166
Симпатии
17
Ранее всегда было удобно на F4 скрывать и открывать интерфейс. Сейчас же в 476 ревизии это не работает.
Попытался добавлять в файл input.fos:
Для открытия, если закрыто:
Код:
else if
( key == DIK_F4 && screen.Index != CLIENT_MAIN_SCREEN_GAME )
ShowScreen( CLIENT_MAIN_SCREEN_GAME );
И для закрытия, если открыто
Код:
else if
....
( key == DIK_F4 && screen.Index == CLIENT_MAIN_SCREEN_GAME )
....
{
TryExit();
}
Тут я либо ошибся, либо окно CLIENT_MAIN_SCREEN_GAME это тоже самое, что и CLIENT_SCREEN_MENU, так как работает одинакого. Подставлял оба и одинакого работает.

Как можно решить эту вроде как с первого взгляда легкую задачу?))
 
Последнее редактирование:
Дата рег
8 Янв 2015
Сообщения
4
Симпатии
1
Возможно, кому-то пригодится, я починил таким образом:

Найти строку в input.fos:
Код:
GUIScreen@ screen = GUI_GetActiveScreen();
Добавить ниже:
Код:
GUIPanel@ mainPanel = screen.FindPanel( "Main" );
Там, где обработка на F4, просто переписать на:
Код:
case DIK_F4:
if (screen.Index == CLIENT_MAIN_SCREEN_GAME)
{
mainPanel.Active ? mainPanel.SetActive(false) : mainPanel.SetActive(true);
}
То есть скрываю не весь интерфейс, а только класс Main из Game, в противном случае у меня получалось скрывать/раскрывать панель, но не реагировал курсор.
 
Дата рег
8 Янв 2015
Сообщения
4
Симпатии
1
Вдогонку отмечу, что F5 в 476-ой тоже не работает, поэтому починил через:
Код:
messageBox.IsChecked ? messageBox.SetChecked(false) : messageBox.SetChecked(true);
Где messageBox:
Код:
GUICheckBox@ messageBox = screen.FindCheckBox( "ExtendMessageBox" );
Сам FindCheckBox можно дописать в gui_h.fos по аналогии с остальными:
Код:
GUICheckBox@ FindCheckBox( string& name )
	{
		return cast< GUICheckBox >( Find( name ) );
	}
Или как-то обратиться через GUIObject, что у меня не вышло.