Example #1
0
 private void Awake()
 {
     if (instance == null)
     {
         instance = this;
     }
 }
Example #2
0
    public override object Read(ES2Reader reader)
    {
        AchievementData data = GetOrCreate <AchievementData>();

        Read(reader, data);
        return(data);
    }
Example #3
0
 public void ReadAchievementData(string[] data)
 {
     for (int i = 1; i < data.Length; i++)
     {
         List <AchievementData> achieveData = new List <AchievementData> ();
         AchievementData        achieve     = new AchievementData();
         string[] info = data[i].Split(',');
         if (info.Length >= 6)
         {
             int id = 0;
             int.TryParse(info[0], out id);
             achieve.describe = info[1];
             int.TryParse(info[2], out achieve.num);
             int.TryParse(info[3], out achieve.rewardType);
             int.TryParse(info[4], out achieve.rewardId);
             int.TryParse(info[5], out achieve.rewardNum);
             if (!achievement_data.ContainsKey(id))
             {
                 achieveData.Add(achieve);
                 achievement_data.Add(id, achieveData);
             }
             else
             {
                 achieveData = achievement_data[id];
                 achieveData.Add(achieve);
                 achievement_data[id] = achieveData;
             }
         }
     }
 }
Example #4
0
        // ========================================================================== //

        /* public - [Do~Something] Function             */

        public void DoInit <TAchievementData>(TAchievementData[] arrSourceData, IAchievementLogic[] arrAchievementLogicList, params IAchievementProgressData[] arrProgressData)
            where TAchievementData : IAchievementData
        {
            Dictionary <string, IAchievementData>         mapAchivementData_Source;
            Dictionary <string, IAchievementProgressData> mapAchievementData_Progress;

            _mapAchievementData.Clear();
            _listAchievementLogicList = arrAchievementLogicList.OrderBy(p => p.iAchievementLogic_Order).ToList();

            try
            {
                mapAchivementData_Source    = arrSourceData.ToDictionary(p => p.strAchievementKey, p => (IAchievementData)p);
                mapAchievementData_Progress = arrProgressData.ToDictionary(p => p.strAchievementKey);
            }
            catch (System.Exception e)
            {
                Debug.LogError($"{nameof(AchievementDataManager)}-{nameof(DoInit)} - Fail - {e}", this);
                return;
            }

            foreach (var pQuestSource in mapAchivementData_Source.Values)
            {
                string          strQuestKey = pQuestSource.strAchievementKey;
                AchievementData pQuestData  = new AchievementData(pQuestSource, _listAchievementLogicList);
                pQuestData.OnUpdateAchieve.Subscribe += OnUpdateAchievement_Subscribe;

                IAchievementProgressData pProgressData;
                if (mapAchievementData_Progress.TryGetValue(strQuestKey, out pProgressData))
                {
                    pQuestData.Event_SetProgressData(pProgressData);
                }

                _mapAchievementData.Add(strQuestKey, pQuestData);
            }
        }
        internal bool Claim(int GlobalId)
        {
            this.Refresh();

            Data Data = CSV.Tables.Get(Gamefile.Achievements).GetDataWithID(GlobalId);

            if (Data != null)
            {
                if (Data is AchievementData)
                {
                    AchievementData Achievement = (AchievementData)Data;
                    if (this.GetCountByData(Achievement) >= Achievement.ActionCount)
                    {
                        if (this.Player.Achievements.Add(GlobalId))
                        {
                            this.Player.AddDiamonds(Achievement.DiamondReward);
                            this.Player.AddExperience(Achievement.ExpReward);

                            return(true);
                        }
                    }
                }
            }

            return(false);
        }
