Exemplo n.º 1
0
 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;
        }
Exemplo n.º 3
0
        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);
        }
Exemplo n.º 4
0
        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);
            }
        }
Exemplo n.º 5
0
 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);
         }
     }
 }
Exemplo n.º 6
0
        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;
    }
Exemplo n.º 13
0
        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);
        }
Exemplo n.º 14
0
 public PedestalInfo(PedestalType o, int s) => (type, slot) = (o, s);
Exemplo n.º 15
0
 public void ChangeType(PedestalType p, Sprite s, Color c)
 {
     pType = p;
     symbolSR.sprite = s;
     symbolSR.color = c;
 }