protected override void Awake()
        {
            base.Awake();

            transform.GetChild(0).GetComponent <Button>().onClick.AddListener(OnClick);
            SpiritCountText = transform.GetChild(0).GetChild(0).GetComponent <TextMeshProUGUI>();

            void OnClick()
            {
                Debug.Log(1);
                var goldCost          = SpiritData.Get(Numeral.ResourceCost).Value;
                var spiritLimit       = SpiritData.Get(Enums.Spirit.SpiritLimit).Value;
                var magicCrystalsCost = SpiritData.Get(Enums.Spirit.MagicCrystalReq).Value;

                Debug.Log(Owner.ResourceSystem);
                if (Owner.ResourceSystem.CheckHaveResources(spiritLimit, goldCost, magicCrystalsCost))
                {
                    Debug.Log(3);
                    PlaceNewSpiritClicked?.Invoke(SpiritData);
                    Count--;

                    if (Count >= 1)
                    {
                        Debug.Log(4);
                        SpiritCountText.text = Count.ToString();
                        Debug.Log(5);
                    }
                    else
                    {
                        AllThisSpiritsPlaced?.Invoke(this);
                        Destroy(gameObject);
                    }
                }
            }
        }
Esempio n. 2
0
        void OnPlacingNewSpirit(SpiritData spiritData)
        {
            if (Owner.CellControlSystem.IsGridBuilded)
            {
                var newSpiritLimit      = spiritData.Get(Enums.Spirit.SpiritLimit).Value;
                var newGoldCost         = spiritData.Get(Numeral.ResourceCost).Value;
                var newMagicCrystalCost = spiritData.Get(Enums.Spirit.MagicCrystalReq).Value;

                if (Owner.ResourceSystem.CheckHaveResources(newSpiritLimit, newGoldCost, newMagicCrystalCost))
                {
                    if (GameManager.Instance.GameState == GameState.InGameMultiplayer)
                    {
                        var choosedCell = Owner.CellControlSystem.ChoosedCell;

                        var position = new Coordinates3D(
                            (int)choosedCell.transform.position.x,
                            (int)choosedCell.transform.position.y,
                            (int)choosedCell.transform.position.z);

                        SpiritCreationRequested?.Invoke(new SpiritCreationRequest()
                        {
                            Index     = spiritData.Index,
                            Rarity    = (int)spiritData.Base.Rarity,
                            Element   = (int)spiritData.Base.Element,
                            Position  = position,
                            CellIndex = Owner.CellControlSystem.Cells.IndexOf(choosedCell)
                        });
                    }
                    else
                    {
                        var newSpirit = Create.Spirit(spiritData, Owner.CellControlSystem.ChoosedCell, true);
                        SpiritPlaced?.Invoke(newSpirit);
                    }
                }
            }
        }