示例#1
0
        protected static bool RunXY1(IObject obj, int nX, int nY, Dircetions nDir, string pathStr)
        {
            bool result;

            if (!ChuanQiUtils.CanMove(obj, nX, nY))
            {
                result = false;
            }
            else
            {
                Point   grid    = obj.CurrentGrid;
                int     nCurrX  = (int)grid.X;
                int     nCurrY  = (int)grid.Y;
                MapGrid mapGrid = GameManager.MapGridMgr.DictGrids[obj.CurrentMapCode];
                if (mapGrid.MoveObjectEx(nCurrX, nCurrY, nX, nY, obj))
                {
                    ChuanQiUtils.NotifyOthersMyMoving1(obj, pathStr, nCurrX, nCurrY, nX, nY, nDir);
                    obj.CurrentGrid = new Point((double)nX, (double)nY);
                    obj.CurrentDir  = nDir;
                    ChuanQiUtils.Notify9Grid(obj, false);
                    result = true;
                }
                else
                {
                    result = false;
                }
            }
            return(result);
        }
示例#2
0
        public static bool TransportTo(IObject obj, int nX, int nY, Dircetions nDir, int oldMapCode, string pathStr = "")
        {
            Point grid   = obj.CurrentGrid;
            int   nCurrX = (int)grid.X;
            int   nCurrY = (int)grid.Y;

            if (oldMapCode > 0 && oldMapCode != obj.CurrentMapCode)
            {
                MapGrid oldMapGrid = GameManager.MapGridMgr.DictGrids[oldMapCode];
                if (oldMapGrid != null)
                {
                    oldMapGrid.RemoveObject(obj);
                }
                nCurrX = -1;
                nCurrY = -1;
            }
            MapGrid mapGrid = GameManager.MapGridMgr.DictGrids[obj.CurrentMapCode];
            bool    result;

            if (mapGrid.MoveObjectEx(nCurrX, nCurrY, nX, nY, obj))
            {
                obj.CurrentGrid = new Point((double)nX, (double)nY);
                obj.CurrentDir  = nDir;
                if (obj is Monster && (obj as Monster).MonsterType == 1001)
                {
                    GameManager.MonsterMgr.ChangePosition(Global._TCPManager.MySocketListener, Global._TCPManager.TcpOutPacketPool, obj as Monster, (int)obj.CurrentPos.X, (int)obj.CurrentPos.Y, (int)nDir, 159, 0);
                }
                ChuanQiUtils.Notify9Grid(obj, true);
                result = true;
            }
            else
            {
                result = false;
            }
            return(result);
        }