public static void SaveEventControlDataMap(EventControlDataMap fileDataMap, int gameID, EventControlData fileData) { //Init Data Map if (fileDataMap == null || fileDataMap.MapFileData == null) { fileDataMap = new EventControlDataMap(); fileDataMap.MapFileData = new Dictionary <int, EventControlData>(); } //Init Data if (fileData == null || fileData.EventConfig == null) { fileData = new EventControlData(); fileData.EventConfig = new Dictionary <string, EventConfig>(); } //Save Data if (fileDataMap.MapFileData.ContainsKey(gameID)) { fileDataMap.MapFileData[gameID] = fileData; } else { fileDataMap.MapFileData.Add(gameID, fileData); } //Save File byte[] data = ThriftSerialize.Serialize(fileDataMap); FileUtils.WriteByteFile(GetEventControDataPath(), data); }
private void SaveFile() { //Convert Data m_EventControlData = new EventControlData(); m_EventControlData.EventConfig = new Dictionary <string, EventConfig>(); if (m_lstEventEffectInfo == null) { m_lstEventEffectInfo = new List <EventEffectInfo>(); } for (int i = 0; i < m_lstEventEffectInfo.Count; i++) { if (m_lstEventEffectInfo[i].EventName == null || m_lstEventEffectInfo[i].EventName == "") { EditorUtility.DisplayDialog("保存失败", "事件名称不能为空", "确定"); return; } EventConfig eventConfig = new EventConfig(); eventConfig.TalentEffect = new Dictionary <string, int>(); foreach (string talent in m_lstEventEffectInfo[i].TalentEffects.Keys) { eventConfig.TalentEffect.Add(talent, AdaptiveDifficultyManager.ConvertInt(m_lstEventEffectInfo[i].TalentEffects[talent])); } m_EventControlData.EventConfig.Add(m_lstEventEffectInfo[i].EventName, eventConfig); } //Save File EditorUtility.DisplayDialog("保存成功", "保存成功", "确定"); ADE_Helper.SaveEventControlDataMap(m_EventControlDataMap, m_GameID, m_EventControlData); }
// Talent Control private void CalculateUserTalent(string eventName, EventControlData currentEventControlData) { if (m_CharTalentMap == null) { ResetUserTalent(); } //foreach (string talentName in currentEventControlData.EventConfig.Keys) //{ // if (m_CharTalentMap.ContainsKey(talentName)) // { // EventConfig talentConfig = currentEventControlData.EventConfig[talentName]; // if (talentConfig.TalentEffect.ContainsKey(eventName)) // { // float effect = ConvertFloat(talentConfig.TalentEffect[eventName]); // float score = ConvertFloat(m_CharTalentMap[talentName]); // float result = Mathf.Clamp01(score + effect); // m_CharTalentMap[talentName] = ConvertInt(result); // UpdateUserTalent(); // } // else // { // Debuger.LogWarning("Wrong Event Name : " + eventName + ", it does not Exist in Current EventControlData"); // } // } // else // { // Debuger.LogWarning("Wrong Talent Name : " + talentName + ", it does not Exist in UserTalent"); // } //} if (currentEventControlData.EventConfig.ContainsKey(eventName)) { EventConfig eventConfig = currentEventControlData.EventConfig[eventName]; foreach (string talentName in eventConfig.TalentEffect.Keys) { if (m_CharTalentMap.ContainsKey(talentName)) { float score = ConvertFloat(m_CharTalentMap[talentName]); float effect = ConvertFloat(eventConfig.TalentEffect[talentName]); float result = Mathf.Clamp01(score + effect); m_CharTalentMap[talentName] = ConvertInt(result); UpdateUserTalent(); } else { Debuger.LogWarning("Wrong Talent Name : " + talentName + ", it does not Exist in UserTalent"); } } } else { Debuger.LogWarning("Wrong Event Name : " + eventName + ", it does not Exist in Current EventControlData"); } }
private void Refresh() { m_lstEventEffectInfo = null; // Check File if (m_EventControlDataMap == null || m_EventControlDataMap.MapFileData == null) { return; } if (m_EventControlDataMap.MapFileData.Count <= 0) { return; } // Game Talent if (!m_EventControlDataMap.MapFileData.ContainsKey(m_GameID)) { m_EventCount = 0; m_EventLastCount = 0; return; } m_EventControlData = m_EventControlDataMap.MapFileData[m_GameID]; // Event Count m_EventCount = m_EventControlData.EventConfig.Count; m_EventLastCount = m_EventCount; // Editor Data m_lstEventEffectInfo = new List <EventEffectInfo>(); foreach (string eventName in m_EventControlData.EventConfig.Keys) { EventEffectInfo temp = new EventEffectInfo(); temp.EventName = eventName; Dictionary <string, float> effect = new Dictionary <string, float>(); DefaultUserTalent defaultUserTalent = ConfigManager.Instance.GetDefaultUserTalent(); foreach (string talentName in defaultUserTalent.MapTalent.Keys) { if (m_EventControlData.EventConfig[eventName].TalentEffect.ContainsKey(talentName)) { float effectValue = AdaptiveDifficultyManager.ConvertFloat(m_EventControlData.EventConfig[eventName].TalentEffect[talentName]); effect.Add(talentName, effectValue); } else { effect.Add(talentName, 0f); } } temp.TalentEffects = effect; // add to list m_lstEventEffectInfo.Add(temp); } }
public void SetUserTalent(string eventName, int gameID) { Debuger.Log("report event : " + eventName); if (m_EventControlDataMap == null || m_EventControlDataMap.MapFileData == null) { Debuger.LogError("m_EventControlDataMap not Initialized !"); } if (!m_EventControlDataMap.MapFileData.ContainsKey(gameID)) { Debuger.LogError("current game id is not found " + gameID); return; } m_nCurrentGameID = gameID; EventControlData currentEventControlData = m_EventControlDataMap.MapFileData[gameID]; CalculateUserTalent(eventName, currentEventControlData); }