Beispiel #1
0
 // Overloaded method for planing multiple furniture jobs at once (e.g. walls, tanks, batteries, etc.)
 public void PlanFurniture(List <TileOWW> furniture_tiles, FurnitureType furnitureType)
 {
     foreach (TileOWW tile in furniture_tiles)
     {
         PlanFurniture(tile, furnitureType);
     }
 }
Beispiel #2
0
    public void SetMode_None()
    {
        isMode_Plopable    = false;
        isMode_Dragable    = false;
        isMode_Hull        = false;
        isMode_HullNoWalls = false;
        isMode_RemoveHull  = false;
        isMode_Wall        = false;
        isMode_RemoveWall  = false;
        isMode_Staff       = false;
        staff                  = null;
        isMode_Furniture       = false;
        isMode_FurnitureMulti  = false;
        furnitureTypeInUse     = null;
        isMode_RemoveFurniture = false;
        isMode_Rooms           = false;
        roomTypeInUse          = null;

        BuildModeController.Instance.SetGridVisible(false);
        BuildModeController.Instance.roomsTilemap.SetActive(false);
        BuildModeController.Instance.ClearPreviews();

        currentBuildPrice = 0;
        Destroy(buildPriceInstance);
    }
    public void startDialog(FurnitureType furnitureType)
    {
        //string dialogText = "hey dialog here";
        DialogBoxController dialog;

        string dialogBoxToUse = SettingsController.instance.getDialogBoxToUse();

        MenuScreen dialogScreen = MenuController.instance.getDialogScreen(dialogBoxToUse);

        dialog = dialogScreen.screenObject.GetComponent <DialogBoxController>();

        if (dialog != null)
        {
            Paragraph paragraph = DialogHolder.instance.grabRandomParagraph();

            if (paragraph == null)
            {
                dialog.noMoreDialog();
                return;
            }

            dialog.startDialog(paragraph);

            DialogHolder.instance.removeParagraph(paragraph);

            SaveController.instance.settings.incrementInt("NumberOfParagraphsRead");
        }
    }
Beispiel #4
0
 public Furniture(int x, int y, FurnitureType type, Orientation orientation)
 {
     cellX            = x;
     cellY            = y;
     this.type        = type;
     this.orientation = orientation;
 }
Beispiel #5
0
 public Furniture(FurnitureType furnitureType, Point position, int size, Color color) : base(position, size, color)
 {
     this.furnitureType   = furnitureType;
     currentNumberOfUsers = 0;
     maxCapacity          = SetMaxCapacity(furnitureType);
     refillPower          = SetRefillPower(furnitureType);
 }
Beispiel #6
0
        public Furniture(FurnitureType furnitureType)
        {
            FurnitureType = furnitureType;

            switch (furnitureType)
            {
            case FurnitureType.BathRoom:
                Size = 1;
                break;

            case FurnitureType.BedRoom:
                Size = 2;
                break;

            case FurnitureType.Kitchen:
                Size = 2;
                break;

            case FurnitureType.LivingRoom:
                Size = 3;
                break;

            default:
                throw new ArgumentException("Must be unknown type of furniture.");
            }
        }
Beispiel #7
0
        /// <summary>
        /// Displays a table on the canvas
        /// </summary>
        /// <param name="t"></param>
        private void DisplayTable(TableInfo t)
        {
            Image newImg  = new Image();
            int   tableId = t.TypeId;

            switch (tableId)
            {
            case 1:
                newImg.Source = new BitmapImage(new Uri("pack://application:,,,/Resources/circle_1.png"));
                break;

            case 2:
                newImg.Source = new BitmapImage(new Uri("pack://application:,,,/Resources/square_2.png"));
                break;

            case 3:
                newImg.Source = new BitmapImage(new Uri("pack://application:,,,/Resources/rectangle_3.png"));
                break;

            default:
                newImg.Source = new BitmapImage(new Uri("pack://application:,,,/Resources/circle_1.png"));
                break;
            }
            newImg.Width  = 100;
            newImg.Height = 100;
            newImg.Tag    = t.Id;
            FurnitureType ft = db.FurnitureType.Single(u => u.Id == tableId);

            newImg.Name       = "Placed" + ft.Type + "_" + t.Id;
            newImg.MouseDown += Table_MouseDown;
            Canvas_FB.Children.Add(newImg);
            Canvas.SetLeft(newImg, t.Xloc);
            Canvas.SetTop(newImg, t.Yloc);
        }
