TA的每日心情 | 无聊 2014-8-8 12:31 |
---|
签到天数: 37 天 [LV.5]常住居民I 鲜花( 0) 鸡蛋( 0)
|
武侠-CareObject
一 应用:关心与某逻辑Obj的距离(用于商人或者任务窗口/下拉菜单等,当距离超过一定距离后自动关闭)
二 实现
1 首先注册lua接口
INT CUIWindowItem:UA_CareObject(LuaPlus:uaState* pState)
{
LuaStack args(pState);
if(!(args[2].IsInteger()))
{
KLThrow("LUA: CUIWindowItem:UA_CareObject[2] Wrong Param1");
}
if(!(args[3].IsInteger()))
{
KLThrow("LUA: CUIWindowItem:UA_CareObject[3] Wrong Param1");
}
if(!(args[4].IsString()))
{
KLThrow("LUA: CUIWindowItem:UA_CareObject[4] Wrong Param1");
}
// Object的ID
INT nObjID = args[2].GetInteger();
// 是否关心
INT bCare = args[3].GetInteger()==1;
// 谁在关心
std::string str = args[4].GetString();
g_pObjectSystem->CareObject(nObjID, bCare, str);
return 0;
}
复制代码
2 保存到map里面
// 关心某物体的指定事件 id-物体ID, szSign:关心标志(谁关心) bCare-关心或者取消关心
// 修改说明:添加一个“是谁关心”的内容
VOID CObjectManager::CareObject(INT id, BOOL bCare, std::string szSign)
{
//AxTrace(0,0,"C++ id =%d,bCare =%d,szSign =%s",id,(INT)bCare,szSign.c_str());
// 搜索物体
CObject* pObject = (CObject*)FindObject(id);
if(!pObject) return;
|
|