コード例 #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 RunTo(IObject obj, Dircetions nDir)
        {
            Point  grid    = obj.CurrentGrid;
            int    nCurrX  = (int)grid.X;
            int    nCurrY  = (int)grid.Y;
            int    nX      = nCurrX;
            int    nY      = nCurrY;
            int    nWalk   = 2;
            string pathStr = string.Format("{0}_{1}", nCurrX, nCurrY);

            for (int i = 0; i < nWalk; i++)
            {
                switch (nDir)
                {
                case Dircetions.DR_UP:
                    nY++;
                    break;

                case Dircetions.DR_UPRIGHT:
                    nX++;
                    nY++;
                    break;

                case Dircetions.DR_RIGHT:
                    nX++;
                    break;

                case Dircetions.DR_DOWNRIGHT:
                    nX++;
                    nY--;
                    break;

                case Dircetions.DR_DOWN:
                    nY--;
                    break;

                case Dircetions.DR_DOWNLEFT:
                    nX--;
                    nY--;
                    break;

                case Dircetions.DR_LEFT:
                    nX--;
                    break;

                case Dircetions.DR_UPLEFT:
                    nX--;
                    nY++;
                    break;
                }
                if (!ChuanQiUtils.CanMove(obj, nX, nY))
                {
                    return(false);
                }
                pathStr += string.Format("|{0}_{1}", nX, nY);
            }
            return(ChuanQiUtils.RunXY(obj, nX, nY, nDir, pathStr));
        }