Beispiel #8
0
    /// <summary>
    /// Returns an instance of a FurnitureController according to the correct type.
    /// </summary>
    public static FurnitureController Create(FurnitureType type, Transform transform)
    {
        switch (type)
        {
        case FurnitureType.None:
            return(new FurnitureController(transform));

        case FurnitureType.CArm:
            return(new FurnitureController(transform));

        case FurnitureType.Closet:
            return(new FurnitureController(transform));

        case FurnitureType.Door:
            return(new DoorController(transform));

        case FurnitureType.PatientTable:
            return(new PatientTableController(transform));

        case FurnitureType.ProtectionWall:
            return(new MoveableController(transform));

        case FurnitureType.Table:
            return(new MoveableController(transform));
        }

        return(new FurnitureController(transform));
    }
 private void BtnEdit_Click(object sender, RoutedEventArgs e)
 {
     if (dgFurniture.Visibility.Equals(Visibility.Visible))
     {
         Furniture       copy            = (Furniture)SelectedFurniture.Clone();
         FurnitureWindow furnitureWindow = new FurnitureWindow(copy, FurnitureWindow.Operation.EDIT);
         furnitureWindow.Show();
     }
     else if (dgFurnitureType.Visibility.Equals(Visibility.Visible))
     {
         FurnitureType       copy            = (FurnitureType)SelectedFurnitureType.Clone();
         FurnitureTypeWindow furnitureWindow = new FurnitureTypeWindow(copy, FurnitureTypeWindow.Operation.EDIT);
         furnitureWindow.Show();
     }
     else if (dgSales.Visibility.Equals(Visibility.Visible))
     {
         Sale       copy       = (Sale)SelectedSale.Clone();
         SaleWindow saleWindow = new SaleWindow(copy, SaleWindow.Operation.EDIT);
         saleWindow.Show();
     }
     else if (dgUsers.Visibility.Equals(Visibility.Visible))
     {
         User       copy       = (User)SelectedUser.Clone();
         UserWindow userWindow = new UserWindow(copy, UserWindow.Operation.EDIT);
         userWindow.Show();
     }
     else if (dgAdditionalService.Visibility.Equals(Visibility.Visible))
     {
         AdditionalService       copy = (AdditionalService)SelectedAdditionalService.Clone();
         AdditionalServiceWindow additionalServiceWindow = new AdditionalServiceWindow(copy, AdditionalServiceWindow.Operation.EDIT);
         additionalServiceWindow.Show();
     }
 }
        public static void Update(FurnitureType ft)
        {
            try
            {
                using (var con = new SqlConnection(ConfigurationManager.ConnectionStrings["POP"].ConnectionString))
                {
                    con.Open();

                    SqlCommand cmd = con.CreateCommand();

                    cmd.CommandText  = "UPDATE FurnitureType SET Name=@Name, Deleted=@Deleted WHERE ID = @ID;";
                    cmd.CommandText += "SELECT SCOPE_IDENTITY();";
                    cmd.Parameters.AddWithValue("ID", ft.ID);
                    cmd.Parameters.AddWithValue("Name", ft.Name);
                    cmd.Parameters.AddWithValue("Deleted", ft.Deleted);

                    cmd.ExecuteNonQuery();

                    foreach (var type in Project.Instance.FurnitureTypesList)
                    {
                        if (ft.ID == type.ID)
                        {
                            type.Name    = ft.Name;
                            type.Deleted = ft.Deleted;
                        }
                    }
                }
            }
            catch
            {
                MessageBox.Show("Database error!", "Error", MessageBoxButton.OK, MessageBoxImage.Error);
            }
        }
