Beispiel #1
0
        public static int GetBestScore(string musicName, Difficulty difficulty)
        {
            int             chartElement = (int)difficulty;
            ScoreDataStruct scoreData    = LoadScoreData(musicName);

            return(scoreData.scores[chartElement].bestScore);
        }
Beispiel #2
0
        public static void SetScoreCacheStruct(string musicName, ScoreDataStruct scoreData)
        {
            if (StaticValue.cacheStructs == null)
            {
                return;
            }

            for (int i = 0; i < StaticValue.cacheStructs.Length; i++)
            {
                if (StaticValue.cacheStructs[i].musicName == musicName)
                {
                    StaticValue.cacheStructs[i].scoreStruct.scores = scoreData.scores;
                    break;
                }
            }
        }
    public IEnumerator StartInit()
    {
        Application.targetFrameRate = 60;
        loadName = StaticValue.loadName;

        if (Constant.CompareEnv(GameEnvironment.local))
        {
            musicStruct = ChartUtility.LoadMusicData(loadName);
        }
        else if (Constant.CompareEnv(GameEnvironment.webGL))
        {
            CacheStruct cacheStruct = ChartUtility.FindCacheStruct(loadName);
            musicStruct = cacheStruct.musicStruct;
            scoreData   = cacheStruct.scoreStruct;
        }

        yield return(StartCoroutine(GameInit()));
    }
Beispiel #4
0
        public static ScoreDataStruct LoadScoreData(string musicName)
        {
            ScoreDataStruct scoreData = null;

            if (Constant.CompareEnv(GameEnvironment.local))
            {
                string json = ReadScoreDataJson(musicName);

                if (json == string.Empty)
                {
                    return(null);
                }

                scoreData = JsonUtility.FromJson <ScoreDataStruct>(json);
            }
            else if (Constant.CompareEnv(GameEnvironment.webGL))
            {
                scoreData = FindCacheStruct(musicName).scoreStruct;
            }

            return(scoreData);
        }
Beispiel #5
0
        /// <summary>
        /// スコアデータを更新する
        /// </summary>
        /// <param name="musicName"></param>
        /// <param name="score"></param>
        /// <param name="difficulty"></param>
        /// <param name="clearType"></param>
        /// <returns></returns>
        public static IEnumerator WriteScoreDataFromResult(string musicName, int score, Difficulty difficulty, ClearType clearType)
        {
            int             chartElement = (int)difficulty;
            ScoreDataStruct scoreData    = null;

            if (Constant.CompareEnv(GameEnvironment.local))
            {
                scoreData = LoadScoreData(musicName);
            }
            else if (Constant.CompareEnv(GameEnvironment.webGL))
            {
                bool isFinish = false;
                NCMBQuery <NCMBObject> query = new NCMBQuery <NCMBObject>("MusicData");
                query.WhereEqualTo("musicName", musicName);
                query.Limit = 1;
                query.FindAsync((List <NCMBObject> objList, NCMBException e) =>
                {
                    if (e != null)
                    {
                        isFinish = true;
                        Debug.LogError(e);
                    }
                    else
                    {
                        string scoreJson = Convert.ToString(objList[0]["scoreData"]);
                        scoreData        = JsonUtility.FromJson <ScoreDataStruct>(scoreJson);
                        isFinish         = true;
                    }
                });
                // 取得が完了するまで待機
                while (!isFinish)
                {
                    yield return(null);
                }
            }

            if (scoreData == null)
            {
                yield break;
            }

            ScoreStruct scoreStruct = scoreData.scores[chartElement];

            if (scoreData == null)
            {
                scoreData = new ScoreDataStruct();
            }

            if (scoreStruct.bestScore < score)
            {
                scoreData.scores[chartElement].bestScore = score;
            }
            if (scoreStruct.clearType < clearType)
            {
                scoreData.scores[chartElement].clearType = clearType;
            }
            if (clearType > ClearType.Failed)
            {
                scoreData.scores[chartElement].clearCount++;
            }

            scoreData.scores[chartElement].playCount++;
            RankingManage(ref scoreData.scores[chartElement], score, clearType);

            string scoreDataJson = JsonUtility.ToJson(scoreData);

            if (Constant.CompareEnv(GameEnvironment.local))
            {
                string filePath = Application.streamingAssetsPath + Constant.musicDataDirectory + "/" + musicName;

                if (!Directory.Exists(filePath))
                {
                    yield break;
                }

                string dataFilePath = filePath + "/" + musicName + Constant.scoreExtension;

                File.WriteAllText(dataFilePath, scoreDataJson);
            }
            else if (Constant.CompareEnv(GameEnvironment.webGL))
            {
                bool isFinish = false;
                NCMBQuery <NCMBObject> query = new NCMBQuery <NCMBObject>("MusicData");
                query.WhereEqualTo("musicName", musicName);
                query.Limit = 1;
                query.FindAsync((List <NCMBObject> objList, NCMBException e) =>
                {
                    if (e != null)
                    {
                        isFinish = true;
                        Debug.LogError(e);
                    }
                    else
                    {
                        objList[0]["scoreData"] = scoreDataJson;
                        objList[0].SaveAsync((NCMBException exp) =>
                        {
                            if (exp != null)
                            {
                                isFinish = true;
                                Debug.LogError(e);
                            }
                            else
                            {
                                isFinish = true;
                            }
                        });
                    }
                });
                // 取得が完了するまで待機
                while (!isFinish)
                {
                    yield return(null);
                }
                SetScoreCacheStruct(musicName, scoreData);
            }
        }