본문 바로가기

[내배캠] 본 캠프 개발 학습/매일매일 쓰는 TIL

1월 5일 일요일 본 캠프 개발일지

퀘스트 저장 문제 때문에 데이터 저장 방식을 완전히 리펙토링하여 변경했다. 

현재 퀘스트의 경우,  수락한 퀘스트만 리스트로 따로 저장하고 그 안에서 완료된 퀘스트를 다른 리스트로 분류하고 있었다.

다만 이렇게 진행하게 되니 퀘스트 리스트 데이터를 제이슨으로 저장할 때 똑같은 파일명으로 덮어씌워져서(퀘스트 인스턴스 타입이 같음) 저장 로직을 바꾸거나 다른 방법을 알아보아야 했다. 

팀원이 언박싱/박싱으로 가능하다고 했으나 하는 방법을 몰라서 이쪽은 포기. 시간이 너무 오래 걸릴 것 같았다.

 

그래서 아예 인스턴스 변수에 상태 체크 bool 값을 모두 넣어줘서 관리했다. 

public class QuestInstance
{
    public int id; // 퀘스트 고유 번호 
    public int questId; // 퀘스트 데이터 번호
    public int value; // 조건값
    public bool isActive; // 활성화 상태 
    public bool isActivePopup; // 팝업 활성화 상태
    public bool isComplete; // 조건 완료 여부
    public bool isClose; // 보상 여부
    public ItemInstance[] rewardItems;
}


그리고 생성된 모든 퀘스트를 리스트로 묶어서 다 저장하고 상태 값에 따라 불러왔다.
이렇게 하니까 다른 코드도 정리돼서 좋았다~! 리펙토링 성공적.