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; } }
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); } }
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; } }