Beispiel #11
0
    public TileOWW PreviewFurniture(FurnitureType furnitureType, int posX, int posY)
    {
        ClearPreviews();


        TileOWW furnitureTile       = WorldController.Instance.GetWorld().GetTileAt(posX, posY);
        TileOWW furnitureTileReturn = null;

        if (furnitureTile != null)
        {
            // Check valid
            if (CheckFurniturePreviewValid(furnitureTile, furnitureType))
            {
                CreatePreview(validPreviewPrefab, furnitureType.title, posX, posY);
                furnitureTileReturn = furnitureTile;
            }
            else
            {
                CreatePreview(invalidPreviewPrefab, furnitureType.title, posX, posY);
            }
        }
        // Display price UI
        InputController.Instance.currentBuildPrice = furnitureType.cost;

        return(furnitureTileReturn);
    }
        private void DeleteFurnitureType(object sender, RoutedEventArgs e)
        {
            FurnitureType furnitureType   = (FurnitureType)dgFurnitureTypes.SelectedItem;
            int           furnitureTypeId = furnitureType.Id;

            if (MessageBox.Show($"Are you sure you want to delete : {furnitureType.Name} ?", "Deleting", MessageBoxButton.YesNo, MessageBoxImage.Warning) == MessageBoxResult.Yes)
            {
                FurnitureDAO furnitureDAO = new FurnitureDAO();

                ftList.Remove(furnitureType);
                ftView.Refresh();
                //Posle brisanja tipa namjestaja implementirati brisanje svih namhjestaja koji pripadaju tom tipu namjestaja
                foreach (Furniture item in furnitureList)
                {
                    if (item.FurnitureType.Id == furnitureTypeId)
                    {
                        furnitureList.Remove(item);
                        furnitureView.Refresh();
                    }
                }

                /*
                 * Nakon uklanjanja tipa namjestaja iz radne memorije, zatim uklanjanja svih namjestaja koji pripadaju tom tipu i iz radne memorije
                 * uklanjam i sam tip namjestaja iz baze.
                 */
                new FurnitureTypeDAO().Delete(furnitureType);
            }
        }
Beispiel #13
0
    //家具のカテゴリーID(取得用)
    public void set_category_ID(int id)
    {
        category_ID_ = id;

        if (category_ID_ == 0)
        {
            //ベッド
            furniture_type_ = FurnitureType.bed;
        }
        else if (category_ID_ == 1)
        {
            //テーブル
            furniture_type_ = FurnitureType.table;
        }
        else if (category_ID_ == 2)
        {
            //ソファ
            furniture_type_ = FurnitureType.sofa;
        }
        else if (category_ID_ == 3)
        {
            //カーペット
            furniture_type_ = FurnitureType.carpet;
        }
        else if (category_ID_ == 4)
        {
            //タンス
            furniture_type_ = FurnitureType.cabinet;
        }
        else if (category_ID_ == 5)
        {
            //机
            furniture_type_ = FurnitureType.desk;
        }
        else if (category_ID_ == 6)
        {
            //観葉植物
            furniture_type_ = FurnitureType.foliage;
        }
        else if (category_ID_ == 7)
        {
            //天井ランプ
            furniture_type_ = FurnitureType.ceillamp;
        }
        else if (category_ID_ == 8)
        {
            //机ランプ
            furniture_type_ = FurnitureType.desklamp;
        }
        else if (category_ID_ == 9)
        {
            //家電
            furniture_type_ = FurnitureType.electronics;
        }
        else if (category_ID_ == 10)
        {
            //カーテン
            furniture_type_ = FurnitureType.curtain;
        }
    }
Beispiel #14
0
        public static Point GetBoundsForType(this FurnitureType type)
        {
            switch (type)
            {
            case FurnitureType.Chair:
            case FurnitureType.Lamp:
            case FurnitureType.Decor:
                return(new Point(64, 64));

            case FurnitureType.Bench:
            case FurnitureType.Painting:
            case FurnitureType.Table:
                return(new Point(128, 128));

            case FurnitureType.Couch:
            case FurnitureType.Rug:
                return(new Point(192, 128));

            case FurnitureType.Armchair:
            case FurnitureType.Dresser:
            case FurnitureType.Bookcase:
            case FurnitureType.Fireplace:
                return(new Point(128, 64));

            case FurnitureType.LongTable:
                return(new Point(320, 64));

            case FurnitureType.Window:
                return(new Point(64, 128));

            default:
                return(new Point(64, 64));
            }
        }
