예제 #1
0
    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);
            //}
        }
    }