public void IncDistX()
        {
            Debug.Log("Click on Button <DistanceX...> ");
            LevelConstructSet lcs  = GameBoard.Instance.gcSet.GetLevelConstructSet(BubblesPlayer.CurrentLevel);
            float             dist = lcs.DistX;

            dist     += 0.05f;
            lcs.DistX = (dist > 1f) ? 1f : dist;
            ShowLevelData();
        }
        public void DecDistY()
        {
            Debug.Log("Click on Button <DistanceY...> ");
            LevelConstructSet lcs  = GameBoard.Instance.gcSet.GetLevelConstructSet(BubblesPlayer.CurrentLevel);
            float             dist = lcs.DistY;

            dist     -= 0.05f;
            lcs.DistY = (dist > 0f) ? dist : 0f;
            ShowLevelData();
        }
        public void IncVertSize()
        {
            Debug.Log("Click on Button <VerticalSize...> ");
            LevelConstructSet lcs = GameBoard.Instance.gcSet.GetLevelConstructSet(BubblesPlayer.CurrentLevel);
            int vertSize          = lcs.VertSize;

            vertSize    += 1;
            lcs.VertSize = vertSize;
            ShowLevelData();
        }
        public void DecHorSize()
        {
            Debug.Log("Click on Button <HorizontalSize...> ");
            LevelConstructSet lcs = GameBoard.Instance.gcSet.GetLevelConstructSet(BubblesPlayer.CurrentLevel);
            int horSize           = lcs.HorSize;

            horSize     = (horSize > minHorSize) ? --horSize : minHorSize;
            lcs.HorSize = horSize;
            ShowLevelData();
        }
Пример #5
0
        public void InsertBefore()
        {
            Debug.Log("Click on Button <Insert level before...> ");
            LevelConstructSet lcs = ScriptableObjectUtility.CreateResourceAsset <LevelConstructSet>(levelConstructSetSubFolder, "", " " + 1.ToString());

            GCSet.InsertBeforeLevel(BubblesPlayer.CurrentLevel, lcs);
            CreateLevelButtons();
            ShowLevelData();
            MBoard.grid.MoveToVisible(null);
        }
        public void InsertAfter()
        {
            Debug.Log("Click on Button <Insert level after...> ");
            LevelConstructSet lcs = ScriptableObjectUtility.CreateResourceAsset <LevelConstructSet>(levelConstructSetSubFolder, "", " " + 1.ToString());

            lcs.Matchset = MatchSets[0];
            GameBoard.Instance.gcSet.InsertAfterLevel(BubblesPlayer.CurrentLevel, lcs);
            BubblesPlayer.CurrentLevel += 1;
            CreateLevelButtons();
            ShowLevelData();
            GameBoard.Instance.grid.MoveToVisible(null);
        }
        public void Cell_Click(GridCell cell)
        {
            if (cell.GRow.IsSeviceRow)
            {
                Debug.Log("Click on cell <" + cell.ToString() + "...> - Is Service cell. Don't use it.");
                return;
            }

            Debug.Log("Click on cell <" + cell.ToString() + "...> ");
            LevelConstructSet lcs = GameBoard.Instance.gcSet.GetLevelConstructSet(BubblesPlayer.CurrentLevel);

            if (selectedMainBrushImage.enabled)
            {
                Debug.Log("main brush enabled");
                if (cell.Mainobject && cell.Mainobject.ID == mainBrush.ID)
                {
                    return;
                }
                else
                {
                    if (!cell.Mainobject && mainBrush.ID == 0)
                    {
                        return;
                    }
                    lcs.AddFeaturedCell(new CellData(mainBrush.ID, cell.Row, cell.Column));
                    if (lcs)
                    {
                        Debug.Log("add feat cell, count " + lcs.featuredCells.Count);
                    }
                }
            }
            else if (selectedOverBrushImage.enabled)
            {
                Debug.Log("over brush enabled");
                if (cell.Overlay && cell.Overlay.ID == overBrush.ID)
                {
                    return;
                }
                else
                {
                    if (!cell.Mainobject)
                    {
                        return;
                    }
                    Debug.Log("add overlay");
                    lcs.AddOverlay(new CellData(overBrush.ID, cell.Row, cell.Column));
                }
            }

            CloseOpenedPanels();
            ShowLevelData();
        }
