Example #1
0
    // Invokes on touch and sets block value
    public void SelectBlockToMine()
    {
        isMining = false;

        blockPosition = csGlobal.g_mousePosition;
        Collider2D hitInfo = Physics2D.OverlapPoint(blockPosition);

        if (_gridBehavior.CanAchive(blockPosition))
        {
            if (hitInfo && hitInfo.CompareTag("Ore"))
            {
                block = hitInfo.GetComponent <OreDurability>();
                SelectionController.SetSelection(block.transform.position, false);

                SetInfoActive(true);
                minedOreName.text    = Constants.oresNames[block.oreStats.index];
                minedOreHealth.value = block.currentDurability / block.oreStats.durability;
            }
            else
            {
                block = null;
                SetInfoActive(false);
            }
        }
    }
    public static int SetCracking(OreDurability oreDurability)
    {
        // TODO: work with it (it doesn't work properly). This log will help
        // Debug.Log($"ore durability{oreDurability.currentDurability / oreDurability.maxDurability}: {_crackingState}");

        var _crackingState = Constants.crackingStagesAmount - 1 -
                             Mathf.FloorToInt(((oreDurability.currentDurability / oreDurability.maxDurability
                                                * 100)
                                               / (100 / Constants.crackingStagesAmount)));


        // undamaged
        if (_crackingState < 0)
        {
            return(_crackingState);
        }

        if (_crackingState != oreDurability._currentCrackingState)
        {
            if (oreDurability._currentCrackingState == 0)
            {
                _currentGO = Instantiate(_newGO,
                                         oreDurability.transform.position,
                                         Quaternion.identity,
                                         oreDurability.transform);
            }
            else
            {
                _currentGO = oreDurability.transform.GetChild(0).gameObject;
            }

            _currentGO.GetComponent <SpriteRenderer>().sprite = _crackingSprites[_crackingState];
        }

        return(_crackingState);
    }