Example #6
0
    public void RevcieCallBack(C2sSprotoType.achievement_reward_collect.response resp)
    {
        curCallBackView.receiveBtn.isEnabled = true;
        if (resp.errorcode == 1)
        {
            MainUI.Instance.GetItemClick(curCallBackView.data.data.rewarData);
            for (int i = 0; i < curCallBackView.data.data.rewarData.Count; i++)
            {
                BagMgr.Instance.AddItemNumById(curCallBackView.data.data.rewarData[i].data.id,
                                               curCallBackView.data.data.rewarData[i].curCount);
            }

            AchievementViewData view = new AchievementViewData();
            AchievementData     data = GameShared.Instance.GetAchievementData((int)resp.next.csv_id);
            view.curProgress = (int)resp.next.finished;
            view.data        = data;
            if (view.data.condition != 0 && view.curProgress < 100)
            {
                view.data.curStar--;
            }
            view.sort      = GetSort(view);
            view.isReceive = resp.next.reward_collected;
            view.isUnlock  = resp.next.is_unlock;

            Unlock(curCallBackView, view);
        }
        curCallBackView = null;
    }
Example #7
0
    //アチーブメントが達成しているかをチェック
    public bool Check(AchievementData achievementData)
    {
        switch (achievementData.AchievementConditionType)
        {
        case AchievementConditionType.GamePlay:
            return(true);

        case AchievementConditionType.ClearStage:
            return(PlayerStatus.GetStageClear(achievementData.ClearStage1));

        case AchievementConditionType.ContinuousCount:
            if (true)
            {
                return(true);
            }

        case AchievementConditionType.MissCount:
            return(achievementData.MissCount1 >= PlayerStatus.GetMissCount());

        case AchievementConditionType.PerfectsCount:
            return(achievementData.PerfectsCount1 >= PlayerStatus.GetPerfectsCount());

        case AchievementConditionType.StageClearCount:
            return(achievementData.StageClearCount1 >= PlayerStatus.GetClearCount());

        case AchievementConditionType.ThrowCount:
            return(achievementData.ThrowCount1 >= PlayerStatus.GetThorwCount());
        }

        return(false);
    }
    public RecordManager(string text)
    {
        string[] frameText = text.Split('\n');
        numFrames = frameText.Length - 1;

        //handle the first row
        string[] first_row_data = frameText[0].Split('|');
        string[] robotAIText = first_row_data[0].Split('*');
        robotAIData = new RobotAIData[robotAIText.Length];
        for(int i = 0; i<robotAIText.Length; i++)
        {
            robotAIData[i] = new RobotAIData(robotAIText[i]);
        }
        mapData = new MapData(first_row_data[1],first_row_data[2],first_row_data[3]);

        string[] achievementText = first_row_data[4].Split('*');
        achievementData = new AchievementData[achievementText.Length];
        for(int i = 0; i<achievementText.Length; i++)
        {
            achievementData[i] = new AchievementData(achievementText[i]);
        }

        winnerID = Convert.ToInt32(first_row_data[5]);

        //handle the following frame rows
        frameData = new FrameData[numFrames];

        for(int i = 1; i < frameText.Length; i++)
        {
            frameData[i-1] = new FrameData(frameText[i]);
        }
    }
Example #9
0
    /// <summary>
    /// 所有的成就数据
    /// </summary>
    /// <returns>列表</returns>
    public List <AchievementData> GetAllAchieveData()
    {
        //读取地址
        string data = File.ReadAllText(Application.dataPath + "/Achievements/Archievements.json", Encoding.UTF8);
        //litJson读取Json
        JsonData root = JsonMapper.ToObject(data);
        //数组节点名
        JsonData node = root["achieves"];

        List <AchievementData> alist = new List <AchievementData>();

        for (int i = 0; i < node.Count; i++)
        {
            AchievementData ad = new AchievementData();
            ad.name     = (string)node[i]["name"];
            ad.id       = (int)node[i]["id"];
            ad.icon     = (string)node[i]["icon"];
            ad.describe = (string)node[i]["describe"];
            ad.state    = (bool)node[i]["state"];
            ad.time     = (string)node[i]["time"];

            alist.Add(ad);
        }
        return(alist);
    }
