/**
         * @param howMuch
         * @param howfast
         * @param waiting
         */
        public bool SetCustomRecharge(float howMuch, float howFast, float waiting)
        {
            bool anyChange = false;

            if (howMuch >= 0.0f)
            {
                rechargeCapacity = howMuch;
                anyChange        = true;
            }
            if (howFast >= 0.0f)
            {
                rechargeRate = howFast;
                anyChange    = true;
            }
            if (waiting >= 0.0f)
            {
                rechargeWait = waiting;
                anyChange    = true;
            }

            if (anyChange)
            {
                actualRechargeType = eRechargeTypes.Custom;
            }

            return(anyChange);
        }
        /**
         * @param reType
         * @param eInit
         * @param eMin
         * @param eMax
         */
        public bool Init(eRechargeTypes reType, float eInit, float eMin, float eMax)
        {
            energyMin = eMin;
            energyMax = eMax;

            if (energyMax < energyMin)
            {
                float tmp = energyMax;
                energyMax = energyMin;
                energyMin = tmp;
            }
            if (energyMin < 0.0f)
            {
                energyMin = 0.0f;
            }

            actualEnergy = eInit;

            if (actualEnergy < energyMin)
            {
                actualEnergy = energyMin;
            }
            else if (actualEnergy > energyMax)
            {
                actualEnergy = energyMax;
            }

            return(SetRechargeType(reType));
        }
        /**
         * @param reType
         */
        public bool SetRechargeType(eRechargeTypes reType)
        {
            switch (reType)
            {
            case eRechargeTypes.NoRecharge:
                rechargeCapacity = 0.0f;
                rechargeRate     = 1000.0f;
                rechargeWait     = 1000.0f;

                lastConsume  = 0.0f;                                    // all energy was consumed in moment of creation
                nextRecharge = 1000.0f;                                 // first recharge is allowed after 1000 seconds of object creation
                break;

            // 2 units per second
            case eRechargeTypes.VerySlow:
                rechargeCapacity = 1.0f;
                rechargeRate     = 0.33f;
                rechargeWait     = 5.0f;
                break;

            // 3 units per second
            case eRechargeTypes.Slow:
                rechargeCapacity = 1.0f;
                rechargeRate     = 0.2f;
                rechargeWait     = 3.0f;
                break;

            // 5 units per second
            case eRechargeTypes.Medium:
                rechargeCapacity = 1.0f;
                rechargeRate     = 0.1f;
                rechargeWait     = 2.0f;
                break;

            // 10 units per second
            case eRechargeTypes.Fast:
                rechargeCapacity = 1.0f;
                rechargeRate     = 0.05f;
                rechargeWait     = 1.0f;
                break;

            // 20 units per second
            case eRechargeTypes.SuperFast:
                rechargeCapacity = 1.0f;
                rechargeRate     = 0.02f;
                rechargeWait     = 1.0f;
                break;

            default:
                Debug.LogWarning("PLAYER SETT >> Unknown recharge >> Current recharge: " + actualRechargeType);
                return(false);
            }

            actualRechargeType = reType;
            return(true);
        }
 /**
  * @param reType
  * @param eInit
  */
 public bool Init(eRechargeTypes reType, float eInit)
 {
     return(Init(reType, eInit, 0.0f, 100.0f));
 }