private void TryRecoverStateFromTakingDamage() { if (buildingState == EBuildingState.IDLE) { return; } if (Time.time - startTakingDamageTime >= AppConstant.Instance.buildingDamageMovingFreezeTime) { startTakingDamageTime = 0.0f; buildingState = EBuildingState.IDLE; } }
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; }
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); } }