Example #10
0
    /// <summary>
    /// 完成成就测试
    /// </summary>
    public void AchieveTest()
    {
        //传入新的成就列表
        AchievementData ad = new AchievementData(6, DateTime.Now.ToShortDateString(), true);

        SavePlayerAchieveData(allAchieveData, ad);
    }
Example #11
0
        public bool AddAchievement(string AchievementId)
        {
            //Debug.Log("AddAchievement called");
            AchievementData   achievement       = ScriptableObject.CreateInstance("AchievementData") as AchievementData;
            AchievementEntity achievementEntity = new AchievementEntity(achievement);

            achievementEntity.Data.hideFlags        = HideFlags.None;
            achievementEntity.Data.Type             = AchievementType.ZenArcher;
            achievementEntity.Data.OnlyMainCampaign = true;
            achievementEntity.Data.name             = AchievementId.Substring(4); // removing "ACH_"
            achievementEntity.Data.SteamId          = AchievementId;
            achievementEntity.Data.GogId            = AchievementId;
            achievementEntity.Manager = AchievementManager;
            achievementEntity.Unlock();

            AchievementLogicFactory.Create(achievementEntity).Activate();
            AchievementManager.Append(achievementEntity);


            SteamAchievementsManager sam = SteamAchievementsManager.Instance;

            sam.Achievements = AchievementManager;
            SteamUserStats.SetAchievement(achievementEntity.Data.SteamId);

            Debug.Log($"{achievementEntity.Data.name} added to profile");
            return(true);
        }
Example #12
0
    public override void Write(object obj, ES2Writer writer)
    {
        AchievementData data = (AchievementData)obj;

        // Add your writer.Write calls here.
        writer.Write(data.Achievements);
    }
Example #13
0
 public void onAcceptAchievementByServer(AchievementData data)
 {
     _d.runningDatas.put(data.id, data);
     me.quest.reMakeTask(data.task, FunctionType.Achievement, data.id);
     data.task.reloadConfig();
     me.quest.addRunningTask(data.task);
 }
    public void ReadData()
    {
        try
        {
            if (System.IO.File.Exists(path))
            {
                string             contents = System.IO.File.ReadAllText(path);
                AchievementWrapper wrapper  = JsonUtility.FromJson <AchievementWrapper>(contents);
                achievementData = wrapper.achievementData;
            }
            else
            {
                Debug.Log("Unable to read the save data, file does not exist... creating new data");

                //If there's no data then we need to create some new data.
                //If there's no achievements already premade, we create some empty data.
                //This should not happen as we can set up the default instance of achievements in the inspector.
                if (achievementData.achievements.Count < 1)
                {
                    achievementData = new AchievementData();
                }

                SaveData();
            }
        }
        catch (System.Exception ex)
        {
            Debug.Log(ex.Message);
        }
    }
Example #15
0
    /// <summary>
    /// 获得新成就时,创建提示
    /// </summary>
    /// <param name="_data"></param>
    void CreateAchievementTip(AchievementData _data)
    {
        if (acheievePrefab == null)
        {
            acheievePrefab = exResources.GetResource(ResourceType.GUI, "mainUI/Achievement") as GameObject;
        }
        if (acheievePrefab == null)
        {
            Debug.Log("找不到相关预制!");
            return;
        }
        GameObject achieveGo = Instantiate(acheievePrefab) as GameObject;

        achieveGo.transform.parent        = this.gameObject.transform;
        achieveGo.transform.localPosition = acheievePrefab.transform.localPosition;
        acheievePrefab = null;
        achieveGo.transform.localScale = Vector3.one;
        achieveGo.SetActive(true);
        AchievementTip achievementTip = achieveGo.GetComponent <AchievementTip>();

        if (achievementTip != null)
        {
            achievementTip.SetAchievementTip(_data);
        }
        achieveTipList.Add(achieveGo);
        CancelInvoke("DestoryAchieveGo");
        Invoke("DestoryAchieveGo", 5.0f);
    }
