示例#1
0
        public int GetNearestWallIndex(FurnitureItem lastBuilding, out FurnitureDirect dir)
        {
            int x, y;

            GetIndex2D(lastBuilding.PosIndex, out x, out y);
            dir = lastBuilding.TheInfo.direction;
            switch (dir)
            {
            case FurnitureDirect.east:
                if (y == 0 || !HasFurniture(x, y - 1))
                {
                    dir = FurnitureDirect.sourth;
                }
                else
                {
                    y--;
                }
                break;

            case FurnitureDirect.sourth:
                if (x == 0 || !HasFurniture(x - 1, y))
                {
                    dir = FurnitureDirect.west;
                }
                else
                {
                    x--;
                }
                break;

            case FurnitureDirect.west:
                if (y == height - 1 || !HasFurniture(x, y + 1))
                {
                    dir = FurnitureDirect.north;
                }
                else
                {
                    y++;
                }
                break;

            case FurnitureDirect.north:
                if (x == width - 1 || !HasFurniture(x + 1, y))
                {
                    dir = FurnitureDirect.east;
                }
                else
                {
                    x++;
                }
                break;
            }

            return(y * width + x);
        }
示例#2
0
        private void MoveFurniture(Vector3 hitPos)
        {
            int index = placeMgr.GetPosIndex(hitPos);

            switch (buildingFurniture.TheInfo.furnitureType)
            {
            case FurnitureType.wall:
                FurnitureDirect tempDir = placeMgr.GetTargetWallDir(index, hitPos);
                buildingFurniture.Direction = (int)tempDir;
                break;
            }

            SetFurnitureIndex(buildingFurniture, index);
        }