Пример #8
0
 public void InsertAfterLevel(int levelIndex, LevelConstructSet lcs)
 {
     Debug.Log("insert level after: " + levelIndex);
     if (levelIndex + 1 == levelSets.Count)
     {
         levelSets.Add(lcs);
         Debug.Log("add after : " + levelIndex);
     }
     else
     {
         levelSets.Insert(levelIndex + 1, lcs);
         Debug.Log("insert after : " + levelIndex);
     }
     SetAsDirty();
 }
        public void OpenMainBrushPanel_Click()
        {
            Debug.Log("open main brush click");
            BubbleGrid        grid = GameBoard.Instance.grid;
            LevelConstructSet lcs  = GameBoard.Instance.gcSet.GetLevelConstructSet(BubblesPlayer.CurrentLevel);

            ScrollPanelController sRC = MainBrushContainer.ScrollPanel;

            if (sRC) //
            {
                sRC.CloseScrollPanel(true, null);
            }
            else
            {
                CloseOpenedPanels();
                //instantiate ScrollRectController
                sRC = MainBrushContainer.InstantiateScrollPanel();
                sRC.textCaption.text = "Main brush panel";

                List <BaseObjectData> mData = new List <BaseObjectData>();
                mData.Add(lcs.Matchset.Empty);
                if (lcs.Matchset.MainObjects != null)
                {
                    foreach (var item in lcs.Matchset.MainObjects)
                    {
                        mData.Add(item);
                    }
                }

                //create main bubbles brushes
                for (int i = 0; i < mData.Count; i++)
                {
                    BaseObjectData mD = mData[i];
                    CreateButton(smallButtonPrefab, sRC.scrollContent, mD.ObjectImage, () =>
                    {
                        Debug.Log("Click on Button <" + mD.ID + "...> ");
                        mainBrush             = (!GameObjectsSet.IsEmptyObject(mD.ID)) ? lcs.Matchset.GetMainObject(mD.ID) : lcs.Matchset.Empty;
                        mainBrushImage.sprite = mainBrush.ObjectImage;
                        SelectMainBrush();
                    });
                }
                sRC.OpenScrollPanel(null);
            }
        }
        public void OpenShootBubblestPanel_Click()
        {
            Debug.Log("shoot bubble click");
            BubbleGrid        grid = GameBoard.Instance.grid;
            LevelConstructSet lcs  = GameBoard.Instance.gcSet.GetLevelConstructSet(BubblesPlayer.CurrentLevel);

            //ScrollPanelController sRC = ShootBubbleContainer.ScrollPanel;
            //if (sRC) //
            //{
            //    sRC.CloseScrollPanel(true, null);
            //}
            //else
            //{
            //    CloseOpenedPanels();

            //List<BaseObjectData> mData = new List<BaseObjectData>();
            //// mData.Add(lcs.Matchset.Empty);
            //if (lcs.Matchset.MainObjects != null)
            //    foreach (var item in lcs.Matchset.MainObjects)
            //    {
            //        if (item.canUseAsShootBubbles) mData.Add(item);
            //    }

            ////create shoot bubble buttons
            //for (int i = 0; i < mData.Count; i++)
            //{
            //    BaseObjectData mD = mData[i];
            //    Button b = CreateButton(smallButtonPrefab, parent.transform, mD.ObjectImage, () =>
            //       {
            //           Debug.Log("Click on Button <" + mD.Name + "...> ");
            //           lcs.AddShootBubble(mD.ID);
            //           ShowLevelData();
            //       });

            //    if (lcs.shootBubbles.Contains(mD.ID))
            //    {
            //        SelectButton(b);
            //    }

            //}
            //    sRC.OpenScrollPanel(null);
            //}
        }
