CultivateImmortal/Assets/Scripts/GameScene/Data/GameDataMgr.cs

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
}