public uint Execute(PacketDistributed ipacket)
        {
            GC_DROPITEM_INFO packet = (GC_DROPITEM_INFO )ipacket;

            if (null == packet)
            {
                return((uint)PACKET_EXE.PACKET_EXE_ERROR);
            }
            //enter your logic

            //判断ServerID是否合法
            if (packet.ObjId < 0)
            {
                return((uint)PACKET_EXE.PACKET_EXE_CONTINUE);
            }
            //安全措施,如果发现ServerID已经存在,则先移除掉
            if (Singleton <ObjManager> .GetInstance().IsObjExist(packet.ObjId))
            {
                Singleton <ObjManager> .GetInstance().RemoveObj(packet.ObjId);
            }
            Obj_DroopItemData initData = new Obj_DroopItemData();

            initData.m_nServerID  = packet.ObjId;
            initData.m_fX         = ((float)packet.Pos_x) / 100;
            initData.m_fZ         = ((float)packet.Pos_z) / 100;
            initData.m_nType      = packet.Type;
            initData.m_nItemId    = packet.DropItemId;
            initData.m_nItemCount = packet.Count;
            initData.m_OwnerGuid  = packet.OwnerGuid;

            Singleton <ObjManager> .GetInstance().NewDropObj(Games.GlobeDefine.GameDefine_Globe.OBJ_TYPE.OBJ_DROP_ITEM, initData);



            return((uint)PACKET_EXE.PACKET_EXE_CONTINUE);
        }
Example #2
0
        public virtual bool Init(Obj_DroopItemData initData)
        {
            if (null == m_ObjTransform)
            {
                m_ObjTransform = transform;
            }
            if (null != GameManager.gameManager.ActiveScene &&
                null != GameManager.gameManager.ActiveScene.DropItemBoardRoot)
            {
                m_ObjTransform.parent = GameManager.gameManager.ActiveScene.DropItemBoardRoot.transform;
            }
            else
            {
                LogModule.ErrorLog("GameManager.gameManager.ActiveScene.DropItemBoardRoot is null");
            }

            DropType  = initData.m_nType;
            ItemId    = initData.m_nItemId;
            ItemCount = initData.m_nItemCount;
            ServerID  = initData.m_nServerID;
            OwnerGuid = initData.m_OwnerGuid;

            float fScaling = 0.005f;

            Vector3 pos = new Vector3(initData.m_fX, 0, initData.m_fZ);

            if (null != Singleton <ObjManager> .Instance.MainPlayer)
            {
                pos.y = Singleton <ObjManager> .Instance.MainPlayer.Position.y;
            }
            else
            {
                pos = ActiveScene.GetTerrainPosition(pos);
            }
            pos.y += 0.2f;

            if (GameManager.gameManager.RunningScene == (int)Games.GlobeDefine.GameDefine_Globe.SCENE_DEFINE.SCENE_FB_HUNDUNZHIDI)
            {
                pos.y = 15.1f;
            }

            m_ObjTransform.position = pos;
            //暂时 写死了 后面再用服务器
            m_ObjTransform.Rotate(Vector3.up * 135);

            //初始化特效
            if (ObjEffectController == null)
            {
                ObjEffectController = gameObject.AddComponent <ObjEffectBehaviourController>();
            }

            InitEffect();

            if (DropType == (int)Games.GlobeDefine.GameDefine_Globe.DROP_TYPE.DROP_ITEM)
            {
                Tab_CommonItem line = TableManager.GetCommonItemByID(m_nItemId, 0);
                if (line != null)
                {
                    fScaling = line.DropScaling;

                    int nEffectId = line.DropEffectId;
                    if (nEffectId != -1)
                    {
                        PlayEffect(nEffectId);
                    }
                }
            }
            Vector3 posScale = m_ObjTransform.localScale;

            m_ObjTransform.localScale = posScale * fScaling;
            m_localScale = m_ObjTransform.localScale;
            return(true);
        }