Example #16
0
    public void SetActive(AchievementData achievementData)
    {
        // get achievement config
        Debug.Log("Get config for " + achievementData.achievement + " achievement");
        AchievementConfig achievementConfig = Array.Find(AchievementsManager.Instance.AchievementConfigs, element => element.achievement == achievementData.achievement);

        // set name
        achievementNameText.text = achievementConfig.displayName;
        // convert time to timespan
        DateTime dateTime = new DateTime(achievementData.timeTicksWhenAchieved);

        // set date
        achievementDateText.text = dateTime.ToShortDateString();
        // verify if achivement additional info is not empty
        if ((achievementData.additionalDetails != null) && (achievementData.additionalDetails != ""))
        {
            // set description from data
            achievementDescriptionText.text = achievementData.additionalDetails;
        }
        else
        {
            // set description from config
            achievementDescriptionText.text = achievementConfig.description;
        }
        // activate it
        gameObject.SetActive(true);
    }
    private void ShowAchievementPopUp(AchievementData achievement)

    {
        _popUpText.text            = achievement.Title;
        _popUpShowDurationCounter  = _popUpShowDuration;
        _popUpTransform.localScale = Vector2.right;
    }
Example #18
0
    /// <summary>
    /// 是否数据一致
    /// </summary>
    protected override bool toDataEquals(BaseData data)
    {
        AchievementData mData = (AchievementData)data;

        if (this.id != mData.id)
        {
            return(false);
        }

        if (mData.task != null)
        {
            if (this.task == null)
            {
                return(false);
            }
            if (!this.task.dataEquals(mData.task))
            {
                return(false);
            }
        }
        else
        {
            if (this.task != null)
            {
                return(false);
            }
        }

        return(true);
    }
Example #19
0
    //アチーブメントの表示演出
    IEnumerator CoOpenBoad(AchievementData data)
    {
        //今表示中のデータ
        isPlaying = true;
        //表示テキストを設定
        titleText.text  = data.titleText;
        detailText.text = data.detailText;

        //アチーブメントを表示開始
        startAnimation.Play();
        while (startAnimation.IsPlaying)
        {
            yield return(0);
        }

        //しばらく表示する
        yield return(new WaitForSeconds(waitTime));

        //アチーブメントを表示をしまう
        endAnimation.Play();
        while (endAnimation.IsPlaying)
        {
            yield return(0);
        }
        isPlaying = false;
    }
