// 대상이 사라졌다! public bool ApplyLeave(GameObject gameObject) { // 유효성 체크 if (gameObject.Room == null) { return(false); } if (gameObject.Room.Map == null) { return(false); } // 올바른 좌표 확인 PositionInfo posInfo = gameObject.Info.PosInfo; if (posInfo.PosX < MinX || posInfo.PosX > MaxX) { return(false); } if (posInfo.PosY < MinY || posInfo.PosY > MaxY) { return(false); } // Zone Zone zone = gameObject.Room.GetZone(gameObject.CellPos); zone.Remove(gameObject); // 좌표 찍어 주기 int x = posInfo.PosX - MinX; int y = MaxY - posInfo.PosY; // 최종확인후 삭제 if (_objects[y, x] == gameObject) { _objects[y, x] = null; } return(true); }
public bool ApplyLeave(GameObject gameObject) { if (gameObject.Room == null) { return(false); } if (gameObject.Room.Map != this) { return(false); } PositionInfo posInfo = gameObject.PosInfo; if (posInfo.PosX < MinX || posInfo.PosX > MaxX) { return(false); } if (posInfo.PosY < MinY || posInfo.PosY > MaxY) { return(false); } // Zone Zone zone = gameObject.Room.GetZone(gameObject.CellPos); zone.Remove(gameObject); { int x = posInfo.PosX - MinX; int y = MaxY - posInfo.PosY; if (_objects[y, x] == gameObject) { _objects[y, x] = null; } } return(true); }