Какие строки кода можно упростить

Форум для самых маленьких, а так же тех, кому недосуг читать справку самостоятельно.

Какие строки кода можно упростить

Сообщение botaforq 06 апр 2021, 20:28

Какие строки кода можно упростить для оптимизации ну и эстетики кода, подскажите пожалуйста.

Синтаксис:
Используется csharp
public GeneratePacient StatusSctipt;
 
    [Header("Debug")]
    [SerializeField]
    private bool debug = true;
 
    [Header("Графики EKG")]
    public AnimationCurve pulsCurve, fibrilationCurve, asistoliaCurve, defibrilationCurve;
 
    private float timeElapsed = 0;
    private bool started;
 
    [Header("Скорость графика и монитора")]
    public float speed = 5f, speed_mon = 0.4f;
 
    private Rigidbody body;
    private Vector3 startPosition;
 
    [Header("График пульса")]
    public int IndexPulse;
 
    private int returnPoc;
 
    [Header("Шансы дефибрилляции")]
    [SerializeField]
    private int LowStatus = 50;
    [SerializeField]
    private int ExtraStatus = 40;
    [SerializeField]
    private int HardStatus = 30;
    [SerializeField]
    private int VeryHardStatus = 20;
    [SerializeField]
    private int ImposibleStatus = 10;
 
    [Header("Сложность состояния пациента")]
    [SerializeField]
    private int _statePoc;
 
    [Header("Скорость фибрилляции")]
    [SerializeField]
    public float fibrilationSpeed = 1f;
 
    [Header("Индексы графиков")]
    [SerializeField]
    private int NormalStatus = 0;
    [SerializeField]
    private int FibrilationStatus = 1;
    [SerializeField]
    private int AsistolStatus = 2;
    [SerializeField]
    private int DefibrilateStatus = 3;
 
    private int tempPulsCurveStatus;
 
    public int _Puls;
 
    private void Update()
    {
        if (fibrilationSpeed > 1)
            fibrilationSpeed = 1;
        else if (fibrilationSpeed < 0)
            fibrilationSpeed = 0;
 
        if (debug)
        {
            if (Input.GetKeyDown(KeyCode.W))
            {
                tempPulsCurveStatus = IndexPulse;
                IndexPulse = DefibrilateStatus;
            }
        }
    }
 
    IEnumerator ReturnDeff()
    {
        switch (_statePoc)
        {
            case 0:
                DefibrilateGenerator();
                yield return new WaitForSeconds(1.5f);
                StatusDefibrilate(LowStatus);
 
                break;
            case 1:
                DefibrilateGenerator();
                yield return new WaitForSeconds(1.5f);
                StatusDefibrilate(ExtraStatus);
                break;
            case 2:
                DefibrilateGenerator();
                yield return new WaitForSeconds(1.5f);
                StatusDefibrilate(HardStatus);
                break;
            case 3:
                DefibrilateGenerator();
                yield return new WaitForSeconds(1.5f);
                StatusDefibrilate(VeryHardStatus);
                break;
            case 4:
                DefibrilateGenerator();
                yield return new WaitForSeconds(1.5f);
                StatusDefibrilate(ImposibleStatus);
                break;
        }
    }
 
    void DefibrilateGenerator()
    {
        started = false;
        returnPoc = Random.Range(1, 100);
    }
 
    void StatusDefibrilate(int Status)
    {
        returnPoc = Random.Range(1, 100);
        if (returnPoc <= Status && tempPulsCurveStatus == FibrilationStatus)
            IndexPulse = NormalStatus;
        else if (returnPoc >= LowStatus && tempPulsCurveStatus == NormalStatus)
            IndexPulse = FibrilationStatus;
        else
            IndexPulse = tempPulsCurveStatus;
        if (debug)
            Debug.Log(returnPoc);
    }
 
    private void Awake()
    {
        body = GetComponent<Rigidbody>();
        startPosition.y = gameObject.transform.position.y;
        startPosition.z = gameObject.transform.position.z;
        _statePoc = StatusSctipt.PStatus;
    }
    private void FixedUpdate()
    {
        if (tempPulsCurveStatus == DefibrilateStatus)
            tempPulsCurveStatus = AsistolStatus;
        if (!started)
        {
            started = true;
            timeElapsed = 0;
        }
 
        switch (IndexPulse)
        {
            case 0:
                MovePoss (gameObject.transform.position.x + speed_mon * Time.deltaTime, startPosition.y + pulsCurve.Evaluate(timeElapsed), startPosition.z);
                break;
            case 1:
                MovePoss (gameObject.transform.position.x + speed * Time.deltaTime, startPosition.y + fibrilationCurve.Evaluate(timeElapsed) * fibrilationSpeed, startPosition.z);
                break;
            case 2:
                MovePoss (gameObject.transform.position.x + speed * Time.deltaTime, startPosition.y + asistoliaCurve.Evaluate(timeElapsed), startPosition.z);
                break;
            case 3:
                MovePoss (gameObject.transform.position.x + speed_mon * Time.deltaTime, startPosition.y + defibrilationCurve.Evaluate(timeElapsed), startPosition.z);
                if (returnPoc == 0)
                    StartCoroutine(ReturnDeff());
                break;
        }
 
         void MovePoss(float x, float y, float z)
        {
            if (IndexPulse != DefibrilateStatus)
                returnPoc = NormalStatus;
            timeElapsed += Time.deltaTime * speed;
            body.MovePosition(new Vector3(x, y, z));
        }
 
    }
botaforq
UNIт
 
Сообщения: 51
Зарегистрирован: 23 мар 2021, 11:43

Вернуться в Почемучка

Кто сейчас на конференции

Сейчас этот форум просматривают: Otto61 и гости: 26