218 lines
6.6 KiB
C#
218 lines
6.6 KiB
C#
using System.Collections;
|
|
using System.Collections.Generic;
|
|
using System.IO;
|
|
using System.Runtime.CompilerServices;
|
|
using System.Threading;
|
|
using System.Xml.Serialization;
|
|
using LitJson;
|
|
using UnityEngine;
|
|
using UnityEngine.Networking;
|
|
|
|
public class GameDataMgr:SingletonAutoMono<GameDataMgr>
|
|
{
|
|
//静态变量 不要在外面去new
|
|
private RegisterData registerData;
|
|
//公共属性 方便外面获取,外面只能获取,不能修改
|
|
public RegisterData RegisterData => registerData;
|
|
|
|
//玩家属性
|
|
public PlayerData player;
|
|
//玩家装备信息(已穿戴和拥有的装备信息)
|
|
public UserEquipInfo userEquip;
|
|
//玩家物品信息
|
|
public UserGoodsInfo userGoods;
|
|
|
|
//怪物数据,固定属性
|
|
private List<MonsterData> monster;
|
|
public List<MonsterData> monsters => monster;
|
|
|
|
//玩家升级属性加成,固定属性
|
|
private List<UserUpgradeData> userUpGrade;
|
|
public List<UserUpgradeData> userUpGradeInfo => userUpGrade;
|
|
|
|
//装备属性加成,固定属性
|
|
private List<EquipData> equipData;
|
|
public List<EquipData> equipInfo => equipData;
|
|
|
|
//玩家物品
|
|
private List<GoodsData> goodsData;
|
|
public List<GoodsData> goods => goodsData;
|
|
|
|
//当前怪物时哪一只
|
|
public MonsterData nowMonster;
|
|
|
|
//public void Init()
|
|
//{
|
|
// //读取注册数据
|
|
// registerData = JsonMgr.Instance.LoadData<RegisterData>("RegisterData");
|
|
// //获取怪物数据
|
|
// monster = JsonMgr.Instance.LoadData<List<MonsterData>>("MonsterInfo");
|
|
// //读取玩家升级属性加成
|
|
// userUpGrade = JsonMgr.Instance.LoadData<List<UserUpgradeData>>("UserUpgradeInfo");
|
|
// //读取玩家装备属性加成
|
|
// equipData = JsonMgr.Instance.LoadData<List<EquipData>>("EquipInfo");
|
|
// //读取物品信息
|
|
// goodsData = JsonMgr.Instance.LoadData<List<GoodsData>>("GoodsInfo");
|
|
// nowMonster = monsters[0];
|
|
//}
|
|
public void Init()
|
|
{
|
|
//读取注册数据
|
|
registerData = JsonMgr.Instance.LoadData<RegisterData>("RegisterData");
|
|
//获取怪物数据
|
|
StartCoroutine(DataInit<List<MonsterData>>("MonsterInfo"));
|
|
//读取玩家升级属性加成
|
|
StartCoroutine(DataInit<List<UserUpgradeData>>("UserUpgradeInfo"));
|
|
//读取玩家装备属性加成
|
|
StartCoroutine(DataInit<List<EquipData>>( "EquipInfo"));
|
|
//读取物品信息
|
|
StartCoroutine(DataInit<List<GoodsData>>("GoodsInfo"));
|
|
|
|
}
|
|
|
|
private IEnumerator DataInit<T>(string name)
|
|
{
|
|
string path = Application.streamingAssetsPath + "/" + name + ".json";
|
|
|
|
// 安卓平台需要用UnityWebRequest
|
|
UnityWebRequest req = UnityWebRequest.Get(path);
|
|
yield return req.SendWebRequest();
|
|
|
|
if (req.result == UnityWebRequest.Result.Success)
|
|
{
|
|
string jsonStr = req.downloadHandler.text;
|
|
T data = JsonMapper.ToObject<T>(jsonStr);
|
|
Debug.Log("读取成功:" + jsonStr);
|
|
|
|
if (data is List<MonsterData>)
|
|
{
|
|
monster = data as List<MonsterData>;
|
|
|
|
nowMonster = monster[0];
|
|
}
|
|
|
|
if (data is List<UserUpgradeData>)
|
|
{
|
|
userUpGrade = data as List<UserUpgradeData>;
|
|
}
|
|
|
|
if (data is List<EquipData>)
|
|
{
|
|
equipData = data as List<EquipData>;
|
|
}
|
|
|
|
if (data is List<GoodsData>)
|
|
{
|
|
goodsData = data as List<GoodsData>;
|
|
}
|
|
}
|
|
else
|
|
{
|
|
Debug.LogError("读取失败:" + req.error+path);
|
|
}
|
|
}
|
|
|
|
/// <summary>
|
|
/// 读取本地玩家数据
|
|
/// </summary>
|
|
public void PlayerDataLoad(string txtUser)
|
|
{
|
|
player = JsonMgr.Instance.LoadData<PlayerData>(txtUser);
|
|
|
|
userEquip = JsonMgr.Instance.LoadData<UserEquipInfo>(txtUser + "equip");
|
|
|
|
userGoods = JsonMgr.Instance.LoadData<UserGoodsInfo>(txtUser + "goods");
|
|
}
|
|
/// <summary>
|
|
/// 保存玩家数据到本地
|
|
/// </summary>
|
|
/// <param name="txtUser"></param>
|
|
public void PlayerDataSave()
|
|
{
|
|
JsonMgr.Instance.SaveData(player,player.txtUser);
|
|
}
|
|
|
|
/// <summary>
|
|
/// 保存玩家装备数据到本地
|
|
/// </summary>
|
|
/// <param name="txtUser"></param>
|
|
public void EquipDataSave()
|
|
{
|
|
JsonMgr.Instance.SaveData(userEquip, player.txtUser+ "equip");
|
|
}
|
|
|
|
#region 注册
|
|
|
|
//存储注册数据
|
|
public void SavaRegisterData()
|
|
{
|
|
JsonMgr.Instance.SaveData(registerData, "RegisterData");
|
|
}
|
|
|
|
//注册方法
|
|
public int RegisterUser(string userName, string passWord, string gameName)
|
|
{
|
|
//判断是否已经存在用户
|
|
if (registerData.registerInfo.ContainsKey(userName))
|
|
{
|
|
return 1;
|
|
}
|
|
//判断角色名是否存在
|
|
if (registerData.registerInfo.ContainsKey(gameName))
|
|
{
|
|
return 2;
|
|
}
|
|
//如果不存在 证明可以注册
|
|
//存储新用户名和密码 存储角色名
|
|
registerData.registerInfo.Add(userName, passWord);
|
|
registerData.registerInfo.Add(gameName, passWord);
|
|
//初始化玩家的数据,保存在本地
|
|
PlayerData newPlayer = new PlayerData();
|
|
newPlayer.name = gameName;
|
|
newPlayer.txtUser = userName;
|
|
JsonMgr.Instance.SaveData(newPlayer, userName);
|
|
//初始化玩家的装备信息,保存在本地
|
|
UserEquipInfo newEquipInfo=new UserEquipInfo();
|
|
newEquipInfo.itemEquip.Add(equipData[0]);
|
|
newEquipInfo.itemEquip.Add(equipData[1]);
|
|
newEquipInfo.itemEquip.Add(equipData[2]);
|
|
newEquipInfo.itemEquip.Add(equipData[3]);
|
|
newEquipInfo.itemEquip.Add(equipData[4]);
|
|
newEquipInfo.itemEquip.Add(equipData[5]);
|
|
newEquipInfo.itemEquip.Add(equipData[6]);
|
|
newEquipInfo.itemEquip.Add(equipData[7]);
|
|
newEquipInfo.itemEquip.Add(equipData[8]);
|
|
JsonMgr.Instance.SaveData(newEquipInfo, userName+"equip");
|
|
//初始化玩家的物品信息,保存本地
|
|
UserGoodsInfo newGoodsInfo = new UserGoodsInfo();
|
|
newGoodsInfo.goods.Add(goodsData[0]);
|
|
newGoodsInfo.goods[0].num = 1888;
|
|
newGoodsInfo.goods.Add(goodsData[1]);
|
|
newGoodsInfo.goods[1].num = 9999;
|
|
JsonMgr.Instance.SaveData(newGoodsInfo, userName + "goods");
|
|
//本地存储
|
|
SavaRegisterData();
|
|
//注册成功
|
|
return 3;
|
|
}
|
|
|
|
//验证用户名密码是否合法
|
|
public bool CheckInfo(string userName, string passWord)
|
|
{
|
|
if (registerData.registerInfo.ContainsKey(userName))
|
|
{
|
|
//密码相同 证明 登录成功
|
|
if (registerData.registerInfo[userName] == passWord)
|
|
{
|
|
return true;
|
|
}
|
|
}
|
|
|
|
//用户名和密码不合法
|
|
return false;
|
|
}
|
|
|
|
#endregion
|
|
|
|
}
|