示例#1
0
    public static MissionDatabase InitSetting()
    {
        string path = Application.persistentDataPath + "/Xml/Mission.Xml";

        if (!System.IO.File.Exists(path))
        {
            string folderPath;
            folderPath = Application.persistentDataPath + "/Xml";
            DirectoryInfo di = new DirectoryInfo(folderPath);
            if (di.Exists == false)
            {
                di.Create();
            }
            TextAsset   _xml   = Resources.Load <TextAsset>("XmlData/Mission");
            XmlDocument xmlDoc = new XmlDocument();
            xmlDoc.LoadXml(_xml.text);
            if (_xml != null)
            {
                XmlSerializer   serializer = new XmlSerializer(typeof(MissionDatabase));
                var             reader     = new StringReader(_xml.text);
                MissionDatabase missionDB  = serializer.Deserialize(reader) as MissionDatabase;
                reader.Close();
                CreateXml(path);
                Debugging.Log("MissionDatabase 최초 생성 성공");
                return(missionDB);
            }
        }
        Debugging.Log("MissionDatabase 최초 생성 실패");
        return(null);
    }
示例#2
0
    public static void ClearMission(int id)
    {
        Mission clearMission = userMissions.Find(m => m.id == id || m.id.Equals(id));

        if (clearMission != null)
        {
            Debugging.Log(id + " 의 미션클리어 했습니다.");
            if (clearMission.missionType == 2)
            {
                clearMission.enable        = false;
                clearMission.missionLevel += 1;
                clearMission.clearPoint    = GetArchivementClearPoint(clearMission);
                // 업적 목표 재설정 clearMission.clearPoint += 00;
            }
            else
            {
                if (clearMission.missionType == 0)
                {
                    AddClearPoint(ClearType.DayMissionClear);
                }
                else if (clearMission.missionType == 1)
                {
                    AddClearPoint(ClearType.WeeklyClear);
                }

                clearMission.clear = true;
                MissionDatabase.ClearMission(clearMission);
            }
        }
    }
示例#3
0
    public static MissionDatabase LoadUser()
    {
        string path = Application.persistentDataPath + "/Xml/Mission.Xml";

        if (System.IO.File.Exists(path))
        {
            XmlDocument xmlDoc = new XmlDocument();
            xmlDoc.LoadXml(System.IO.File.ReadAllText(path));
            //복호화////
            XmlElement elmRoot     = xmlDoc.DocumentElement;
            var        decrpytData = DataSecurityManager.DecryptData(elmRoot.InnerText);

            elmRoot.InnerXml = decrpytData;
            //////////
            string _xml;
            using (var stringWriter = new StringWriter())
                using (var xmlTextWriter = XmlWriter.Create(stringWriter))
                {
                    xmlDoc.WriteTo(xmlTextWriter);
                    xmlTextWriter.Flush();
                    _xml = stringWriter.GetStringBuilder().ToString();
                }
            if (_xml != null)
            {
                XmlSerializer   serializer = new XmlSerializer(typeof(MissionDatabase));
                var             reader     = new StringReader(_xml);
                MissionDatabase missionDB  = serializer.Deserialize(reader) as MissionDatabase;
                reader.Close();
                Debugging.Log("MissionDatabase 유저 파일 로드");
                return(missionDB);
            }
        }
        Debugging.LogSystemWarning("MissionDatabase wasn't loaded. >> " + path + " is null. >>");
        return(null);
    }
示例#4
0
 private static void InitUserData(string localId, string name)
 {
     SaveSystem.InitPlayer(localId, name);
     ItemDatabase.InitSetting();
     HeroDatabase.InitSetting();
     AbilityDatabase.InitSetting();
     SkillDatabase.InitSetting();
     MissionDatabase.InitSetting();
     MapDatabase.InitSetting();
     SaveData();
 }
