void SafeCheckIfPoolIsCreated(PedestalType type) { if (!_pools.ContainsKey(type)) { _pools[type] = new List <Pedestal>(); } }
public void OnPassingLayer(bool hasPowerup, PedestalLayer pedestalLayer) { if (hasPowerup) { UnityEngine.Debug.LogError("Passing layer Powerup : " + _continousPowerupFloorCount); if (_continousPowerupFloorCount < _scoreSetting.passingFloorMultiplies.Count) { var increaseScore = _scoreSetting.basicScore * _scoreSetting.passingFloorMultiplies[_continousPowerupFloorCount]; UnityEngine.Debug.LogError("Powerup Increase score : " + increaseScore); UnityEngine.Debug.LogError("Powerup multiply : " + _scoreSetting.passingFloorMultiplies[_continousPowerupFloorCount]); Score += increaseScore; //OnScoreIncrease?.Invoke(increaseScore); OnScoreUpdate?.Invoke(Score, increaseScore); } _continousPowerupFloorCount += 1; } else { _previousPedestalType = PedestalType.None; foreach (var item in pedestalLayer.pedestalInfos) { if (item.type == PedestalType.Pedestal_01 || item.type == PedestalType.Pedestal_01_1_Fish || item.type == PedestalType.Pedestal_01_3_Fish) { _previousPedestalType = item.type; break; } } } _hasPassLayer = true; }
public Pedestal Instantiate(PedestalType type, Vector3 position, float angle) { SafeCheckIfPoolIsCreated(type); Pedestal pedestal = null; List <Pedestal> pool = _pools[type]; if (pool.Count > 0) { pedestal = pool[pool.Count - 1]; pool.RemoveAt(pool.Count - 1); } else { pedestal = CreatePedestal(type, false); } pedestal.ResetMaterial(); pedestal.transform.SetParent(_root); pedestal.transform.position = position; pedestal.transform.rotation = Quaternion.Euler(0f, angle, 0f); pedestal.gameObject.SetActive(true); pedestal.Active = true; return(pedestal); }
private void ShowFishesEscapeEffect(EventCharacterPassLayer e) { if (e.hasPowerup || e.hasLayerDestroyed) { return; } PedestalType layerType = PedestalType.None; foreach (var item in e.layer.pedestalInfos) { if (item.type == PedestalType.Pedestal_01 || item.type == PedestalType.Pedestal_01_1_Fish || item.type == PedestalType.Pedestal_01_3_Fish) { layerType = item.type; break; } } if (layerType == PedestalType.Pedestal_01 || layerType == PedestalType.Pedestal_01_1_Fish || layerType == PedestalType.Pedestal_01_3_Fish) { Vector3 effectPosition = new Vector3(0f, e.layer.height + 0.3f, _mainCharacter.transform.position.z - 1); var effect = _effectPool.Instantiate(layerType, effectPosition, 0); effect.transform.SetParent(_camera, true); } }
public void PreCreate(PedestalType type, int totalInstance) { SafeCheckIfPoolIsCreated(type); if (_pools[type].Count < totalInstance) { int totalCreate = totalInstance - _pools[type].Count; for (int i = 0; i < totalCreate; i++) { CreatePedestal(type, true); } } }
Pedestal CreatePedestal(PedestalType type, bool addToPool) { Pedestal prefab = _cachePedestalPrefabs[type]; Pedestal instance = GameObject.Instantiate(prefab, _root); if (addToPool) { instance.gameObject.SetActive(false); _pools[type].Add(instance); } return(instance); }
public void ShowMessage(PedestalType[] symbols, string button) { extraText.text = ""; symbolImage1.gameObject.SetActive(true); symbolImage2.gameObject.SetActive(true); symbolImage3.gameObject.SetActive(true); symbolImage1.sprite = GameController.controller.GetPedestalSprite(symbols[0]); symbolImage2.sprite = GameController.controller.GetPedestalSprite(symbols[1]); symbolImage3.sprite = GameController.controller.GetPedestalSprite(symbols[2]); symbolImage1.color = GameController.controller.GetPedestalColor(symbols[0]); symbolImage2.color = GameController.controller.GetPedestalColor(symbols[1]); symbolImage3.color = GameController.controller.GetPedestalColor(symbols[2]); extraText.text = "pray to the gods"; dayText.text = ""; populationText.text = ""; collectedWaterText.text = ""; buttonText.text = button; pedestals.gameObject.SetActive(true); }
public Color GetPedestalColor(PedestalType p) { switch (p) { default: case PedestalType.T1: return pedestalColors[0]; case PedestalType.T2: return pedestalColors[1]; case PedestalType.T3: return pedestalColors[2]; case PedestalType.T4: return pedestalColors[3]; case PedestalType.T5: return pedestalColors[4]; case PedestalType.T6: return pedestalColors[5]; case PedestalType.T7: return pedestalColors[6]; case PedestalType.T8: return pedestalColors[7]; } }
public Sprite GetPedestalSprite(PedestalType p) { switch (p) { default: case PedestalType.T5: case PedestalType.T1: return pedestalSymbols[0]; case PedestalType.T6: case PedestalType.T2: return pedestalSymbols[1]; case PedestalType.T7: case PedestalType.T3: return pedestalSymbols[2]; case PedestalType.T8: case PedestalType.T4: return pedestalSymbols[3]; } }
public bool IsCorrectPedestal(PedestalType p) { for (int i = 0; i < pedestalsNeeded.Length; i++) { if (pedestalsNeeded[i] == p) return true; } return false; }
PedestalType[] GetRandomPedestals(int n = 3) { PedestalType p1 = PedestalType.T1, p2 = PedestalType.T1, p3 = PedestalType.T1; List<PedestalType> types = new List<PedestalType>(); types.Add(PedestalType.T1); types.Add(PedestalType.T2); types.Add(PedestalType.T3); types.Add(PedestalType.T4); types.Add(PedestalType.T5); types.Add(PedestalType.T6); types.Add(PedestalType.T7); types.Add(PedestalType.T8); while ((p1 == p2) || (p2 == p3) || (p1 == p3)) { p1 = (PedestalType)Random.Range(0, 8); p2 = (PedestalType)Random.Range(0, 8); p3 = (PedestalType)Random.Range(0, 8); } PedestalType[] p = new PedestalType[3]; p[0] = p1; p[1] = p2; p[2] = p3; return p; }
public IEnumerator ShowMessage(PedestalType[] symbols, string message2 = "Start Day") { waitingForInput = true; messageWindow.ShowMessage(symbols, message2); messageWindow.gameObject.SetActive(true); shutOffMessage = false; while (!shutOffMessage) { //wait for the player to hit the button yield return null; } shutOffMessage = false; messageWindow.gameObject.SetActive(false); waitingForInput = false; yield return null; }
public List <PedestalInfo> GetPedestalInfos(int level) { if (level == 0) { return(GetFirstLevelPedestalInfo()); } List <PedestalInfo> pedestalInfos = new List <PedestalInfo>(); List <int> slots = new List <int> { 0, 1, 2, 3, 4, 5, 6 }; PedestalType pedestalType = PedestalType.Pedestal_01; float totalPercentage = 0; foreach (var item in _floorPercentages) { totalPercentage += item.Value; } foreach (var item in _floorPercentages) { float chance = Random.value * totalPercentage; if (chance < item.Value) { pedestalType = item.Key; break; } else { totalPercentage -= item.Value; } } int numHole = Random.Range(0, int.MaxValue) % 3 + 1; int numDeadZone = Random.Range(0, int.MaxValue) % 2; int numWall = Random.Range(0, int.MaxValue) % 2; int numPowerUp = Random.value < _powerupPercentage ? 1 : 0; int numSquid = Random.value < _squidPercentage ? 1 : 0; for (int i = 0; i < numHole; i++) { int randomSlot = Random.Range(0, slots.Count); slots.RemoveAt(randomSlot); } for (int i = 0; i < numDeadZone; i++) { int randomSlot = Random.Range(0, slots.Count); pedestalInfos.Add(new PedestalInfo(PedestalType.DeadZone_01, slots[randomSlot])); slots.RemoveAt(randomSlot); } for (int i = 0; i < numPowerUp; i++) { int randomSlot = Random.Range(0, slots.Count); pedestalInfos.Add(new PedestalInfo(PedestalType.Pedestal_04_Powerup, slots[randomSlot])); slots.RemoveAt(randomSlot); } for (int i = 0; i < numSquid; i++) { int randomSlot = Random.Range(0, slots.Count); pedestalInfos.Add(new PedestalInfo(PedestalType.Squid_01, slots[randomSlot])); } for (int i = 0; i < slots.Count; i++) { pedestalInfos.Add(new PedestalInfo(pedestalType, slots[i])); } var wallSlot = new List <int>(slots); for (int i = 0; i < numWall; i++) { int randomSlot = Random.Range(0, wallSlot.Count); pedestalInfos.Add(new PedestalInfo(PedestalType.Wall_01, wallSlot[randomSlot])); wallSlot.Remove(randomSlot); } return(pedestalInfos); }
public PedestalInfo(PedestalType o, int s) => (type, slot) = (o, s);
public void ChangeType(PedestalType p, Sprite s, Color c) { pType = p; symbolSR.sprite = s; symbolSR.color = c; }