1808 lines
67 KiB
C#
1808 lines
67 KiB
C#
|
/********************************************************************
|
|||
|
created: 2014/02/13
|
|||
|
created: 13:2:2014 19:12
|
|||
|
filename: UserConfigData.cs
|
|||
|
file ext: cs
|
|||
|
author: 王迪
|
|||
|
|
|||
|
purpose: 客户端配置文件类
|
|||
|
*********************************************************************/
|
|||
|
|
|||
|
using System;
|
|||
|
using System.Collections.Generic;
|
|||
|
using System.IO;
|
|||
|
using System.Xml;
|
|||
|
using Games.GlobeDefine;
|
|||
|
using Games.Mission;
|
|||
|
using Module.Log;
|
|||
|
using UnityEngine;
|
|||
|
|
|||
|
#if UNITY_WP8
|
|||
|
using UnityPort;
|
|||
|
using System.Text;
|
|||
|
using System.Xml.Serialization;
|
|||
|
#endif
|
|||
|
|
|||
|
[Serializable]
|
|||
|
public class UserConfigData
|
|||
|
{
|
|||
|
public static string DataPath
|
|||
|
{
|
|||
|
get { return Application.persistentDataPath + "/UserData/"; }
|
|||
|
}
|
|||
|
|
|||
|
private static int AccountInfoMax = 5; // role info max
|
|||
|
|
|||
|
private static string AccountFileName = "Account.data";
|
|||
|
private static Dictionary<string, string> m_accountMap;
|
|||
|
|
|||
|
private static string RoleInfoFileLast = ".RoleInfo";
|
|||
|
private static Dictionary<string, List<LoginData.PlayerRoleData>> m_roleInfoMap;
|
|||
|
private static string CurRoleInfoAccount = "";
|
|||
|
|
|||
|
//private static string ClientResVersionFileName = "ClientResVersion.data";
|
|||
|
|
|||
|
private static string FastReplyFileName = "FastReply.data";
|
|||
|
private static List<string> m_FastReplyList;
|
|||
|
|
|||
|
private static string MissionClientName = "MissionClient.data";
|
|||
|
private static Dictionary<string, List<CurOwnMission>> m_MissionClientData;
|
|||
|
|
|||
|
private static string AutoConfigFileName = "AutoConfig.data";
|
|||
|
private static Dictionary<string, PlayerAuto> m_AutoConfigMap;
|
|||
|
|
|||
|
private static string SkillBarSetFileName = "SkillBarSet.data";
|
|||
|
|
|||
|
private static string FactionSkillBarSetFileName = "FactionSkillBarSet.data";
|
|||
|
|
|||
|
public static string AutoUseMedicFileName = "AutoMedic.data";
|
|||
|
|
|||
|
private static string RestaurantConfigFileName = "RestaurantConfig.data";
|
|||
|
private static Dictionary<string, RestaurantConfigData> m_RestaurantConfigMap;
|
|||
|
|
|||
|
public static void ClearConfigData()
|
|||
|
{
|
|||
|
File.Delete(DataPath + AccountFileName);
|
|||
|
File.Delete(DataPath + RoleInfoFileLast);
|
|||
|
File.Delete(DataPath + FastReplyFileName);
|
|||
|
File.Delete(DataPath + MissionClientName);
|
|||
|
File.Delete(DataPath + AutoConfigFileName);
|
|||
|
File.Delete(DataPath + SkillBarSetFileName);
|
|||
|
File.Delete(DataPath + RestaurantConfigFileName);
|
|||
|
File.Delete(DataPath + AutoUseMedicFileName);
|
|||
|
}
|
|||
|
|
|||
|
public static int ClientResVersion
|
|||
|
{
|
|||
|
get
|
|||
|
{
|
|||
|
// var strVersionFilePath =
|
|||
|
// UpdateHelper.Instance.LocalVersionPath + "/" + UpdateHelper.Instance.VersionFileName;
|
|||
|
// if (!File.Exists(strVersionFilePath)) return 0;
|
|||
|
//
|
|||
|
// var fs = new FileStream(strVersionFilePath, FileMode.Open, FileAccess.Read);
|
|||
|
// var sr = new StreamReader(fs);
|
|||
|
//
|
|||
|
// var strLine = sr.ReadLine();
|
|||
|
//
|
|||
|
// var retValue = 0;
|
|||
|
// if (!int.TryParse(strLine, out retValue))
|
|||
|
// {
|
|||
|
// LogModule.ErrorLog("res version file format error :" + strLine);
|
|||
|
// retValue = 0;
|
|||
|
// }
|
|||
|
//
|
|||
|
// fs.Close();
|
|||
|
//
|
|||
|
// return retValue;
|
|||
|
return 0;
|
|||
|
}
|
|||
|
}
|
|||
|
|
|||
|
|
|||
|
// 将账号信息保存在TXT文件中
|
|||
|
public static void AddAccountInfo(string account, string psw)
|
|||
|
{
|
|||
|
var accountMapOrg = GetAccountList();
|
|||
|
var newAccountMap = new Dictionary<string, string>();
|
|||
|
foreach (var oldPair in accountMapOrg)
|
|||
|
if (oldPair.Key != account)
|
|||
|
newAccountMap.Add(oldPair.Key, oldPair.Value);
|
|||
|
|
|||
|
newAccountMap.Add(account, psw);
|
|||
|
if (newAccountMap.Count > AccountInfoMax)
|
|||
|
{
|
|||
|
string delKey = null;
|
|||
|
foreach (var curKey in newAccountMap.Keys)
|
|||
|
{
|
|||
|
delKey = curKey;
|
|||
|
break;
|
|||
|
}
|
|||
|
|
|||
|
if (null != delKey)
|
|||
|
{
|
|||
|
newAccountMap.Remove(delKey);
|
|||
|
RemoveRoleInfo(delKey);
|
|||
|
}
|
|||
|
}
|
|||
|
|
|||
|
if (!Directory.Exists(DataPath)) Directory.CreateDirectory(DataPath);
|
|||
|
var fs = new FileStream(DataPath + AccountFileName, FileMode.Create);
|
|||
|
var sw = new StreamWriter(fs);
|
|||
|
foreach (var curPair in newAccountMap) sw.WriteLine(curPair.Key + '\t' + curPair.Value);
|
|||
|
|
|||
|
sw.Close();
|
|||
|
fs.Close();
|
|||
|
|
|||
|
m_accountMap = newAccountMap;
|
|||
|
}
|
|||
|
|
|||
|
// 从配置文件读取账号数据,保存在Map中
|
|||
|
public static Dictionary<string, string> GetAccountList()
|
|||
|
{
|
|||
|
if (m_accountMap != null) return m_accountMap;
|
|||
|
|
|||
|
m_accountMap = new Dictionary<string, string>();
|
|||
|
var filePath = DataPath + AccountFileName;
|
|||
|
if (!File.Exists(filePath)) return m_accountMap;
|
|||
|
var fs = new FileStream(filePath, FileMode.Open);
|
|||
|
var sr = new StreamReader(fs);
|
|||
|
|
|||
|
var strLine = sr.ReadLine();
|
|||
|
while (strLine != null)
|
|||
|
{
|
|||
|
var codes = strLine.Split('\t');
|
|||
|
if (codes.Length == 2)
|
|||
|
{
|
|||
|
if (m_accountMap.ContainsKey(codes[0]))
|
|||
|
m_accountMap[codes[0]] = codes[1];
|
|||
|
else
|
|||
|
m_accountMap.Add(codes[0], codes[1]);
|
|||
|
}
|
|||
|
|
|||
|
strLine = sr.ReadLine();
|
|||
|
}
|
|||
|
|
|||
|
sr.Close();
|
|||
|
fs.Close();
|
|||
|
return m_accountMap;
|
|||
|
}
|
|||
|
|
|||
|
#if UNITY_WP8
|
|||
|
public class RoleElement : IXmlSerializable
|
|||
|
{
|
|||
|
public string type { get; set; }
|
|||
|
public string level { get; set; }
|
|||
|
|
|||
|
public System.Xml.Schema.XmlSchema GetSchema() { return null; }
|
|||
|
|
|||
|
public void ReadXml(System.Xml.XmlReader reader)
|
|||
|
{
|
|||
|
if (null == reader)
|
|||
|
{
|
|||
|
return;
|
|||
|
}
|
|||
|
|
|||
|
reader.Read();
|
|||
|
reader.ReadStartElement("Type");
|
|||
|
type = reader.ReadContentAsString();
|
|||
|
reader.ReadEndElement();
|
|||
|
|
|||
|
reader.ReadStartElement("Level");
|
|||
|
level = reader.ReadContentAsString();
|
|||
|
reader.ReadEndElement();
|
|||
|
}
|
|||
|
|
|||
|
public void WriteXml(System.Xml.XmlWriter writer)
|
|||
|
{
|
|||
|
writer.WriteElementString("Type", type);
|
|||
|
writer.WriteElementString("Level", level);
|
|||
|
}
|
|||
|
}
|
|||
|
|
|||
|
public class ServerElement : IXmlSerializable
|
|||
|
{
|
|||
|
public List<RoleElement> list { get; set; }
|
|||
|
|
|||
|
public System.Xml.Schema.XmlSchema GetSchema() { return null; }
|
|||
|
|
|||
|
public void ReadXml(System.Xml.XmlReader reader)
|
|||
|
{
|
|||
|
list = new List<RoleElement>();
|
|||
|
while (reader.MoveToContent() == XmlNodeType.Element && reader.LocalName == "Role")
|
|||
|
{
|
|||
|
RoleElement element = new RoleElement();
|
|||
|
element.ReadXml(reader);
|
|||
|
list.Add(element);
|
|||
|
reader.Read();
|
|||
|
}
|
|||
|
}
|
|||
|
|
|||
|
public void WriteXml(System.Xml.XmlWriter writer)
|
|||
|
{
|
|||
|
foreach (RoleElement element in list)
|
|||
|
{
|
|||
|
writer.WriteStartElement("Role");
|
|||
|
element.WriteXml(writer);
|
|||
|
writer.WriteEndElement();
|
|||
|
}
|
|||
|
}
|
|||
|
|
|||
|
}
|
|||
|
|
|||
|
public class RoleInfo : IXmlSerializable
|
|||
|
{
|
|||
|
public Dictionary<string, ServerElement> dic { get; set; }
|
|||
|
|
|||
|
public System.Xml.Schema.XmlSchema GetSchema() { return null; }
|
|||
|
|
|||
|
public void ReadXml(System.Xml.XmlReader reader)
|
|||
|
{
|
|||
|
dic = new Dictionary<string, ServerElement>();
|
|||
|
|
|||
|
if (reader.MoveToContent() == XmlNodeType.Element && "RoleInfo" == reader.LocalName)
|
|||
|
{
|
|||
|
reader.Read();
|
|||
|
while (reader.MoveToContent() == XmlNodeType.Element)
|
|||
|
{
|
|||
|
string name = reader.LocalName;
|
|||
|
ServerElement elem = new ServerElement();
|
|||
|
|
|||
|
reader.Read();
|
|||
|
elem.ReadXml(reader);
|
|||
|
dic.Add(name, elem);
|
|||
|
reader.Read();
|
|||
|
}
|
|||
|
}
|
|||
|
}
|
|||
|
|
|||
|
public void WriteXml(System.Xml.XmlWriter writer)
|
|||
|
{
|
|||
|
foreach (KeyValuePair<string, ServerElement> elem in dic)
|
|||
|
{
|
|||
|
writer.WriteStartElement(elem.Key);
|
|||
|
elem.Value.WriteXml(writer);
|
|||
|
writer.WriteEndElement();
|
|||
|
}
|
|||
|
}
|
|||
|
|
|||
|
}
|
|||
|
|
|||
|
#endif
|
|||
|
|
|||
|
// 将角色信息保存在XML文件中
|
|||
|
public static void AddRoleInfo()
|
|||
|
{
|
|||
|
var account = PlayerPreferenceData.LastAccount;
|
|||
|
var serverID = PlayerPreferenceData.LastServer.ToString();
|
|||
|
|
|||
|
m_roleInfoMap = GetRoleInfoList(account);
|
|||
|
if (m_roleInfoMap.ContainsKey(serverID)) m_roleInfoMap.Remove(serverID);
|
|||
|
|
|||
|
m_roleInfoMap.Add(serverID, LoginData.loginRoleList);
|
|||
|
|
|||
|
if (!Directory.Exists(DataPath)) Directory.CreateDirectory(DataPath);
|
|||
|
|
|||
|
#if UNITY_WP8
|
|||
|
RoleInfo roleInfo = new RoleInfo();
|
|||
|
roleInfo.dic = new Dictionary<string, ServerElement>();
|
|||
|
|
|||
|
foreach (KeyValuePair<string, List<LoginData.PlayerRoleData>> iter in m_roleInfoMap)
|
|||
|
{
|
|||
|
ServerElement serverElem = new ServerElement();
|
|||
|
serverElem.list = new List<RoleElement>();
|
|||
|
|
|||
|
string name = "Server" + iter.Key;
|
|||
|
List<LoginData.PlayerRoleData> list = iter.Value;
|
|||
|
foreach (LoginData.PlayerRoleData curRoleData in list)
|
|||
|
{
|
|||
|
RoleElement roleElem = new RoleElement();
|
|||
|
roleElem.type = curRoleData.type.ToString();
|
|||
|
roleElem.level = curRoleData.level.ToString();
|
|||
|
|
|||
|
serverElem.list.Add(roleElem);
|
|||
|
}
|
|||
|
|
|||
|
roleInfo.dic.Add(name, serverElem);
|
|||
|
}
|
|||
|
|
|||
|
XmlHelper.XmlSerializeToFile(roleInfo, DataPath + account + RoleInfoFileLast, new UTF8Encoding(false));
|
|||
|
|
|||
|
#else
|
|||
|
var xml = new XmlDocument();
|
|||
|
var root = xml.CreateElement("RoleInfo");
|
|||
|
xml.AppendChild(root);
|
|||
|
foreach (var keys in m_roleInfoMap.Keys)
|
|||
|
{
|
|||
|
var curServerElement = xml.CreateElement("Server" + keys);
|
|||
|
root.AppendChild(curServerElement);
|
|||
|
var curList = m_roleInfoMap[keys];
|
|||
|
if (null != curList)
|
|||
|
foreach (var curRoleData in curList)
|
|||
|
{
|
|||
|
var curRoleElement = xml.CreateElement("Role");
|
|||
|
curServerElement.AppendChild(curRoleElement);
|
|||
|
var curTypeElement = xml.CreateElement("Type");
|
|||
|
curTypeElement.InnerText = curRoleData.type.ToString();
|
|||
|
curRoleElement.AppendChild(curTypeElement);
|
|||
|
curTypeElement = xml.CreateElement("Level");
|
|||
|
curTypeElement.InnerText = curRoleData.level.ToString();
|
|||
|
curRoleElement.AppendChild(curTypeElement);
|
|||
|
}
|
|||
|
}
|
|||
|
|
|||
|
xml.Save(DataPath + account + RoleInfoFileLast);
|
|||
|
#endif
|
|||
|
}
|
|||
|
|
|||
|
// 从配置文件读取角色数据,保存在Map中
|
|||
|
public static Dictionary<string, List<LoginData.PlayerRoleData>> GetRoleInfoList(string account)
|
|||
|
{
|
|||
|
if (null != m_roleInfoMap && CurRoleInfoAccount == account) return m_roleInfoMap;
|
|||
|
|
|||
|
m_roleInfoMap = new Dictionary<string, List<LoginData.PlayerRoleData>>();
|
|||
|
|
|||
|
#if UNITY_WP8
|
|||
|
RoleInfo roleInfo =
|
|||
|
XmlHelper.XmlDeserializeFromFile<RoleInfo>(DataPath + account + RoleInfoFileLast, new UTF8Encoding(false));
|
|||
|
if (null == roleInfo)
|
|||
|
{
|
|||
|
return m_roleInfoMap;
|
|||
|
}
|
|||
|
|
|||
|
foreach (KeyValuePair<string, ServerElement> iter in roleInfo.dic)
|
|||
|
{
|
|||
|
List<LoginData.PlayerRoleData> curList = new List<LoginData.PlayerRoleData>();
|
|||
|
string serverID = iter.Key.Substring(6);
|
|||
|
m_roleInfoMap.Add(serverID, curList);
|
|||
|
|
|||
|
foreach (RoleElement elem in iter.Value.list)
|
|||
|
{
|
|||
|
LoginData.PlayerRoleData curRoleData = new LoginData.PlayerRoleData(0, 0, null, 0, -1, -1, -1);
|
|||
|
string typeValue = elem.type;
|
|||
|
int.TryParse(typeValue, out curRoleData.type);
|
|||
|
string roleLevel = elem.level;
|
|||
|
int.TryParse(roleLevel, out curRoleData.level);
|
|||
|
|
|||
|
curList.Add(curRoleData);
|
|||
|
}
|
|||
|
}
|
|||
|
#else
|
|||
|
var xml = new XmlDocument();
|
|||
|
try
|
|||
|
{
|
|||
|
xml.Load(DataPath + account + RoleInfoFileLast);
|
|||
|
}
|
|||
|
catch (Exception ex)
|
|||
|
{
|
|||
|
return m_roleInfoMap;
|
|||
|
}
|
|||
|
|
|||
|
foreach (XmlElement elemServer in xml.FirstChild.ChildNodes)
|
|||
|
{
|
|||
|
var curList = new List<LoginData.PlayerRoleData>();
|
|||
|
var serverID = elemServer.Name.Substring(6);
|
|||
|
m_roleInfoMap.Add(serverID, curList);
|
|||
|
|
|||
|
foreach (XmlElement roleInfo in elemServer)
|
|||
|
if (roleInfo.Name == "Role")
|
|||
|
{
|
|||
|
var curRoleData = new LoginData.PlayerRoleData(0, 0, null, 0, -1, -1, -1, 0, 0, 0);
|
|||
|
foreach (XmlElement elemDetail in roleInfo)
|
|||
|
if (elemDetail.Name == "Type")
|
|||
|
{
|
|||
|
var typeValue = elemDetail.InnerText;
|
|||
|
int.TryParse(typeValue, out curRoleData.type);
|
|||
|
}
|
|||
|
else if (elemDetail.Name == "Level")
|
|||
|
{
|
|||
|
var roleLevel = elemDetail.InnerText;
|
|||
|
int.TryParse(roleLevel, out curRoleData.level);
|
|||
|
}
|
|||
|
|
|||
|
curList.Add(curRoleData);
|
|||
|
}
|
|||
|
}
|
|||
|
#endif
|
|||
|
|
|||
|
return m_roleInfoMap;
|
|||
|
}
|
|||
|
|
|||
|
public static void RemoveRoleInfo(string account)
|
|||
|
{
|
|||
|
if (File.Exists(DataPath + account + RoleInfoFileLast)) File.Delete(DataPath + account + RoleInfoFileLast);
|
|||
|
}
|
|||
|
|
|||
|
// 写入快速回复
|
|||
|
public static void AddFastReplyInfo(List<string> textList)
|
|||
|
{
|
|||
|
var curList = GetFastReplyList();
|
|||
|
curList.Clear();
|
|||
|
foreach (var str in textList) curList.Add(str);
|
|||
|
|
|||
|
if (!Directory.Exists(DataPath)) Directory.CreateDirectory(DataPath);
|
|||
|
var fs = new FileStream(DataPath + FastReplyFileName, FileMode.OpenOrCreate);
|
|||
|
var sw = new StreamWriter(fs);
|
|||
|
|
|||
|
for (var i = 0; i < textList.Count; i++) sw.WriteLine(textList[i]);
|
|||
|
|
|||
|
sw.Close();
|
|||
|
}
|
|||
|
|
|||
|
// 从配置文件读取快速回复
|
|||
|
public static List<string> GetFastReplyList()
|
|||
|
{
|
|||
|
if (m_FastReplyList != null) return m_FastReplyList;
|
|||
|
|
|||
|
m_FastReplyList = new List<string>();
|
|||
|
var filePath = DataPath + FastReplyFileName;
|
|||
|
if (!File.Exists(filePath)) return m_FastReplyList;
|
|||
|
var fs = new FileStream(filePath, FileMode.Open);
|
|||
|
var sr = new StreamReader(fs);
|
|||
|
|
|||
|
var strLine = sr.ReadLine();
|
|||
|
while (strLine != null)
|
|||
|
{
|
|||
|
m_FastReplyList.Add(strLine);
|
|||
|
strLine = sr.ReadLine();
|
|||
|
}
|
|||
|
|
|||
|
fs.Close();
|
|||
|
return m_FastReplyList;
|
|||
|
}
|
|||
|
|
|||
|
#if UNITY_WP8
|
|||
|
public class MissionElement : IXmlSerializable
|
|||
|
{
|
|||
|
public string state { get; set; }
|
|||
|
public string param0 { get; set; }
|
|||
|
|
|||
|
public System.Xml.Schema.XmlSchema GetSchema() { return null; }
|
|||
|
|
|||
|
public void ReadXml(System.Xml.XmlReader reader)
|
|||
|
{
|
|||
|
reader.Read();
|
|||
|
reader.ReadStartElement("State");
|
|||
|
state = reader.ReadContentAsString();
|
|||
|
reader.ReadEndElement();
|
|||
|
|
|||
|
reader.ReadStartElement("Param0");
|
|||
|
param0 = reader.ReadContentAsString();
|
|||
|
reader.ReadEndElement();
|
|||
|
}
|
|||
|
|
|||
|
public void WriteXml(System.Xml.XmlWriter writer)
|
|||
|
{
|
|||
|
writer.WriteElementString("State", state);
|
|||
|
writer.WriteElementString("Param0", param0);
|
|||
|
}
|
|||
|
}
|
|||
|
|
|||
|
public class PlayerGuidElement : IXmlSerializable
|
|||
|
{
|
|||
|
public Dictionary<string, MissionElement> dic { get; set; }
|
|||
|
|
|||
|
|
|||
|
public System.Xml.Schema.XmlSchema GetSchema() { return null; }
|
|||
|
|
|||
|
public void ReadXml(System.Xml.XmlReader reader)
|
|||
|
{
|
|||
|
dic = new Dictionary<string, MissionElement>();
|
|||
|
while (reader.MoveToContent() == XmlNodeType.Element)
|
|||
|
{
|
|||
|
string name = reader.LocalName;
|
|||
|
MissionElement element = new MissionElement();
|
|||
|
element.ReadXml(reader);
|
|||
|
dic.Add(name, element);
|
|||
|
reader.Read();
|
|||
|
}
|
|||
|
}
|
|||
|
|
|||
|
public void WriteXml(System.Xml.XmlWriter writer)
|
|||
|
{
|
|||
|
foreach (KeyValuePair<string, MissionElement> iter in dic)
|
|||
|
{
|
|||
|
writer.WriteStartElement(iter.Key);
|
|||
|
iter.Value.WriteXml(writer);
|
|||
|
writer.WriteEndElement();
|
|||
|
}
|
|||
|
}
|
|||
|
}
|
|||
|
|
|||
|
public class ClientMissionData : IXmlSerializable
|
|||
|
{
|
|||
|
public Dictionary<string, PlayerGuidElement> dic { get; set; }
|
|||
|
|
|||
|
public System.Xml.Schema.XmlSchema GetSchema() { return null; }
|
|||
|
|
|||
|
public void ReadXml(System.Xml.XmlReader reader)
|
|||
|
{
|
|||
|
dic = new Dictionary<string, PlayerGuidElement>();
|
|||
|
|
|||
|
if (reader.MoveToContent() == XmlNodeType.Element && "ClientMissionData" == reader.LocalName)
|
|||
|
{
|
|||
|
reader.Read();
|
|||
|
while (reader.MoveToContent() == XmlNodeType.Element)
|
|||
|
{
|
|||
|
string name = reader.LocalName;
|
|||
|
PlayerGuidElement elem = new PlayerGuidElement();
|
|||
|
|
|||
|
reader.Read();
|
|||
|
elem.ReadXml(reader);
|
|||
|
dic.Add(name, elem);
|
|||
|
reader.Read();
|
|||
|
}
|
|||
|
}
|
|||
|
}
|
|||
|
|
|||
|
public void WriteXml(System.Xml.XmlWriter writer)
|
|||
|
{
|
|||
|
foreach (KeyValuePair<string, PlayerGuidElement> iter in dic)
|
|||
|
{
|
|||
|
writer.WriteStartElement(iter.Key);
|
|||
|
iter.Value.WriteXml(writer);
|
|||
|
writer.WriteEndElement();
|
|||
|
}
|
|||
|
}
|
|||
|
}
|
|||
|
|
|||
|
#endif
|
|||
|
|
|||
|
// 将客户端任务 信息保存
|
|||
|
public static void AddClientMission(string strGuid, CurOwnMission oClientMission)
|
|||
|
{
|
|||
|
m_MissionClientData = GetClientMissionData();
|
|||
|
|
|||
|
if (m_MissionClientData.ContainsKey(strGuid))
|
|||
|
{
|
|||
|
var bIsHaveCurMission = false;
|
|||
|
for (var i = 0; i < m_MissionClientData[strGuid].Count; i++)
|
|||
|
if (m_MissionClientData[strGuid][i].m_nMissionID == oClientMission.m_nMissionID)
|
|||
|
{
|
|||
|
bIsHaveCurMission = true;
|
|||
|
m_MissionClientData[strGuid][i] = oClientMission;
|
|||
|
break;
|
|||
|
}
|
|||
|
|
|||
|
if (false == bIsHaveCurMission) m_MissionClientData[strGuid].Add(oClientMission);
|
|||
|
}
|
|||
|
else
|
|||
|
{
|
|||
|
var ClientMissionList = new List<CurOwnMission>();
|
|||
|
ClientMissionList.Add(oClientMission);
|
|||
|
m_MissionClientData.Add(strGuid, ClientMissionList);
|
|||
|
}
|
|||
|
|
|||
|
if (!Directory.Exists(DataPath)) Directory.CreateDirectory(DataPath);
|
|||
|
|
|||
|
#if UNITY_WP8
|
|||
|
ClientMissionData clientMissionData = new ClientMissionData();
|
|||
|
clientMissionData.dic = new Dictionary<string, PlayerGuidElement>();
|
|||
|
|
|||
|
foreach (string keys in m_MissionClientData.Keys)
|
|||
|
{
|
|||
|
PlayerGuidElement playerGuidElem = new PlayerGuidElement();
|
|||
|
playerGuidElem.dic = new Dictionary<string, MissionElement>();
|
|||
|
string playerGuidName = "PlayerGuid" + keys;
|
|||
|
|
|||
|
foreach (Games.Mission.CurOwnMission oMission in m_MissionClientData[keys])
|
|||
|
{
|
|||
|
MissionElement missionElem = new MissionElement();
|
|||
|
string missionName = "Mission" + oMission.m_nMissionID;
|
|||
|
missionElem.state = oMission.m_yStatus.ToString();
|
|||
|
missionElem.param0 = oMission.m_nParam[0].ToString();
|
|||
|
|
|||
|
playerGuidElem.dic.Add(missionName, missionElem);
|
|||
|
}
|
|||
|
|
|||
|
clientMissionData.dic.Add(playerGuidName, playerGuidElem);
|
|||
|
}
|
|||
|
|
|||
|
XmlHelper.XmlSerializeToFile(clientMissionData, DataPath + MissionClientName, new UTF8Encoding(false));
|
|||
|
|
|||
|
#else
|
|||
|
|
|||
|
var xml = new XmlDocument();
|
|||
|
var root = xml.CreateElement("ClientMissionData");
|
|||
|
xml.AppendChild(root);
|
|||
|
foreach (var keys in m_MissionClientData.Keys)
|
|||
|
{
|
|||
|
var curUserElement = xml.CreateElement("PlayerGuid" + keys);
|
|||
|
root.AppendChild(curUserElement);
|
|||
|
|
|||
|
foreach (var oMission in m_MissionClientData[keys])
|
|||
|
{
|
|||
|
var curMissionElement = xml.CreateElement("Mission" + oMission.m_nMissionID);
|
|||
|
curUserElement.AppendChild(curMissionElement);
|
|||
|
var curStateElement = xml.CreateElement("State");
|
|||
|
curStateElement.InnerText = oMission.m_yStatus.ToString();
|
|||
|
curMissionElement.AppendChild(curStateElement);
|
|||
|
var curParam0Element = xml.CreateElement("Param0");
|
|||
|
curParam0Element.InnerText = oMission.m_nParam[0]
|
|||
|
+ "," + oMission.m_nParam[1]
|
|||
|
+ "," + oMission.m_nParam[2]
|
|||
|
+ "," + oMission.m_nParam[3]
|
|||
|
+ "," + oMission.m_nParam[4]
|
|||
|
+ "," + oMission.m_nParam[5]
|
|||
|
+ "," + oMission.m_nParam[6]
|
|||
|
+ "," + oMission.m_nParam[7];
|
|||
|
curMissionElement.AppendChild(curParam0Element);
|
|||
|
}
|
|||
|
}
|
|||
|
|
|||
|
xml.Save(DataPath + MissionClientName);
|
|||
|
#endif
|
|||
|
}
|
|||
|
|
|||
|
// 删除 客户端任务
|
|||
|
public static void DelClientMission(string strGuid, int nMissionID)
|
|||
|
{
|
|||
|
m_MissionClientData = GetClientMissionData();
|
|||
|
|
|||
|
if (!m_MissionClientData.ContainsKey(strGuid)) return;
|
|||
|
|
|||
|
var nIndex = -1;
|
|||
|
for (var i = 0; i < m_MissionClientData[strGuid].Count; i++)
|
|||
|
if (nMissionID == m_MissionClientData[strGuid][i].m_nMissionID)
|
|||
|
{
|
|||
|
nIndex = i;
|
|||
|
break;
|
|||
|
}
|
|||
|
|
|||
|
if (nIndex < 0 || nIndex >= m_MissionClientData[strGuid].Count) return;
|
|||
|
|
|||
|
// 删除
|
|||
|
m_MissionClientData[strGuid].RemoveAt(nIndex);
|
|||
|
|
|||
|
if (m_MissionClientData[strGuid].Count <= 0) m_MissionClientData.Remove(strGuid);
|
|||
|
|
|||
|
if (!Directory.Exists(DataPath)) Directory.CreateDirectory(DataPath);
|
|||
|
|
|||
|
#if UNITY_WP8
|
|||
|
ClientMissionData clientMissionData = new ClientMissionData();
|
|||
|
clientMissionData.dic = new Dictionary<string, PlayerGuidElement>();
|
|||
|
|
|||
|
foreach (string keys in m_MissionClientData.Keys)
|
|||
|
{
|
|||
|
PlayerGuidElement playerGuidElem = new PlayerGuidElement();
|
|||
|
playerGuidElem.dic = new Dictionary<string, MissionElement>();
|
|||
|
string playerGuidName = "PlayerGuid" + keys;
|
|||
|
|
|||
|
foreach (Games.Mission.CurOwnMission oMission in m_MissionClientData[keys])
|
|||
|
{
|
|||
|
MissionElement missionElem = new MissionElement();
|
|||
|
string missionName = "Mission" + oMission.m_nMissionID;
|
|||
|
missionElem.state = oMission.m_yStatus.ToString();
|
|||
|
missionElem.param0 = oMission.m_nParam[0].ToString()
|
|||
|
+ "," + oMission.m_nParam[1].ToString()
|
|||
|
+ "," + oMission.m_nParam[2].ToString()
|
|||
|
+ "," + oMission.m_nParam[3].ToString()
|
|||
|
+ "," + oMission.m_nParam[4].ToString()
|
|||
|
+ "," + oMission.m_nParam[5].ToString()
|
|||
|
+ "," + oMission.m_nParam[6].ToString()
|
|||
|
+ "," + oMission.m_nParam[7].ToString();
|
|||
|
|
|||
|
playerGuidElem.dic.Add(missionName, missionElem);
|
|||
|
}
|
|||
|
|
|||
|
clientMissionData.dic.Add(playerGuidName, playerGuidElem);
|
|||
|
}
|
|||
|
|
|||
|
XmlHelper.XmlSerializeToFile(clientMissionData, DataPath + MissionClientName, new UTF8Encoding(false));
|
|||
|
|
|||
|
#else
|
|||
|
|
|||
|
var xml = new XmlDocument();
|
|||
|
var root = xml.CreateElement("ClientMissionData");
|
|||
|
xml.AppendChild(root);
|
|||
|
foreach (var keys in m_MissionClientData.Keys)
|
|||
|
{
|
|||
|
var curUserElement = xml.CreateElement("PlayerGuid" + keys);
|
|||
|
root.AppendChild(curUserElement);
|
|||
|
|
|||
|
foreach (var oMission in m_MissionClientData[keys])
|
|||
|
{
|
|||
|
var curMissionElement = xml.CreateElement("Mission" + oMission.m_nMissionID);
|
|||
|
curUserElement.AppendChild(curMissionElement);
|
|||
|
var curStateElement = xml.CreateElement("State");
|
|||
|
curStateElement.InnerText = oMission.m_yStatus.ToString();
|
|||
|
curMissionElement.AppendChild(curStateElement);
|
|||
|
var curParam0Element = xml.CreateElement("Param0");
|
|||
|
curParam0Element.InnerText = oMission.m_nParam[0].ToString();
|
|||
|
curMissionElement.AppendChild(curParam0Element);
|
|||
|
}
|
|||
|
}
|
|||
|
|
|||
|
xml.Save(DataPath + MissionClientName);
|
|||
|
#endif
|
|||
|
}
|
|||
|
|
|||
|
// 从配置文件读取账号数据,保存在Map中
|
|||
|
public static Dictionary<string, List<CurOwnMission>> GetClientMissionData()
|
|||
|
{
|
|||
|
if (null != m_MissionClientData) return m_MissionClientData;
|
|||
|
|
|||
|
m_MissionClientData = new Dictionary<string, List<CurOwnMission>>();
|
|||
|
|
|||
|
#if UNITY_WP8
|
|||
|
ClientMissionData clientMissionData =
|
|||
|
XmlHelper.XmlDeserializeFromFile<ClientMissionData>(DataPath + MissionClientName, new UTF8Encoding(false));
|
|||
|
|
|||
|
if (null == clientMissionData)
|
|||
|
{
|
|||
|
return m_MissionClientData;
|
|||
|
}
|
|||
|
|
|||
|
foreach (KeyValuePair<string, PlayerGuidElement> playerGuidIter in clientMissionData.dic)
|
|||
|
{
|
|||
|
List<Games.Mission.CurOwnMission> curMissionList = new List<Games.Mission.CurOwnMission>();
|
|||
|
m_MissionClientData.Add(playerGuidIter.Key.Substring(10), curMissionList);
|
|||
|
|
|||
|
foreach (KeyValuePair<string, MissionElement> missionIter in playerGuidIter.Value.dic)
|
|||
|
{
|
|||
|
Games.Mission.CurOwnMission oMission = new Games.Mission.CurOwnMission();
|
|||
|
oMission.CleanUp();
|
|||
|
|
|||
|
curMissionList.Add(oMission);
|
|||
|
|
|||
|
string strMissionID = missionIter.Key.Substring(7);
|
|||
|
oMission.m_nMissionID = int.Parse(strMissionID);
|
|||
|
|
|||
|
string strState = missionIter.Value.state;
|
|||
|
oMission.m_yStatus = byte.Parse(strState);
|
|||
|
|
|||
|
string strParam0 = missionIter.Value.param0;
|
|||
|
string []strParam = strParam0.Split(',');
|
|||
|
for(int index = 0; index < 8; index++)
|
|||
|
{
|
|||
|
oMission.m_nParam[index] = int.Parse(strParam[index]);
|
|||
|
}
|
|||
|
}
|
|||
|
}
|
|||
|
|
|||
|
#else
|
|||
|
|
|||
|
var xml = new XmlDocument();
|
|||
|
try
|
|||
|
{
|
|||
|
xml.Load(DataPath + MissionClientName);
|
|||
|
}
|
|||
|
catch (Exception ex)
|
|||
|
{
|
|||
|
return m_MissionClientData;
|
|||
|
}
|
|||
|
|
|||
|
foreach (XmlElement curUserElement in xml.FirstChild.ChildNodes)
|
|||
|
{
|
|||
|
var curMissionList = new List<CurOwnMission>();
|
|||
|
m_MissionClientData.Add(curUserElement.Name.Substring(10), curMissionList);
|
|||
|
|
|||
|
foreach (XmlElement curMissionElement in curUserElement)
|
|||
|
{
|
|||
|
var oMission = new CurOwnMission();
|
|||
|
oMission.CleanUp();
|
|||
|
curMissionList.Add(oMission);
|
|||
|
var strMissionID = curMissionElement.Name.Substring(7);
|
|||
|
oMission.m_nMissionID = int.Parse(strMissionID);
|
|||
|
|
|||
|
foreach (XmlElement curElement in curMissionElement)
|
|||
|
if (curElement.Name == "State")
|
|||
|
{
|
|||
|
var strState = curElement.InnerText;
|
|||
|
oMission.m_yStatus = byte.Parse(strState);
|
|||
|
}
|
|||
|
else if (curElement.Name == "Param0")
|
|||
|
{
|
|||
|
var strParam0 = curElement.InnerText;
|
|||
|
var strParam = strParam0.Split(',');
|
|||
|
for (var index = 0; index < strParam.Length; index++)
|
|||
|
oMission.m_nParam[index] = int.Parse(strParam[index]);
|
|||
|
}
|
|||
|
}
|
|||
|
}
|
|||
|
#endif
|
|||
|
|
|||
|
return m_MissionClientData;
|
|||
|
}
|
|||
|
|
|||
|
#if UNITY_WP8
|
|||
|
public class AutoElement : IXmlSerializable
|
|||
|
{
|
|||
|
public string AutoPickUp { get; set; }
|
|||
|
public string AutoTaem { get; set; }
|
|||
|
public string AutoJoinTaem { get; set; }
|
|||
|
public string AutoHpPercent { get; set; }
|
|||
|
public string AutoHpID { get; set; }
|
|||
|
public string AutoMpPercent { get; set; }
|
|||
|
public string AutoMpID { get; set; }
|
|||
|
public string AutoBuyDrug { get; set; }
|
|||
|
public string AutoNotice { get; set; }
|
|||
|
public string AutoIsSelectDrug { get; set; }
|
|||
|
public string AutoEquipGuid { get; set; }
|
|||
|
public string[] AutoSkillID = new string[(int)SKILLDEFINE.MAX_SKILLNUM];
|
|||
|
|
|||
|
public System.Xml.Schema.XmlSchema GetSchema() { return null; }
|
|||
|
|
|||
|
public void ReadXml(System.Xml.XmlReader reader)
|
|||
|
{
|
|||
|
reader.Read();
|
|||
|
reader.ReadStartElement("AutoPickUp");
|
|||
|
AutoPickUp = reader.ReadContentAsString();
|
|||
|
reader.ReadEndElement();
|
|||
|
|
|||
|
reader.ReadStartElement("AutoTaem");
|
|||
|
AutoTaem = reader.ReadContentAsString();
|
|||
|
reader.ReadEndElement();
|
|||
|
|
|||
|
reader.ReadStartElement("AutoJoinTaem");
|
|||
|
AutoJoinTaem = reader.ReadContentAsString();
|
|||
|
reader.ReadEndElement();
|
|||
|
|
|||
|
reader.ReadStartElement("AutoHpPercent");
|
|||
|
AutoHpPercent = reader.ReadContentAsString();
|
|||
|
reader.ReadEndElement();
|
|||
|
|
|||
|
reader.ReadStartElement("AutoHpID");
|
|||
|
AutoHpID = reader.ReadContentAsString();
|
|||
|
reader.ReadEndElement();
|
|||
|
|
|||
|
reader.ReadStartElement("AutoMpPercent");
|
|||
|
AutoMpPercent = reader.ReadContentAsString();
|
|||
|
reader.ReadEndElement();
|
|||
|
|
|||
|
reader.ReadStartElement("AutoMpID");
|
|||
|
AutoMpID = reader.ReadContentAsString();
|
|||
|
reader.ReadEndElement();
|
|||
|
|
|||
|
reader.ReadStartElement("AutoBuyDrug");
|
|||
|
AutoBuyDrug = reader.ReadContentAsString();
|
|||
|
reader.ReadEndElement();
|
|||
|
|
|||
|
reader.ReadStartElement("AutoNotice");
|
|||
|
AutoNotice = reader.ReadContentAsString();
|
|||
|
reader.ReadEndElement();
|
|||
|
|
|||
|
reader.ReadStartElement("AutoIsSelectDrug");
|
|||
|
AutoIsSelectDrug = reader.ReadContentAsString();
|
|||
|
reader.ReadEndElement();
|
|||
|
|
|||
|
reader.ReadStartElement("AutoEquipGuid");
|
|||
|
AutoEquipGuid = reader.ReadContentAsString();
|
|||
|
reader.ReadEndElement();
|
|||
|
|
|||
|
for (int i = 0; i < (int)SKILLDEFINE.MAX_SKILLNUM; i++)
|
|||
|
{
|
|||
|
string Elementkeystr = string.Format("keyAutoSelSkillID{0}", i);
|
|||
|
|
|||
|
reader.ReadStartElement(Elementkeystr);
|
|||
|
AutoSkillID[i] = reader.ReadContentAsString();
|
|||
|
reader.ReadEndElement();
|
|||
|
}
|
|||
|
}
|
|||
|
|
|||
|
public void WriteXml(System.Xml.XmlWriter writer)
|
|||
|
{
|
|||
|
writer.WriteElementString("AutoPickUp", AutoPickUp);
|
|||
|
writer.WriteElementString("AutoTaem", AutoTaem);
|
|||
|
writer.WriteElementString("AutoJoinTaem", AutoJoinTaem);
|
|||
|
writer.WriteElementString("AutoHpPercent", AutoHpPercent);
|
|||
|
writer.WriteElementString("AutoHpID", AutoHpID);
|
|||
|
writer.WriteElementString("AutoMpPercent", AutoMpPercent);
|
|||
|
writer.WriteElementString("AutoMpID", AutoMpID);
|
|||
|
writer.WriteElementString("AutoBuyDrug", AutoBuyDrug);
|
|||
|
writer.WriteElementString("AutoNotice", AutoNotice);
|
|||
|
writer.WriteElementString("AutoIsSelectDrug", AutoIsSelectDrug);
|
|||
|
writer.WriteElementString("AutoEquipGuid", AutoEquipGuid);
|
|||
|
|
|||
|
for (int i = 0; i < (int)SKILLDEFINE.MAX_SKILLNUM; i++)
|
|||
|
{
|
|||
|
string Elementkeystr = string.Format("keyAutoSelSkillID{0}", i);
|
|||
|
|
|||
|
writer.WriteElementString(Elementkeystr, AutoSkillID[i]);
|
|||
|
}
|
|||
|
}
|
|||
|
}
|
|||
|
|
|||
|
|
|||
|
public class AutoInfo : IXmlSerializable
|
|||
|
{
|
|||
|
public Dictionary<string, AutoElement> dic { get; set; }
|
|||
|
|
|||
|
public System.Xml.Schema.XmlSchema GetSchema() { return null; }
|
|||
|
|
|||
|
public void ReadXml(System.Xml.XmlReader reader)
|
|||
|
{
|
|||
|
dic = new Dictionary<string, AutoElement>();
|
|||
|
|
|||
|
if (reader.MoveToContent() == XmlNodeType.Element && "AutoInfo" == reader.LocalName)
|
|||
|
{
|
|||
|
reader.Read();
|
|||
|
while (reader.MoveToContent() == XmlNodeType.Element)
|
|||
|
{
|
|||
|
string name = reader.LocalName;
|
|||
|
|
|||
|
reader.Read();
|
|||
|
if (reader.MoveToContent() == XmlNodeType.Element && "Auto" == reader.LocalName)
|
|||
|
{
|
|||
|
AutoElement elem = new AutoElement();
|
|||
|
elem.ReadXml(reader);
|
|||
|
dic.Add(name, elem);
|
|||
|
reader.Read();
|
|||
|
}
|
|||
|
|
|||
|
reader.Read();
|
|||
|
}
|
|||
|
}
|
|||
|
}
|
|||
|
|
|||
|
public void WriteXml(System.Xml.XmlWriter writer)
|
|||
|
{
|
|||
|
foreach (KeyValuePair<string, AutoElement> elem in dic)
|
|||
|
{
|
|||
|
writer.WriteStartElement(elem.Key);
|
|||
|
writer.WriteStartElement("Auto");
|
|||
|
elem.Value.WriteXml(writer);
|
|||
|
writer.WriteEndElement();
|
|||
|
writer.WriteEndElement();
|
|||
|
}
|
|||
|
}
|
|||
|
|
|||
|
}
|
|||
|
|
|||
|
|
|||
|
#endif
|
|||
|
|
|||
|
// 将角色个人设置信息保存在XML文件中
|
|||
|
public static void AddPlayerAuto(string sGUID, PlayerAuto curData)
|
|||
|
{
|
|||
|
m_AutoConfigMap = GetPlayerAutoList();
|
|||
|
|
|||
|
if (m_AutoConfigMap.ContainsKey(sGUID)) m_AutoConfigMap.Remove(sGUID);
|
|||
|
|
|||
|
m_AutoConfigMap.Add(sGUID, curData);
|
|||
|
|
|||
|
if (!Directory.Exists(DataPath)) Directory.CreateDirectory(DataPath);
|
|||
|
|
|||
|
#if UNITY_WP8
|
|||
|
AutoInfo autoInfo = new AutoInfo();
|
|||
|
autoInfo.dic = new Dictionary<string, AutoElement>();
|
|||
|
|
|||
|
foreach (string keys in m_AutoConfigMap.Keys)
|
|||
|
{
|
|||
|
string name = "GUID" + keys;
|
|||
|
PlayerAuto curList = m_AutoConfigMap[keys];
|
|||
|
|
|||
|
if (curList != null)
|
|||
|
{
|
|||
|
AutoElement elem = new AutoElement();
|
|||
|
elem.AutoPickUp = curList.AutoPickUp.ToString();
|
|||
|
elem.AutoTaem = curList.AutoInviteTeamAccept.ToString();
|
|||
|
elem.AutoJoinTaem = curList.AutoJoinTeamAccept.ToString();
|
|||
|
elem.AutoHpPercent = curList.AutoHpPercent.ToString();
|
|||
|
elem.AutoHpID = curList.AutoHpID.ToString();
|
|||
|
elem.AutoMpPercent = curList.AutoMpPercent.ToString();
|
|||
|
elem.AutoMpID = curList.AutoMpID.ToString();
|
|||
|
elem.AutoBuyDrug = curList.AutoBuyDrug.ToString();
|
|||
|
elem.AutoNotice = curList.AutoNotice.ToString();
|
|||
|
elem.AutoIsSelectDrug = curList.AutoIsSelectDrug.ToString();
|
|||
|
elem.AutoEquipGuid = curList.AutoEquipGuid.ToString();
|
|||
|
|
|||
|
for (int i = 0; i < (int)SKILLDEFINE.MAX_SKILLNUM; i++)
|
|||
|
{
|
|||
|
elem.AutoSkillID[i] = curList.AutoSkillID[i].ToString();
|
|||
|
}
|
|||
|
|
|||
|
autoInfo.dic.Add(name, elem);
|
|||
|
}
|
|||
|
}
|
|||
|
|
|||
|
XmlHelper.XmlSerializeToFile(autoInfo, DataPath + AutoConfigFileName, new UTF8Encoding(false));
|
|||
|
#else
|
|||
|
var xml = new XmlDocument();
|
|||
|
var root = xml.CreateElement("AutoInfo");
|
|||
|
xml.AppendChild(root);
|
|||
|
foreach (var keys in m_AutoConfigMap.Keys)
|
|||
|
{
|
|||
|
var curGUIDElement = xml.CreateElement("GUID" + keys);
|
|||
|
root.AppendChild(curGUIDElement);
|
|||
|
var curList = m_AutoConfigMap[keys];
|
|||
|
if (null != curList)
|
|||
|
//foreach (PlayerAuto curAutoData in curList)
|
|||
|
{
|
|||
|
var curAutoElement = xml.CreateElement("Auto");
|
|||
|
curGUIDElement.AppendChild(curAutoElement);
|
|||
|
|
|||
|
// XmlElement curAutoOpenElement = xml.CreateElement("AutoOpen");
|
|||
|
// curAutoOpenElement.InnerText = curList.AutoFightOpenToggle.ToString();
|
|||
|
// curAutoElement.AppendChild(curAutoOpenElement);
|
|||
|
|
|||
|
var curAutoPickUpElement = xml.CreateElement("AutoPickUp");
|
|||
|
curAutoPickUpElement.InnerText = curList.AutoPickUp.ToString();
|
|||
|
curAutoElement.AppendChild(curAutoPickUpElement);
|
|||
|
|
|||
|
var curAutoTaemElement = xml.CreateElement("AutoTaem");
|
|||
|
curAutoTaemElement.InnerText = curList.AutoInviteTeamAccept.ToString();
|
|||
|
curAutoElement.AppendChild(curAutoTaemElement);
|
|||
|
|
|||
|
var curAutoJoinTaemElement = xml.CreateElement("AutoJoinTaem");
|
|||
|
curAutoJoinTaemElement.InnerText = curList.AutoJoinTeamAccept.ToString();
|
|||
|
curAutoElement.AppendChild(curAutoJoinTaemElement);
|
|||
|
|
|||
|
var curAutoHpPercentElement = xml.CreateElement("AutoHpPercent");
|
|||
|
curAutoHpPercentElement.InnerText = curList.AutoHpPercent.ToString();
|
|||
|
curAutoElement.AppendChild(curAutoHpPercentElement);
|
|||
|
|
|||
|
var curAutoHpIDElement = xml.CreateElement("AutoHpID");
|
|||
|
curAutoHpIDElement.InnerText = curList.AutoHpID.ToString();
|
|||
|
curAutoElement.AppendChild(curAutoHpIDElement);
|
|||
|
|
|||
|
var curAutoMpPercentElement = xml.CreateElement("AutoMpPercent");
|
|||
|
curAutoMpPercentElement.InnerText = curList.AutoMpPercent.ToString();
|
|||
|
curAutoElement.AppendChild(curAutoMpPercentElement);
|
|||
|
|
|||
|
var curAutoMpIDElement = xml.CreateElement("AutoMpID");
|
|||
|
curAutoMpIDElement.InnerText = curList.AutoMpID.ToString();
|
|||
|
curAutoElement.AppendChild(curAutoMpIDElement);
|
|||
|
|
|||
|
var curAutoBuyDrugElement = xml.CreateElement("AutoBuyDrug");
|
|||
|
curAutoBuyDrugElement.InnerText = curList.AutoBuyDrug.ToString();
|
|||
|
curAutoElement.AppendChild(curAutoBuyDrugElement);
|
|||
|
|
|||
|
// XmlElement curAutoRadiusElement = xml.CreateElement("AutoRadius");
|
|||
|
// curAutoRadiusElement.InnerText = curList.AutoRadius.ToString();
|
|||
|
// curAutoElement.AppendChild(curAutoRadiusElement);
|
|||
|
|
|||
|
var curAutoNoticeElement = xml.CreateElement("AutoNotice");
|
|||
|
curAutoNoticeElement.InnerText = curList.AutoNotice.ToString();
|
|||
|
curAutoElement.AppendChild(curAutoNoticeElement);
|
|||
|
|
|||
|
var curAutoIsSelectDrug = xml.CreateElement("AutoIsSelectDrug");
|
|||
|
curAutoIsSelectDrug.InnerText = curList.AutoIsSelectDrug.ToString();
|
|||
|
curAutoElement.AppendChild(curAutoIsSelectDrug);
|
|||
|
|
|||
|
var curAutoEquipGuid = xml.CreateElement("AutoEquipGuid");
|
|||
|
curAutoEquipGuid.InnerText = curList.AutoEquipGuid.ToString();
|
|||
|
curAutoElement.AppendChild(curAutoEquipGuid);
|
|||
|
|
|||
|
//for (int i = 0; i < (int)SKILLDEFINE.MAX_SKILLNUM; i++)
|
|||
|
//{
|
|||
|
// string Elementkeystr = string.Format("keyAutoSelSkillID{0}", i);
|
|||
|
// XmlElement curkeyAutoSelSkillIDElement = xml.CreateElement(Elementkeystr);
|
|||
|
// if (curList.AutoSkillID == null)
|
|||
|
// {
|
|||
|
// curkeyAutoSelSkillIDElement.InnerText = (-1).ToString();
|
|||
|
// }
|
|||
|
// else
|
|||
|
// {
|
|||
|
// curkeyAutoSelSkillIDElement.InnerText = curList.AutoSkillID[i].ToString();
|
|||
|
// }
|
|||
|
//
|
|||
|
// curAutoElement.AppendChild(curkeyAutoSelSkillIDElement);
|
|||
|
//}
|
|||
|
}
|
|||
|
}
|
|||
|
|
|||
|
xml.Save(DataPath + AutoConfigFileName);
|
|||
|
#endif
|
|||
|
}
|
|||
|
|
|||
|
// 从配置文件读取角色个人设置数据,保存在Map中
|
|||
|
public static Dictionary<string, PlayerAuto> GetPlayerAutoList()
|
|||
|
{
|
|||
|
if (null != m_AutoConfigMap) return m_AutoConfigMap;
|
|||
|
|
|||
|
m_AutoConfigMap = new Dictionary<string, PlayerAuto>();
|
|||
|
|
|||
|
#if UNITY_WP8
|
|||
|
AutoInfo autoInfo =
|
|||
|
XmlHelper.XmlDeserializeFromFile<AutoInfo>(DataPath + AutoConfigFileName, new UTF8Encoding(false));
|
|||
|
if (null == autoInfo)
|
|||
|
{
|
|||
|
return m_AutoConfigMap;
|
|||
|
}
|
|||
|
|
|||
|
foreach (KeyValuePair<string, AutoElement> iter in autoInfo.dic)
|
|||
|
{
|
|||
|
string guid = iter.Key.Substring(4);
|
|||
|
AutoElement elem = iter.Value;
|
|||
|
|
|||
|
PlayerAuto curAutoData =
|
|||
|
new PlayerAuto(0, false, false, 0, 0, false, 0, -1, -1, false, GlobeVar.INVALID_GUID,null);
|
|||
|
int.TryParse(elem.AutoPickUp, out curAutoData.AutoPickUp);
|
|||
|
int.TryParse(elem.AutoTaem, out curAutoData.AutoInviteTeamAccept);
|
|||
|
int.TryParse(elem.AutoJoinTaem, out curAutoData.AutoJoinTeamAccept);
|
|||
|
int.TryParse(elem.AutoHpPercent, out curAutoData.AutoHpPercent);
|
|||
|
int.TryParse(elem.AutoHpID, out curAutoData.AutoHpID);
|
|||
|
int.TryParse(elem.AutoMpPercent, out curAutoData.AutoMpPercent);
|
|||
|
int.TryParse(elem.AutoMpID, out curAutoData.AutoMpID);
|
|||
|
int.TryParse(elem.AutoBuyDrug, out curAutoData.AutoBuyDrug);
|
|||
|
int.TryParse(elem.AutoNotice, out curAutoData.AutoNotice);
|
|||
|
int.TryParse(elem.AutoIsSelectDrug, out curAutoData.AutoIsSelectDrug);
|
|||
|
ulong.TryParse(elem.AutoEquipGuid, out curAutoData.AutoEquipGuid);
|
|||
|
|
|||
|
for (int i = 0; i < (int)SKILLDEFINE.MAX_SKILLNUM; i++)
|
|||
|
{
|
|||
|
int nValue = -1;
|
|||
|
int.TryParse(elem.AutoSkillID[i], out nValue);
|
|||
|
curAutoData.AutoSkillID[i] = nValue;
|
|||
|
}
|
|||
|
|
|||
|
m_AutoConfigMap.Add(guid, curAutoData);
|
|||
|
}
|
|||
|
|
|||
|
#else
|
|||
|
var xml = new XmlDocument();
|
|||
|
try
|
|||
|
{
|
|||
|
xml.Load(DataPath + AutoConfigFileName);
|
|||
|
}
|
|||
|
catch (Exception ex)
|
|||
|
{
|
|||
|
return m_AutoConfigMap;
|
|||
|
}
|
|||
|
|
|||
|
foreach (XmlElement elemGUID in xml.FirstChild.ChildNodes)
|
|||
|
{
|
|||
|
//PlayerAuto curList;
|
|||
|
var guid = elemGUID.Name.Substring(4);
|
|||
|
//m_AutoConfigMap.Add(guid, curList);
|
|||
|
|
|||
|
foreach (XmlElement autoInfo in elemGUID)
|
|||
|
if (autoInfo.Name == "Auto")
|
|||
|
{
|
|||
|
var curAutoData = new PlayerAuto(0, false, false, 0, 0, false, 0, -1, -1, false,
|
|||
|
GlobeVar.INVALID_GUID);
|
|||
|
foreach (XmlElement elemDetail in autoInfo)
|
|||
|
if (elemDetail.Name == "AutoPickUp")
|
|||
|
{
|
|||
|
var typeValue = elemDetail.InnerText;
|
|||
|
int.TryParse(typeValue, out curAutoData.AutoPickUp);
|
|||
|
}
|
|||
|
else if (elemDetail.Name == "AutoTaem")
|
|||
|
{
|
|||
|
var typeValue = elemDetail.InnerText;
|
|||
|
int.TryParse(typeValue, out curAutoData.AutoInviteTeamAccept);
|
|||
|
}
|
|||
|
else if (elemDetail.Name == "AutoJoinTaem")
|
|||
|
{
|
|||
|
var typeValue = elemDetail.InnerText;
|
|||
|
int.TryParse(typeValue, out curAutoData.AutoJoinTeamAccept);
|
|||
|
}
|
|||
|
else if (elemDetail.Name == "AutoHpPercent")
|
|||
|
{
|
|||
|
var typeValue = elemDetail.InnerText;
|
|||
|
int.TryParse(typeValue, out curAutoData.AutoHpPercent);
|
|||
|
}
|
|||
|
else if (elemDetail.Name == "AutoHpID")
|
|||
|
{
|
|||
|
var typeValue = elemDetail.InnerText;
|
|||
|
int.TryParse(typeValue, out curAutoData.AutoHpID);
|
|||
|
}
|
|||
|
else if (elemDetail.Name == "AutoMpPercent")
|
|||
|
{
|
|||
|
var typeValue = elemDetail.InnerText;
|
|||
|
int.TryParse(typeValue, out curAutoData.AutoMpPercent);
|
|||
|
}
|
|||
|
else if (elemDetail.Name == "AutoMpID")
|
|||
|
{
|
|||
|
var typeValue = elemDetail.InnerText;
|
|||
|
int.TryParse(typeValue, out curAutoData.AutoMpID);
|
|||
|
}
|
|||
|
else if (elemDetail.Name == "AutoBuyDrug")
|
|||
|
{
|
|||
|
var typeValue = elemDetail.InnerText;
|
|||
|
int.TryParse(typeValue, out curAutoData.AutoBuyDrug);
|
|||
|
}
|
|||
|
// else if (elemDetail.Name == "AutoRadius")
|
|||
|
// {
|
|||
|
// string typeValue = elemDetail.InnerText;
|
|||
|
// int.TryParse(typeValue, out curAutoData.AutoRadius);
|
|||
|
// }
|
|||
|
else if (elemDetail.Name == "AutoNotice")
|
|||
|
{
|
|||
|
var typeValue = elemDetail.InnerText;
|
|||
|
int.TryParse(typeValue, out curAutoData.AutoNotice);
|
|||
|
}
|
|||
|
else if (elemDetail.Name == "AutoIsSelectDrug")
|
|||
|
{
|
|||
|
var typeValue = elemDetail.InnerText;
|
|||
|
int.TryParse(typeValue, out curAutoData.AutoIsSelectDrug);
|
|||
|
}
|
|||
|
else if (elemDetail.Name == "AutoEquipGuid")
|
|||
|
{
|
|||
|
var typeValue = elemDetail.InnerText;
|
|||
|
ulong.TryParse(typeValue, out curAutoData.AutoEquipGuid);
|
|||
|
}
|
|||
|
//else
|
|||
|
//{
|
|||
|
// for (int i = 0; i < (int)SKILLDEFINE.MAX_SKILLNUM; i++)
|
|||
|
// {
|
|||
|
// string Elementkeystr = string.Format("keyAutoSelSkillID{0}", i);
|
|||
|
// if (elemDetail.Name == Elementkeystr)
|
|||
|
// {
|
|||
|
// int nValue = -1;
|
|||
|
// //string typeValue = elemDetail.InnerText;
|
|||
|
// //int.TryParse(typeValue, out nValue);
|
|||
|
// //curAutoData.AutoSkillID[i] = nValue;
|
|||
|
// }
|
|||
|
// }
|
|||
|
//}
|
|||
|
// curList.Add(curAutoData);
|
|||
|
|
|||
|
m_AutoConfigMap.Add(guid, curAutoData);
|
|||
|
}
|
|||
|
}
|
|||
|
#endif
|
|||
|
return m_AutoConfigMap;
|
|||
|
}
|
|||
|
|
|||
|
#if UNITY_WP8
|
|||
|
public class RestaurantElement : IXmlSerializable
|
|||
|
{
|
|||
|
public string RestaurantFilterExp { get; set; }
|
|||
|
public string RestaurantFilterCoin { get; set; }
|
|||
|
public string RestaurantFilterMeterial { get; set; }
|
|||
|
public string []RestaurantFilterLv = new string[RestaurantData.FoodLevelMax];
|
|||
|
|
|||
|
|
|||
|
public System.Xml.Schema.XmlSchema GetSchema() { return null; }
|
|||
|
|
|||
|
public void ReadXml(System.Xml.XmlReader reader)
|
|||
|
{
|
|||
|
reader.Read();
|
|||
|
reader.ReadStartElement("keyRestaurantFilterExp");
|
|||
|
RestaurantFilterExp = reader.ReadContentAsString();
|
|||
|
reader.ReadEndElement();
|
|||
|
|
|||
|
reader.ReadStartElement("keyRestaurantFilterCoin");
|
|||
|
RestaurantFilterCoin = reader.ReadContentAsString();
|
|||
|
reader.ReadEndElement();
|
|||
|
|
|||
|
reader.ReadStartElement("keyRestaurantFilterMeterial");
|
|||
|
RestaurantFilterMeterial = reader.ReadContentAsString();
|
|||
|
reader.ReadEndElement();
|
|||
|
|
|||
|
for (int i = 1; i <= RestaurantData.FoodLevelMax; i++)
|
|||
|
{
|
|||
|
string Elementkeystr = string.Format("keyRestaurantFilterLv{0}", i);
|
|||
|
reader.ReadStartElement(Elementkeystr);
|
|||
|
RestaurantFilterLv[i-1] = reader.ReadContentAsString();
|
|||
|
reader.ReadEndElement();
|
|||
|
}
|
|||
|
|
|||
|
}
|
|||
|
|
|||
|
public void WriteXml(System.Xml.XmlWriter writer)
|
|||
|
{
|
|||
|
writer.WriteElementString("keyRestaurantFilterExp", RestaurantFilterExp);
|
|||
|
writer.WriteElementString("keyRestaurantFilterCoin", RestaurantFilterCoin);
|
|||
|
writer.WriteElementString("keyRestaurantFilterMeterial", RestaurantFilterMeterial);
|
|||
|
for (int i = 1; i <= RestaurantData.FoodLevelMax; i++)
|
|||
|
{
|
|||
|
string Elementkeystr = string.Format("keyRestaurantFilterLv{0}", i);
|
|||
|
writer.WriteElementString(Elementkeystr, RestaurantFilterLv[i - 1]);
|
|||
|
}
|
|||
|
}
|
|||
|
}
|
|||
|
|
|||
|
|
|||
|
public class RestaurantConfigInfo : IXmlSerializable
|
|||
|
{
|
|||
|
public Dictionary<string, RestaurantElement> dic { get; set; }
|
|||
|
|
|||
|
public System.Xml.Schema.XmlSchema GetSchema() { return null; }
|
|||
|
|
|||
|
public void ReadXml(System.Xml.XmlReader reader)
|
|||
|
{
|
|||
|
dic = new Dictionary<string, RestaurantElement>();
|
|||
|
if (reader.MoveToContent() == XmlNodeType.Element && "RestaurantInfo" == reader.LocalName)
|
|||
|
{
|
|||
|
reader.Read();
|
|||
|
while (reader.MoveToContent() == XmlNodeType.Element)
|
|||
|
{
|
|||
|
string name = reader.LocalName;
|
|||
|
|
|||
|
reader.Read();
|
|||
|
if (reader.MoveToContent() == XmlNodeType.Element && "Restaurant" == reader.LocalName)
|
|||
|
{
|
|||
|
RestaurantElement elem = new RestaurantElement();
|
|||
|
elem.ReadXml(reader);
|
|||
|
dic.Add(name, elem);
|
|||
|
reader.Read();
|
|||
|
}
|
|||
|
|
|||
|
reader.Read();
|
|||
|
}
|
|||
|
}
|
|||
|
}
|
|||
|
|
|||
|
public void WriteXml(System.Xml.XmlWriter writer)
|
|||
|
{
|
|||
|
foreach (KeyValuePair<string, RestaurantElement> elem in dic)
|
|||
|
{
|
|||
|
writer.WriteStartElement(elem.Key);
|
|||
|
writer.WriteStartElement("Restaurant");
|
|||
|
elem.Value.WriteXml(writer);
|
|||
|
writer.WriteEndElement();
|
|||
|
writer.WriteEndElement();
|
|||
|
}
|
|||
|
}
|
|||
|
|
|||
|
}
|
|||
|
|
|||
|
|
|||
|
#endif
|
|||
|
|
|||
|
|
|||
|
// 将角色个人设置信息保存在XML文件中
|
|||
|
public static void AddRestaurantConfig(string sGUID, RestaurantConfigData curData)
|
|||
|
{
|
|||
|
m_RestaurantConfigMap = GetRestaurantConfigList();
|
|||
|
if (null == m_RestaurantConfigMap) return;
|
|||
|
if (m_RestaurantConfigMap.ContainsKey(sGUID)) m_RestaurantConfigMap.Remove(sGUID);
|
|||
|
|
|||
|
m_RestaurantConfigMap.Add(sGUID, curData);
|
|||
|
|
|||
|
if (!Directory.Exists(DataPath)) Directory.CreateDirectory(DataPath);
|
|||
|
|
|||
|
#if UNITY_WP8
|
|||
|
RestaurantConfigInfo oRestaurantConfigInfo = new RestaurantConfigInfo();
|
|||
|
oRestaurantConfigInfo.dic = new Dictionary<string, RestaurantElement>();
|
|||
|
|
|||
|
foreach (string keys in m_RestaurantConfigMap.Keys)
|
|||
|
{
|
|||
|
string name = "GUID" + keys;
|
|||
|
RestaurantConfigData curList = m_RestaurantConfigMap[keys];
|
|||
|
|
|||
|
if (curList != null)
|
|||
|
{
|
|||
|
RestaurantElement elem = new RestaurantElement();
|
|||
|
elem.RestaurantFilterExp = curList.RestaurantFilterExp.ToString();
|
|||
|
elem.RestaurantFilterCoin = curList.RestaurantFilterCoin.ToString();
|
|||
|
elem.RestaurantFilterMeterial = curList.RestaurantFilterMeterial.ToString();
|
|||
|
|
|||
|
for (int i = 0; i < RestaurantData.FoodLevelMax && i < elem.RestaurantFilterLv.Length; i++)
|
|||
|
{
|
|||
|
elem.RestaurantFilterLv[i] = curList.GetRestaurantFilterLv(i+1).ToString();
|
|||
|
}
|
|||
|
oRestaurantConfigInfo.dic.Add(name, elem);
|
|||
|
}
|
|||
|
}
|
|||
|
|
|||
|
XmlHelper.XmlSerializeToFile(oRestaurantConfigInfo, DataPath + RestaurantConfigFileName, new UTF8Encoding(false));
|
|||
|
#else
|
|||
|
var xml = new XmlDocument();
|
|||
|
var root = xml.CreateElement("RestaurantInfo");
|
|||
|
xml.AppendChild(root);
|
|||
|
foreach (var keys in m_RestaurantConfigMap.Keys)
|
|||
|
{
|
|||
|
var curGUIDElement = xml.CreateElement("GUID" + keys);
|
|||
|
root.AppendChild(curGUIDElement);
|
|||
|
var curList = m_RestaurantConfigMap[keys];
|
|||
|
if (null != curList)
|
|||
|
{
|
|||
|
var curRestaurantElement = xml.CreateElement("Restaurant");
|
|||
|
curGUIDElement.AppendChild(curRestaurantElement);
|
|||
|
|
|||
|
|
|||
|
var curRestaurantFilterExpElement = xml.CreateElement("keyRestaurantFilterExp");
|
|||
|
curRestaurantFilterExpElement.InnerText = curList.RestaurantFilterExp.ToString();
|
|||
|
curRestaurantElement.AppendChild(curRestaurantFilterExpElement);
|
|||
|
|
|||
|
var curRestaurantFilterCoinElement = xml.CreateElement("keyRestaurantFilterCoin");
|
|||
|
curRestaurantFilterCoinElement.InnerText = curList.RestaurantFilterCoin.ToString();
|
|||
|
curRestaurantElement.AppendChild(curRestaurantFilterCoinElement);
|
|||
|
|
|||
|
var curRestaurantFilterMeterialElement = xml.CreateElement("keyRestaurantFilterMeterial");
|
|||
|
curRestaurantFilterMeterialElement.InnerText = curList.RestaurantFilterMeterial.ToString();
|
|||
|
curRestaurantElement.AppendChild(curRestaurantFilterMeterialElement);
|
|||
|
|
|||
|
for (var i = 1; i <= RestaurantData.FoodLevelMax; i++)
|
|||
|
{
|
|||
|
var Elementkeystr = string.Format("keyRestaurantFilterLv{0}", i);
|
|||
|
var curRestaurantFilterLvElement = xml.CreateElement(Elementkeystr);
|
|||
|
curRestaurantFilterLvElement.InnerText = curList.GetRestaurantFilterLv(i).ToString();
|
|||
|
curRestaurantElement.AppendChild(curRestaurantFilterLvElement);
|
|||
|
}
|
|||
|
}
|
|||
|
}
|
|||
|
|
|||
|
xml.Save(DataPath + RestaurantConfigFileName);
|
|||
|
#endif
|
|||
|
}
|
|||
|
|
|||
|
// 从配置文件读取角色个人设置数据,保存在Map中
|
|||
|
public static Dictionary<string, RestaurantConfigData> GetRestaurantConfigList()
|
|||
|
{
|
|||
|
if (m_RestaurantConfigMap != null) return m_RestaurantConfigMap;
|
|||
|
|
|||
|
m_RestaurantConfigMap = new Dictionary<string, RestaurantConfigData>();
|
|||
|
|
|||
|
#if UNITY_WP8
|
|||
|
RestaurantConfigInfo oRestaurantConfigInfo =
|
|||
|
XmlHelper.XmlDeserializeFromFile<RestaurantConfigInfo>(DataPath + RestaurantConfigFileName, new UTF8Encoding(false));
|
|||
|
if (null == oRestaurantConfigInfo)
|
|||
|
{
|
|||
|
return m_RestaurantConfigMap;
|
|||
|
}
|
|||
|
|
|||
|
foreach (KeyValuePair<string, RestaurantElement> iter in oRestaurantConfigInfo.dic)
|
|||
|
{
|
|||
|
string guid = iter.Key.Substring(4);
|
|||
|
RestaurantElement elem = iter.Value;
|
|||
|
|
|||
|
RestaurantConfigData curConfigData = new RestaurantConfigData();
|
|||
|
int nValue = 1;
|
|||
|
int.TryParse(elem.RestaurantFilterExp, out nValue);
|
|||
|
curConfigData.RestaurantFilterExp = nValue;
|
|||
|
|
|||
|
nValue = 1;
|
|||
|
int.TryParse(elem.RestaurantFilterCoin, out nValue);
|
|||
|
curConfigData.RestaurantFilterCoin = nValue;
|
|||
|
|
|||
|
nValue = 1;
|
|||
|
int.TryParse(elem.RestaurantFilterMeterial, out nValue);
|
|||
|
curConfigData.RestaurantFilterMeterial = nValue;
|
|||
|
|
|||
|
for (int i = 0; i < RestaurantData.FoodLevelMax && i < elem.RestaurantFilterLv.Length; i++)
|
|||
|
{
|
|||
|
nValue = 1;
|
|||
|
int.TryParse(elem.RestaurantFilterLv[i], out nValue);
|
|||
|
curConfigData.SetRestaurantFilterLv(i + 1, nValue);
|
|||
|
}
|
|||
|
|
|||
|
m_RestaurantConfigMap.Add(guid, curConfigData);
|
|||
|
}
|
|||
|
#else
|
|||
|
var xml = new XmlDocument();
|
|||
|
try
|
|||
|
{
|
|||
|
xml.Load(DataPath + RestaurantConfigFileName);
|
|||
|
}
|
|||
|
catch (Exception ex)
|
|||
|
{
|
|||
|
return m_RestaurantConfigMap;
|
|||
|
}
|
|||
|
|
|||
|
foreach (XmlElement elemGUID in xml.FirstChild.ChildNodes)
|
|||
|
{
|
|||
|
var guid = elemGUID.Name.Substring(4);
|
|||
|
foreach (XmlElement RestaurantElem in elemGUID)
|
|||
|
if (RestaurantElem.Name == "Restaurant")
|
|||
|
{
|
|||
|
var curRrestaurantData = new RestaurantConfigData();
|
|||
|
foreach (XmlElement elemDetail in RestaurantElem)
|
|||
|
if (elemDetail.Name == "keyRestaurantFilterExp")
|
|||
|
{
|
|||
|
var nValue = 1;
|
|||
|
var typeValue = elemDetail.InnerText;
|
|||
|
int.TryParse(typeValue, out nValue);
|
|||
|
curRrestaurantData.RestaurantFilterExp = nValue;
|
|||
|
}
|
|||
|
else if (elemDetail.Name == "keyRestaurantFilterCoin")
|
|||
|
{
|
|||
|
var nValue = 1;
|
|||
|
var typeValue = elemDetail.InnerText;
|
|||
|
int.TryParse(typeValue, out nValue);
|
|||
|
curRrestaurantData.RestaurantFilterCoin = nValue;
|
|||
|
}
|
|||
|
else if (elemDetail.Name == "keyRestaurantFilterMeterial")
|
|||
|
{
|
|||
|
var nValue = 1;
|
|||
|
var typeValue = elemDetail.InnerText;
|
|||
|
int.TryParse(typeValue, out nValue);
|
|||
|
curRrestaurantData.RestaurantFilterMeterial = nValue;
|
|||
|
}
|
|||
|
else
|
|||
|
{
|
|||
|
for (var i = 1; i <= RestaurantData.FoodLevelMax; i++)
|
|||
|
{
|
|||
|
var Elementkeystr = string.Format("keyRestaurantFilterLv{0}", i);
|
|||
|
if (elemDetail.Name == Elementkeystr)
|
|||
|
{
|
|||
|
var nValue = 1;
|
|||
|
var typeValue = elemDetail.InnerText;
|
|||
|
int.TryParse(typeValue, out nValue);
|
|||
|
curRrestaurantData.SetRestaurantFilterLv(i, nValue);
|
|||
|
}
|
|||
|
}
|
|||
|
}
|
|||
|
|
|||
|
m_RestaurantConfigMap.Add(guid, curRrestaurantData);
|
|||
|
}
|
|||
|
}
|
|||
|
#endif
|
|||
|
return m_RestaurantConfigMap;
|
|||
|
}
|
|||
|
|
|||
|
|
|||
|
#if UNITY_WP8
|
|||
|
public class SkillIndexElement : IXmlSerializable
|
|||
|
{
|
|||
|
public string SkillIndex { get; set; }
|
|||
|
|
|||
|
public System.Xml.Schema.XmlSchema GetSchema() { return null; }
|
|||
|
|
|||
|
public void ReadXml(System.Xml.XmlReader reader)
|
|||
|
{
|
|||
|
reader.Read();
|
|||
|
SkillIndex = reader.ReadContentAsString();
|
|||
|
}
|
|||
|
|
|||
|
public void WriteXml(System.Xml.XmlWriter writer)
|
|||
|
{
|
|||
|
writer.WriteElementString("SkillIndex", SkillIndex);
|
|||
|
}
|
|||
|
}
|
|||
|
|
|||
|
public class GUIDElement : IXmlSerializable
|
|||
|
{
|
|||
|
public List<SkillIndexElement> list { get; set; }
|
|||
|
|
|||
|
public System.Xml.Schema.XmlSchema GetSchema() { return null; }
|
|||
|
|
|||
|
public void ReadXml(System.Xml.XmlReader reader)
|
|||
|
{
|
|||
|
list = new List<SkillIndexElement>();
|
|||
|
while (reader.MoveToContent() == XmlNodeType.Element && reader.LocalName == "SkillIndex")
|
|||
|
{
|
|||
|
SkillIndexElement elem = new SkillIndexElement();
|
|||
|
elem.ReadXml(reader);
|
|||
|
list.Add(elem);
|
|||
|
reader.Read();
|
|||
|
}
|
|||
|
}
|
|||
|
|
|||
|
public void WriteXml(System.Xml.XmlWriter writer)
|
|||
|
{
|
|||
|
foreach (SkillIndexElement elem in list)
|
|||
|
{
|
|||
|
elem.WriteXml(writer);
|
|||
|
}
|
|||
|
}
|
|||
|
}
|
|||
|
|
|||
|
public class SkillBarSetInfo : IXmlSerializable
|
|||
|
{
|
|||
|
public Dictionary<string, GUIDElement> dic { get; set; }
|
|||
|
|
|||
|
public System.Xml.Schema.XmlSchema GetSchema() { return null; }
|
|||
|
|
|||
|
public void ReadXml(System.Xml.XmlReader reader)
|
|||
|
{
|
|||
|
dic = new Dictionary<string, GUIDElement>();
|
|||
|
|
|||
|
if (reader.MoveToContent() == XmlNodeType.Element && "SkillBarSetInfo" == reader.LocalName)
|
|||
|
{
|
|||
|
reader.Read();
|
|||
|
while (reader.MoveToContent() == XmlNodeType.Element)
|
|||
|
{
|
|||
|
string name = reader.LocalName;
|
|||
|
GUIDElement elem = new GUIDElement();
|
|||
|
reader.Read();
|
|||
|
elem.ReadXml(reader);
|
|||
|
dic.Add(name, elem);
|
|||
|
reader.Read();
|
|||
|
}
|
|||
|
}
|
|||
|
}
|
|||
|
|
|||
|
public void WriteXml(System.Xml.XmlWriter writer)
|
|||
|
{
|
|||
|
foreach (KeyValuePair<string, GUIDElement> elem in dic)
|
|||
|
{
|
|||
|
writer.WriteStartElement(elem.Key);
|
|||
|
elem.Value.WriteXml(writer);
|
|||
|
writer.WriteEndElement();
|
|||
|
}
|
|||
|
}
|
|||
|
}
|
|||
|
|
|||
|
#endif
|
|||
|
|
|||
|
public class FactionSkillSavePage
|
|||
|
{
|
|||
|
public const int FACTION_SKILL_NUM = 4;
|
|||
|
public ulong RoleGuid;
|
|||
|
public int[] SkillIdxs;
|
|||
|
}
|
|||
|
|
|||
|
public static List<FactionSkillSavePage> _FactionSkillPages;
|
|||
|
public static FactionSkillSavePage _FactionCurSkillPage;
|
|||
|
|
|||
|
|
|||
|
// 将技能栏设置信息保存在XML文件中
|
|||
|
public static void FactionSaveSkillPages()
|
|||
|
{
|
|||
|
if (_FactionSkillPages == null)
|
|||
|
return;
|
|||
|
|
|||
|
if (!Directory.Exists(DataPath)) Directory.CreateDirectory(DataPath);
|
|||
|
|
|||
|
var xml = new XmlDocument();
|
|||
|
var root = xml.CreateElement("FactionSkillBarSetInfo");
|
|||
|
xml.AppendChild(root);
|
|||
|
foreach (var factionSkillPage in _FactionSkillPages)
|
|||
|
{
|
|||
|
var curGUIDElement = xml.CreateElement("GUID" + factionSkillPage.RoleGuid);
|
|||
|
root.AppendChild(curGUIDElement);
|
|||
|
var _skillBarInfo = factionSkillPage.SkillIdxs;
|
|||
|
if (null != _skillBarInfo)
|
|||
|
for (var i = 0; i < _skillBarInfo.Length; i++)
|
|||
|
{
|
|||
|
var curAutoElement = xml.CreateElement("SkillIndex");
|
|||
|
curAutoElement.InnerText = _skillBarInfo[i].ToString();
|
|||
|
curGUIDElement.AppendChild(curAutoElement);
|
|||
|
}
|
|||
|
}
|
|||
|
|
|||
|
xml.Save(DataPath + FactionSkillBarSetFileName);
|
|||
|
}
|
|||
|
|
|||
|
public static void FactionLoadAllSkillPage(string guid)
|
|||
|
{
|
|||
|
if (_FactionSkillPages != null)
|
|||
|
return;
|
|||
|
|
|||
|
_FactionSkillPages = new List<FactionSkillSavePage>();
|
|||
|
|
|||
|
var xml = new XmlDocument();
|
|||
|
try
|
|||
|
{
|
|||
|
xml.Load(DataPath + FactionSkillBarSetFileName);
|
|||
|
}
|
|||
|
catch (Exception ex)
|
|||
|
{
|
|||
|
return;
|
|||
|
}
|
|||
|
|
|||
|
foreach (XmlElement elemPage in xml.FirstChild.ChildNodes)
|
|||
|
{
|
|||
|
var roleGuid = elemPage.Name.Substring(4);
|
|||
|
|
|||
|
var fationSkillPage = new FactionSkillSavePage();
|
|||
|
fationSkillPage.RoleGuid = ulong.Parse(roleGuid);
|
|||
|
|
|||
|
fationSkillPage.SkillIdxs = new int[FactionSkillSavePage.FACTION_SKILL_NUM];
|
|||
|
for (var i = 0; i < FactionSkillSavePage.FACTION_SKILL_NUM; i++) fationSkillPage.SkillIdxs[i] = -1;
|
|||
|
var nCount = 0;
|
|||
|
foreach (XmlElement _ownSkillElement in elemPage)
|
|||
|
if (_ownSkillElement.Name == "SkillIndex")
|
|||
|
if (nCount >= 0 && nCount < fationSkillPage.SkillIdxs.Length)
|
|||
|
{
|
|||
|
var typeValue = _ownSkillElement.InnerText;
|
|||
|
fationSkillPage.SkillIdxs[nCount] = Convert.ToInt32(typeValue);
|
|||
|
nCount++;
|
|||
|
}
|
|||
|
|
|||
|
_FactionSkillPages.Add(fationSkillPage);
|
|||
|
|
|||
|
if (roleGuid == guid) _FactionCurSkillPage = fationSkillPage;
|
|||
|
}
|
|||
|
}
|
|||
|
|
|||
|
[Serializable]
|
|||
|
public class SkillSavePage
|
|||
|
{
|
|||
|
public const int PAGE_SKILL_NUM = 4; //主界面技能是4个 门派挑战可以设置的技能是5个
|
|||
|
public ulong RoleGuid;
|
|||
|
public int PageIdx;
|
|||
|
public string PageName;
|
|||
|
public int IsUsing;
|
|||
|
public int[] SkillIdxs;
|
|||
|
|
|||
|
//public SkillSavePage(SkillSavePage copyFrom)
|
|||
|
//{
|
|||
|
// this.RoleGuid = copyFrom.RoleGuid;
|
|||
|
// this.PageIdx = copyFrom.PageIdx;
|
|||
|
// this.PageName = copyFrom.PageName;
|
|||
|
// this.IsUsing = copyFrom.IsUsing;
|
|||
|
// this.SkillIdxs = copyFrom.SkillIdxs;
|
|||
|
//}
|
|||
|
}
|
|||
|
|
|||
|
public static List<SkillSavePage> _SkillPages;
|
|||
|
public static SkillSavePage _CurSkillPage;
|
|||
|
|
|||
|
|
|||
|
// 将技能栏设置信息保存在XML文件中
|
|||
|
public static void SaveSkillPages()
|
|||
|
{
|
|||
|
if (_SkillPages == null)
|
|||
|
return;
|
|||
|
|
|||
|
if (!Directory.Exists(DataPath)) Directory.CreateDirectory(DataPath);
|
|||
|
|
|||
|
// 将技能页存一份在到服务器
|
|||
|
if (GameManager.gameManager.PlayerDataPool.ClientCustomDateManager != null)
|
|||
|
GameManager.gameManager.PlayerDataPool.ClientCustomDateManager.SaveSkillPageData();
|
|||
|
|
|||
|
var xml = new XmlDocument();
|
|||
|
var root = xml.CreateElement("SkillBarSetInfo");
|
|||
|
xml.AppendChild(root);
|
|||
|
foreach (var skillPage in _SkillPages)
|
|||
|
{
|
|||
|
var curGUIDElement = xml.CreateElement("GUID" + skillPage.RoleGuid);
|
|||
|
curGUIDElement.SetAttribute("PageIdx", skillPage.PageIdx.ToString());
|
|||
|
curGUIDElement.SetAttribute("PageName", skillPage.PageName);
|
|||
|
if (skillPage.RoleGuid == GameManager.gameManager.PlayerDataPool.MainPlayerBaseAttr.Guid)
|
|||
|
{
|
|||
|
if (_CurSkillPage == skillPage)
|
|||
|
curGUIDElement.SetAttribute("IsUsing", "1");
|
|||
|
else
|
|||
|
curGUIDElement.SetAttribute("IsUsing", "0");
|
|||
|
}
|
|||
|
else
|
|||
|
{
|
|||
|
curGUIDElement.SetAttribute("IsUsing", skillPage.IsUsing.ToString());
|
|||
|
}
|
|||
|
|
|||
|
var _skillBarInfo = skillPage.SkillIdxs;
|
|||
|
if (null != _skillBarInfo)
|
|||
|
for (var i = 0; i < _skillBarInfo.Length; i++)
|
|||
|
{
|
|||
|
var curAutoElement = xml.CreateElement("SkillIndex");
|
|||
|
curAutoElement.InnerText = _skillBarInfo[i].ToString();
|
|||
|
curGUIDElement.AppendChild(curAutoElement);
|
|||
|
}
|
|||
|
|
|||
|
root.AppendChild(curGUIDElement);
|
|||
|
}
|
|||
|
|
|||
|
xml.Save(DataPath + SkillBarSetFileName);
|
|||
|
}
|
|||
|
|
|||
|
public static void LoadAllSkillPage(string guid)
|
|||
|
{
|
|||
|
// 请求一次存于服务器的技能页
|
|||
|
//if (GameManager.gameManager.PlayerDataPool.ClientCustomDateManager != null
|
|||
|
// && GameManager.gameManager.PlayerDataPool.ClientCustomDateManager.HasRestoreSkillData == false)
|
|||
|
// GameManager.gameManager.PlayerDataPool.ClientCustomDateManager.ReqClienCustomData();
|
|||
|
if (_SkillPages != null)
|
|||
|
return;
|
|||
|
|
|||
|
_SkillPages = new List<SkillSavePage>();
|
|||
|
|
|||
|
var xml = new XmlDocument();
|
|||
|
try
|
|||
|
{
|
|||
|
xml.Load(DataPath + SkillBarSetFileName);
|
|||
|
}
|
|||
|
catch (Exception ex)
|
|||
|
{
|
|||
|
return;
|
|||
|
}
|
|||
|
|
|||
|
foreach (XmlElement elemPage in xml.FirstChild.ChildNodes)
|
|||
|
{
|
|||
|
var roleGuid = elemPage.Name.Substring(4);
|
|||
|
|
|||
|
var pageIdx = elemPage.GetAttribute("PageIdx");
|
|||
|
var pageName = elemPage.GetAttribute("PageName");
|
|||
|
var isUsingStr = elemPage.GetAttribute("IsUsing");
|
|||
|
|
|||
|
var skillPage = new SkillSavePage();
|
|||
|
skillPage.RoleGuid = ulong.Parse(roleGuid);
|
|||
|
skillPage.PageIdx = int.Parse(pageIdx);
|
|||
|
skillPage.PageName = pageName;
|
|||
|
var isUsing = int.Parse(isUsingStr);
|
|||
|
skillPage.IsUsing = isUsing;
|
|||
|
|
|||
|
skillPage.SkillIdxs = new int[SkillSavePage.PAGE_SKILL_NUM];
|
|||
|
for (var i = 0; i < SkillSavePage.PAGE_SKILL_NUM; i++) skillPage.SkillIdxs[i] = -1;
|
|||
|
var nCount = 0;
|
|||
|
foreach (XmlElement _ownSkillElement in elemPage)
|
|||
|
if (_ownSkillElement.Name == "SkillIndex")
|
|||
|
if (nCount >= 0 && nCount < skillPage.SkillIdxs.Length)
|
|||
|
{
|
|||
|
var typeValue = _ownSkillElement.InnerText;
|
|||
|
skillPage.SkillIdxs[nCount] = Convert.ToInt32(typeValue);
|
|||
|
nCount++;
|
|||
|
}
|
|||
|
|
|||
|
_SkillPages.Add(skillPage);
|
|||
|
|
|||
|
if (roleGuid == guid && isUsing > 0) _CurSkillPage = skillPage;
|
|||
|
}
|
|||
|
}
|
|||
|
}
|