void LoadData() { achievementData = null; selectedAchievementIndex = -1; gameDB.InitLocalDB(); allAchievements = gameDB.LoadConfig <AchievementsConfigData>() as List <AchievementsConfigData>; InitIAPNames(); }
bool DrawLoadService() { contentColor = GUI.contentColor; backgroundColor = GUI.backgroundColor; EditorGUILayout.BeginHorizontal(); GUI.backgroundColor = EditorHelpers.orangeColor; if (GUILayout.Button("Load", GUILayout.Width(60))) { LoadData(); } GUI.backgroundColor = EditorHelpers.yellowColor; if (GUILayout.Button("New", GUILayout.Width(60))) { AchievementsConfigData newData = new AchievementsConfigData(); newData.id = "New Achievement " + newAchievementNameSufix.ToString(); ++newAchievementNameSufix; allAchievements.Insert(0, newData); InitIAPNames(); selectedAchievementIndex = 0; achievementData = newData; ShowNotification(new GUIContent("New Achievement added.")); dirty = true; } GUI.backgroundColor = EditorHelpers.greenColor; if (GUILayout.Button("Save", GUILayout.Width(60))) { Save(); } GUI.backgroundColor = backgroundColor; EditorGUILayout.EndHorizontal(); EditorGUILayout.Separator(); EditorGUILayout.Separator(); EditorGUILayout.Separator(); if (allAchievements == null) { EditorGUILayout.HelpBox("It seems that there is no data... try reopening the editor.", MessageType.Error); return(false); } if (allAchievements.Count > 0) { EditorGUILayout.BeginHorizontal(); EditorGUILayout.LabelField("iAPs:", GUILayout.Width(100)); int oldIntValue = selectedAchievementIndex; selectedAchievementIndex = EditorGUILayout.Popup(oldIntValue, achievementNames, GUILayout.Width(250)); if (oldIntValue != selectedAchievementIndex) { achievementData = allAchievements[selectedAchievementIndex]; } if (achievementData != null) { GUI.backgroundColor = EditorHelpers.redColor; if (GUILayout.Button("Delete", GUILayout.Width(70))) { if (EditorUtility.DisplayDialog("Deleting Achievement!", "Are you sure you want to delete Achievement'" + achievementData.id + "'?", "Yes, Delete it.", "No!")) { gameDB.DeleteConfig(achievementData.GetTableName(), achievementData.id); allAchievements.Remove(achievementData); InitIAPNames(); selectedAchievementIndex = -1; achievementData = null; ShowNotification(new GUIContent("Achievement deleted.")); return(false); } } GUI.backgroundColor = backgroundColor; } EditorGUILayout.EndHorizontal(); EditorGUILayout.Separator(); EditorGUILayout.Separator(); EditorGUILayout.Separator(); } return(achievementData != null); }
private void ReadXml(string pAth) { if (string.IsNullOrEmpty(pAth)) { m_Result = "文件路径不能为空"; Debug.LogError(m_Result); return; } List <LeaderboardConfigData> allLeaderboards = new List <LeaderboardConfigData>(); List <AchievementsConfigData> allAchievements = new List <AchievementsConfigData>(); string leaderboardTableName = new LeaderboardConfigData().GetTableName(); string achievementTableName = new AchievementsConfigData().GetTableName(); const string leaderboard_perfix = "leaderboard"; const string achievement_perfix = "achievement"; List <string> nodeNames = new List <string>(); //读取数据 m_Xml = new XmlDocument(); XmlReaderSettings set = new XmlReaderSettings { IgnoreComments = true }; //这个设置是忽略xml注释文档的影响。有时候注释会影响到xml的读取 try { m_Xml.Load(XmlReader.Create(pAth, set)); } catch (IOException e) { m_Result = "IOException : \n" + e.Message; Debug.LogError(e.Message); return; } catch (XmlException e) { m_Result = "XmlException : \n" + e.Message; Debug.LogError(e.Message); return; } //解析数据 XmlNodeList nodes = m_Xml.SelectSingleNode("resources").ChildNodes; foreach (XmlElement node in nodes) { string nodeName = node.GetAttribute("name"); string prefix = nodeName.Split('_')[0]; if (prefix.Equals(leaderboard_perfix)) { nodeNames.Add(nodeName); LeaderboardConfigData item_lb = new LeaderboardConfigData(); item_lb.id = item_lb.leaderboardId = node.InnerText; item_lb.name = nodeName; item_lb.store = EditorHelpers.storeNames[0]; allLeaderboards.Add(item_lb); } else if (prefix.Equals(achievement_perfix)) { nodeNames.Add(nodeName); AchievementsConfigData item_ac = new AchievementsConfigData(); item_ac.id = item_ac.achievementId = node.InnerText; item_ac.name = nodeName; item_ac.store = EditorHelpers.storeNames[0]; item_ac.progress = 0; allAchievements.Add(item_ac); } } //存储数据 if (allLeaderboards.Count > 0 || allAchievements.Count > 0) { string path = "data source=" + Application.streamingAssetsPath + "/DB/game.db"; CocoSqliteDBHelper db = new CocoSqliteDBHelper(path); if (allLeaderboards.Count > 0) { db.DeleteContents(leaderboardTableName); foreach (LeaderboardConfigData itemlb in allLeaderboards) { db.InsertInto(leaderboardTableName, new[] { "'" + itemlb.GetId() + "'", "'" + JsonMapper.ToJson(itemlb) + "'" }); } } if (allAchievements.Count > 0) { db.DeleteContents(achievementTableName); foreach (AchievementsConfigData itemac in allAchievements) { db.InsertInto(achievementTableName, new[] { "'" + itemac.GetId() + "'", "'" + JsonMapper.ToJson(itemac) + "'" }); } } m_Result = string.Format("Complete ! \nleaderboard : {0}\nachievement : {1}", allLeaderboards.Count, allAchievements.Count); Debug.LogError(m_Result.Replace("\n", "")); db.CloseSqlConnection(); CreateProgam(nodeNames); // SetGPGSAndroid (xml.OuterXml); } else { m_Result = "未能读取到有效的数据"; Debug.LogError(m_Result); } }