コード例 #1
0
        // 대상이 사라졌다!
        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);
        }
コード例 #2
0
        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);
        }