Example #1
0
    /// <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);
    }
Example #2
0
 /// <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());
     }
 }
Example #3
0
    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);
        }
    }
Example #4
0
        /// <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]);
            }
        }
Example #5
0
        /// <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));
        }
Example #6
0
    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);
                }
            }
        }
    }