Example #20
0
        public override bool TakeAction()
        {
            var achievement = GetAchievement.AchievementList.Find(t => (t.ID == id));
            var config      = new ShareCacheStruct <Config_Achievement>().FindKey(id);

            if (achievement == null || config == null ||
                achievement.ID == 0 || achievement.Status != TaskStatus.Finished)
            {
                return(false);
            }
            type = achievement.Type;

            switch (config.RewardsType)
            {
            case TaskAwardType.Gold:
            {
                BigInteger bi = BigInteger.Parse(config.RewardsItemNum);
                UserHelper.RewardsGold(Current.UserId, bi);
            }
            break;

            case TaskAwardType.Diamond:
            {
                UserHelper.RewardsDiamond(Current.UserId, Convert.ToInt32(config.RewardsItemNum));
            }
            break;

            case TaskAwardType.Item:
            {
                UserHelper.RewardsItem(Current.UserId, config.RewardsItemID, Convert.ToInt32(config.RewardsItemNum));
            }
            break;
            }


            // 新成就
            var stock  = new ShareCacheStruct <Config_Achievement>().FindAll(t => (t.AchievementType == achievement.Type));
            var select = stock.Find(t => (t.id > achievement.ID));

            if (select != null)
            {
                achievement.ID     = select.id;
                achievement.Status = TaskStatus.No;
            }
            else
            {
                achievement.Status = TaskStatus.Received;
            }

            //achievement.Count = 0;
            if (type == AchievementType.Gem)
            {
                achievement.Count = "0";
            }
            //else if (type == AchievementType.OpenSoul)
            //    achievement.Count = "0";

            receipt = achievement;
            return(true);
        }
    /// <summary>
    /// 读取字节流(完整版)
    /// </summary>
    protected override void toReadBytesFull(BytesReadStream stream)
    {
        base.toReadBytesFull(stream);

        stream.startReadObj();

        BaseData dataT = stream.readDataFullNotNull();

        if (dataT != null)
        {
            if (dataT is AchievementData)
            {
                this.data = (AchievementData)dataT;
            }
            else
            {
                this.data = new AchievementData();
                if (!(dataT.GetType().IsAssignableFrom(typeof(AchievementData))))
                {
                    stream.throwTypeReadError(typeof(AchievementData), dataT.GetType());
                }
                this.data.shadowCopy(dataT);
            }
        }
        else
        {
            this.data = null;
        }

        stream.endReadObj();
    }
    public void SaveGame()
    {
        if (player.mana > 0)
        {
            player.takeOneMana();
            setInactiveUISave();
            SavePointEffect savePointEffect = playerSavePoint.GetComponent <SavePointEffect>();
            savePointEffect.runSave1Particle();

            PlayerData      playerData  = new PlayerData(player, godTreeBehavior);
            AchievementData achievement = new AchievementData(this);
            ItemData        itemData    = new ItemData(itemManager, uIMapManager, keyDoorManager);
            saveLoadManager.SaveGame(playerData, achievement, itemData);
            savePointEffect.runSave2Particle();
            setNotiSavedGame();
            if (player.tutorialMapEnable)
            {
                uIPlayGame.setActiveArrowUIMap(true);
                player.tutorialMapEnable = false;
            }
        }
        else
        {
            setNotiCanNotSaveGame();
        }
    }
Example #23
0
 /// <summary>
 /// Increases the count of the specified achievement progress.
 /// </summary>
 /// <param name="Data">The data.</param>
 /// <param name="Count">The count.</param>
 internal void IncreaseAchievementProgress(AchievementData Data, int Count)
 {
     if (this.Level.GameMode.State != State.Replay)
     {
         this.Level.Player.AchievementProgresses.Add(Data, Count);
     }
 }
    void readAchievement()
    {
        AchievementInfo = new Dictionary <int, AchievementData>();

        XmlDocument xmlDoc = new XmlDocument();
        TextAsset   path   = Resources.Load <TextAsset>(GameConfig.DatabasePathAchievement);

        xmlDoc.LoadXml(path.text);

        XmlNodeList listAchievement = xmlDoc.GetElementsByTagName("Achievement");

        foreach (XmlNode infoAchievement in listAchievement)
        {
            AchievementData achievementData = new AchievementData();
            achievementData.Icon  = infoAchievement.SelectSingleNode("Icon").InnerText;
            achievementData.Name  = infoAchievement.SelectSingleNode("Name").InnerText;
            achievementData.Value = infoAchievement.SelectSingleNode("Value").InnerText;
            XmlNodeList listReward = infoAchievement.SelectNodes("Reward");
            foreach (XmlNode infoReward in listReward)
            {
                achievementData.RewardAmount = int.Parse(infoReward.SelectSingleNode("Amount").InnerText);
                achievementData.RewardValue  = infoReward.SelectSingleNode("Value").InnerText;
            }

            AchievementInfo.Add(int.Parse(infoAchievement.Attributes["ID"].InnerText.Trim()), achievementData);
        }
    }
