📄 gameiconman.cc
字号:
//gameIconMan.cc
/*/////////////////////////////////////////////////////////////////
李亦
2006-7-7
/*/////////////////////////////////////////////////////////////////
#include "rpg/ui/gameIconMan.h"
#include "math/mRect.h"
#include "rpg/gobjects/GPlayer.h"
namespace RPG
{
#define GICON_FILENAME "ui/img/cellIcons.dml"
//全局GameIcon实例
//static GameIconMan gs_gameIconMan;
GameIconMan *g_pGameIconMan = NULL;
static GameIconDictionary::Entry gs_gameIcons[]=
{
//空白格子单元
{GICON_BLANK, GICON_BLANK, "", "", ""},
{GICON_BLANKSHOULDER, GICON_BLANKSHOULDER, "blankShoulder", "肩甲槽", ""},
{GICON_BLANKHELMET, GICON_BLANKHELMET, "blankHelmet", "头盔槽", ""},
{GICON_BLANKNECKLACE, GICON_BLANKNECKLACE, "blankNecklace", "项链槽", ""},
{GICON_BLANKARMS, GICON_BLANKARMS, "blankArms", "武器槽", ""},
{GICON_BLANKARMOR, GICON_BLANKARMOR, "blankArmor", "盔甲槽", ""},
{GICON_BLANKSHIELD, GICON_BLANKSHIELD, "blankShield", "盾牌槽", ""},
{GICON_BLANKPANTS, GICON_BLANKPANTS, "blankPants", "裤子槽", ""},
{GICON_BLANKBOOT, GICON_BLANKBOOT, "blankBoot", "靴子槽", ""},
{GICON_BLANKGLOVE, GICON_BLANKGLOVE, "blankGlove", "手套槽", ""},
{GICON_BLANKMANTLE, GICON_BLANKMANTLE, "blankMantle", "披风槽", ""},
{GICON_BLANKLACE, GICON_BLANKLACE, "blankLace", "左饰带槽", ""},
{GICON_BLANKLACE2, GICON_BLANKLACE, "blankLace2", "右饰带槽", ""},
{GICON_BLANKRING, GICON_BLANKRING, "blankRing", "左戒指槽", ""},
{GICON_BLANKRING2, GICON_BLANKRING, "blankRing2", "右戒指槽", ""},
{GICON_BLANKHEADGEAR, GICON_BLANKHELMET, "blankHeadgear", "头饰槽", ""},
//////////////////////////////////////////////////////////////////////////
/// 人物基本动作
{GICON_ACTIONTAKEOBJECT, GICON_ACTIONTAKEOBJECT , PRE_ACTION"takeobject", "拾取物品", ""},
{GICON_ACTIONSIT, GICON_ACTIONSIT, PRE_ACTION"sit", "打坐休息", ""},
{GICON_ACTIONSHAKEHAND, GICON_ACTIONSHAKEHAND, PRE_ACTION"shakehand", "握手", ""},
{GICON_ACTIONRUN, GICON_ACTIONRUN, PRE_ACTION"run", "跑动", ""},
{GICON_ACTIONRECORD, GICON_ACTIONRECORD, PRE_ACTION"record", "录制", ""},
{GICON_ACTIONOPENBOX, GICON_ACTIONOPENBOX, PRE_ACTION"openbox", "打开箱子", ""},
{GICON_ACTIONGOOD, GICON_ACTIONGOOD, PRE_ACTION"good", "称赞", ""},
{GICON_ACTIONCLOSEBOX, GICON_ACTIONCLOSEBOX, PRE_ACTION"closebox", "关闭箱子", ""},
{GICON_ACTIONATTACK2, GICON_ACTIONATTACK2, PRE_ACTION"attack2", "攻击", ""},
{GICON_ACTIONATTACK, GICON_ACTIONATTACK, PRE_ACTION"attack", "攻击", ""},
{GICON_ACTIONAIM, GICON_ACTIONAIM, PRE_ACTION"aim", "瞄准目标", ""},
{GICON_ACTIONREPAIR, GICON_ACTIONREPAIR, PRE_ACTION"repair", "修理", ""},
//////////////////////////////////////////////////////////////////////////
/// 人物组队动作
{GICON_TEAMMASTER, GICON_TEAMMASTER, PRE_TEAM"master", "指定队长", ""},
{GICON_TEAMVIEW, GICON_TEAMVIEW, PRE_TEAM"view", "查看队员", ""},
{GICON_TEAMCHAT, GICON_TEAMCHAT, PRE_TEAM"chat", "队伍聊天", ""},
{GICON_TEAMKICK, GICON_TEAMKICK, PRE_TEAM"kick", "踢人出队", ""},
{GICON_TEAMFOLLOW, GICON_TEAMFOLLOW, PRE_TEAM"follow", "跟随队友", ""},
{GICON_TEAMINVITE, GICON_TEAMINVITE, PRE_TEAM"invite", "邀请入队", ""},
//////////////////////////////////////////////////////////////////////////
/// 人物组队动作
{GICON_MOTIONSWIM, GICON_MOTIONSWIM, PRE_MOTION"swim", "游水", ""},
{GICON_MOTIONDISAGREE, GICON_MOTIONDISAGREE, PRE_MOTION"disagree", "反对", ""},
{GICON_MOTIONAGREE, GICON_MOTIONAGREE, PRE_MOTION"agree", "同意", ""},
{GICON_MOTIONCREADY, GICON_MOTIONCREADY, PRE_MOTION"cready", "预备", ""},
{GICON_MOTIONPOINT, GICON_MOTIONPOINT, PRE_MOTION"point", "指向", ""},
{GICON_MOTIONBOW, GICON_MOTIONBOW, PRE_MOTION"bow", "鞠躬", ""},
{GICON_MOTIONPAIN1, GICON_MOTIONPAIN1, PRE_MOTION"pain1", "痛苦", ""},
{GICON_MOTIONDANCE, GICON_MOTIONDANCE, PRE_MOTION"dance", "跳舞", ""},
{GICON_MOTIONPAIN2, GICON_MOTIONPAIN2, PRE_MOTION"pain2", "痛苦", ""},
{GICON_MOTIONCREADY2, GICON_MOTIONCREADY2, PRE_MOTION"cready2", "预备", ""},
{GICON_MOTIONWAVE, GICON_MOTIONWAVE, PRE_MOTION"wave", "挥手", ""},
{GICON_MOTIONKICK1, GICON_MOTIONCREADY, PRE_MOTION"kick1", "踢腿", ""},
{GICON_MOTIONKICK2, GICON_MOTIONCREADY2, PRE_MOTION"kick2", "踢腿", ""},
//////////////////////////////////////////////////////////////////////////
/// 功能图标
{GICON_OPENBAG, GICON_OPENBAG, "openBag", "人物背包", "打开背包"},
{GICON_CHARACTERINFO, GICON_CHARACTERINFO, "openCharInfo", "人物信息", "打开人物信息"},
{GICON_MESSAGES, GICON_MESSAGES, "openMessage", "信息交流", "信息交流"},
{GICON_MOTIONS, GICON_MOTIONS, "openMotions", "动作面板", "打开动作面板"},
{GICON_SKILLS, GICON_SKILLS, "openSkills", "技能面板", "打开技能面板"},
{GICON_OPENCHAT, GICON_MESSAGES, "openChat", "聊天面板", "打开聊天面板"},
{GICON_QUIT, GICON_QUIT, "quit", "退出系统", "退出系统"},
{GICON_PCSELECTOR, GICON_QUIT, "pcselector", "退到人物选择", "退到人物选择"},
{GICON_HELP, GICON_HELP, "help", "查看帮助", "查看帮助"},
{GICON_ABOUT, GICON_CHARACTERINFO, "about", "关于信息", ""},
{GICON_SCENEEDITOR, GICON_SCENEEDITOR, "sceneEditor", "场景编辑器", "场景编辑器"},
{GICON_ENTERWORLD, GICON_ENTERWORLD, "enterWorld", "进入游戏世界", "进入游戏世界"},
{GICON_UIEDITOR, GICON_MESSAGES, "UIEditor", "界面编辑器", "界面编辑器"},
{GICON_SETTING, GICON_SETTING, "setting", "系统配置", "系统配置"},
///..
{GICON_SYSTEM, GICON_SYSTEM, "systemMenu", "系统菜单", "系统菜单"},
{GICON_MAINMENU, GICON_SYSTEM, "mainMenu", "主菜单", "主菜单"},
//////////////////////////////////////////////////////////////////////////
//////////////////////////////////////////////////////////////////////////
//装备
{GICON_ARMOR01, GICON_ARMOR01, "armor01", "上衣", ""},
{GICON_ARMOR02, GICON_ARMOR02, "armor02", "上衣", ""},
{GICON_GLOVE01, GICON_GLOVE01, "glove01", "手套", ""},
{GICON_GLOVE02, GICON_GLOVE02, "glove02", "手套", ""},
{GICON_HELMET01, GICON_HELMET01, "helmet01", "帽子", ""},
{GICON_HELMET02, GICON_HELMET02, "helmet02", "帽子", ""},
{GICON_PANTS01, GICON_PANTS01, "pants01", "裤子", ""},
{GICON_PANTS02, GICON_PANTS02, "pants02", "裤子", ""},
{GICON_BOOT01, GICON_BOOT01, "boot01", "靴子", ""},
{GICON_BOOT02, GICON_BOOT02, "boot02", "靴子", ""},
{GICON_SHIELD01, GICON_SHIELD01, "shield01", "盾牌", ""},
{GICON_SHIELD02, GICON_SHIELD02, "shield02", "盾牌", ""},
//////////////////////////////////////////////
//武器
{GICON_SWORD01, GICON_SWORD01, "sword01", "剑", ""},
{GICON_SWORD02, GICON_SWORD02, "sword02", "剑", ""},
{GICON_SWORD03, GICON_SWORD03, "sword03", "剑", ""},
{GICON_AXE01, GICON_AXE01, "axe01", "斧", ""},
{GICON_AXE02, GICON_AXE02, "axe02", "斧", ""},
{GICON_AXE03, GICON_AXE03, "axe03", "斧", ""},
{GICON_HAMMER01, GICON_HAMMER01, "hammer01", "锤", ""},
{GICON_HAMMER02, GICON_HAMMER02, "hammer02", "锤", ""},
{GICON_HAMMER03, GICON_HAMMER03, "hammer03", "锤", ""},
{GICON_LONGW01, GICON_LONGW01, "longw01", "长刀", ""},
{GICON_LONGW02, GICON_LONGW02, "longw02", "长刀", ""},
{GICON_LONGW03, GICON_LONGW03, "longw03", "长刀", ""},
//////////////////////////////////////////////////////////////////////////
//道具
{GICON_TOOLMONEY, GICON_TOOLMONEY, "money", "金钱", ""},
//////////////////////////////////////////////////////////////////////////
//药水图标
{GICON_DRUGMP, GICON_DRUGMP, "drugmp", "魔法药水", ""},
{GICON_DRUGHP, GICON_DRUGHP, "drughp", "生命药水", ""},
//////////////////////////////////////////////////////////////////////////
//信件图标
{GICON_LETTERSCRIP, GICON_LETTERSCRIP, "letterScrip", "纸条", ""},
{GICON_LETTERMUSIC, GICON_LETTERMUSIC, "letterMusic", "信件", ""},
};
//////////////////////////////////////////////////////////////////////
// Construction/Destruction
//////////////////////////////////////////////////////////////////////
GameIconMan::GameIconMan()
{
//g_pGameIconMan = this;
}
GameIconMan::~GameIconMan()
{
}
IMPLEMENT_CONOBJECT(GameIconMan);
void GameIconMan::Initialize(CSTR pObjName)
{
AssertWarn(g_pGameIconMan == NULL,"只能建立一个实例 GameIconMan");
g_pGameIconMan = new GameIconMan();
g_pGameIconMan->registerObject(pObjName);
g_pGameIconMan->InitGameIcons();
}
void GameIconMan::Destroy()
{
if(g_pGameIconMan)
{
g_pGameIconMan->DestroyTextures();
g_pGameIconMan->deleteObject();
g_pGameIconMan = NULL;
}
}
BOOL GameIconMan::InitGameIcons()
{
//建立图标映射表
GameIconDictionary::Entry* pEntry,*pNew;
StringTableEntry pIDName;
for(U32 n=0; n < sizeof(gs_gameIcons) / sizeof(GameIconDictionary::Entry); n++)
{
pEntry = &gs_gameIcons[n];
pIDName = StringTable->insert(pEntry->pIDName);
//pEntry->pIDName = StringTable->insert(pEntry->pIDName);
//pEntry->pDesc = StringTable->insert(pEntry->pDesc);
pNew = m_gIconDict.InsertGameIcon(pIDName);
pNew->pName = StringTable->insert(pEntry->pName);
if(pEntry->pDesc[0] == 0)
pNew->pDesc = pEntry->pName;
else
pNew->pDesc = StringTable->insert(pEntry->pDesc);
pNew->uCmd = pEntry->uCmd;
pNew->uIcon = pEntry->uIcon;
//m_gIconDict.AddEntry(pEntry);
}
return TRUE;
}
BOOL GameIconMan::DestroyTextures()
{
m_ltMaterials.unload();
//for(S32 n=0; n < m_arTexureHandles.size(); n++)
//{
// m_arTexureHandles[n] = NULL;
//}
//m_arTexureHandles.setSize(0);
return TRUE;
}
BOOL GameIconMan::CreateTextures()
{
//读取图标素材
//S32 nNum = Con::getIntVariable("$pref::GameIcon::PageNum",1);
CSTR pFileName = Con::getVariable("$pref::GameIcon::FilePath");
//if(nNum <= 0)
// nNum = 1;
if(pFileName == 0 || pFileName[0] == 0)
pFileName = StringTable->insert(GICON_FILENAME);
//m_ltMaterials.load(pFileName);
LoadMaretialList(pFileName);
//TextureHandle handle;
////m_arTexureHandles.setSize(
//for(S32 n=0; n < nNum; n++)
//{
// handle = TextureHandle(avar("%s%d",pFileName,n), BitmapTexture,false);
// m_arTexureHandles.push_back(handle);
//}
return TRUE;
}
bool GameIconMan::LoadMaretialList(CSTR pFileName)
{
char path[1024], *p;
dStrcpy(path, pFileName);
if ((p = dStrrchr(path, '/')) != NULL)
*p = 0;
Stream *stream = ResourceManager->openStream(pFileName);
if (stream==NULL)
{
#ifdef TORQUE_DEBUG
Con::warnf("Sky material list is missing: %s", pFileName);
#endif
return false;
}
m_ltMaterials.read(*stream);
ResourceManager->closeStream(stream);
if(!m_ltMaterials.load(BitmapTexture, path))
return false;
return true;
}
BOOL GameIconMan::GetIconTexture(U32 uIcon, TextureHandle& handle, RectI& rect)
{
U32 uPage = (uIcon >> GICON_NUM_INPAGESHIFT);
if(uPage >= m_ltMaterials.size())
return FALSE;
if(m_ltMaterials[uPage] != handle)
handle = m_ltMaterials[uPage];
U32 uCount = (uIcon & GICON_NUM_INPAGEMASK);
rect.point.x = ((uCount & GICON_COLNUMMASK) << GICON_CELLSIZESHIFT); // uCount % Size * cx
rect.point.y = ((uCount >> GICON_COLNUMSHIFT) << GICON_CELLSIZESHIFT ); // uCount / Size * cx
rect.extent.x = GICON_CELLSIZE;
rect.extent.y = GICON_CELLSIZE;
return TRUE;
}
/////////////////////////////////////////////////////////////////////////////
//
ConsoleMethod(GameIconMan,CreateTextures,bool,2,2,"bool object.CreateTextures()")
{
return object->CreateTextures();
}
ConsoleMethod(GameIconMan,DestroyTextures,bool,2,2,"void object.DestroyTextures()")
{
return object->DestroyTextures();
}
ConsoleMethod(GameIconMan,ParseIconCallback,bool,3,3,"bool object.ParseIconCallback(sTag)")
{
return false;
//CSTR sTag = argv[2];
//char* pTag = dStrstr(sTag,PRE_MOTION"");
////解析表情动作
//if(pTag == sTag)
//{
// GPlayer* pGPlayer;
// if(Sim::findObject(SCRIPT_GPlayer, pGPlayer))
// {
// StringTableEntry pIconTag = StringTable->insert(sTag + 3);
// pGPlayer->PlayMotion(pIconTag);
// return true;
// }
//}
//return false;
}
};//namespace RPG
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -