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