Example #25
0
 /// <summary>
 /// Refreshes the specified achievement progress.
 /// </summary>
 /// <param name="Data">The data.</param>
 /// <param name="Count">The count.</param>
 internal void RefreshAchievementProgress(AchievementData Data, int Count)
 {
     if (this.Level.GameMode.State != State.Replay)
     {
         this.Level.Player.AchievementProgresses.Set(Data, Math.Max(Count, this.Level.Player.AchievementProgresses.GetCount(Data)));
     }
 }
    public void SaveFile()
    {
        string strFullFileName = Application.persistentDataPath + "/" + File_Name;

        if (File.Exists(strFullFileName))
        {
            File.Delete(strFullFileName);
            return;
        }

        FileStream   fs = new FileStream(strFullFileName, FileMode.Create);
        StreamWriter sw = new StreamWriter(fs, Encoding.UTF8);

        string line;

        for (int i = 0; i < GameConst.Achievement_Num; i++)
        {
            AchievementData data = AchievementTableManager.Instance().GetAchievementDataByIndex(i);
            line = data.m_nId.ToString() + ":" + m_aAchievementStatus [i].ToString();
            sw.WriteLine(line);
        }

        sw.Close();
        fs.Close();
    }
Example #27
0
 private void Awake()
 {
     m_EvolutionData   = ConfigManager.Instance.FindData <EvolutionData>(Consts.Config_EvolutionData);
     m_AchievementData = ConfigManager.Instance.FindData <AchievementData>(Consts.Config_AchievementData);
     m_ShopData        = ConfigManager.Instance.FindData <ShopData>(Consts.Config_ShopData);
     LoadInfoByLocal();
 }
Example #28
0
    public static AchievementData LoadAchievements()
    {
        string path = Application.persistentDataPath + "/savedata.dyc";

        if (File.Exists(path))
        {
            BinaryFormatter formatter = new BinaryFormatter();
            FileStream      stream    = new FileStream(path, FileMode.Open);

            if (stream.Length > 0)
            {
                AchievementData data = formatter.Deserialize(stream) as AchievementData;
                stream.Close();
                return(data);
            }
            else
            {
                return(null);
            }
        }
        else
        {
            Debug.LogError("Save file not found in " + path);
            return(null);
        }
    }
Example #29
0
    public override void Read(ES2Reader reader, object c)
    {
        AchievementData data = (AchievementData)c;

        // Add your reader.Read calls here to read the data into the object.
        data.Achievements = reader.ReadList <AchievementMeta>();
    }
Example #30
0
        protected Achievement(AchievementData data, List <AchievementCondition> conditions)
        {
            this.Data = data;

            Name        = I18N.Instance.Get(data.NameKey);
            Description = I18N.Instance.Get(data.DescriptionKey);
            Conditions  = conditions;
        }
