using Newtonsoft.Json;
using PublicTools.XMLDataBase;
using SC.XR.Unity;
using ShadowStudio.Tool;
using System;
using System.Collections;
using System.Collections.Generic;
using System.IO;
#if UNITY_EDITOR
using UnityEditor;
#endif
using UnityEngine;
using XRTool.Util;
namespace ShadowStudio.Model
{
///
/// 资源映射表
/// 读取,获取资源映射表
/// 按照id和类型建立资源映射。通过artid获取对应的artinfo
/// 通过资源类型获取对应的artinfo
/// 创建一个美术资源:
///
public class ArtInfoMgr : SC.XR.Unity.Singleton
{
private string tableName;
private TableInterface table;
private bool isInit = false;
///
/// 所有的资源列表,此列表当前服务器和本地各有一份。后期读取服务器列表数据
///
private List artInfoList;
///
/// 资源id对应的资源信息
///
private Dictionary artInfoMap;
private Dictionary otherArtInfoMap;
///
/// 资源类型对应的资源列表
///
private Dictionary> artInfoTypeMap;
///
/// 组件的集合
///
private Dictionary artComponentMap = new Dictionary();
///
/// 资源的引用
///
private Dictionary resArtMap;
///
/// 资源对应的工具类
///
private Dictionary artHandlerMap = new Dictionary();
///
/// 对应资源类型的容器,例如视频播放器,图片浏览器,模型浏览器
///
private Dictionary> artContainerMap = new Dictionary>();
///
/// 数据初始化
///
public event Action InitComplete;
///
/// 对应资源存储的最大的id
/// 本地生成goods的一种辅助方案,此方案即将移除
/// 此方案已移除,请勿使用2020-09-14
///
private Dictionary goodsIdMap = new Dictionary();
///
/// 使用变量缓存服务器下发的物体信息数据
///
private GoodsInfo serverCacheData = new GoodsInfo();
///
/// 此为上传至服务器的物体的数据缓存,理论上上传多个物体列表信息,实际处理中每次只会上传一条物体的同步信息
///
private List goodsDataList = new List();
///
/// 创建容器的事件,某个容器被上传的事件
///
public event Action ContainerCreate;
///
/// 删除容器,某个容器被删除的事件
///
public event Action ContainerDel;
///
/// 容器被选中或者容器非选中状态的事件
///
public static event Action ContainerSelect;
///
/// 编辑菜单的名称
///
private string ModelEditBtnGroup = "ModelEditBtnDlg";
//public ArtEditorContainer ModelEditBtn;
///
/// 容器缓存
/// 非即时同步容器缓存
///
private Dictionary containerCache = new Dictionary();
public event Action UserChange;
public void AddCacheContainer(string id, ArtContainer container)
{
if (!ContainerCache.ContainsKey(id))
{
ContainerCache.Add(id, container);
}
}
public void SetContainerSelect(ArtContainer container, bool isSelect)
{
ContainerSelect?.Invoke(container, isSelect);
}
public bool IsSingleMan()
{
//if (GameNode.Instance)
//{
// return GameNode.Instance.UserMap == null || GameNode.Instance.UserMap.Count < 2;
//}
return true;
}
public void RemoveArtInfo(List resModelList)
{
for (int i = 0; i < resModelList.Count; i++)
{
string artid = "ArtId_" + resModelList[i].name;
table.DeleteData(artid);
}
}
///
/// 将数据添加至xml
///
///
///
///
public void AddArtInfo(List resModelList, ArtType artType, InstaceType references, bool isForceUpdate, string url = "")
{
if (ArtInfoList == null)
{
ArtInfoList = new List();
}
for (int i = 0; i < resModelList.Count; i++)
{
UnityEngine.Object obj = resModelList[i];
string artid = "ArtId_" + obj.name;
if (isForceUpdate || !ArtInfoContains(artid))
{
ArtInfo info = new ArtInfo();
info.ArtId = artid;
info.ArtName = obj.name;
info.ArtType = artType;
info.Distance = 1f;
///Icon
info.Icon = "ArtIcon/" + artType + "/" + obj.name;
info.InstaceType = references;
info.Size = 1;
if (artType == ArtType.Prefab)
{
info.Distance = (obj as GameObject).transform.localPosition.z;
info.Size = (obj as GameObject).transform.localScale.x;
}
if (references == InstaceType.References)
{
info.Url = url;
}
else if (references == InstaceType.ResourceLoad)
{
#if UNITY_EDITOR
string path = AssetDatabase.GetAssetPath(obj);
int index = path.LastIndexOf("Resources");
path = path.Substring((index += "Resources".Length + 1), path.Length - index - 1);
path = path.Replace(Path.GetExtension(path), "");
info.Url = path;
#endif
}
info.Version = Application.version;
table.InsertData(info);
if (!ArtInfoContains(artid))
{
ArtInfoList.Add(info);
}
}
}
table.Save();
}
public bool ArtInfoContains(string artId)
{
for (int i = 0; i < ArtInfoList.Count; i++)
{
if (ArtInfoList[i].ArtId == artId)
{
return true;
}
}
return false;
}
public bool IsInit { get => isInit; set => isInit = value; }
public List ArtInfoList { get => artInfoList; set => artInfoList = value; }
public Dictionary ContainerCache { get => containerCache; set => containerCache = value; }
public Dictionary OtherArtInfoMap
{
get
{
if (otherArtInfoMap == null)
{
otherArtInfoMap = new Dictionary();
}
return otherArtInfoMap;
}
}
///
/// 房间内物体的映射
/// 房间id与对应的物体资源映射
///
public void LoadModelEditBtn()
{
//if (!ModelEditBtn)
//{
// var tmp = Resources.Load(ModelEditBtnGroup);
// if (tmp)
// {
// ModelEditBtn = GameObject.Instantiate(tmp);
// GameNode.Instance.SetParent(ObjNode.WorldCanvas, ModelEditBtn.transform, Vector3.zero, Vector3.zero, Vector3.one * 0.001f, false);
// ModelEditBtn.gameObject.SetActive(false);
// }
//}
}
public ArtInfoMgr()
{
var artResList = Resources.LoadAll("ArtConf");
resArtMap = new Dictionary();
if (artResList != null)
{
for (int i = 0; i < artResList.Length; i++)
{
resArtMap.Add(artResList[i].name, artResList[i]);
}
}
var containers = Resources.LoadAll("Container");
if (containers != null)
{
for (int i = 0; i < containers.Length; i++)
{
var container = containers[i].GetComponent();
if (container != null)
{
if (!artContainerMap.ContainsKey(container.GetArtType()))
{
List list = new List();
list.Add(container);
artContainerMap.Add(container.GetArtType(), list);
}
else
{
List list = artContainerMap[container.GetArtType()];
list.Add(container);
}
}
}
}
var components = Resources.LoadAll("Container/Component");
if (components != null)
{
for (int i = 0; i < components.Length; i++)
{
var component = containers[i].GetComponent();
if (component != null)
{
if (!artComponentMap.ContainsKey(containers[i].name))
{
artComponentMap.Add(containers[i].name, component);
}
}
}
}
if (BuildConfigMgr.Instance.IsInit)
{
//ReadArtInfo(Path.Combine(BuildConfig.Instance.LocalPath, BuildConfig.Instance.artInfoPath));
}
else
{
UnityLog.LogError("配置文件丢失!");
}
//WSHandler.Room.OnBroadcastGood += SyncGoods;
ContainerSelect += OnContainerSelect;
}
public void ListenUser()
{
//if (ShowViewMgr.Instance)
//{
// ShowViewMgr.Instance.OnUserChange -= OnUserChange;
// ShowViewMgr.Instance.OnUserChange += OnUserChange;
//}
//else
//{
// ShowViewMgr.InitComplte += () =>
// {
// if (ShowViewMgr.Instance)
// {
// ShowViewMgr.Instance.OnUserChange -= OnUserChange;
// ShowViewMgr.Instance.OnUserChange += OnUserChange;
// }
// };
//}
}
public void ListenPage()
{
//if (ShowViewMgr.Instance)
//{
// ShowViewMgr.Instance.OnRoomPageChange -= OnChangePage;
// ShowViewMgr.Instance.OnRoomPageChange += OnChangePage;
//}
//else
//{
// ShowViewMgr.InitComplte += () =>
// {
// if (ShowViewMgr.Instance)
// {
// ShowViewMgr.Instance.OnRoomPageChange -= OnChangePage;
// ShowViewMgr.Instance.OnRoomPageChange += OnChangePage;
// }
// };
//}
}
private void OnContainerSelect(ArtContainer container, bool isSelect)
{
if (container.GetGoodsInfo().art_id == "ArtId_PlayerView")
{
return;
}
//if (!ModelEditBtn)
//{
// LoadModelEditBtn();
//}
//if (ModelEditBtn)
//{
// if (ModelEditBtn.gameObject.activeSelf != isSelect)
// {
// ModelEditBtn.gameObject.SetActive(isSelect);
// }
// if (isSelect)
// {
// ModelEditBtn.SetTarget(container, false);
// }
//}
//if (ArtMoreEditor.Instance)
//{
// if (isSelect)
// {
// ArtMoreEditor.Instance.SetTarget(container, false);
// }
//}
}
///
/// 读取美术资源
///
///
private void ReadArtInfo(string path)
{
//languageIndex = SystemSettingMgr.Instance.settings.Language;
tableName = typeof(ArtInfo).Name;
#if UNITY_EDITOR || !UNITY_ANDROID
table = XSql.Instance.OpenTable(path, tableName, ".xml", true);
OpenTable();
#else
string fullPath = Path.Combine(path, tableName + ".xml");
TimerMgr.Instance.StartCoroutine(XSql.Instance.ReadServerData(fullPath, (List packList) =>
{
InitPackage(packList);
}));
#endif
}
public void OpenLocalData()
{
//ReadArtInfo(Path.Combine(BuildConfig.Instance.LocalPath, BuildConfig.Instance.artInfoPath));
}
private void OpenTable()
{
if (!table.Open())
{
table.Create(tableName);
UnityLog.Log("create table" + tableName);
}
var list = table.FindAllData();
for (int i = 0; i < list.Count; i++)
{
list[i].ArtType = ArtInfo.GetArtType((int)list[i].ArtType);
}
//table.Save();
//languagePackList = table.FindAllData();
InitPackage(list);
}
///
/// 初始化包
///
///
public void InitPackage(List lists)
{
ArtInfoList = lists;
if (ArtInfoList == null || ArtInfoList.Count < 1)
{
UnityLog.LogError("美术资源不存在!");
#if UNITY_EDITOR
AddDefaultArt(ArtType.Model);
InitPackage(ArtInfoList);
#endif
return;
}
else
{
if (artInfoMap == null)
{
artInfoMap = new Dictionary();
}
if (artInfoTypeMap == null)
{
artInfoTypeMap = new Dictionary>();
}
for (int i = 0; i < ArtInfoList.Count; i++)
{
if (!artInfoMap.ContainsKey(ArtInfoList[i].ArtId))
{
artInfoMap.Add(ArtInfoList[i].ArtId, ArtInfoList[i]);
UnityLog.Log(ArtInfoList[i].Url, 3);
}
if (artInfoTypeMap.ContainsKey(ArtInfoList[i].ArtType))
{
List list = artInfoTypeMap[ArtInfoList[i].ArtType];
if (list != null && !list.Contains(ArtInfoList[i]))
{
list.Add(ArtInfoList[i]);
}
}
else
{
List list = new List();
list.Add(ArtInfoList[i]);
artInfoTypeMap.Add(ArtInfoList[i].ArtType, list);
}
}
}
IsInit = true;
InitComplete?.Invoke();
}
///
/// 添加Unity基本资源到文本
///
public void AddDefaultArt(ArtType artType)
{
if (ArtInfoList == null)
{
ArtInfoList = new List();
}
if (artType == ArtType.Model)
{
foreach (PrimitiveType primitive in Enum.GetValues(typeof(PrimitiveType)))
{
ArtInfo info = new ArtInfo();
info.ArtId = "ArtId_" + (int)primitive;
info.ArtName = primitive.ToString();
info.ArtType = ArtType.Model;
info.Distance = 1f;
///Icon
info.Icon = "PrimitiveType/" + primitive.ToString();
info.InstaceType = InstaceType.UnityBase;
info.Size = 1;
info.Url = "" + (int)primitive;
info.Version = Application.unityVersion;
table.InsertData(info);
ArtInfoList.Add(info);
}
}
else
{
ArtInfo info = new ArtInfo();
info.ArtId = "ArtId_GameObject";
info.ArtName = "GameObject";
info.ArtType = ArtType.Prefab;
info.Distance = 1f;
///Icon
info.Icon = "";
info.InstaceType = InstaceType.UnityBase;
info.Size = 1;
info.Url = "New";
info.Version = Application.unityVersion;
table.InsertData(info);
ArtInfoList.Add(info);
}
table.Save();
}
///
/// 根据资源id获取对应的资源
///
///
///
public ArtInfo GetArtInfo(string artId)
{
if (IsInit && artInfoMap.ContainsKey(artId))
{
return artInfoMap[artId];
}
return null;
}
///
/// 根据资源id获取对应的资源
///
///
///
public List GetArtInfoList(ArtType artType)
{
if (IsInit)//
{
if (artInfoTypeMap.ContainsKey(artType))
{
return artInfoTypeMap[artType];
}
List tmp = new List();
foreach (var item in artInfoTypeMap)
{
///包含此key
if ((item.Key & artType) == item.Key)
{
tmp.AddRange(item.Value);
}
}
artInfoTypeMap.Add(artType, tmp);
return tmp;
}
return null;
}
/////
///// 根据资源id获取对应的资源
/////
/////
/////
//public List GetArtInfoList(ArtType[] artType)
//{
// if (IsInit)//
// {
// List ArtInfoList = new List();
// for (int i = 0; i < artType.Length; i++)
// {
// if (artInfoTypeMap.ContainsKey(artType[i]))
// {
// ArtInfoList.AddRange(artInfoTypeMap[artType[i]]);
// }
// }
// return ArtInfoList;
// }
// return null;
//}
///
/// 根据资源id获取对应的资源
///
///
///
public List GetArtInfoListSingle(ArtType artType)
{
if (IsInit)//
{
return artInfoTypeMap[artType];
}
return null;
}
///
/// 创建一个资源ArtHandler,注意内存回收
///
///
public ArtHandler CreateArtHandler(ArtInfo art, string containerName = "")
{
if (string.IsNullOrEmpty(containerName))
{
containerName = art.ContainerName;
}
if (artHandlerMap.ContainsKey(art))
{
return artHandlerMap[art];
}
ArtHandler handler = new ArtHandler();
handler.SetData(art, containerName);
artHandlerMap.Add(art, handler);
return handler;
}
///
/// 删除资源帮助类ArtHandler
///
///
public void DestrorArtHandler(ArtInfo art)
{
if (artHandlerMap.ContainsKey(art))
{
var handler = artHandlerMap[art];
handler = null;
artHandlerMap.Remove(art);
}
}
///
/// 实例化组件
///
///
///
public ArtComponent InstanceComponent(string componentName)
{
if (artComponentMap != null && artComponentMap.ContainsKey(componentName))
{
ArtComponent component = artComponentMap[componentName];
var tmp = GameObject.Instantiate(component.GetInstace());
return tmp.GetComponent();
}
return null;
}
///
/// 实例化出一个容器
///
///
///
public ArtContainer CreateContainer(ArtType artType, string containerName = "")
{
if (artContainerMap != null && artContainerMap.ContainsKey(artType))
{
var containerList = artContainerMap[artType];
if (containerList != null)
{
ArtContainer container = null;
if (containerList.Count == 1)
{
container = containerList[0];
}
else
{
for (int i = 0; i < containerList.Count; i++)
{
if (containerList[i].GetInstace().name == containerName)
{
container = containerList[i];
break;
}
}
}
if (container != null)
{
var tmp = GameObject.Instantiate(container.GetInstace());
return tmp.GetComponent();
}
}
}
return null;
}
///
/// 获取对应的配置文件
///
///
///
public ArtResConf GetResConf(string resName)
{
if (resArtMap.ContainsKey(resName))
{
return resArtMap[resName];
}
UnityLog.LogError(resName + " is not at resArtMap");
return null;
}
///
/// 物品的自增id设计
///
///
public int GetGoodsId(ArtInfo info)
{
int id = 1;
if (goodsIdMap.ContainsKey(info))
{
id = goodsIdMap[info] + 1;
goodsIdMap[info] = id;
}
else
{
goodsIdMap.Add(info, id);
}
return id;
}
///
/// 同步物体:
/// 创建物体时,接收到广播消息时的数据同步都调用此方法
///
/// 用户id,物体的创建者
/// 美术资源id
/// 物体名称
/// 物体额外信息
/// 物体id
/// 物体的姿态信息
public void SyncGoods(int rid, int status, string art_id, string goods_name, string goods_extended, int id, string goods_info)
{
serverCacheData.rid = rid;
serverCacheData.art_id = art_id;
serverCacheData.goods_name = goods_name;
serverCacheData.goods_extended = goods_extended;
serverCacheData.id = id;
serverCacheData.goods_info = goods_info;
serverCacheData.status = status;
SyncGoods(serverCacheData);
}
public void SyncGoods(List goodDataList)
{
if (goodDataList != null)
{
for (int i = 0; i < goodDataList.Count; i++)
{
SyncGoods(goodDataList[i]);
}
}
}
///
/// 同步物体数据
/// 服务器同步或者翻页时同步,服务器同步时开始缓存数据
/// 翻页时同步不添加缓存数据
///
///
///
public void SyncGoods(GoodsInfo goodData, bool isServer = true)
{
//if (GameNode.Instance.GoodsContainerMap == null)
//{
// GameNode.Instance.GoodsContainerMap = new Dictionary();
//}
//ArtContainer container = null;
//bool isCreate = false;
//if (SynUser(goodData))
//{
// container = GameNode.Instance.UserMap[goodData.art_id].Container;
//}
//else if (goodData.id != 0)
//{
// ///先检查此数据是否在此页面
// ///如果数据不在当前页,则只缓存起来
// ///如果在当前页,则缓存后实例化进行同步
// ///如果不是服务器的数据,仅同步设置,不缓存数据
// if (isServer && goodData.scene_id > 0)
// {
// if (!GameNode.Instance.PageGoods.ContainsKey(goodData.id))
// {
// GameNode.Instance.PageGoods.Add(goodData.id, goodData);
// }
// else
// {
// GameNode.Instance.PageGoods[goodData.id] = goodData;
// }
// if (!GameNode.Instance.PageGoodsId.ContainsKey(goodData.scene_id))
// {
// var list = new List();
// list.Add(goodData.id);
// GameNode.Instance.PageGoodsId.Add(goodData.scene_id, list);
// }
// else
// {
// var list = GameNode.Instance.PageGoodsId[goodData.scene_id];
// if (list == null)
// {
// list = new List();
// }
// if (!list.Contains(goodData.id))
// {
// list.Add(goodData.id);
// }
// }
// if (goodData.scene_id != CommonMethod.currentScene)
// {
// return;
// }
// }
// ///对象已存在,进行同步
// if (GameNode.Instance.GoodsContainerMap.ContainsKey(goodData.id))
// {
// container = GameNode.Instance.GoodsContainerMap[goodData.id];
// }
// else
// {
// ArtInfo info = GetArtInfo(goodData.art_id);
// if (info == null)
// {
// if (OtherArtInfoMap.ContainsKey(goodData.art_id))
// {
// info = OtherArtInfoMap[goodData.art_id];
// }
// else
// {
// NetWorkHeaders.RequestArtInfo(goodData.art_id, (jsonData) =>
// {
// if (!OtherArtInfoMap.ContainsKey(goodData.art_id))
// {
// info = JsonConvert.DeserializeObject(jsonData["data"].ToJson());
// if (info != null)
// {
// info.ArtType = CommonMethod.getArtType(int.Parse(jsonData["data"]["art_type"].ToString()));
// info.ImmediateSyn = jsonData["data"]["immediate_syn"].ToString() == "0" ? false : true;
// if (string.IsNullOrEmpty(info.Component))
// {
// if (info.ArtType == ArtType.Image)
// {
// info.Component = "PictureComponent";
// }
// else if (info.ArtType == ArtType.Movies)
// {
// info.Component = "VideoComponent";
// }
// }
// OtherArtInfoMap.Add(goodData.art_id, info);
// SyncGoods(goodData, isServer);
// UnityLog.Instance.LogError("find artinfo:" + goodData.art_id);
// return;
// }
// else
// {
// UnityLog.Instance.LogError("Error find artinfo:" + goodData.art_id);
// }
// }
// });
// }
// }
// if (info != null)
// {
// ///容器缓存
// if (ContainerCache.ContainsKey(goodData.art_id))
// {
// container = ContainerCache[goodData.art_id];
// ContainerCache.Remove(goodData.art_id);
// }
// else
// {
// ArtHandler handler = CreateArtHandler(info);
// container = handler.CreateArt();
// }
// GameNode.Instance.GoodsContainerMap.Add(goodData.id, container);
// isCreate = true;
// }
// else
// {
// UnityLog.Instance.LogError(goodData.art_id);
// }
// }
//}
//try
//{
// if (container != null && container.GetInstace())
// {
// container.TransferSyn(goodData, goodData.status == (int)TransferState.Doing);
// if (isCreate)
// {
// ContainerCreate?.Invoke(container);
// }
// }
//}
//catch
//{
// ///某个物体可能被删掉了
// ///此种情况不在处理
//}
}
//Dictionary form;
//Dictionary header;
/////
///// 读取资源信息
/////
/////
//public IEnumerator ReqOtherArtInfo(string artId, Action onReadComplete)
//{
// if (header == null)
// {
// header = new Dictionary();
// header.Add("Content-Type", "application/x-www-form-urlencoded");
// }
// if (form == null)
// {
// form = new Dictionary();
// form.Add("action", "");
// }
// yield return 0;
//}
///
/// 同步用户
///
///
///
private bool SynUser(GoodsInfo goodData)
{
//if (GameNode.Instance.UserMap == null)
//{
// GameNode.Instance.UserMap = new Dictionary();
//}
//if (string.IsNullOrEmpty(goodData.art_id))
//{
// return false;
//}
//return GameNode.Instance.UserMap.ContainsKey(goodData.art_id);
return false;
}
///
/// 删除物体
/// 可能由用户主动删除,主动删除传参true.删除相关的数据缓存
/// 翻页时是被动删除。被动删除不移除相关的数据缓存
///
/// 物体的id
/// 是否真实删除,默认真实删除
public void GoodsDelSync(int id, bool isRealDel = true)
{
//if (GameNode.Instance.GoodsContainerMap == null)
//{
// GameNode.Instance.GoodsContainerMap = new Dictionary();
//}
//ArtContainer container = null;
/////对象已存在,进行同步
//if (GameNode.Instance.GoodsContainerMap.ContainsKey(id))
//{
// container = GameNode.Instance.GoodsContainerMap[id];
// //if (ModelEditBtn)
// //{
// // ModelEditBtn.SetTarget(container, true);
// //}
// if (ArtMoreEditor.Instance)
// {
// ArtMoreEditor.Instance.SetTarget(container, true);
// }
// ContainerDel?.Invoke(container);
// if (container != null)
// {
// container.DestroyArt();
// }
// GameNode.Instance.GoodsContainerMap.Remove(id);
//}
/////真实删除
//if (isRealDel)
//{
// ///删除物体的id
// ///先查找物体id对应的Goods
// if (GameNode.Instance.PageGoods.ContainsKey(id))
// {
// ///获得Goods
// var good = GameNode.Instance.PageGoods[id];
// ///查找页对应的物体的id
// if (GameNode.Instance.PageGoodsId.ContainsKey(good.scene_id))
// {
// ///获取页对应的id列表,并
// var list = GameNode.Instance.PageGoodsId[good.scene_id];
// if (list != null && list.Contains(id))
// {
// list.Remove(id);
// }
// }
// GameNode.Instance.PageGoods.Remove(id);
// ContainerDel?.Invoke(null);
// }
//}
}
public void SendGoodsTransfer(GoodsInfo info)
{
//goodsDataList.Add(info);
////WSHandler.Room.BroadcastGood(goodsDataList);
//goodsDataList.Clear();
}
public void SendTransfer(GoodsInfo info)
{
//goodsDataList.Add(info);
////WSHandler.Room.TransmitGood(goodsDataList);
//goodsDataList.Clear();
}
///
/// 当新用户进入时的事件
///
///
//public void OnUserChange(List userList, bool isJoin)
//{
// if (GameNode.Instance.UserMap == null)
// {
// GameNode.Instance.UserMap = new Dictionary();
// }
// if (userList != null)
// {
// for (int i = 0; i < userList.Count; i++)
// {
// if (GameNode.Instance.UserMap.ContainsKey(userList[i].PeerId))
// {
// if (isJoin)
// {
// continue;
// }
// else
// {
// var container = GameNode.Instance.UserMap[userList[i].PeerId];
// container.StopSyn();
// container.DestroyArt();
// UserChange?.Invoke(userList[i].PeerId, false);
// GameNode.Instance.UserMap.Remove(userList[i].PeerId);
// }
// }
// else
// {
// if (isJoin)
// {
// ArtInfo info = GetArtInfo(PlayerContainer.userArtId);
// if (info != null)
// {
// //string cName = info.ContainerName;
// //if (string.IsNullOrEmpty(cName))
// //{
// // cName = PlayerContainer.containerName;
// //}
// //ArtHandler handler = CreateArtHandler(info, PlayerContainer.containerName);
// ArtHandler handler = CreateArtHandler(info);
// var container = handler.CreateArt();
// if (container != null)
// {
// if (container.ArtComponent != null && container.ArtComponent.GetInstace())
// {
// if (container.ArtComponent is PlayerContainer)
// {
// (container.ArtComponent as PlayerContainer).SetPeer(userList[i]);
// GameNode.Instance.UserMap.Add(userList[i].PeerId, container.ArtComponent as PlayerContainer);
// UserChange?.Invoke(userList[i].PeerId, true);
// }
// }
// }
// }
// else
// {
// UnityLog.Instance.LogError(PlayerContainer.userArtId + " cant find art");
// }
// }
// else
// {
// continue;
// }
// }
// }
// }
//}
///
/// 删除场景的物体
///
///
///
public void DelGoodsById(int id)
{
//bool isCanDel = true;
//if (GameNode.Instance.PageGoods.ContainsKey(id))
//{
// var goods = GameNode.Instance.PageGoods[id];
// if (goods.scene_id == CommonMethod.currentScene)
// {
// isCanDel = true;
// }
//}
//if (isCanDel)
//{
// WSHandler.Room.DeleteGood(new int[] { id });
//}
}
public void DelGoodsByIds(List ids)
{
//List list = new List();
//for (int i = 0; i < ids.Count; i++)
//{
// int id = ids[i];
// if (GameNode.Instance.PageGoods.ContainsKey(id))
// {
// var goods = GameNode.Instance.PageGoods[id];
// if (goods.scene_id == CommonMethod.currentScene)
// {
// list.Add(id);
// }
// }
//}
//if (list.Count > 0)
//{
// WSHandler.Room.DeleteGood(list.ToArray());
//}
}
///
/// 翻页的数据处理
/// 翻页时注意,删除旧的数据
/// 同步新的数据
///
///
///
public void OnChangePage(int all, int current)
{
//if (GameNode.Instance)
//{
// if (GameNode.Instance.DefaultPageIndex != current)
// {
// if (GameNode.Instance.DefaultPageIndex >= 0)
// {
// if (GameNode.Instance.PageGoodsId.ContainsKey(GameNode.Instance.DefaultPageIndex))
// {
// var list = GameNode.Instance.PageGoodsId[GameNode.Instance.DefaultPageIndex];
// for (int i = 0; i < list.Count; i++)
// {
// GoodsDelSync(list[i], false);
// }
// }
// }
// if (ModelEditBtn)
// {
// ModelEditBtn.gameObject.SetActive(false);
// }
// GameNode.Instance.DefaultPageIndex = current;
// if (GameNode.Instance.DefaultPageIndex >= 0)
// {
// if (GameNode.Instance.PageGoodsId.ContainsKey(GameNode.Instance.DefaultPageIndex))
// {
// var list = GameNode.Instance.PageGoodsId[GameNode.Instance.DefaultPageIndex];
// for (int i = 0; i < list.Count; i++)
// {
// if (GameNode.Instance.PageGoods.ContainsKey(list[i]))
// {
// SyncGoods(GameNode.Instance.PageGoods[list[i]], false);
// }
// }
// }
// }
// }
//}
}
}
}