Beispiel #15
0
        private void button3_Click(object sender, EventArgs e)
        {
            FurnitureType selectedFurnitureType = (FurnitureType)comboBox1.SelectedItem;
            Color         color = Color.Black;

            if (selectedFurnitureType == FurnitureType.Bed)
            {
                color = Color.Red;
            }
            else if (selectedFurnitureType == FurnitureType.Fridge)
            {
                color = Color.Blue;
            }
            else if (selectedFurnitureType == FurnitureType.Television)
            {
                color = Color.Purple;
            }
            else if (selectedFurnitureType == FurnitureType.Toilet)
            {
                color = Color.Green;
            }
            Furniture furniture = new Furniture(selectedFurnitureType, Furniture.GenerateFurniturePosition(Engine.GetFourniturePositions()), 50, color);

            Engine.AddFurniture(furniture);
        }
        public static ObservableCollection <FurnitureType> GetAll()
        {
            var furnitureTypes = new ObservableCollection <FurnitureType>();

            using (var con = new SqlConnection(ConfigurationManager.ConnectionStrings["POP"].ConnectionString))
            {
                con.Open();

                SqlCommand     cmd = con.CreateCommand();
                SqlDataAdapter da  = new SqlDataAdapter();
                DataSet        ds  = new DataSet();

                cmd.CommandText  = "SELECT * FROM FurnitureType WHERE Deleted = 0;";
                da.SelectCommand = cmd;
                da.Fill(ds, "FurnitureType");

                foreach (DataRow row in ds.Tables["FurnitureType"].Rows)
                {
                    var ft = new FurnitureType();
                    ft.ID      = Convert.ToInt32(row["ID"]);
                    ft.Name    = row["Name"].ToString();
                    ft.Deleted = bool.Parse(row["Deleted"].ToString());

                    furnitureTypes.Add(ft);
                }
            }
            return(furnitureTypes);
        }
        /// <summary>
        /// Displays a table on the canvas
        /// </summary>
        /// <param name="t">TableInfo object from database</param>
        private void DisplayTable(TableInfo t)
        {
            Image newImg  = new Image();
            int   tableId = t.TypeId;

            switch (tableId)
            {
            case 1:
                newImg.Source = RoundTable.Source;
                break;

            case 2:
                newImg.Source = SquareTable.Source;
                break;

            case 3:
                newImg.Source = RectangleTable.Source;
                break;

            default:
                newImg.Source = RoundTable.Source;
                break;
            }
            newImg.Width  = 100;
            newImg.Height = 100;
            FurnitureType ft = db.FurnitureType.Single(u => u.Id == tableId);

            newImg.Name       = "Placed" + ft.Type;
            newImg.Tag        = t.Id;
            newImg.MouseDown += Table_MouseDown;
            Canvas_FB.Children.Add(newImg);
            Canvas.SetLeft(newImg, t.Xloc);
            Canvas.SetTop(newImg, t.Yloc);
        }
        public static FurnitureType Create(FurnitureType ft)
        {
            try
            {
                using (var con = new SqlConnection(ConfigurationManager.ConnectionStrings["POP"].ConnectionString))
                {
                    con.Open();

                    SqlCommand cmd = con.CreateCommand();

                    cmd.CommandText  = "INSERT INTO FurnitureType(Name, Deleted) VALUES (@Name, @Deleted);";
                    cmd.CommandText += "SELECT SCOPE_IDENTITY();";
                    cmd.Parameters.AddWithValue("Name", ft.Name);
                    cmd.Parameters.AddWithValue("Deleted", ft.Deleted);

                    ft.ID = int.Parse(cmd.ExecuteScalar().ToString());
                }

                Project.Instance.FurnitureTypesList.Add(ft);

                return(ft);
            }
            catch
            {
                MessageBox.Show("Database error!", "Error", MessageBoxButton.OK, MessageBoxImage.Error);
                return(null);
            }
        }
 /// <summary>
 /// Activate the furnitrue.
 /// Sets the furniture info window.
 /// </summary>
 public void Activate(FurnitureType type, FurnitureInfo info)
 {
     if (FurnitureTriggerInfo.Type == FurnitureType.None)
     {
         isTriggerd = true;
         FurnitureTriggerInfo.SetActiveFurniture(type, info);
     }
 }
 private void tbSearchFT_TextChanged(object sender, TextChangedEventArgs e)
 {
     ftView.Filter = x =>
     {
         FurnitureType ft = x as FurnitureType;
         return(ft.Name.ToLower().Contains(tbSearchFT.Text.ToLower().Trim()));
     };
 }
 public FurnitureValue(string title, FurnitureType type, int value, int minValue, int maxValue)
 {
     this.type     = type;
     this.title    = title;
     this.value    = value;
     this.minValue = minValue;
     this.maxValue = maxValue;
 }
        public FurnitureType Create(FurnitureType model)
        {
            _ctx.FurnitureTypes.Add(model);

            _ctx.SaveChanges();

            return(model);
        }
