示例#1
0
    /// <summary>
    /// 実績解放情報の取得
    /// </summary>
    /// <param name="achievementID">実績アイテムID</param>
    /// <returns>見つからない又は未取得はdefault</returns>
    public ReachAchievementInfo GetInfo(string achievementID)
    {
        ReachAchievementInfo info = default;

        if (isSet)
        {
            if (!reachDictionary.TryGetValue(achievementID, out info))
            {
                info = default;
            }
        }

        return(info);
    }
示例#2
0
    /// <summary>
    /// ストアから条件を満たしているかをチェックする
    /// </summary>
    private void CheckReachAchievement()
    {
        // 条件に関するデータが取得済みかどうか
        if (achievementStore.isCatalogGet && achievementStore.isStoreGet && playerData.isGet)
        {
            // チェック前に一度クリアする
            reachDictionary.Clear();

            for (int i = 0; i < achievementStore.StoreItems.Count; i++)
            {
                // カタログと一致するアイテムの取得
                var catalogItem = achievementStore.CatalogItems.Find(x => x.ItemId == achievementStore.StoreItems[i].ItemId);

                // LitJsonを使ってJsonを連想配列化する
                var jsonDic = LitJson.JsonMapper.ToObject <Dictionary <string, string> >(catalogItem.CustomData);

                //--------------------------------------------------------------------------------
                // 進捗度をセット
                UserDataRecord playerRecord;
                string         progressString = "0";
                // 実績内のカスタムデータからキーを取得してプレイヤーデータにアクセスする
                if (playerData.data.TryGetValue(jsonDic[AchievementDataName.PROGRESS_KEY], out playerRecord))
                {
                    double num;
                    // 進捗度が数値ではなかった場合は実績内の該当キーと一致しているかで判断をする
                    if (!double.TryParse(playerRecord.Value, out num))
                    {
                        string achievementValue;
                        // 実績内のプレイヤーデータを持つキーとプレイヤーデータが一致したら達成済み(1)とする
                        if (jsonDic.TryGetValue(jsonDic[AchievementDataName.PROGRESS_KEY], out achievementValue))
                        {
                            if (playerRecord.Value == achievementValue)
                            {
                                progressString = "1";
                            }
                        }
                    }
                    else
                    {
                        // 数値データだったのでそのまま格納する
                        progressString = playerRecord.Value;
                    }
                }

                // 実績情報の作成
                ReachAchievementInfo info = default;
                info.progressMax   = int.Parse(jsonDic[AchievementDataName.PROGRESS_MAX]);
                info.progressValue = int.Parse(progressString);

                // 実績達成済みならtrueを入れる
                if (info.progressValue >= info.progressMax)
                {
                    info.reach = true;
                }
                else
                {
                    info.reach = false;
                }

                reachDictionary.Add(achievementStore.StoreItems[i].ItemId, info);
            }
            isSet = true;
        }
    }