Пример #11
0
        public BubbleGrid(LevelConstructSet lcSet, GameObjectsSet goSet, Transform parent, int sortingOrder, GameMode gMode)
        {
            Debug.Log("new grid ");
            this.lcSet        = lcSet;
            this.parent       = parent;
            this.gMode        = gMode;
            this.sortingOrder = sortingOrder;

            vertSize   = lcSet.VertSize;
            horSize    = lcSet.HorSize;
            this.goSet = goSet;
            prefab     = this.goSet.gridCellPrefab;

            Cells = new List <GridCell>(vertSize * horSize);
            Rows  = new List <Row <GridCell> >(vertSize);

            BubleRadius = prefab.GetComponent <CircleCollider2D>().radius;
            yStart      = Camera.main.orthographicSize - BubleRadius; Debug.Log("yStart: " + yStart + " radius : " + BubleRadius);

            xStep   = BubleRadius * 2.0f;          //
            yStep   = xStep * Mathf.Sin(60.0f * Mathf.Deg2Rad);
            cOffset = (1 - horSize) * BubleRadius; // offset from center

            for (int i = 0; i > -vertSize; i--)
            {
                AddRow();
            }

            for (int i = 0; i < Rows.Count; i++)
            {
                for (int j = 0; j < Rows[i].Length; j++)
                {
                    Rows[i][j].Init(i, j, Rows, gMode);
                }
            }

            SetObjectsData(lcSet.featuredCells, lcSet.overlays, gMode);
            Debug.Log("create cells: " + Cells.Count);
            Instance = this;
        }
Пример #12
0
        public MatchGrid(LevelConstructSet lcSet, GameObjectsSet goSet, Transform parent, int sortingOrder, GameMode gMode)
        {
            Instance = this;
            Debug.Log("new grid ");
            this.lcSet        = lcSet;
            this.parent       = parent;
            this.gMode        = gMode;
            this.sortingOrder = sortingOrder;

            vertSize   = lcSet.VertSize;
            horSize    = lcSet.HorSize;
            this.goSet = goSet;
            prefab     = goSet.gridCellEven;
            cellSize   = prefab.GetComponent <BoxCollider2D>().size;

            float deltaX = lcSet.DistX;
            float deltaY = lcSet.DistY;
            float scale  = lcSet.Scale;

            parent.localScale = new Vector3(scale, scale, scale);

            Cells = new List <GridCell>(vertSize * horSize);
            Rows  = new List <Row <GridCell> >(vertSize);

            yOffset = 0;
            xStep   = (cellSize.x + deltaX);
            yStep   = (cellSize.y + deltaY);

            cOffset = (1 - horSize) * xStep / 2.0f; // offset from center by x-axe
            yStart  = (vertSize - 1) * yStep / 2.0f;

            //instantiate cells
            for (int i = 0; i < vertSize; i++)
            {
                AddRow();
            }
            SetObjectsData(lcSet, gMode);
            Debug.Log("create cells: " + Cells.Count);
        }
Пример #13
0
 public void InsertBeforeLevel(int levelIndex, LevelConstructSet lcs)
 {
     levelSets.Insert(levelIndex, lcs);
     SetAsDirty();
 }
        public void OpenGridSettingsPanel_Click()
        {
            Debug.Log("open grid settings click");
            BubbleGrid grid = GameBoard.Instance.grid;

            ScrollPanelController sRC = GridPanelContainer.ScrollPanel;

            if (sRC) //
            {
                if (sRC)
                {
                    sRC.CloseScrollPanel(true, null);
                }
            }
            else
            {
                CloseOpenedPanels();
                //instantiate ScrollRectController
                sRC = GridPanelContainer.InstantiateScrollPanel();
                sRC.textCaption.text = "Grid panel";

                LevelConstructSet lcSet        = GameBoard.Instance.gcSet.GetLevelConstructSet(BubblesPlayer.CurrentLevel);
                MissionConstruct  levelMission = lcSet.levelMission;

                //create  vert size block
                IncDecInputPanel.Create(sRC.scrollContent, IncDecGridPrefab, "VertSize", grid.Rows.Count.ToString(),
                                        () => { IncVertSize(); },
                                        () => { DecVertSize(); },
                                        (val) => {  },
                                        () => { return(grid.Rows.Count.ToString()); },
                                        null);

                //create hor size block
                IncDecInputPanel.Create(sRC.scrollContent, IncDecGridPrefab, "HorSize", lcSet.HorSize.ToString(),
                                        () => { IncHorSize(); },
                                        () => { DecHorSize(); },
                                        (val) => { },
                                        () => { return(lcSet.HorSize.ToString()); },
                                        null);

                //create background block
                IncDecInputPanel.Create(sRC.scrollContent, IncDecGridPrefab, "BackGrounds", lcSet.backGroundNumber.ToString(),
                                        () => { IncBackGround(); },
                                        () => { DecBackGround(); },
                                        (val) => { },
                                        () => { return(lcSet.backGroundNumber.ToString()); },
                                        null);

                //create game object set block
                GameObjectsSet ms      = lcSet.Matchset;
                int            indexMS = MatchSets.IndexOf(ms);
                IncDecInputPanel.Create(sRC.scrollContent, IncDecGridPrefab, "GameSets", ms.name.ToString(),
                                        () => { if (indexMS < 0 || MatchSets.Count < 1)
                                                {
                                                    return;
                                                }
                                                indexMS = (int)Mathf.Repeat(++indexMS, MatchSets.Count); lcSet.Matchset = MatchSets[indexMS]; ShowLevelData(); },
                                        () => { if (indexMS < 0 || MatchSets.Count < 1)
                                                {
                                                    return;
                                                }
                                                indexMS = (int)Mathf.Repeat(--indexMS, MatchSets.Count); lcSet.Matchset = MatchSets[indexMS]; ShowLevelData(); },
                                        (val) => { },
                                        () => { return(lcSet.Matchset.name.ToString()); },
                                        null);


                sRC.OpenScrollPanel(null);
            }
        }
