예제 #1
0
        /// <summary>
        /// 格子发生了变化
        /// </summary>
        public void ChangeGrid()
        {
            //角色死亡,并且登出的时候,会被配置成 -1
            if (_ClientData.MapCode < 0)
            {
                return;
            }

            GameMap gameMap  = GameManager.MapMgr.DictMaps[_ClientData.MapCode];
            int     newGridX = _ClientData.PosX / gameMap.MapGridWidth;
            int     newGridY = _ClientData.PosY / gameMap.MapGridHeight;

            if (_OldGridPoint.X != newGridX || _OldGridPoint.Y != newGridY)
            {
                _OldGridPoint = new Point(newGridX, newGridY);

                //触发动作
                int areaLuaID = gameMap.GetAreaLuaID(_OldGridPoint);
                if (areaLuaID != _OldAreaLuaID)
                {
                    if (_OldAreaLuaID > 0)
                    {
                        //执行区域脚本
                        RunAreaLuaFile(gameMap, _OldAreaLuaID, "leaveArea");
                    }

                    _OldAreaLuaID = areaLuaID;
                    if (areaLuaID > 0)
                    {
                        //执行区域脚本
                        RunAreaLuaFile(gameMap, areaLuaID, "enterArea");
                    }
                }

                //在这里移动中拾取物品?
                //安全区不进行物品拾取检测 ChenXiaojun
                if (!gameMap.InSafeRegionList(CurrentGrid))
                {
                    GameManager.GoodsPackMgr.ProcessClickGoodsPackWhenMovingToOtherGrid(this);
                }
            }
        }