// 유저 정보를 저장하는 메서드 public void SaveUserInfo() { string fullpathUserInfo = Application.persistentDataPath + "/user_info.json"; var infoManager = InfoManager.Getinstance(); File.WriteAllText(fullpathUserInfo, JsonConvert.SerializeObject(infoManager.UserInfo)); Debug.LogFormat("UserInfo::SetNewInfo"); }
// 유저 정보를 불러오는 메서드 // 유저 정보에 대한 파일이 없다면 생성한다. public void LoadUserInfo() { string fullpathUserInfo = Application.persistentDataPath + "/user_info.json"; if (File.Exists(fullpathUserInfo)) { var textUserInfo = File.ReadAllText(fullpathUserInfo); this.UserInfo = JsonConvert.DeserializeObject <UserInfo>(textUserInfo); Debug.LogFormat("UserInfo::LoadInfos"); } else { var dataManager = DataManager.GetInstance(); var infoManager = InfoManager.Getinstance(); var dicMissionDatas = dataManager.GetMissionDatasAll(); var dicRewardDatas = dataManager.GetRewardDatasAll(); foreach (var pair in dicMissionDatas) { var data = pair.Value; MissionInfo missionInfo = new MissionInfo(); missionInfo.id = data.id; infoManager.UserInfo.dicMssionInfos.Add(missionInfo.id, missionInfo); } foreach (var pair in dicRewardDatas) { var data = pair.Value; RewardInfo rewardInfo = new RewardInfo(); rewardInfo.id = data.id; infoManager.UserInfo.dicRewardInfos.Add(rewardInfo.id, rewardInfo); } SaveUserInfo(); } }
public void Start() { this.btnClose.onClick.AddListener(() => { this.gameObject.SetActive(false); }); // 데이터 매니저 인스턴스화 및 데이터 로드 var dataManager = DataManager.GetInstance(); dataManager.LoadAllDatas(); // 인포 매니저 인스턴스화 및 인포 로드 var infoManager = InfoManager.Getinstance(); infoManager.LoadUserInfo(); // 데이터 매니저에서 미션 데이터 전부 가져오기. var missionDatas = dataManager.GetMissionDatasAll(); for (int i = 0; i < missionDatas.Count; i++) { // 스크롤에 들어갈 리스트 아이템을 불러온다. var missionContent = Resources.Load <UIListItem_Mission>("Prefabs/UIListItem_Mission"); var missionContentGo = Instantiate(missionContent) as UIListItem_Mission; var nowMissionData = missionDatas[i + 100]; var nowMissionInfo = infoManager.UserInfo.dicMssionInfos[i + 100]; // Data ---> 아이콘, 이름, 보상 아이콘, 보상 수량 // Info ---> 진행도, 진행도 및 성공 여부, 보상 수령 여부, 미션 단계 // 해당 미션 번호에 맞는 아이콘 활성화, 이름 할당, 보상아이콘 설정, 보상 수량 설정 // 아이콘 활성화 missionContentGo.icons[i].gameObject.SetActive(true); // 미션 이름 할당 string fullDesc = string.Format(nowMissionData.desc, nowMissionData.goal); missionContentGo.textName.text = fullDesc; // 보상 아이콘 활성화 missionContentGo.arrUIBinder_MissionRewardIcons[ nowMissionData.reward_id].gameObject.SetActive(true); // 보상 수량 할당 missionContentGo.arrUIBinder_MissionRewardIcons[ nowMissionData.reward_id].reward_amount.text = nowMissionData.reward_amount.ToString(); // 성공여부 판단 --> 보상 버튼 부분 판단. // 미션 성공하지 않은 경우 if (nowMissionInfo.isComplete == false) { // p.s. for 문 사용해도 가능하나 3개라서 그냥 작성함... missionContentGo.arrBtns[0].SetActive(true); missionContentGo.arrBtns[1].SetActive(false); missionContentGo.arrBtns[2].SetActive(false); } // 미션성공, 보상받기 이전 else if (nowMissionInfo.isComplete == true && nowMissionInfo.isRewarded == false) { missionContentGo.arrBtns[0].SetActive(false); missionContentGo.arrBtns[1].SetActive(true); missionContentGo.arrBtns[2].SetActive(false); } // 미션성공, 보상받은 이후 else if (nowMissionInfo.isComplete == true && nowMissionInfo.isRewarded == true) { missionContentGo.arrBtns[0].SetActive(false); missionContentGo.arrBtns[1].SetActive(false); missionContentGo.arrBtns[2].SetActive(true); } // 미션 슬라이더 진행도 표시하기. float progressPercent = (float)nowMissionInfo.progressCount / (float)nowMissionData.goal; missionContentGo.sliderProgress.value = progressPercent; // 미션 단계 표시 for (int grade = 0; grade < nowMissionInfo.grade; grade++) { missionContentGo.stars[grade].gameObject.SetActive(true); } // 모든 정보를 불러온 미션항목들을 // 스크롤 콘텐츠의 자식으로 설정한다. missionContentGo.gameObject.transform.SetParent(this.scrollContents.transform, false); } }