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); }
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)); }