Beispiel #23
0
        public async Task <ActionResult> DeleteConfirmed(int id)
        {
            FurnitureType furnitureType = await db.FurnitureTypes.FindAsync(id);

            db.FurnitureTypes.Remove(furnitureType);
            await db.SaveChangesAsync();

            return(RedirectToAction("Index"));
        }
Beispiel #24
0
    public void AddOneFurniture()
    {
        Array         arr  = Enum.GetValues(typeof(FurnitureType));
        int           idx  = UnityEngine.Random.Range(1, arr.Length);
        FurnitureType type = (FurnitureType)arr.GetValue(idx);
        Furniture     f    = FurnitureUtil.LoadFurnitureByType(type, furnituresParent);

        f.InitData(FurnitureUtil.FurnitureType2Config(type), new FurnitureSaveData());
    }
Beispiel #25
0
    public List <TileOWW> PreviewFurniture(FurnitureType furnitureType, int start_x, int end_x, int start_y, int end_y)
    {
        List <TileOWW> furniture_tiles = new List <TileOWW>();

        ClearPreviews();

        int estimatedCost = 0;

        for (int x = start_x; x <= end_x; x++)
        {
            for (int y = start_y; y <= end_y; y++)
            {
                TileOWW t = WorldController.Instance.GetWorld().GetTileAt(x, y);

                if (t != null)
                {
                    // Check valid
                    if (CheckFurniturePreviewValid(t, furnitureType))
                    {
                        furniture_tiles.Add(t);
                        CreatePreview(validPreviewPrefab, furnitureType.title, x, y);
                        estimatedCost += furnitureType.cost;
                    }
                    else
                    {
                        CreatePreview(invalidPreviewPrefab, furnitureType.title, x, y);
                    }
                }
            }
        }
        // Display price UI
        InputController.Instance.currentBuildPrice = estimatedCost;

        if (estimatedCost > CurrencyController.Instance.GetBankBalance())
        {
            ClearPreviews();

            for (int x = start_x; x <= end_x; x++)
            {
                for (int y = start_y; y <= end_y; y++)
                {
                    TileOWW t = WorldController.Instance.GetWorld().GetTileAt(x, y);

                    if (t != null)
                    {
                        CreatePreview(invalidPreviewPrefab, furnitureType.title, x, y);
                    }
                }
            }
            return(null);
        }
        else
        {
            return(furniture_tiles);
        }
    }
Beispiel #26
0
    internal void BuildFurnitureButtonClicked(FurnitureType furniture)
    {
        ClearSelectedMode();
        selectedMode          = SelectedMode.Build;
        selectedFurnitureType = furniture;

        //remove old ghost
        //add new ghost
        selectedFurnitureGhost = Instantiate(furniture.ghost, new Vector3(0, 0, 0), Quaternion.identity);
    }
Beispiel #27
0
    /// <summary>
    /// A constructor that takes the name of the furniture.
    /// TODO: Make a category variable and construct with it.
    /// Name should be auto genereted as should be the items.
    /// </summary>
    /// <param name="name"></param>
    //public Furniture(string name, FurnitureType ft, Vector2 position, Quaternion orientation)
    //{
    //    this.name = name;
    //    furnitureType = ft;
    //    this.orientation = orientation;

    //    setTruePosition(position);

    //}

    /// <summary>
    /// A temporary constructor for testing purposes.
    /// TODO: Delete this when proper Furniture generation will be in place.
    /// </summary>
    /// <param name="name"></param>
    /// <param name="items"></param>
    public Furniture(string name, FurnitureType ft, Vector2 position, Quaternion orientation, List <Item> items)
    {
        this.name        = name;
        furnitureType    = ft;
        this.orientation = orientation;
        setTruePosition(position);
        setActions();

        this.items = items;
    }
Beispiel #28
0
 // Start is called before the first frame update
 void Start()
 {
     _outline = GetComponent <Outline>();
     SetId();
     Moved = false;
     if (type == FurnitureType.NONE)
     {
         type = FurnitureType.FLOOR;
     }
 }
