/// <summary> /// 获取各个模块的物件的在场景中的坐标信息 /// </summary> /// <param name="modleID">模块id</param> /// <returns></returns> public List <HomePosInfo> GetPosListByModuleID(uint modleID) { List <HomePosInfo> list = new List <HomePosInfo>(); HomeLandViewDatabase db = GameTableManager.Instance.GetTableItem <HomeLandViewDatabase>(modleID); if (db != null) { string[] posArray = db.posStr.Split(';'); foreach (var info in posArray) { string[] infoArray = info.Split('_'); if (infoArray.Length != 3) { Log.Error("data does not meet the requirements"); return(null); } HomePosInfo pi = new HomePosInfo(); if (!int.TryParse(infoArray[0], out pi.index)) { Log.Error("int parse error"); } if (!int.TryParse(infoArray[1], out pi.posX)) { Log.Error("int parse error"); } if (!int.TryParse(infoArray[2], out pi.posZ)) { Log.Error("int parse error"); } list.Add(pi); } } return(list); }
/// <summary> /// 设置家园实体状态通过实体id /// </summary> /// <param name="landIndex">实体id</param> /// <param name="state">状态</param> /// <param name="indexID">homeland.xlsx 模型配置表里对应的索引id</param> void SetHomeEntityState(long uid, int state, uint indexID) { if (entityStateDic.ContainsKey(uid)) { HomeEntityInfo info = entityStateDic[uid]; info.state = state; entityStateDic[uid] = info; IEntitySystem es = ClientGlobal.Instance().GetEntitySystem(); if (es != null) { IEntity en = es.FindEntity(uid); if (en != null) { HomeLandViewDatabase db = GameTableManager.Instance.GetTableItem <HomeLandViewDatabase>((uint)indexID, state); if (db != null) { ResourceDataBase rdb = GameTableManager.Instance.GetTableItem <ResourceDataBase>(db.dwModelID); if (rdb != null) { ChangePart cp = new ChangePart(); cp.strPartName = "main"; cp.strResName = rdb.strPath; en.SendMessage(EntityMessage.EntityCommand_ChangePart, cp); } } } } } else { Log.Error("not cotain uid " + uid.ToString()); } }
void CreateAnimals() { //List<HomePosInfo> posList = GetPosListByModuleID( 304 ); //if ( posList == null ) // return; List <HomePosInfo> posList = GetPosListByModuleID(animalID);//获取土地位置 HomeLandViewDatabase db = GameTableManager.Instance.GetTableItem <HomeLandViewDatabase>(animalID); if (db != null) { for (int i = 0; i < posList.Count; i++) { HomePosInfo plant = posList[i]; AddAnimalYardModel(plant, LandState.Idle); } } for (int i = 0; i < animalLandList.Count; i++) { LandData ld = animalLandList[i]; HomePosInfo info = GetAnimalPos(i + 1); AddPlantAndAnimalModel(info, ld.remain_time, ld.seed_id, EntityType.EntityType_Animal); } }
/// <summary> /// 通过[索引ID]二分快速查表 /// </summary> /// <param name="wdID">索引ID</param> /// <returns></returns> public static IEnumerable <HomeLandViewDatabase> Query(this List <HomeLandViewDatabase> sorted, ushort wdID) { var key = new HomeLandViewDatabase() { wdID = wdID }; var comparer = new Comparer1(); var from = sorted.BinarySearch(key, comparer); if (from < 0) { yield break; } var to = from + 1; while (from > 0 && comparer.Compare(key, sorted[from - 1]) == 0) { from--; } while (to < sorted.Count && comparer.Compare(key, sorted[to]) == 0) { to++; } for (var i = from; i < to; i++) { yield return(sorted[i]); } }
/// <summary> /// 通过[索引ID + 状态]二分快速查表 /// </summary> /// <param name="wdID">索引ID</param> /// <param name="wdState">状态</param> /// <returns></returns> public static HomeLandViewDatabase Query(this List <HomeLandViewDatabase> sorted, ushort wdID, ushort wdState) { var key = new HomeLandViewDatabase() { wdID = wdID, wdState = wdState }; var comparer = new Comparer2(); var index = sorted.BinarySearch(key, comparer); return(index >= 0 ? sorted[index] : default(HomeLandViewDatabase)); }
void CreatePlant() { List <HomePosInfo> posList = GetPosListByModuleID(landID); HomeLandViewDatabase db = GameTableManager.Instance.GetTableItem <HomeLandViewDatabase>(landID); if (db != null) { for (int i = 0; i < posList.Count; i++) { HomePosInfo plant = posList[i]; if (i < landList.Count) { LandData ld = landList[i]; ShowSoilModel(plant, ld); ShowPlantModel(plant, ld); } else { ShowSoilModel(plant, null); } } } }