예제 #1
0
    public int getAchievementProgress(MDAchievement ach)
    {
        int progress = 0;

        if (ach.copy == 1)
        {
            if (_dp.dicReachAchs.ContainsKey(ach.id))
            {
                progress = _dp.dicReachAchs[ach.id];
            }
        }
        else if (ach.copy == 0)
        {
            for (int i = 0, max = ach.goals.Count; i < max; i++)
            {
                if (progress > 0)
                {
                    if (_dp.dicAchsNums.ContainsKey(ach.goals[i]))
                    {
                        progress = Mathf.Min(_dp.dicAchsNums[ach.goals[i]], progress);
                    }
                }
                else
                {
                    if (_dp.dicAchsNums.ContainsKey(ach.goals[i]))
                    {
                        progress = _dp.dicAchsNums[ach.goals[i]];
                    }
                }
            }
        }

        return(progress);
    }
예제 #2
0
    void processAchievementDescription(MDAchievement ach)
    {
        string objName = "";

        if (ach.type == DTAchievementType.TIGER_ID)
        {
            MDTigerInfo ti = GetTigerInfo(ach.goals[0]);
            objName = ti.name;
        }
        else
        {
            BCObj mObj = GetBCObj(ach.goals[0]);
            objName = mObj.Name;
        }

        string desstr = "";

        string[] des = ach.des.Split('#');
        for (int i = 0, max = des.Length; i < max; i++)
        {
            desstr += des[i];
            if (i < ach.pramater.Count)
            {
                if (ach.pramater[i] == 1)
                {
                    desstr += objName;
                }
                else if (ach.pramater[i] == 2)
                {
                    desstr += ach.goal_num.ToString();
                }
            }
        }
        ach.des = desstr;
    }
예제 #3
0
    void AchievementComplete(MDAchievement ach)
    {
//		bCompleteAchievement = true;
        //WG.SLog("AchievementComplete==="+SDK.Serialize(ach));
        WGAlertViewController.Self.showArchivementTipView(ach.name, ach.icon);
                #if TalkingData
        TDGAMission.OnBegin(ach.name + ach.id);
        TDGAMission.OnCompleted(ach.name + ach.id);
                #endif
    }
예제 #4
0
    public void freshUIWithData(MDAchievement ach)
    {
        preAchievementData = ach;

        WGDataController     _dataCtrl = WGDataController.Instance;
        DataPlayerController dpc       = DataPlayerController.getInstance();


        BCObj rwObj = _dataCtrl.GetBCObj(ach.reward[0]);

        labName.text = ach.name + ":" + ach.des;

        spGoalIcon.spriteName = ach.icon;
        switch (rwObj.BCType)
        {
        case BCGameObjectType.Coin:
            spRewardIcon.spriteName = "coin_105";
            break;

        case BCGameObjectType.Jewel:
            spRewardIcon.spriteName = "gem_104";
            break;
        }
        spRewardIcon.MakePixelPerfect();

        labRewardNum.text = WGStrings.getFormate(1066, ach.reward[1]);

        int got = 0;

        dpc.data.dicGotAchReward.TryGetValue(ach.id, out got);

        if (got == 1)     //到达了
        {
            btnGetReward.gameObject.SetActive(true);
            sdProgress.gameObject.SetActive(false);
            goHaveGot.SetActive(false);
        }
        else if (got == 0)       //还没有到达
        {
            goHaveGot.SetActive(false);
            btnGetReward.gameObject.SetActive(false);
            sdProgress.gameObject.SetActive(true);

            int reachNum = WGAchievementManager.Self.getAchievementProgress(ach);

            labProgress.text = reachNum.ToString() + "/" + ach.goal_num.ToString();
            sdProgress.value = reachNum * 1f / ach.goal_num;
        }
        else if (got == -1)       //已经领取
        {
            goHaveGot.SetActive(true);
            btnGetReward.gameObject.SetActive(false);
            sdProgress.gameObject.SetActive(false);
        }
    }
예제 #5
0
    void freshData()
    {
        szHaveGot.Clear();
        szReached.Clear();
        szNoReached.Clear();
        DataPlayer _dp = DataPlayerController.getInstance().data;

        for (int i = 0, max = WGDataController.Instance.szAchievement.Count; i < max; i++)
        {
            MDAchievement ach      = WGDataController.Instance.szAchievement[i];
            int           reachNum = WGAchievementManager.Self.getAchievementProgress(ach);

            if (_dp.dicGotAchReward.ContainsKey(ach.id))
            {
                if (_dp.dicGotAchReward[ach.id] == 1)
                {
                    szReached.Add(ach);
                }
                else if (_dp.dicGotAchReward[ach.id] == -1)
                {
                    szHaveGot.Add(ach);
                }
                else
                {
                    if (reachNum >= ach.goal_num)
                    {
                        _dp.dicGotAchReward[ach.id] = 1;
                        szReached.Add(ach);
                    }
                    else
                    {
                        _dp.dicGotAchReward[ach.id] = 0;
                        szNoReached.Add(ach);
                    }
                }
            }
            else
            {
                if (reachNum >= ach.goal_num)
                {
                    _dp.dicGotAchReward.Add(ach.id, 1);
                    szReached.Add(ach);
                }
                else
                {
                    _dp.dicGotAchReward.Add(ach.id, 0);
                    szNoReached.Add(ach);
                }
            }
        }


        WGAchievementManager.Self.bCompleteAchievement = szReached.Count > 0;
    }
예제 #6
0
    public void processAchievement(int goal, int type, int value = 1)
    {
        if (dicAchievement.ContainsKey(goal))
        {
            List <MDAchievement> szAch = dicAchievement[goal];
            for (int i = 0, max = szAch.Count; i < max; i++)
            {
                MDAchievement ach = szAch[i];
                if (ach.type == type)
                {
                    if (getAchievementProgress(ach) > ach.goal_num)
                    {
                        if (_dp.dicGotAchReward.ContainsKey(ach.id))
                        {
                            if (_dp.dicGotAchReward[ach.id] != -1)
                            {
                                bCompleteAchievement = true;
                                if (_dp.dicGotAchReward[ach.id] == 0)
                                {
                                    AchievementComplete(ach);
                                    _dp.dicGotAchReward[ach.id] = 1;
                                }
                            }
                        }
                        else
                        {
                            //WG.SLog("====getAchievementProgress===>goal_num"+SDK.Serialize(ach));

                            bCompleteAchievement = true;
                            _dp.dicGotAchReward.Add(ach.id, 1);
                            AchievementComplete(ach);
                        }
                    }
                    lastChangeTime = Time.realtimeSinceStartup;
                    hasChanged     = true;
                    if (ach.copy == 1)
                    {
                        if (_dp.dicReachAchs.ContainsKey(ach.id))
                        {
                            _dp.dicReachAchs[ach.id] += value;
                        }
                        else
                        {
                            _dp.dicReachAchs.Add(ach.id, value);
                        }
                    }
                    else
                    {
                        if (_dp.dicAchsNums.ContainsKey(goal))
                        {
                            _dp.dicAchsNums[goal] += value;
                        }
                        else
                        {
                            _dp.dicAchsNums.Add(goal, value);
                        }
                    }
                }
            }
        }
    }