Ru/Personal Game Logo: Difference between revisions
m (мелочь) |
Thunder4ik (talk | contribs) m (Unicodifying, added orphan, underlinked tags) |
||
Line 1: | Line 1: | ||
{{Multiple issues| | |||
{{Underlinked|date=January 2024}} | |||
{{Orphan|date=January 2024}} | |||
}} | |||
=Вступление= | =Вступление= | ||
В случае если вы используете 2007 версию SDK, в которой в главном меню игры нет Логотипа, этот туториал как раз то что доктор прописал.<br/> | В случае если вы используете 2007 версию SDK, в которой в главном меню игры нет Логотипа, этот туториал как раз то что доктор прописал.<br/> | ||
Его также можно использовать для того чтобы написать дополнительный логотип, например вашей команды разработчиков [[Adding_Your_Logo_to_the_Menu:ru|Смотреть здесь]].<br/> | Его также можно использовать для того чтобы написать дополнительный логотип, например вашей команды разработчиков [[Adding_Your_Logo_to_the_Menu:ru|Смотреть здесь]].<br/> | ||
Наш логотип будет аналогичен коду от VALVe в 2009 версии движка, только он не читает запись из файла gameinfo.txt | Наш логотип будет аналогичен коду от VALVe в 2009 версии движка, только он не читает запись из файла gameinfo.txt | ||
=Начнем= | =Начнем= | ||
Line 48: | Line 52: | ||
#include "vgui_controls/Frame.h" | #include "vgui_controls/Frame.h" | ||
#include "igamelogo.h" | #include "igamelogo.h" | ||
class CGameLogoPanel : vgui::Frame | class CGameLogoPanel : vgui::Frame | ||
Line 61: | Line 64: | ||
void SetParent(vgui::VPANEL panel); | void SetParent(vgui::VPANEL panel); | ||
}; | }; | ||
class CGameLogo : public IGameLogo | class CGameLogo : public IGameLogo | ||
Line 180: | Line 182: | ||
gamelogo->Destroy(); | gamelogo->Destroy(); | ||
</source> | </source> | ||
Запускаем мод. Не пугайтесь если ничего не отобразилось<br/> | Запускаем мод. Не пугайтесь если ничего не отобразилось<br/> | ||
Line 228: | Line 228: | ||
<br/> | <br/> | ||
Заменяем '''../game/refresh''' на путь к своему логотипу | Заменяем '''../game/refresh''' на путь к своему логотипу | ||
=Результаты= | =Результаты= | ||
Line 237: | Line 237: | ||
* Автор: LestaD | * Автор: LestaD | ||
* Игра: Refresh | * Игра: Refresh | ||
[[Category:Tutorials:ru]] | [[Category:Tutorials:ru]] | ||
[[Category:Programming:ru]] | [[Category:Programming:ru]] |
Revision as of 02:34, 9 January 2024





January 2024

Вы можете помочь,