示例#5
0
 public void SetDataToCloud(string socialUserId, string socialName, string saveTime)
 {
     localId       = socialUserId;
     name          = socialName;
     lastSavedTime = saveTime;
     UserData      = SaveSystem.GetUserDataToCloud();
     ItemData      = ItemDatabase.GetItemDataToCloud();
     HeroData      = HeroDatabase.GetHeroDataToCloud();
     AbilityData   = AbilityDatabase.GetAbilityDataToCloud();
     SkillData     = SkillDatabase.GetSkillDataToCloud();
     MissionData   = MissionDatabase.GetMissionDataToCloud();
     MapData       = MapDatabase.GetMapDataToCloud();
 }
示例#6
0
 private static void SetCloudDataToLocal()
 {
     if (gameInfo != null)
     {
         SaveSystem.SetCloudDataToUser(gameInfo);
         ItemDatabase.SetCloudDataToItem(gameInfo);
         HeroDatabase.SetCloudDataToHero(gameInfo);
         AbilityDatabase.SetCloudDataToAbility(gameInfo);
         SkillDatabase.SetCloudDataToSkill(gameInfo);
         MissionDatabase.SetCloudDataToMission(gameInfo);
         MapDatabase.SetCloudDataToMap(gameInfo);
     }
     else
     {
         Debug.LogWarning("클라우드 데이터 로컬저장중 오류 발생");
     }
 }
示例#7
0
    public static MissionDatabase Load()
    {
        TextAsset   _xml   = Resources.Load <TextAsset>("XmlData/Mission");
        XmlDocument xmlDoc = new XmlDocument();

        xmlDoc.LoadXml(_xml.text);
        if (_xml != null)
        {
            XmlSerializer   serializer = new XmlSerializer(typeof(MissionDatabase));
            var             reader     = new StringReader(_xml.text);
            MissionDatabase missionDB  = serializer.Deserialize(reader) as MissionDatabase;
            reader.Close();
            Debugging.Log("MissionDatabase 로드 성공");
            return(missionDB);
        }
        return(null);
    }
示例#8
0
    public static void LoadMission()
    {
        missions.Clear();
        userMissions.Clear();
        string          path   = Application.persistentDataPath + "/Xml/Mission.Xml";
        MissionDatabase md     = null;
        MissionDatabase userMd = null;

        if (System.IO.File.Exists(path))
        {
            md     = MissionDatabase.Load();
            userMd = MissionDatabase.LoadUser();
        }
        else
        {
            md     = MissionDatabase.InitSetting();
            userMd = MissionDatabase.LoadUser();
        }

        if (md != null)
        {
            foreach (Mission mission in md.missions)
            {
                missions.Add(mission);
            }
        }
        if (userMd != null)
        {
            foreach (Mission mission in userMd.missions)
            {
                userMissions.Add(mission);
            }
        }
        if (missions != null && userMissions != null)
        {
            Debugging.LogSystem("MissionDatabase is loaded Succesfully.");
        }
        GetDayMissions();
        GetWeekMissions();
        GetArchivement();

        SetArchivementClearPoint();
        CheckClearMissions(true);
    }
示例#9
0
    public static List <Mission> GetWeekMissions()
    {
        string currentWeek = (DateTime.Now.DayOfYear / 7).ToString();

        Debugging.Log("오늘 일자 > " + currentWeek);
        string saveWeek = PlayerPrefs.GetString("MissionWeek");

        Debugging.Log("저장된 일자 > " + saveWeek);
        //주가 변경될경우
        if (saveWeek != currentWeek || !saveWeek.Equals(currentWeek) || string.IsNullOrEmpty(saveWeek))
        {
            PlayerPrefs.SetString("MissionWeek", currentWeek);
            PlayerPrefs.Save();
            // 전체 주간미션을 가져온다.
            List <Mission> weekMissionDatas = missions.FindAll(m => (m.missionType == 1 || m.missionType.Equals(1)) && m.id != 100);
            // 랜덤 주간미션 아이디를 5개 뽑는다.
            int[] randomDayMissionID = Common.getRandomId(5, 0, weekMissionDatas.Count);
            // 다시 초기화를 하고.
            List <Mission> resultDayMissionDatas = new List <Mission>();
            resultDayMissionDatas.Add(GetMission(100));
            for (var i = 0; i < randomDayMissionID.Length; i++)
            {
                // 랜덤으로 뽑은 미션을 추가한다.
                resultDayMissionDatas.Add(GetMission(weekMissionDatas[randomDayMissionID[i]].id));
            }
            // 현재유저주간미션을 삭제하고 새로운 주간미션 5개를 추가저장한다.
            MissionDatabase.RegenerateWeekMission(resultDayMissionDatas);

            // 유저미션을 다시받아온다.
            userMissions.Clear();
            foreach (var mission in MissionDatabase.LoadUser().missions)
            {
                userMissions.Add(mission);
            }
            Debugging.Log("새로운 주간미션 데이터를 가져옴");
        }
        else
        {
            Debugging.Log("기존의 주간미션 데이터를 가져옴");
        }
        return(userMissions.FindAll(m => m.missionType == 1 || m.missionType.Equals(1)));
    }
