找回密码
 register

QQ登录

只需一步,快速开始

查看: 538|回复: 0

[游戏教程] 十、武侠世界2源码分析:CEGUI 0.4.1

[复制链接]

[游戏教程] 十、武侠世界2源码分析:CEGUI 0.4.1

[复制链接]
  • 打卡等级:热心大叔
  • 打卡总天数:94
  • 打卡月天数:17
  • 打卡总奖励:94
  • 最近打卡:2025-01-18 01:28:20
Waylee

主题

0

回帖

1万

积分

仙帝

积分
12364
Waylee 2023-7-3 08:17 | 显示全部楼层 |阅读模式

马上注册,查看网站隐藏内容!!

您需要 登录 才可以下载或查看,没有账号?register

×
此处介绍 CEGUI 0.4.1

官方:
http://sourceforge.net/projects/crayzedsgui/files/CEGUI%20Mk-2/0.4.1/
(2005-11-26)

10.1 Cegui 初始化

Cegui 的初始化在 CUISystem::Initial 中完成。


CEGUIBase.dll!CEGUI::XMLAttributes::getValueAsInteger
CEGUIBase.dll!CEGUI::Imageset_xmlHandler::elementStart
CEGUIBase.dll!CEGUI::ExpatParser::startElement
CEGUIBase.dll!_XML_GetFeatureList
CEGUIBase.dll!_XML_GetFeatureList
CEGUIBase.dll!_XML_GetFeatureList
CEGUIBase.dll!_XML_GetFeatureList
CEGUIBase.dll!_XML_GetFeatureList
CEGUIBase.dll!_XML_ParseBuffer
CEGUIBase.dll!_XML_Parse
CEGUIBase.dll!CEGUI::ExpatParser::parseXMLFile
CEGUIBase.dll!CEGUI::Imageset::load
CEGUIBase.dll!CEGUI::Imageset::Imageset
CEGUIBase.dll!CEGUI::ImagesetManager::createImageset
CEGUIBase.dll!CEGUI::Scheme::loadResources
CEGUIBase.dll!CEGUI::Scheme::Scheme
CEGUIBase.dll!CEGUI::SchemeManager::loadScheme
CEGUISystem.dll!CUISystem::Initial
WXClient.exe!CGameProcedure::InitStaticMemeber
WXClient.exe!_tMain_With_CPPException
WXClient.exe!WinMain
WXClient.exe!__tmainCRTStartup
WXClient.exe!WinMainCRTStartup



UI 脚本

在 cegui 创建时(CUISystem::Initial),将脚本接口对象传入创建过程即可:
m_pCEGUISystem = new CEGUI::System( m_pCEGUIRender, m_pCEGUIScript, (const
CEGUI::utf8*)"");


ScriptModule 即是脚本接口。
class CGameUIScript : public ScriptModule



10.2 模块的加载

分析一个模块从发现到死亡的历程


10.3 模块定义

struct UIModule
{
String name;
FactoryModule* module;
std::vector<UIElementFactory> factories;
};
struct UIElementFactory
{
String name;
};



10.4 发现新模块(WindowSet)

游客,如果您要查看本帖隐藏内容请回复



10.5 模块的诞生

在加载资源的时候,首先创建所有被发现的模块
CEGUI\src\CEGUIScheme.cpp
CEGUI.Scheme.loadResources

std::vector<UIModule>::iterator cmod = d_widgetModules.begin();
for (;cmod != d_widgetModules.end(); ++cmod)
{
// create and load dynamic module as required
if ((*cmod).module == NULL)
{
(*cmod).module = new FactoryModule((*cmod).name);



10.6 模块的灭亡

主动销毁模块
CEGUI\src\CEGUIScheme.cpp
CEGUI.Scheme.resourcesLoaded


// check factories
std::vector<UIModule>::const_iterator cmod = d_widgetModules.begin();
for (;cmod != d_widgetModules.end(); ++cmod)
{
std::vector<UIElementFactory>::const_iterator elem = (*cmod).factories.begin();
for (; elem != (*cmod).factories.end(); ++elem)
{
if (!wfmgr.isFactoryPresent((*elem).name))
{
return false;
}
}
}



10.7 Case1

加载 Schema\WoWLookSkin.scheme.xml


10.8 窗口布局

001.jpg


您需要登录后才可以回帖 登录 | register

本版积分规则

雪舞知识库 | 浙ICP备15015590号-1 | 萌ICP备20232229号|浙公网安备33048102000118号 |天天打卡

GMT+8, 2025-1-20 07:26 , Processed in 0.103395 second(s), 8 queries , Redis On.

Powered by XueWu Licensed

Copyright © Tencent Cloud.

快速回复 返回顶部 返回列表