Exemple #1
0
    public CObject_Special NewSpecialObject(int idServer)
    {
        if (idServer != -1)
        {
            CObject_Special pFind = (CObject_Special)FindServerObject(idServer);
            //如果已经有
            if (pFind != null)
            {
                return(pFind);
            }
        }
        CObject_Special newSpecial = new CObject_Special();

        add(newSpecial, idServer);
        mLogicalObject.AddChild(newSpecial);
        return(newSpecial);
    }
        public override NET_RESULT_DEFINE.PACKET_EXE Execute(PacketBase pPacket, ref Peer pPlayer)
        {
            if (GameProcedure.GetActiveProcedure() == (GameProcedure)GameProcedure.s_ProcMain)
            {
                GCNewSpecial Packet = (GCNewSpecial)pPacket;
                //LogManager.Log("Receive GCNewSpecial Packet ObjID:" + Packet.ObjID);
                fVector2 pos = new fVector2(Packet.posWorld.m_fX, Packet.posWorld.m_fZ);
                if (!WorldManager.Instance.ActiveScene.IsValidPosition(ref pos))
                {
                    LogManager.LogError("ERROR POSITION @ GCNewSpecialHandler");
                    return(NET_RESULT_DEFINE.PACKET_EXE.PACKET_EXE_CONTINUE);
                }

                CObject_Special pSpecial = (CObject_Special)CObjectManager.Instance.FindServerObject(Packet.ObjID);
                if (pSpecial == null)
                {
                    //创建平台生长点
                    pSpecial = (CObject_Special)CObjectManager.Instance.NewSpecialObject(Packet.ObjID);
                }
                else
                {
                    pSpecial.Release();
                }

                SObject_SpecialInit initSpecial = new SObject_SpecialInit();
                initSpecial.m_fvPos.x = Packet.posWorld.m_fX;
                initSpecial.m_fvPos.z = Packet.posWorld.m_fZ;
                initSpecial.m_fvPos.y = 0.0f;
                initSpecial.m_fvRot   = new Vector3(0.0f, Packet.Dir, 0.0f);
                initSpecial.m_nDataID = Packet.DataID;
                pSpecial.Initial(initSpecial);
                pSpecial.SetMapPosition(Packet.posWorld.m_fX, Packet.posWorld.m_fZ);
                pSpecial.SetMsgTime(GameProcedure.s_pTimeSystem.GetTimeNow());
            }
            return(NET_RESULT_DEFINE.PACKET_EXE.PACKET_EXE_CONTINUE);
        }