lvjincheng 4 년 전
부모
커밋
b2c741b825

+ 2 - 2
Assets/BowArrow/Scripts/Bluetooth/BluetoothHolder.cs

@@ -62,8 +62,8 @@ public class BluetoothHolder : MonoBehaviour
     }
 
     public void ClearCalibrateGuide() {
-        LoginMgr.myUserInfo.deviceCalibrateGuideFinish = false;
-        LoginMgr.myUserInfo.Save();
+        UserSettings.ins.deviceCalibrateGuideFinish = false;
+        UserSettings.ins.Save();
     }
 
     public void SetArrowWeight(InputField inputField) {

+ 11 - 11
Assets/BowArrow/Scripts/Manager/GameMgr.cs

@@ -85,13 +85,12 @@ public class GameMgr : MonoBehaviour
     bool guideFinish = false;
     public void CheckGuide() {
         if (gameType > 0) {
-            if (!LoginMgr.myUserInfo.deviceCalibrateGuideFinish) {
+            if (!UserSettings.ins.deviceCalibrateGuideFinish) {
                 DeviceCalibrateView.Create();
                 return;
             }
             if (gameType < 3) {
-                bool gameRuleGuideFinish = (bool)LoginMgr.myUserInfo.GetType().GetField($"gameRule{GameMgr.gameType}GuideFinish").GetValue(LoginMgr.myUserInfo);
-                if (!gameRuleGuideFinish) {
+                if (!UserSettings.ins.gameRuleGuideFinish.Contains(gameType)) {
                     GameRuleView.Create();
                     return;
                 }
@@ -103,15 +102,15 @@ public class GameMgr : MonoBehaviour
 
     public void FinishGameRuleGuide() {
         if (guideFinish) return;
-        LoginMgr.myUserInfo.GetType().GetField($"gameRule{GameMgr.gameType}GuideFinish").SetValue(LoginMgr.myUserInfo, true);
-        LoginMgr.myUserInfo.Save();
+        UserSettings.ins.gameRuleGuideFinish.Add(gameType);
+        UserSettings.ins.Save();
         CheckGuide();
     }
     
     public void FinishDeviceCalibrateGuide() {
         if (guideFinish) return;
-        LoginMgr.myUserInfo.deviceCalibrateGuideFinish = true;
-        LoginMgr.myUserInfo.Save();
+        UserSettings.ins.deviceCalibrateGuideFinish = true;
+        UserSettings.ins.Save();
         CheckGuide();
     }
 
@@ -250,11 +249,12 @@ public class TimeLimitGameMode : GameMode {
         int starCount = Mathf.FloorToInt(this.score / this.oneStarScore);
         float highestScore = 0;
         string distanceStr = distance.ToString();
-        System.Object highestScoreObj = LoginMgr.myUserInfo.timeLimitGameHighestScores[distanceStr];
-        if (highestScoreObj != null) highestScore = float.Parse(highestScoreObj.ToString()); 
+        if (LoginMgr.myUserInfo.timeLimitGameScores.ContainsKey(distanceStr)) {
+            highestScore = LoginMgr.myUserInfo.timeLimitGameScores[distanceStr];
+        }
         if (this.score > highestScore) {
-            LoginMgr.myUserInfo.timeLimitGameHighestScores.Remove(distanceStr);
-            LoginMgr.myUserInfo.timeLimitGameHighestScores.Add(distanceStr, this.score);
+            LoginMgr.myUserInfo.timeLimitGameScores.Remove(distanceStr);
+            LoginMgr.myUserInfo.timeLimitGameScores.Add(distanceStr, this.score);
             LoginMgr.myUserInfo.Save();
         }
         return new object[]{starCount, this.score};

+ 20 - 10
Assets/BowArrow/Scripts/Manager/LoginMgr.cs

@@ -328,24 +328,29 @@ public class UserInfo {
     public int diamond = 1000;
     public List<PropInfo> bagList = new List<PropInfo>();
     public List<DeviceInfo> deviceList = new List<DeviceInfo>();
-    public Hashtable timeLimitGameHighestScores = new Hashtable();
-    public bool deviceCalibrateGuideFinish = false;
-    public bool gameRule1GuideFinish = false;
-    public bool gameRule2GuideFinish = false;
-    //闯关记录(索引0~2分别表示野兔、野鸡、野狼的通关数)
-    public int[] challengeLevels = {0, 0, 0};
+    //显示游戏最高分(不同距离分数独立)
+    public Dictionary<string, float> timeLimitGameScores = new Dictionary<string, float>();
+    //闯关记录(gameType:通关数)(野兔、野鸡、野狼的通关数)
+    public Dictionary<int, int> challengeLevels = new Dictionary<int, int>();
     public void Save()
     {
         LoginMgr.SaveUserInfo(this);
     }
     public void SetChallengeLevelPass(int gameType, int level) {
         if (gameType != 3 && gameType != 4 && gameType != 5) return;
-        int index = gameType - 3;
-        int currentLevel = challengeLevels[index];
-        if (currentLevel < level) challengeLevels[index] = level;
+        if (challengeLevels.ContainsKey(gameType)) {
+            if (level <= challengeLevels[gameType]) {
+                return;
+            }
+        }
+        challengeLevels.Remove(gameType);
+        challengeLevels.Add(gameType, level);
     }
     public int GetChallengeLevelPass(int gameType) {
-        return challengeLevels[gameType - 3];
+        if (challengeLevels.ContainsKey(gameType)) {
+            return challengeLevels[gameType];
+        }
+        return 0;
     }
 }
 public class UserSettings {
@@ -360,6 +365,11 @@ public class UserSettings {
     //游戏里的箭重,单位克
     public float actualArrowWeight = 20; 
 
+    //设备校准引导-是否已经完成
+    public bool deviceCalibrateGuideFinish = false;
+    //游戏规则引导-是否已经完成(完成则保存对应的GameType)
+    public HashSet<int> gameRuleGuideFinish = new HashSet<int>();
+
     private static UserSettings _ins;
     public static UserSettings ins {
         get {

+ 3 - 2
Assets/BowArrow/Scripts/View/TimeLimitGameView.cs

@@ -33,8 +33,9 @@ public class TimeLimitGameView : MonoBehaviour
     {
         float highestScore = 0;
         string distanceStr = distance.ToString();
-        System.Object highestScoreObj = LoginMgr.myUserInfo.timeLimitGameHighestScores[distanceStr];
-        if (highestScoreObj != null) highestScore = float.Parse(highestScoreObj.ToString()); 
+        if (LoginMgr.myUserInfo.timeLimitGameScores.ContainsKey(distanceStr)) {
+            highestScore = LoginMgr.myUserInfo.timeLimitGameScores[distanceStr];
+        }
         highestScoreTxt.text = highestScore.ToString($"f{CommonConfig.ringsPrecision}");
     }
 }