January 2024
Вступление
В случае если вы используете 2007 версию SDK, в которой в главном меню игры нет Логотипа, этот туториал как раз то что доктор прописал.
Его также можно использовать для того чтобы написать дополнительный логотип, например вашей команды разработчиков Смотреть здесь.
Наш логотип будет аналогичен коду от VALVe в 2009 версии движка, только он не читает запись из файла gameinfo.txt
Начнем
Откроем клиент игры. Я создал новый фильтр в Visual Studio 2010, в фильтре Source Files и располагал файлы там.
Вы можете поступить как угодно.
Напишем файл интерфейса для логотипа igamelogo.h
/*
Copyright © 2010-2012, Refresh Team
Interface of gamelogo panel
*/
#ifdef _WIN32
#pragma once
#endif
#include <vgui/VGUI.h>
namespace vgui {
class Panel;
typedef unsigned long HFont;
}
abstract_class IGameLogo
{
public:
virtual void Create( vgui::VPANEL parent ) = 0;
virtual void Destroy( void ) = 0;
};
extern IGameLogo *gamelogo;
Создадим файл GameLogo.h
/*
Copyright © 2010-2012, Refresh Team
Load a game logo to menu
*/
#ifdef _WIN32
#pragma once
#endif
#include "vgui_controls/Frame.h"
#include "igamelogo.h"
class CGameLogoPanel : vgui::Frame
{
DECLARE_CLASS_SIMPLE( CGameLogoPanel, vgui::Frame );
public:
CGameLogoPanel( vgui::VPANEL parent, char const *panelName );
~CGameLogoPanel();
void SetParent(Panel *newParent);
void SetParent(vgui::VPANEL panel);
};
class CGameLogo : public IGameLogo
{
private:
CGameLogoPanel *gamelogopanel;
public:
CGameLogo( void )
{
gamelogopanel = NULL;
}
void Create( vgui::VPANEL parent )
{
gamelogopanel = new CGameLogoPanel( parent, "GameLogo" );
}
void Destroy ( void )
{
if ( gamelogopanel )
{
gamelogopanel->SetParent( (vgui::Panel *)NULL );
delete gamelogopanel;
}
}
};
static CGameLogo g_GameLogo;
IGameLogo *gamelogo = ( IGameLogo * )&g_GameLogo;
Далее создадим файл GameLogo.cpp
/*
Copyright © 2010-2012, Refresh Team
Base class for creating a logo
*/
#include "cbase.h"
#include "GameLogo.h"
#include "tier0/memdbgon.h"
using namespace vgui;
CGameLogoPanel::CGameLogoPanel( vgui::VPANEL parent, char const *panelName ) : BaseClass( NULL, panelName ) // Конструктор
{
SetParent( parent );
SetMoveable( false );
SetSizeable( false );
SetTitleBarVisible( false );
SetKeyBoardInputEnabled( false );
SetMouseInputEnabled( false );
SetPaintBackgroundEnabled( false );
SetPaintBorderEnabled( false );
SetProportional( true );
SetMenuButtonVisible( false );
SetMinimizeButtonVisible( false );
SetMaximizeButtonVisible( false );
SetCloseButtonVisible( false );
SetScheme( vgui::scheme()->LoadSchemeFromFile("resource/SourceScheme.res", "SourceScheme") );
LoadControlSettings( "resource/GameLogo.res" );
SetVisible( true );
}
void CGameLogoPanel::SetParent(vgui::VPANEL panel)
{
BaseClass::SetParent(panel);
}
void CGameLogoPanel::SetParent(Panel *newParent)
{
BaseClass::SetParent(newParent);
}
CGameLogoPanel::~CGameLogoPanel() // Деструктор
{
}
// Это функция вызываемая при вводе команды в консоль
void gamelogo_CC()
{
DevMsg("Debug mode for gamelogo hud is disabled\n");
}
// Определение консольной команды при выполнении которой будет включаться/выключаться режим отладки
ConCommand cl_gamelogo_build_mode("cl_gamelogo_build_mode", gamelogo_CC, "Change build mode to gamelogo");
Далее открываем файл vgui_int.cpp
Подключим наш файл интерфейса
#include "igamelogo.h"
Найдем функцию void VGui_CreateGlobalPanels( void ), допишем в ее конец создание нашей функции
// Если использовать как родительскую панель PANEL_GAMEUIDLL
// То логотип будет автоматически скрываться при запуске карты
VPANEL GameUiDll = enginevgui->GetPanel( PANEL_GAMEUIDLL);
gamelogo->Create( GameUiDll );
Затем в конец функции void VGui_Shutdown() допишем уничтожение нашего логотипа
gamelogo->Destroy();
Запускаем мод. Не пугайтесь если ничего не отобразилось
Нужно в GameLogo.res написать вот что
"resource/GameLogo.res"
{
"GameLogo"
{
"ControlName" "CGameLogo"
"fieldName" "GameLogo"
"xpos" "62"
"ypos" "0"
"wide" "255"
"tall" "255"
"autoResize" "0"
"pinCorner" "0"
"visible" "1"
"enabled" "1"
"tabPosition" "0"
"settitlebarvisible" "1"
"title" "#Frame_Untitled"
}
"ImageRefresh"
{
"ControlName" "ImagePanel"
"fieldName" "ImageRefresh"
"xpos" "0"
"ypos" "0"
"wide" "255"
"tall" "255"
"autoResize" "0"
"pinCorner" "0"
"visible" "1"
"enabled" "1"
"tabPosition" "0"
"image" "../game/refresh"
"scaleImage" "0"
"scaleAmount" "0.000000"
"tileImage" "0"
"tileHorizontally" "0"
"tileVertically" "0"
}
}
Заменяем ../game/refresh на путь к своему логотипу
Результаты
Вот и все. Приведу примеры того что получилось у меня в результате кодинга :)
- Автор: LestaD
- Игра: Refresh