コード例 #1
0
        public override NET_RESULT_DEFINE.PACKET_EXE Execute(PacketBase pPacket, ref Peer pPlayer)
        {
            GCCharImpactListUpdate Packet = (GCCharImpactListUpdate)pPacket;

            if (GameProcedure.GetActiveProcedure() == GameProcedure.s_ProcMain)
            {
                CObject pObj = CObjectManager.Instance.FindServerObject(Packet.OwnerID);
                if (pObj != null)
                {
                    ////如果需要更新资源,尝试放入缓冲队列
                    //if(pObjectManager->GetLoadQueue()->TryAddLoadTask(pObj->GetID(), pPacket))
                    //	return PACKET_EXE_NOTREMOVE;

                    CObject_Character pChar = (CObject_Character)pObj;
                    if (pChar != null)
                    {
                        pChar.RemoveAllImpact();
                    }
                    SimpleImpactList ImpactList = new SimpleImpactList();

                    for (short i = 0; i < Packet.NumImpact; i++)
                    {
                        SCommand_Object cmdTemp = new SCommand_Object();
                        cmdTemp.m_wID = (int)OBJECTCOMMANDDEF.OC_UPDATE_IMPACT_EX;
                        cmdTemp.SetValue <short>(0, Packet.ImpactID[i]);
                        pObj.PushCommand(cmdTemp);
                        ImpactList.AddImpact(Packet.ImpactID[i]);
                    }
                    //待实现
                    //CTeamOrGroup* pTeam = CUIDataPool::GetMe()->GetTeamOrGroup();
                    //if ( pTeam != NULL )
                    //{
                    //    pTeam->UpdateImpactsList( pPacket->GetOwnerID(), &ImpactList );
                    //}

                    //pObj->PushDebugString("GCCharImpactListUpdate");
                    pObj.SetMsgTime(GameProcedure.s_pTimeSystem.GetTimeNow());
                }
                LogManager.Log("RECV GCCharImpactListUpdate");
            }
            return(NET_RESULT_DEFINE.PACKET_EXE.PACKET_EXE_CONTINUE);
        }