Пример #1
0
    private void TryRecoverStateFromTakingDamage()
    {
        if (buildingState == EBuildingState.IDLE)
        {
            return;
        }

        if (Time.time - startTakingDamageTime >= AppConstant.Instance.buildingDamageMovingFreezeTime)
        {
            startTakingDamageTime = 0.0f;
            buildingState         = EBuildingState.IDLE;
        }
    }
Пример #2
0
    protected virtual void InitializeWithBuildingConfig()
    {
        BuildingMetadata metadata = objectMetadata as BuildingMetadata;

        if (metadata == null)
        {
            return;
        }
        maxHitPoint = metadata.hp;
        name        = metadata.objectName;

        currentHitPoint       = maxHitPoint;
        buildingState         = EBuildingState.IDLE;
        startTakingDamageTime = 0.0f;
    }
Пример #3
0
    public void TakeDamage(float damage)
    {
        currentHitPoint      -= damage;
        startTakingDamageTime = Time.time;
        buildingState         = EBuildingState.TAKING_DAMAGE;

        if (hpBarBehaviour != null)
        {
            hpBarBehaviour.UpdateHpBar(currentHitPoint, maxHitPoint);
        }

        if (currentHitPoint <= Constants.EPS)
        {
            MapManager.Instance.OnItemDestroyed(this.gameObject);
            Destroy(this.gameObject);
        }
    }