public virtual void SetMainTarget(int id, DESTROY_MAIN_TARGET_TYPE delType) { CObject pFindObj = null; if (id != MacroDefine.INVALID_ID) { pFindObj = (CObject)FindServerObject(id); } //不考虑无法选择的物体 //如果没选中物体或者选种的物体是不CanbeSelect的,告诉服务器取消当前选种对象。 if (pFindObj == null || (pFindObj != null && !(pFindObj.CanbeSelect()))) { if (mMainTarget != null && mMainTarget.GetRenderInterface() != null) { //关闭选择环 mMainTarget.GetRenderInterface().Attach_ProjTexture(GFX.GfxObject.PROJTEX_TYPE.SELECT_RING, false, 1.0f, 1.7f, null); mMainTarget = null; if ((delType != DESTROY_MAIN_TARGET_TYPE.DEL_OBJECT) || (pFindObj != null && !(pFindObj.CanbeSelect()))) { // 如果是鼠标右键销毁, target 窗口. // 2006-4-12 如果当前选择的不是队友返回。 // 设置当前没有选中队友 // SetCurSelTeam(-1); AutoReleaseSkill.Instance.SetTargetObject(-1); CEventSystem.Instance.PushEvent(GAME_EVENT_ID.GE_MAINTARGET_CHANGED, -1); } else { //if(!IsSelTeam()) // { // 2006-4-12 如果当前选择的不是队友返回。 // CEventSystem.Instance.PushEvent(GAME_EVENT_ID.GE_MAINTARGET_CHANGED,-1); // } } } else { // 设置当前没有选中队友 // SetCurSelTeam(-1); AutoReleaseSkill.Instance.SetTargetObject(-1); CEventSystem.Instance.PushEvent(GAME_EVENT_ID.GE_MAINTARGET_CHANGED, -1); } return; } if (pFindObj != null && (pFindObj != mMainTarget)) { //关闭选择环 if (mMainTarget != null && mMainTarget.GetRenderInterface() != null) { mMainTarget.GetRenderInterface().Attach_ProjTexture(GFX.GfxObject.PROJTEX_TYPE.SELECT_RING, false, 1.0f, 1.7f, null); } //设置选择对象 mMainTarget = pFindObj; //告诉server选中的对象 //发往服务器 CGLockTarget msg = new CGLockTarget(); msg.TargetID = id; NetManager.GetNetManager().SendPacket(msg); //打开新的选择环 if (mMainTarget != null && mMainTarget.GetRenderInterface() != null) { CObject_PlayerNPC pFindNPC = (CObject_PlayerNPC)pFindObj; float Select_Ring_Range = pFindNPC.GetProjtexRange(); //ENUM_RELATION eCampTypeMetoIt = ENUM_RELATION.RELATION_INVALID; //if(g_theKernel.IsKindOf(m_pMainTarget->GetClass(), GETCLASS(CObject_Character))) //{ // eCampTypeMetoIt = CalcRelationType( // CObjectManager::GetMe()->GetMySelf()->GetCharacterData()->Get_CampData()->m_nCampID, // pFindNPC->GetCampData()->m_nCampID, // CGameProcedure::s_pCampDataMgr ); // // 如果选中的是玩家则通过PK模式判断关系 [8/19/2011 edit by ZL] // if (eCampTypeMetoIt != RELATION_ENEMY) // { // INT tempRelation = CObjectManager::GetMe()->GetMySelf()->GetRelationOther((CObject_Character*)pFindObj); // if ( tempRelation != -1 ) // eCampTypeMetoIt = (ENUM_RELATION)tempRelation; // } //} mMainTarget.GetRenderInterface().Attach_ProjTexture(GFX.GfxObject.PROJTEX_TYPE.SELECT_RING, true, Select_Ring_Range, 1.7f, null); } //产生一个选择对象更改的事件 UIWindowMng.Instance.ShowWindow("TargetWindow"); CEventSystem.Instance.PushEvent(GAME_EVENT_ID.GE_MAINTARGET_CHANGED, id); AutoReleaseSkill.Instance.SetTargetObject(id); ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// // // 设置选中队友2006-4-1 // //TeamMemberInfo* pInfo = CUIDataPool::GetMe()->GetTeamOrGroup()->GetMemberByServerId(m_pMainTarget->GetServerID()); //if(pInfo) //{ // GUID_t GUID = pInfo->m_GUID; // // 设置当前选中队友 // SetCurSelTeam(TRUE); // SetCurSelTeam(GUID); //} } }