// サーバーからハイスコアを取得 ----------------- public void getHighScore(ScoreDataV1 param, bool myScore) { // データストアの「ScoreDataV1」クラスから、Nameをキーにして検索 NCMBQuery <NCMBObject> query = new NCMBQuery <NCMBObject>("ScoreDataV1"); query.WhereEqualTo("ScoreKindValue", param.ScoreKindValue); if (myScore) { query.WhereEqualTo("Id", param.Id); myHighScore[param.ScoreKindValue] = 0; } else { allHighScore[param.ScoreKindValue] = 0; } query.WhereEqualTo("Row", param.Row); query.WhereEqualTo("Col", param.Col); query.WhereEqualTo("Color", param.Color); query.WhereEqualTo("Link", param.Link); query.WhereEqualTo("Direction", param.Direction); query.WhereEqualTo("Time", param.Time); query.WhereEqualTo("Stop", param.Stop); query.WhereEqualTo("CountDisp", param.CountDisp); query.WhereEqualTo("Garbage", param.Garbage); query.WhereGreaterThan("Version", 1); query.WhereEqualTo("ScoreCategoryValue", param.ScoreCategoryValue); query.OrderByDescending("Score"); query.FindAsync((List <NCMBObject> objList, NCMBException e) => { //検索成功したら if (e == null) { // ハイスコアが未登録だったら if (objList.Count == 0) { if (myScore) { myHighScore[param.ScoreKindValue] = 0; } else { allHighScore[param.ScoreKindValue] = 0; } } // ハイスコアが登録済みだったら else { if (myScore) { myHighScore[param.ScoreKindValue] = System.Convert.ToInt32(objList[0]["Score"]); } else { allHighScore[param.ScoreKindValue] = System.Convert.ToInt32(objList[0]["Score"]); } } } }); }
public void OnClick() { FreeController.WriteData(); DataManager dataManager = DataManager.Instance; ScoreDataV1 param = new ScoreDataV1(); param.Id = dataManager.UserData.Id; param.Name = dataManager.UserData.Name; param.Row = dataManager.PuzzleData.Row; param.Col = dataManager.PuzzleData.Col; param.Color = dataManager.PuzzleData.Color; param.Link = dataManager.PuzzleData.Link; param.Direction = dataManager.PuzzleData.Direction; param.Time = dataManager.PuzzleData.Time; param.Stop = dataManager.PuzzleData.Stop; param.CountDisp = dataManager.PuzzleData.CountDisp; param.Garbage = dataManager.PuzzleData.Garbage; param.Version = 0; param.ScoreCategoryValue = (int)ScoreDataV1.ScoreCategory.Global; ScoreManager scoreManager = ScoreManager.Instance; for (int scoreKind = 0; scoreKind < ScoreDataV1.SCORE_KIND_MAX; scoreKind++) { param.ScoreKindValue = scoreKind; scoreManager.fetchTopRankers(scoreKind, param, FreeController.RANK_MAX); } }
// サーバーにハイスコアを保存 ------------------------- // スコア送信処理は非同期でまとめて処理するため、categoryが途中で変わってしまう。 public void save(ScoreDataV1 param, int category) { // データストアの「ScoreDataV1」クラスから、Nameをキーにして検索 NCMBQuery <NCMBObject> query = new NCMBQuery <NCMBObject>("ScoreDataV1"); query.WhereEqualTo("ScoreKindValue", param.ScoreKindValue); query.WhereEqualTo("Id", param.Id); query.WhereEqualTo("Row", param.Row); query.WhereEqualTo("Col", param.Col); query.WhereEqualTo("Color", param.Color); query.WhereEqualTo("Link", param.Link); query.WhereEqualTo("Direction", param.Direction); query.WhereEqualTo("Time", param.Time); query.WhereEqualTo("Stop", param.Stop); query.WhereEqualTo("CountDisp", param.CountDisp); query.WhereEqualTo("Garbage", param.Garbage); query.WhereGreaterThan("Version", 1); query.WhereEqualTo("ScoreCategoryValue", category); query.FindAsync((List <NCMBObject> objList, NCMBException e) => { //検索成功したら if (e == null) { // ハイスコアが未登録だったら if (objList.Count == 0) { NCMBObject obj = new NCMBObject("ScoreDataV1"); obj["ScoreKindValue"] = param.ScoreKindValue; obj["Id"] = param.Id; obj["Row"] = param.Row; obj["Col"] = param.Col; obj["Color"] = param.Color; obj["Link"] = param.Link; obj["Direction"] = param.Direction; obj["Time"] = param.Time; obj["Stop"] = param.Stop; obj["CountDisp"] = param.CountDisp; obj["Garbage"] = param.Garbage; obj["Name"] = param.Name; obj["PlayDateTime"] = param.PlayDateTime; obj["Score"] = param.Score; obj["Version"] = param.Version; obj["ScoreCategoryValue"] = category; obj.SaveAsync(); } // ハイスコアが登録済みだったら else { objList[0]["Name"] = param.Name; objList[0]["PlayDateTime"] = param.PlayDateTime; objList[0]["Score"] = param.Score; objList[0]["Version"] = param.Version; objList[0].SaveAsync(); } } }); }
public void OnValueChanged(int result) { DataManager dataManager = DataManager.Instance; ScoreDataV1 param = new ScoreDataV1(); param.Version = CommonDefine.VERSION; param.ScoreCategoryValue = (int)ScoreDataV1.ScoreCategory.NewArrivals; Dropdown queryDropdown = GameObject.Find("QueryDropdown").GetComponent <Dropdown>(); int scoreKind = queryDropdown.value; ScoreManager scoreManager = ScoreManager.Instance; param.ScoreKindValue = scoreKind; scoreManager.fetchNewArrivals(scoreKind, param, ReplayController.RANK_MAX); //scoreManager.setNewCol(false); //scoreManager.setNewCol(true); }
//------------------------------------------------------- // Private Function //------------------------------------------------------- private void InitScoreData() { DataManager dataManager = DataManager.Instance; scoreData = new ScoreDataV1[ScoreDataV1.SCORE_KIND_MAX]; replayData = new ReplayDataV1[ScoreDataV1.SCORE_KIND_MAX]; int seed; if (replay) { seed = dataManager.ReplayData.Seed; } else { seed = (int)((DateTime.Now.ToBinary() + dataManager.PuzzleData.WriteCount) % int.MaxValue); } ScoreManager scoreManager = ScoreManager.Instance; for (int scoreKind = 0; scoreKind < scoreData.Length; scoreKind++) { scoreData[scoreKind] = new ScoreDataV1(); if (replay) { scoreData[scoreKind].Id = dataManager.ReplayData.Id; scoreData[scoreKind].Name = dataManager.ReplayData.Name; scoreData[scoreKind].Row = dataManager.ReplayData.Row; scoreData[scoreKind].Col = dataManager.ReplayData.Col; scoreData[scoreKind].Color = dataManager.ReplayData.Color; scoreData[scoreKind].Link = dataManager.ReplayData.Link; scoreData[scoreKind].Direction = dataManager.ReplayData.Direction; scoreData[scoreKind].Time = dataManager.ReplayData.Time; scoreData[scoreKind].Stop = dataManager.ReplayData.Stop; scoreData[scoreKind].CountDisp = dataManager.ReplayData.CountDisp; scoreData[scoreKind].Garbage = dataManager.ReplayData.Garbage; scoreData[scoreKind].Version = dataManager.ReplayData.Version; scoreData[scoreKind].ScoreCategoryValue = dataManager.ReplayData.ScoreCategoryValue; } else { scoreData[scoreKind].Id = dataManager.UserData.Id; scoreData[scoreKind].Name = dataManager.UserData.Name; scoreData[scoreKind].Row = dataManager.PuzzleData.Row; scoreData[scoreKind].Col = dataManager.PuzzleData.Col; scoreData[scoreKind].Color = dataManager.PuzzleData.Color; scoreData[scoreKind].Link = dataManager.PuzzleData.Link; scoreData[scoreKind].Direction = dataManager.PuzzleData.Direction; scoreData[scoreKind].Time = dataManager.PuzzleData.Time; scoreData[scoreKind].Stop = dataManager.PuzzleData.Stop; scoreData[scoreKind].CountDisp = dataManager.PuzzleData.CountDisp; scoreData[scoreKind].Garbage = dataManager.PuzzleData.Garbage; scoreData[scoreKind].Version = CommonDefine.VERSION; scoreData[scoreKind].ScoreCategoryValue = (int)ScoreDataV1.ScoreCategory.Global; } scoreData[scoreKind].ScoreKindValue = scoreKind; scoreManager.getHighScore(scoreData[scoreKind], true); scoreManager.getHighScore(scoreData[scoreKind], false); if (replay) { replayData[scoreKind] = dataManager.ReplayData; continue; } replayData[scoreKind] = new ReplayDataV1(); replayData[scoreKind].Version = CommonDefine.VERSION; replayData[scoreKind].Id = dataManager.UserData.Id; replayData[scoreKind].ScoreKindValue = scoreKind; replayData[scoreKind].Seed = seed; replayData[scoreKind].Row = dataManager.PuzzleData.Row; replayData[scoreKind].Col = dataManager.PuzzleData.Col; replayData[scoreKind].Color = dataManager.PuzzleData.Color; replayData[scoreKind].Link = dataManager.PuzzleData.Link; replayData[scoreKind].Direction = dataManager.PuzzleData.Direction; replayData[scoreKind].Time = dataManager.PuzzleData.Time; replayData[scoreKind].Stop = dataManager.PuzzleData.Stop; replayData[scoreKind].CountDisp = dataManager.PuzzleData.CountDisp; replayData[scoreKind].Garbage = dataManager.PuzzleData.Garbage; replayData[scoreKind].ScoreCategoryValue = (int)ScoreDataV1.ScoreCategory.Global; } UnityEngine.Random.seed = seed; frame = 0; inputFrame = new List <int>(); inputType = new List <byte>(); inputData1 = new List <byte>(); inputData2 = new List <byte>(); }
// ============================================================ // Score // ============================================================ // サーバーからトップ10を取得 --------------- public void fetchTopRankers(int scoreKind, ScoreDataV1 param, int queryLimit) { fetchData[scoreKind].flag = false; version = param.Version; // データストアの「ScoreDataV1」クラスから検索 NCMBQuery <NCMBObject> query = new NCMBQuery <NCMBObject>("ScoreDataV1"); query.WhereEqualTo("ScoreKindValue", param.ScoreKindValue); //query.WhereEqualTo("Id", param.Id); query.WhereEqualTo("Row", param.Row); query.WhereEqualTo("Col", param.Col); query.WhereEqualTo("Color", param.Color); query.WhereEqualTo("Link", param.Link); query.WhereEqualTo("Direction", param.Direction); query.WhereEqualTo("Time", param.Time); query.WhereEqualTo("Stop", param.Stop); query.WhereEqualTo("CountDisp", param.CountDisp); query.WhereEqualTo("Garbage", param.Garbage); if (param.Version != 0) { // query.WhereEqualTo("Version", param.Version); query.WhereGreaterThan("Version", 1); } query.WhereEqualTo("ScoreCategoryValue", param.ScoreCategoryValue); query.OrderByDescending("Score"); query.Limit = queryLimit; query.FindAsync((List <NCMBObject> objList, NCMBException e) => { if (e != null) { //検索失敗時の処理 } else { //検索成功時の処理 fetchData[scoreKind].scoreDataList.Clear(); // 取得したレコードをScoreDataV1クラスとして保存 foreach (NCMBObject obj in objList) { ScoreDataV1 data = new ScoreDataV1(); data.Score = System.Convert.ToInt32(obj["Score"]); data.Name = System.Convert.ToString(obj["Name"]); if (version != 0) { data.Version = System.Convert.ToInt32(obj["Version"]); data.Id = System.Convert.ToString(obj["Id"]); data.PlayDateTime = System.Convert.ToInt64(obj["PlayDateTime"]); data.ScoreKindValue = System.Convert.ToInt32(obj["ScoreKindValue"]); data.Row = System.Convert.ToInt32(obj["Row"]); data.Col = System.Convert.ToInt32(obj["Col"]); data.Color = System.Convert.ToInt32(obj["Color"]); data.Link = System.Convert.ToInt32(obj["Link"]); data.Direction = System.Convert.ToInt32(obj["Direction"]); data.Time = System.Convert.ToInt32(obj["Time"]); data.Stop = System.Convert.ToInt32(obj["Stop"]); data.CountDisp = System.Convert.ToInt32(obj["CountDisp"]); data.Garbage = System.Convert.ToInt32(obj["Garbage"]); data.ScoreCategoryValue = System.Convert.ToInt32(obj["ScoreCategoryValue"]); } fetchData[scoreKind].scoreDataList.Add(data); } for (int idx = objList.Count; idx < queryLimit; idx++) { ScoreDataV1 data = new ScoreDataV1(); data.Score = 0; data.Name = "----------"; fetchData[scoreKind].scoreDataList.Add(data); } fetchData[scoreKind].flag = true; } }); }