Пример #15
0
 public void AddLevel(LevelConstructSet lc)
 {
     levelSets.Add(lc);
     SetAsDirty();
 }
Пример #16
0
        public void Rebuild(LevelConstructSet lcSet, GameObjectsSet goSet, int sortingOrder, GameMode gMode)
        {
            Debug.Log("rebuild ");

            this.lcSet = lcSet;
            vertSize   = lcSet.VertSize;
            horSize    = lcSet.HorSize;
            this.goSet = goSet;
            List <CellData> featCells = lcSet.featuredCells;

            Cells.ForEach((c) => { c.DestroyGridObjects(); });

            List <GridCell> tempCells = Cells;

            Cells = new List <GridCell>(vertSize * horSize + horSize);
            Rows  = new List <Row <GridCell> >(vertSize);
            float cOffset = (1 - horSize) * BubleRadius; // offfset from center

            // create rows
            GridCell       cell;
            Row <GridCell> row;
            int            cellCounter = 0;
            bool           isEven      = false;
            int            ri          = 0;

            for (int i = 0; i > -vertSize; i--)
            {
                isEven = (ri % 2 == 0);
                row    = new Row <GridCell>((isEven) ? horSize : horSize - 1);
                float eo = (isEven) ? 0 : BubleRadius;
                for (int j = 0; j < row.Length; j++)
                {
                    Vector3 pos = new Vector3(j * xStep + eo + cOffset, yStart + i * yStep, 0);
                    if (tempCells != null && cellCounter < tempCells.Count)
                    {
                        cell = tempCells[cellCounter];
                        cell.transform.localPosition = pos;
                        cellCounter++;
                    }
                    else
                    {
                        cell = UnityEngine.Object.Instantiate(this.goSet.gridCellPrefab).GetComponent <GridCell>();
                        cell.transform.parent        = parent;
                        cell.transform.localPosition = pos;
                        cell.transform.localScale    = Vector3.one;
                    }
                    Cells.Add(cell);
                    row[j] = cell;
                    cell.GetComponent <SpriteRenderer>().enabled = (i > -vertSize);
                }
                Rows.Add(row);
                ri++;
            }

            if (cellCounter < tempCells.Count)
            {
                for (int i = cellCounter; i < tempCells.Count; i++)
                {
                    UnityEngine.Object.Destroy(tempCells[i].gameObject);
                }
            }

            for (int i = 0; i < Rows.Count; i++)
            {
                bool isService     = (i < serviceRowsCount);
                bool isTopBjectRow = (i == serviceRowsCount);
                Rows[i].IsSeviceRow    = isService;
                Rows[i].isTopObjectRow = isTopBjectRow;

                for (int j = 0; j < Rows[i].Length; j++)
                {
                    Rows[i][j].Init(i, j, Rows, gMode);
                }
            }

            SetObjectsData(lcSet.featuredCells, lcSet.overlays, gMode);
            Debug.Log("rebuild cells: " + Cells.Count);
        }