Beispiel #29
0
        public FurnitureTypeWindow(FurnitureType furnitureType, Operation operation)
        {
            InitializeComponent();


            this.furnitureType = furnitureType;
            this.operation     = operation;

            tbName.DataContext = furnitureType;
        }
Beispiel #30
0
        public async Task <ActionResult> Edit([Bind(Include = "CategoryID,Name,Description")] FurnitureType furnitureType)
        {
            if (ModelState.IsValid)
            {
                db.Entry(furnitureType).State = EntityState.Modified;
                await db.SaveChangesAsync();

                return(RedirectToAction("Index"));
            }
            return(View(furnitureType));
        }
 public RoomItem GetItem(FurnitureType type, int index)
 {
     return ItemLookUp[type][index];
 }
 public RoomItem GetItem(FurnitureType type)
 {
     return ItemLookUp[type][Random.Range(0, ItemLookUp[type].Count - 1)];
 }
    private float AssignFurnitureToSide(FurnitureType furnitureType, RoomSide side, float workingX)
    {
        RoomItem item = GetFurniture(furnitureType);
        Vector2 size = GetFurnitureSize(furnitureType);
        Transform wall = GetWall(side);
        float sideLength = GetWallWidth(side);
        item.transform.SetParent(wall, true);
        item.transform.localPosition = Vector3.zero;
        item.transform.localRotation = Quaternion.identity;
        item.transform.localPosition += Vector3.right * ((size.x / 2) + workingX);
        item.transform.localPosition += Vector3.left * (sideLength / 2);
        item.transform.localPosition += Vector3.back * 0.5f;
        item.transform.localScale = new Vector3(size.x, size.y, 1);
        assignedFurniture.Add(furnitureType);

        if (furnitureType != FurnitureType.Door)
        {
            var hands = GameObject.Instantiate<Transform>(HandsPrefab);
            hands.SetParent(item.transform, true);
            hands.localPosition = Vector3.zero + (Vector3.back * 0.505f);
            hands.localRotation = Quaternion.identity;
            item.Hands = hands;
        }

        item.HideHands();

        return size.x;
    }
 private Vector2 GetFurnitureSize(FurnitureType t)
 {
     return FurnitureSizes.Where(x => x.Type == t).First().Size;
 }
 // private
 private void FurnitureSizesAdd(FurnitureType t, Vector2 size)
 {
     FurnitureSizes.Add(new FurnitureDefinition()
     {
         Type = t,
         Size = size
     });
 }
    private RoomItem GetFurniture(FurnitureType t)
    {
        var item = RoomItemRegistry.Instance.GetItem(t);
        var result = GameObject.Instantiate(item) as RoomItem;

        var particles = GameObject.Instantiate(this.ParticlesPrefab) as RoomItemParticles;
        particles.transform.SetParent(result.transform);
        particles.transform.localPosition = Vector3.zero;
        particles.transform.localRotation = Quaternion.identity;
        result.Particles = particles;

        var innerContainer = new GameObject("InnerContainer");

        List<Transform> moveChildren = new List<Transform>();

        for (int i = 0; i < result.transform.childCount; i++)
        {
            moveChildren.Add(result.transform.GetChild(i));
        }
        innerContainer.transform.SetParent(result.transform);
        innerContainer.transform.localPosition = Vector3.zero;

        foreach(var c in moveChildren)
        {
            c.SetParent(innerContainer.transform, true);
        }
        var itemAnimator = innerContainer.AddComponent<Animator>();
        var notifier = innerContainer.AddComponent<AnimationParentNotifier>();
        itemAnimator.runtimeAnimatorController = this.RoomItemAnimationController as RuntimeAnimatorController;

        result.ItemAnimation = itemAnimator;
        result.gameObject.SetActive(true);

        // ensure RoomItemColliders are attached
        if (result.GetComponentInChildren<RoomItemCollider>() == null)
        {
            Collider colliders = result.GetComponentInChildren<Collider>();
            if (colliders != null)
            {
                var cc = colliders.GetComponent<RoomItemCollider>(); // should exist, but check anyway
                if (cc == null)
                {
                    colliders.gameObject.AddComponent<RoomItemCollider>();
                }
            }
        }

        return result;
    }