Example #31
0
    /// <summary>
    /// 写入字节流(简版)
    /// </summary>
    protected override void toWriteBytesSimple(BytesWriteStream stream)
    {
        if (this.runningDatas != null)
        {
            stream.writeLen(this.runningDatas.size());
            if (!this.runningDatas.isEmpty())
            {
                AchievementData[] runningDatasVValues = this.runningDatas.getValues();
                for (int runningDatasVI = runningDatasVValues.Length - 1; runningDatasVI >= 0; --runningDatasVI)
                {
                    AchievementData runningDatasV = runningDatasVValues[runningDatasVI];
                    if (runningDatasV != null)
                    {
                        if (runningDatasV != null)
                        {
                            stream.writeDataSimpleNotNull(runningDatasV);
                        }
                        else
                        {
                            nullObjError("runningDatasV");
                        }
                    }
                }
            }
        }
        else
        {
            nullObjError("runningDatas");
        }

        if (this.completeDatas != null)
        {
            stream.writeLen(this.completeDatas.size());
            if (!this.completeDatas.isEmpty())
            {
                AchievementCompleteData[] completeDatasVValues = this.completeDatas.getValues();
                for (int completeDatasVI = completeDatasVValues.Length - 1; completeDatasVI >= 0; --completeDatasVI)
                {
                    AchievementCompleteData completeDatasV = completeDatasVValues[completeDatasVI];
                    if (completeDatasV != null)
                    {
                        if (completeDatasV != null)
                        {
                            stream.writeDataSimpleNotNull(completeDatasV);
                        }
                        else
                        {
                            nullObjError("completeDatasV");
                        }
                    }
                }
            }
        }
        else
        {
            nullObjError("completeDatas");
        }
    }
	void checkAchievement(AchievementController controller, int id, AchievementData data, object text)
	{
		if(id<=2)
		{
			if(LevelConfig.getAchievementKillEnemy(id,data,text))
			{
				controller.spriteOutline.color = LevelConfig.ColorAchievementCompletedOutline;
				controller.spriteBackground.color = LevelConfig.ColorAchievementCompletedBackground;
				controller.completeIcon.SetActive(true);
			}
		}
	}
	public static bool getAchievementKillEnemy(int id, AchievementData data, object text)
	{
		int result = -1;
		bool b = false;
		if(int.TryParse(text.ToString(), out result))
		{
			if(result < int.Parse(data.Value))
				b = false;
			else
				b = true;
		}
		return b;
	}
	public static string getAchievementTextValue(int id, AchievementData data, object text)
	{
		string s = "";
		if(id <= 5) // neu dang la nhiem vu giet x enemies
		{
			int result = -1;
			if(int.TryParse(text.ToString(), out result))
			{
				s += (result <= int.Parse(data.Value) ? result : int.Parse(data.Value)).ToString() + " / " + data.Value;
			}
			else
				s += "0 / " + data.Value;
		}
		return s;
	}
 private void UpdateCurAchievement(int type, bool daily)
 {
     List<AchievementInfo> list = Achievement.GetAchievements(type);
     if (list == null)
     {
         return;
     }
     AchievementInfo achievementInfo = null;
     AchievementData achievementData = null;
     int num = 0;
     if (daily)
     {
         num = 1;
     }
     for (int i = 0; i < list.Count; i++)
     {
         if (list[i].Daily == daily)
         {
             achievementInfo = list[i];
             achievementData = this.GetAchievement(achievementInfo.ID);
             if (achievementData == null || !achievementData.TakeReward)
             {
                 break;
             }
         }
     }
     if (achievementInfo == null)
     {
         return;
     }
     if (this.curAchievements[num, type] == null)
     {
         this.curAchievements[num, type] = new AchievementDataEx();
     }
     if (achievementData == null)
     {
         achievementData = new AchievementData();
         achievementData.AchievementID = achievementInfo.ID;
         achievementData.Value = 0;
         achievementData.CoolDown = 0;
         achievementData.TakeReward = false;
         this.achievements.Add(achievementData.AchievementID, achievementData);
     }
     this.curAchievements[num, type].Data = achievementData;
     this.curAchievements[num, type].Info = achievementInfo;
 }
    void readAchievement()
    {
        AchievementInfo = new Dictionary<int, AchievementData>();

        XmlDocument xmlDoc = new XmlDocument();
        TextAsset path = Resources.Load<TextAsset>(GameConfig.DatabasePathAchievement);
        xmlDoc.LoadXml(path.text);

        XmlNodeList listAchievement = xmlDoc.GetElementsByTagName("Achievement");

        foreach (XmlNode infoAchievement in listAchievement)
        {
            AchievementData achievementData = new AchievementData();
            achievementData.Icon = infoAchievement.SelectSingleNode("Icon").InnerText;
            achievementData.Name = infoAchievement.SelectSingleNode("Name").InnerText;
            achievementData.Value = infoAchievement.SelectSingleNode("Value").InnerText;
            XmlNodeList listReward = infoAchievement.SelectNodes("Reward");
            foreach (XmlNode infoReward in listReward)
            {
                achievementData.RewardAmount = int.Parse(infoReward.SelectSingleNode("Amount").InnerText);
                achievementData.RewardValue = infoReward.SelectSingleNode("Value").InnerText;
            }

            AchievementInfo.Add(int.Parse(infoAchievement.Attributes["ID"].InnerText.Trim()), achievementData);
        }
    }