TIL

2024/2/28 TIL

jhwoo1221 2024. 2. 28. 21:19

'오늘의 일에서 나는 어떤 것을 배웠는지' - 학습

DoTween으로 텍스트 하나씩 출력하는 방법

   1. 에셋스토어에서 두트윈 다운로드-임포트

   2. 스크립트에 using DG.Tweening;

   3. Text.DOText("", 3);


'오늘의 나는 무엇을 잘했는지' - 성취

-다이얼로그 창 제작

-데이터 관리 메서드 작성

    //취침 시 배부름에 따라 스태미나 회복
    public void RecoverStaminaAfterSleep()
    {
        if (OverallManager.Instance.PublicVariable.Fullness >= 100)
            OverallManager.Instance.PublicVariable.Stamina = 120.0f;
        else if (OverallManager.Instance.PublicVariable.Fullness >= 75)
            OverallManager.Instance.PublicVariable.Stamina = 100.0f;
        else
            OverallManager.Instance.PublicVariable.Stamina = (OverallManager.Instance.PublicVariable.Fullness >= 70) ? 90.0f :
                        (OverallManager.Instance.PublicVariable.Fullness >= 65) ? 80.0f :
                        (OverallManager.Instance.PublicVariable.Fullness >= 60) ? 70.0f :
                        (OverallManager.Instance.PublicVariable.Fullness >= 55) ? 60.0f :
                        (OverallManager.Instance.PublicVariable.Fullness >= 50) ? 50.0f :
                        (OverallManager.Instance.PublicVariable.Fullness >= 45) ? 40.0f :
                        (OverallManager.Instance.PublicVariable.Fullness >= 40) ? 30.0f :
                        (OverallManager.Instance.PublicVariable.Fullness >= 35) ? 20.0f :
                        (OverallManager.Instance.PublicVariable.Fullness >= 30) ? 10.0f : 0.0f;
    }

    // 공격 받을 시 하트 감소
    public void DecreaseHeartsOnAttack()
    {
        OverallManager.Instance.PublicVariable.Hearts -= -1;
    }

    //취침시 하트 재충전
    public void ResetHearts()
    {
        OverallManager.Instance.PublicVariable.Hearts = OverallManager.Instance.PublicVariable.MaxHearts;
    }

    //취침시 오염도 증가
    public void Contamination_Increases()
    {
        OverallManager.Instance.PublicVariable.Contamination += Random.Range(25, 36);
    }

    //선택지 1. 레베카 돌보기. 항생제 사용 유무 체크함. 3시간 소비. 스태미나 30 소비.
    public void Care_Rebecca(bool antibiotic_use)
    {
        if (Time_And_Stamina_Check(3,30))
        {
            {
                if (antibiotic_use == true)
                {
                    OverallManager.Instance.PublicVariable.Contamination -= Random.Range(25, 31);
                }
                else
                {
                    if (OverallManager.Instance.PublicVariable.Contamination <= 81)
                    {
                        OverallManager.Instance.PublicVariable.Contamination -= Random.Range(10, 21);
                    }
                    else
                    {

                    }
                }
                Time_And_Stamina_Increase(3, 30);
            }
        }
    }

    //선택지 2. 정보 탐색. 3시간 소비. 스태미나 20 소비.
    public void Gather_Info(bool laptop_use)
    {
        if (Time_And_Stamina_Check(3, 20))
        {
            {
                if (laptop_use == true)
                {
                }
                else
                {
                }
                Time_And_Stamina_Increase(3, 20);
            }
        }
    }

    //선택지 3. 바깥 탐사하기. 최소 1시간 소비. 스태미나 50 소비.
    public void Exploring_Outside()
    {
        if (Time_And_Stamina_Check(1, 50))
        {
            {
                OverallManager.Instance.PublicVariable.Am_I_outside = true;
                Time_And_Stamina_Increase(1, 50);
            }
        }
    }

    //선택지 4. 휴식하기. 1시간 소비. 스태미나 10 회복.
    public void Rest()
    {
        if (Time_And_Stamina_Check(1, 0))
        {
            {
                if (OverallManager.Instance.PublicVariable.Fullness >= 40)
                {
                    Time_And_Stamina_Increase(1, -10);
                }
                else
                {
                    Time_And_Stamina_Increase(1, 10);
                }
            }
        }
    }

    //선택지 5. 운동하기. 5시간 소비. 스태미나 40 소비. 최대 하트 1 증가.
    public void Exercise()
    {
        if (Time_And_Stamina_Check(5, 40))
        {
            {
                OverallManager.Instance.PublicVariable.MaxHearts += 1;
                OverallManager.Instance.PublicVariable.Hearts += 1;
                Time_And_Stamina_Increase(5, 40);
            }
        }
    }

    //레베카 상태 확인
  public void Check_Rebecca_status()
    {
        RebeccaStatus rebeccaStatus = OverallManager.Instance.PublicVariable.RebeccaStatus;

        if (rebeccaStatus == RebeccaStatus.Cold)
        {
            // Cold 상태에 대한 처리
        }
        else if (rebeccaStatus == RebeccaStatus.Unstable)
        {
            // Unstable 상태에 대한 처리
            if (Random.Range(0f, 100f) < 5f)
            {
                Attacked_From_Rebecca();
            }
        }
        else if (rebeccaStatus == RebeccaStatus.Violent)
        {
            // Violent 상태에 대한 처리
            if (Random.Range(0f, 100f) < 25f)
            {
                Attacked_From_Rebecca();
            }
        }
        else if (rebeccaStatus == RebeccaStatus.ZombieLike)
        {
            // ZombieLike 상태에 대한 처리
            if (Random.Range(0f, 100f) < 50f)
            {
                Attacked_From_Rebecca();
            }
        }
        else if (rebeccaStatus == RebeccaStatus.AlmostZombie)
        {
            // AlmostZombie 상태에 대한 처리
                Attacked_From_Rebecca();
        }
        else if (rebeccaStatus == RebeccaStatus.Zombie)
        {
            Ending(Ending_type.Infection);
        }
    }

    private void Attacked_From_Rebecca()
    {
        OverallManager.Instance.PublicVariable.Stamina -= 10;
        if (OverallManager.Instance.PublicVariable.Stamina < 0)
        {
        }
    }

    //엔딩 씬 이동 메서드
    public void Ending(Ending_type end)
    {
        if(end == Ending_type.GameOver)
        {

        }
        else if(end == Ending_type.Infection)
        {

        }
        else if(end == Ending_type.Starvation)
        {

        }
        else if(end == Ending_type.Normal)
        {

        }
        else if(end == Ending_type.True)
        {

        }
        else
        {

        }
    }


    //시간 및 스테미나 체크
    private bool Time_And_Stamina_Check(int time, float stamina)
    {
        if ((OverallManager.Instance.PublicVariable.CurrentHour + time) > 24)
        {
            Debug.Log("이 작업을 하기에는 시간이 부족할 것 같다.");
            return false;
        }
        if ((OverallManager.Instance.PublicVariable.Stamina - stamina < 0))
        {
            Debug.Log("스태미나가 부족하다.");
            return false;
        }
        return true;
    }

    //시간 및 스태미나 증가
    private void Time_And_Stamina_Increase(int time, float stamina)
    {
        OverallManager.Instance.PublicVariable.CurrentHour += time;
        OverallManager.Instance.PublicVariable.Stamina -= stamina;
    }

    //집에 돌아오는 메서드
    public void Comeback_Home()
    {
        OverallManager.Instance.PublicVariable.Am_I_outside = false;
    }


    //


'오늘의 나는 어떤 문제를 겪었는지, 앞으로 어떻게 해결할 것인지' - 개선
Q. 만약 팀원이 맡은 일에 대한 마감일정을 지키지도 못하고 능력도 없고 책임감도 없고 하고자 하는 의지도 없고 소통도 잘 안될 때는 어떻게 해야할까?
A. 모자란 만큼 더 분발하면 된다.