Пример #17
0
        public void Rebuild(LevelConstructSet lcSet, GameObjectsSet mSet, GameMode gMode)
        {
            Debug.Log("rebuild ");

            this.lcSet = lcSet;
            vertSize   = lcSet.VertSize;
            horSize    = lcSet.HorSize;

            float deltaX = lcSet.DistX;
            float deltaY = lcSet.DistY;
            float scale  = lcSet.Scale;

            parent.localScale = new Vector3(scale, scale, scale);

            this.goSet = mSet;
            List <CellData> featCells = lcSet.featuredCells;

            Cells.ForEach((c) => { c.DestroyGridObjects(); });

            List <GridCell> tempCells = Cells;

            Cells = new List <GridCell>(vertSize * horSize + horSize);
            Rows  = new List <Row <GridCell> >(vertSize);

            xStep = (cellSize.x + deltaX);
            yStep = (cellSize.y + deltaY);

            cOffset = (1 - horSize) * xStep / 2.0f; // offset from center by x-axe
            yStart  = (vertSize - 1) * yStep / 2.0f;

            // create rows
            GridCell       cell;
            Row <GridCell> row;
            int            cellCounter = 0;
            int            ri          = 0;
            Sprite         sRE         = mSet.gridCellEven.GetComponent <SpriteRenderer>()?.sprite;
            Sprite         sRO         = mSet.gridCellOdd.GetComponent <SpriteRenderer>().sprite;

            for (int i = 0; i < vertSize; i++)
            {
                bool isEvenRow = (i % 2 == 0);
                row = new Row <GridCell>(horSize);

                for (int j = 0; j < row.Length; j++)
                {
                    bool    isEvenColumn = (j % 2 == 0);
                    Vector3 pos          = new Vector3(j * xStep + cOffset, yStart - i * yStep, 0);

                    if (tempCells != null && cellCounter < tempCells.Count)
                    {
                        cell = tempCells[cellCounter];
                        cell.gameObject.SetActive(true);
                        cell.transform.localPosition = pos;
                        cellCounter++;
                        SpriteRenderer sR = cell.GetComponent <SpriteRenderer>();
                        if (sR)
                        {
                            if (isEvenRow)
                            {
                                sR.sprite = (!isEvenColumn) ? sRO : sRE;
                            }
                            else
                            {
                                sR.sprite = (isEvenColumn) ? sRO : sRE;
                            }
                        }
                    }
                    else
                    {
                        if (isEvenRow)
                        {
                            cell = UnityEngine.Object.Instantiate((!isEvenColumn) ? mSet.gridCellOdd : mSet.gridCellEven).GetComponent <GridCell>();
                        }
                        else
                        {
                            cell = UnityEngine.Object.Instantiate((isEvenColumn) ? mSet.gridCellOdd : mSet.gridCellEven).GetComponent <GridCell>();
                        }
                        cell.transform.parent        = parent;
                        cell.transform.localPosition = pos;
                        cell.transform.localScale    = Vector3.one;
                    }


                    Cells.Add(cell);
                    row[j] = cell;
                }
                Rows.Add(row);
                ri++;
            }

            // destroy not used cells
            if (cellCounter < tempCells.Count)
            {
                for (int i = cellCounter; i < tempCells.Count; i++)
                {
                    UnityEngine.Object.Destroy(tempCells[i].gameObject);
                }
            }

            // cache columns
            Columns = new List <Column <GridCell> >(horSize);
            Column <GridCell> column;

            for (int c = 0; c < horSize; c++)
            {
                column = new Column <GridCell>(Rows.Count);
                for (int r = 0; r < Rows.Count; r++)
                {
                    column[r] = Rows[r][c];
                }
                Columns.Add(column);
            }

            for (int r = 0; r < Rows.Count; r++)
            {
                for (int c = 0; c < horSize; c++)
                {
                    Rows[r][c].Init(r, c, Columns[c], Rows[r], gMode);
                }
            }
            SetObjectsData(lcSet, gMode);

            Debug.Log("rebuild cells: " + Cells.Count);
        }
        public override void RefreshWindow()
        {
            LevelConstructSet lCS   = GameBoard.LcSet;
            MissionConstruct  lM    = lCS.levelMission;
            LevelType         lType = lM.GetLevelType();

            int           time  = lM.TimeConstrain;
            int           moves = lM.MovesConstrain;
            int           level = BubblesPlayer.CurrentLevel + 1;
            WinController wC    = GameBoard.Instance.WController;

            if (descriptionText)
            {
                descriptionText.text = lM.Description;
            }

            if (levelNumberText)
            {
                levelNumberText.text = level.ToString();
            }

            if (TimeLevelGO)
            {
                TimeLevelGO.SetActive(lType == LevelType.TimeLevel);
            }
            if (FishLevelGO)
            {
                FishLevelGO.SetActive(lType == LevelType.FishLevel);
            }
            if (AnchorLevelGO)
            {
                AnchorLevelGO.SetActive(lType == LevelType.AnchorLevel);
            }
            if (LoopTopRowLevelGO)
            {
                LoopTopRowLevelGO.SetActive(lType == LevelType.LoopTopRowLevel);
            }

            switch (lType)
            {
            case LevelType.LoopTopRowLevel:
                if (bubblesCountText)
                {
                    bubblesCountText.text = "x " + wC.TopRowBubblesCountToCollect;
                }
                break;

            case LevelType.TimeLevel:
                if (timeLimitText)
                {
                    timeLimitText.text = "x " + time;
                }
                break;

            case LevelType.AnchorLevel:
                if (anchorCountText)
                {
                    anchorCountText.text = "x " + 1;
                }
                break;

            case LevelType.FishLevel:
                int fishCount          = 0;
                int fishCountCollected = 0;
                wC.GetCurrTarget(out fishCountCollected, out fishCount);
                if (targetCountText)
                {
                    targetCountText.text = "x " + fishCount;
                }
                break;
            }
            base.RefreshWindow();
        }
 public void InsertAfterLevel(int levelIndex, LevelConstructSet lcs)
 {
     Clean();
     levelSets.Insert(levelIndex + 1, lcs);
     SetAsDirty();
 }
        //#region gift
        //public void OpenGiftPanel_Click()
        //{
        //    Debug.Log("open click");
        //    ScrollPanelController sRC = GiftPanelContainer.ScrollPanel;
        //    if (sRC) //
        //    {
        //        if (sRC) sRC.CloseScrollPanel(true, null);
        //    }
        //    else
        //    {
        //        //instantiate ScrollRectController
        //        sRC = GiftPanelContainer.InstantiateScrollPanel();
        //        sRC.textCaption.text = "Gift panel";

        //        LevelConstructSet lcSet = GameBoard.Instance.gcSet.GetLevelConstructSet(BubblesPlayer.CurrentLevel);
        //        GameConstructSet gcSet = GameBoard.Instance.gcSet;
        //        GiftConstruct levelGift = gcSet.gift;

        //        //create life gift
        //        IncDecInputPanel.Create(sRC.scrollContent, IncDecPanelPrefab, "Life", levelGift.Life.ToString(),
        //            () => { levelGift.AddLifes(1); },
        //            () => { levelGift.AddLifes(-1); },
        //            (val) => { int res; bool good = int.TryParse(val, out res); if (good) { levelGift.SetLifesCount(res); }},
        //            () => { return levelGift.Life.ToString(); },
        //            null);

        //        //create coins gift
        //        IncDecInputPanel.Create(sRC.scrollContent, IncDecPanelPrefab, "Coins", levelGift.Coins.ToString(),
        //        () => { levelGift.AddCoins(1); },
        //        () => { levelGift.AddCoins(-1); },
        //        (val) => { int res; bool good = int.TryParse(val, out res); if (good) { levelGift.SetCoinsCount(res); } },
        //        () => { return levelGift.Coins.ToString(); },
        //        null);

        //        //create booster gift
        //        GameObjectsSet goSet = lcSet.Matchset;
        //        IList<BoosterObjectData> bDataL = goSet.BoosterObjects;
        //        foreach (var item in bDataL)
        //        {
        //            int id = item.ID;
        //            IncDecInputPanel.Create(sRC.scrollContent, IncDecPanelPrefab, "Booster", levelGift.GetBoosterCount(id).ToString(),
        //            () => { levelGift.AddBooster(id); },
        //            () => { levelGift.RemoveBooster(id); },
        //            (val) => { int res; bool good = int.TryParse(val, out res); if (good) { levelGift.SetBoosterCount(res, id); } },
        //            () => { return levelGift.GetBoosterCount(id).ToString(); },
        //            item.GuiImage);
        //        }

        //        sRC.OpenScrollPanel(null);
        //    }
        //}
        //#endregion gift

        #region mission
        public void OpenMissionPanel_Click()
        {
            Debug.Log("open mission click");
            BubbleGrid grid = GameBoard.Instance.grid;

            ScrollPanelController sRC = MissionPanelContainer.ScrollPanel;

            if (sRC) //
            {
                sRC.CloseScrollPanel(true, null);
            }
            else
            {
                CloseOpenedPanels();
                //instantiate ScrollRectController
                sRC = MissionPanelContainer.InstantiateScrollPanel();
                sRC.textCaption.text = "Mission panel";

                LevelConstructSet lcSet        = GameBoard.Instance.gcSet.GetLevelConstructSet(BubblesPlayer.CurrentLevel);
                MissionConstruct  levelMission = lcSet.levelMission;

                //create mission moves constrain
                IncDecInputPanel.Create(sRC.scrollContent, IncDecPanelPrefab, "Moves", levelMission.MovesConstrain.ToString(),
                                        () => { levelMission.AddMoves(1); },
                                        () => { levelMission.AddMoves(-1); },
                                        (val) => { int res; bool good = int.TryParse(val, out res); if (good)
                                                   {
                                                       levelMission.SetMovesCount(res);
                                                   }
                                        },
                                        () => { return(levelMission.MovesConstrain.ToString()); },
                                        null);

                //create time constrain
                IncDecInputPanel.Create(sRC.scrollContent, IncDecPanelPrefab, "Time", levelMission.TimeConstrain.ToString(),
                                        () => { levelMission.AddTime(1); },
                                        () => { levelMission.AddTime(-1); },
                                        (val) => { int res; bool good = int.TryParse(val, out res); if (good)
                                                   {
                                                       levelMission.SetTime(res);
                                                   }
                                        },
                                        () => { return(levelMission.TimeConstrain.ToString()); },
                                        null);

                //description input field
                IncDecInputPanel.Create(sRC.scrollContent, InputTextPanelMissionPrefab, "Description", levelMission.Description,
                                        null,
                                        null,
                                        (val) => { levelMission.SetDescription(val); },
                                        () => { return(levelMission.Description); },
                                        null);

                // create clean top row check box condition
                IncDecInputPanel.Create(sRC.scrollContent, TogglePanelMissionPrefab, "Clean top row", null,
                                        levelMission.LoopTopRow,
                                        null,
                                        null,
                                        null,
                                        (val) => { levelMission.SetLoopTopRow(val); },
                                        null,
                                        null);

                // create raise anchor check box condition
                IncDecInputPanel.Create(sRC.scrollContent, TogglePanelMissionPrefab, "Raise anchor", null,
                                        levelMission.RaiseAnchor,
                                        null,
                                        null,
                                        null,
                                        (val) => { levelMission.SetRaiseAnchor(val); },
                                        null,
                                        null);


                //create object targets
                GameObjectsSet         goSet  = lcSet.Matchset;
                IList <BaseObjectData> tDataL = goSet.TargetObjects;
                foreach (var item in tDataL)
                {
                    if (item != null)
                    {
                        Debug.Log("target ID: " + item.ID);
                        int id = item.ID;
                        IncDecInputPanel.Create(sRC.scrollContent, IncDecTogglePanelMissionPrefab, "Target", levelMission.GetTargetCount(id).ToString(),
                                                levelMission.GetTargetCount(id) == 10000,
                                                () => { levelMission.AddTarget(id, 1); },
                                                () => { levelMission.RemoveTarget(id, 1); },
                                                (val) => { int res; bool good = int.TryParse(val, out res); if (good)
                                                           {
                                                               levelMission.SetTargetCount(id, res);
                                                           }
                                                },
                                                (val) => { if (val)
                                                           {
                                                               levelMission.SetTargetCount(id, 10000);
                                                           }
                                                           else
                                                           {
                                                               levelMission.SetTargetCount(id, 0);
                                                           } },
                                                () => { return(levelMission.GetTargetCount(id).ToString()); }, // grid.GetObjectsCountByID(id).ToString()); },
                                                item.GuiImage);
                    }
                }

                sRC.OpenScrollPanel(null);
            }
        }