示例#10
0
    public static List <Mission> GetDayMissions()
    {
        string currentday = DateTime.Now.ToString("dd");

        Debugging.Log("오늘 일자 > " + currentday);
        string saveday = PlayerPrefs.GetString("MissionDay");

        Debugging.Log("저장된 일자 > " + saveday);
        //저장된날짜와 오늘날짜가 다를때. 저녁 12:00가 지났는데
        if (saveday != currentday || !saveday.Equals(currentday) || string.IsNullOrEmpty(saveday))
        {
            PlayerPrefs.SetString("MissionDay", currentday);
            PlayerPrefs.Save();
            // 전체 일일미션을 가져온다.
            List <Mission> dayMissionDatas = missions.FindAll(m => (m.missionType == 0 || m.missionType.Equals(0)) && m.id != 0);
            // 랜덤 일일미션 아이디를 5개 뽑는다.
            int[] randomDayMissionID = Common.getRandomId(4, 0, dayMissionDatas.Count);
            // 다시 초기화를 하고.
            List <Mission> resultDayMissionDatas = new List <Mission>();
            resultDayMissionDatas.Add(GetMission(0));
            for (var i = 0; i < randomDayMissionID.Length; i++)
            {
                // 랜덤으로 뽑은 미션을 추가한다.
                resultDayMissionDatas.Add(GetMission(dayMissionDatas[randomDayMissionID[i]].id));
            }
            // 현재유저일일미션을 삭제하고 새로운 일일미션 5개를 추가저장한다.
            MissionDatabase.RegenerateDayMission(resultDayMissionDatas);

            // 유저미션을 다시받아온다.
            userMissions.Clear();
            foreach (var mission in MissionDatabase.LoadUser().missions)
            {
                userMissions.Add(mission);
            }
            Debugging.Log("새로운 일일미션 데이터를 가져옴");
        }
        else
        {
            Debugging.Log("기존의 일일미션 데이터를 가져옴");
        }
        return(userMissions.FindAll(m => m.missionType == 0 || m.missionType.Equals(0)));
    }
示例#11
0
    public static List <Mission> GetArchivement()
    {
        List <Mission> archivementList    = missions.FindAll(x => x.missionType == 2 || x.missionType.Equals(2));
        List <Mission> newArchivementList = new List <Mission>();

        foreach (var achivement in archivementList)
        {
            Mission mission = userMissions.Find(x => x.id == achivement.id || x.id.Equals(achivement));
            if (mission == null)
            {
                newArchivementList.Add(achivement);
            }
        }
        if (newArchivementList.Count > 0)
        {
            MissionDatabase.GenerateMission(newArchivementList);
            foreach (var mission in newArchivementList)
            {
                userMissions.Add(mission);
            }
        }
        return(userMissions.FindAll(item => item.missionType == 2 || item.missionType.Equals(2)));
    }
示例#12
0
 public static void PointSave()
 {
     MissionDatabase.PointSave(userMissions.FindAll(x => !x.clear));
 }
示例#13
0
 public Mission(string mission)
 {
     this.missionName = mission;
     this.data        = MissionDatabase.GetMission(missionName);
 }
示例#14
0
 public void RefreshMission()
 {
     this.data = MissionDatabase.GetMission(missionName);
 }