public void AttachTilesToButton(Vector2Int buttonId, Vector2Int[] tileIds)
        {
            ButtonCluster button = buttons[buttonId.x, buttonId.y];
            Transform     parent = button.button.transform;

            for (int i = 0; i < tileIds.Length; i++)
            {
                GameObject tile = tiles[tileIds[i].x, tileIds[i].y];
                tile.transform.SetParent(parent);
                button.tiles[i] = tile;
            }
        }
Ejemplo n.º 2
0
 private void EnableNecessaryButtonForItem(bool _isBought, bool _isActive, ButtonCluster buttons)
 {
     if (_isBought)
     {
         if (_isActive)
         {
             buttons.Disable.SetActive(true);
         }
         else
         {
             buttons.Enable.SetActive(true);
         }
     }
     else
     {
         buttons.Buy.SetActive(true);
     }
 }
Ejemplo n.º 3
0
 private void Refresh()
 {
     ButtonCluster[] clusters = new ButtonCluster[]
     { _multiColorBackgroundButtons, _grassBackgroundButtons, _skyBackgroundButtons, _playerCatEarsButtons, _spikeCatEarsButtons };
     foreach (ButtonCluster cluster in clusters)
     {
         foreach (GameObject button in cluster.AllButtons)
         {
             button.SetActive(false);
         }
     }
     EnableNecessaryButtonForItem(SaveDataManager.Instance.MultiColorBackgroundBought,
                                  SaveDataManager.Instance.ActiveBackground == _multiColorBackgroundIndex, _multiColorBackgroundButtons);
     EnableNecessaryButtonForItem(SaveDataManager.Instance.GrassBackgroundBought,
                                  SaveDataManager.Instance.ActiveBackground == _grassBackgroundIndex, _grassBackgroundButtons);
     EnableNecessaryButtonForItem(SaveDataManager.Instance.SkyBackgroundBought,
                                  SaveDataManager.Instance.ActiveBackground == _skyBackgroundIndex, _skyBackgroundButtons);
     EnableNecessaryButtonForItem(SaveDataManager.Instance.PlayerCatEarsBought,
                                  SaveDataManager.Instance.PlayerCatEarsActive, _playerCatEarsButtons);
     EnableNecessaryButtonForItem(SaveDataManager.Instance.SpikeCatEarsBought,
                                  SaveDataManager.Instance.SpikeCatEarsActive, _spikeCatEarsButtons);
 }
 /// <summary>
 /// Populate values from the base palette.
 /// </summary>
 /// <param name="common">Reference to common settings.</param>
 public void PopulateFromBase(KryptonPaletteCommon common)
 {
     // Populate only the designated styles
     common.StateCommon.BackStyle    = PaletteBackStyle.ButtonStandalone;
     common.StateCommon.BorderStyle  = PaletteBorderStyle.ButtonStandalone;
     common.StateCommon.ContentStyle = PaletteContentStyle.ButtonStandalone;
     ButtonStandalone.PopulateFromBase();
     common.StateCommon.BackStyle    = PaletteBackStyle.ButtonAlternate;
     common.StateCommon.BorderStyle  = PaletteBorderStyle.ButtonAlternate;
     common.StateCommon.ContentStyle = PaletteContentStyle.ButtonAlternate;
     ButtonAlternate.PopulateFromBase();
     common.StateCommon.BackStyle    = PaletteBackStyle.ButtonLowProfile;
     common.StateCommon.BorderStyle  = PaletteBorderStyle.ButtonLowProfile;
     common.StateCommon.ContentStyle = PaletteContentStyle.ButtonLowProfile;
     ButtonLowProfile.PopulateFromBase();
     common.StateCommon.BackStyle    = PaletteBackStyle.ButtonButtonSpec;
     common.StateCommon.BorderStyle  = PaletteBorderStyle.ButtonButtonSpec;
     common.StateCommon.ContentStyle = PaletteContentStyle.ButtonButtonSpec;
     ButtonButtonSpec.PopulateFromBase();
     common.StateCommon.BackStyle    = PaletteBackStyle.ButtonBreadCrumb;
     common.StateCommon.BorderStyle  = PaletteBorderStyle.ButtonBreadCrumb;
     common.StateCommon.ContentStyle = PaletteContentStyle.ButtonBreadCrumb;
     ButtonBreadCrumb.PopulateFromBase();
     common.StateCommon.BackStyle    = PaletteBackStyle.ButtonCalendarDay;
     common.StateCommon.BorderStyle  = PaletteBorderStyle.ButtonCalendarDay;
     common.StateCommon.ContentStyle = PaletteContentStyle.ButtonCalendarDay;
     ButtonCalendarDay.PopulateFromBase();
     common.StateCommon.BackStyle    = PaletteBackStyle.ButtonNavigatorStack;
     common.StateCommon.BorderStyle  = PaletteBorderStyle.ButtonNavigatorStack;
     common.StateCommon.ContentStyle = PaletteContentStyle.ButtonNavigatorStack;
     ButtonNavigatorStack.PopulateFromBase();
     common.StateCommon.BackStyle    = PaletteBackStyle.ButtonNavigatorOverflow;
     common.StateCommon.BorderStyle  = PaletteBorderStyle.ButtonNavigatorOverflow;
     common.StateCommon.ContentStyle = PaletteContentStyle.ButtonNavigatorOverflow;
     ButtonNavigatorOverflow.PopulateFromBase();
     common.StateCommon.BackStyle    = PaletteBackStyle.ButtonNavigatorMini;
     common.StateCommon.BorderStyle  = PaletteBorderStyle.ButtonNavigatorMini;
     common.StateCommon.ContentStyle = PaletteContentStyle.ButtonNavigatorMini;
     ButtonNavigatorMini.PopulateFromBase();
     common.StateCommon.BackStyle    = PaletteBackStyle.ButtonInputControl;
     common.StateCommon.BorderStyle  = PaletteBorderStyle.ButtonInputControl;
     common.StateCommon.ContentStyle = PaletteContentStyle.ButtonInputControl;
     ButtonInputControl.PopulateFromBase();
     common.StateCommon.BackStyle    = PaletteBackStyle.ButtonListItem;
     common.StateCommon.BorderStyle  = PaletteBorderStyle.ButtonListItem;
     common.StateCommon.ContentStyle = PaletteContentStyle.ButtonListItem;
     ButtonListItem.PopulateFromBase();
     common.StateCommon.BackStyle    = PaletteBackStyle.ButtonForm;
     common.StateCommon.BorderStyle  = PaletteBorderStyle.ButtonForm;
     common.StateCommon.ContentStyle = PaletteContentStyle.ButtonForm;
     ButtonForm.PopulateFromBase();
     common.StateCommon.BackStyle    = PaletteBackStyle.ButtonFormClose;
     common.StateCommon.BorderStyle  = PaletteBorderStyle.ButtonFormClose;
     common.StateCommon.ContentStyle = PaletteContentStyle.ButtonFormClose;
     ButtonFormClose.PopulateFromBase();
     common.StateCommon.BackStyle    = PaletteBackStyle.ButtonCommand;
     common.StateCommon.BorderStyle  = PaletteBorderStyle.ButtonCommand;
     common.StateCommon.ContentStyle = PaletteContentStyle.ButtonCommand;
     ButtonCommand.PopulateFromBase();
     common.StateCommon.BackStyle    = PaletteBackStyle.ButtonCluster;
     common.StateCommon.BorderStyle  = PaletteBorderStyle.ButtonCluster;
     common.StateCommon.ContentStyle = PaletteContentStyle.ButtonCluster;
     ButtonCluster.PopulateFromBase();
     common.StateCommon.BackStyle    = PaletteBackStyle.ButtonGallery;
     common.StateCommon.BorderStyle  = PaletteBorderStyle.ButtonGallery;
     common.StateCommon.ContentStyle = PaletteContentStyle.ButtonGallery;
     ButtonGallery.PopulateFromBase();
 }
        private void Awake()
        {
            descriptor = GlobalManager.MLevel.GetDescriptor(GlobalManager.MStorage.SelectedLevel);
            int   width         = descriptor.init.width;
            int   height        = descriptor.init.height;
            float puzzleRatioXY = (float)width / (float)height;

            // prepare one STRESS texture for all tiles
            string    stressImage = StressImageCreator.StressedFinalImageFile(descriptor.init.id);
            Texture2D tex         = new Texture2D(2, 2, TextureFormat.RGB24, false);

            tex.LoadImage(System.IO.File.ReadAllBytes(stressImage));
            // a special factor used in later calculations
            Vector2 texFactor = new Vector2
            {
                x = descriptor.init.finalXYScale > puzzleRatioXY ? puzzleRatioXY / descriptor.init.finalXYScale : 1f,
                y = puzzleRatioXY > descriptor.init.finalXYScale ? descriptor.init.finalXYScale / puzzleRatioXY : 1f
            };
            Vector2 texScale = new Vector2
            {
                x = texFactor.x / (float)width,
                y = texFactor.y / (float)height
            };
            Vector2 texOffsetStart = new Vector2
            {
                x = (1f - texFactor.x) / 2,
                y = (1f - texFactor.y) / 2 + texFactor.y * (float)(height - 1) / (float)height
            };
            Vector2 texOffsetStep = new Vector2
            {
                x = texFactor.x / (float)width,
                y = -texFactor.y / (float)height
            };

            // create buttons
            buttons = new ButtonCluster[width - 1, height - 1];
            float   buttonStartX   = -(width - 2) * TileSize / 2;
            Vector3 buttonPosition = new Vector3(buttonStartX, (height - 2) * TileSize / 2, neutralButtonZ);

            for (int y = 0; y < height - 1; y++)
            {
                for (int x = 0; x < width - 1; x++)
                {
                    GameObject button = (GameObject)Instantiate(buttonPrefab);
                    initialButtonRotation     = button.transform.localRotation;
                    button.transform.position = buttonPosition;
                    button.GetComponent <PuzzleButtonController>().Init(new Vector2Int(x, y), neutralButtonZ, pressedButtonZ, releasedButtonZ);
                    buttons[x, y] = new ButtonCluster
                    {
                        button = button,
                        tiles  = new GameObject[4]
                    };
                    buttonPosition.x += TileSize;
                }
                buttonPosition.x  = buttonStartX;
                buttonPosition.y -= TileSize;
            }

            // create tiles
            tiles = new GameObject[width, height];
            Vector2 texOffset = texOffsetStart;

            for (int y = 0; y < height; y++)
            {
                for (int x = 0; x < width; x++)
                {
                    GameObject tile = (GameObject)Instantiate(tilePrefab);
                    initialTileRotation = tile.transform.localRotation;
                    // downscale the tile a bit
                    Vector3 tileScale = tile.transform.localScale;
                    tileScale *= 1 - tileGap / 2;
                    tile.transform.localScale = tileScale;
                    // set up tile's texture and its parameters
                    MeshRenderer meshRenderer = tile.GetComponent <MeshRenderer>();
                    Material[]   materials    = meshRenderer.materials;
                    materials[0].SetTexture("_MainTex", tex);
                    materials[0].SetTextureScale("_MainTex", texScale);
                    materials[0].SetTextureOffset("_MainTex", texOffset);
                    meshRenderer.materials = materials;
                    tile.GetComponent <TileFlasher>().Init(new Vector2Int(x, y));
                    tiles[x, y]  = tile;
                    texOffset.x += texOffsetStep.x;
                }
                texOffset.x  = texOffsetStart.x;
                texOffset.y += texOffsetStep.y;
            }
        }