Esempio n. 1
0
        /// <summary>
        /// 初始化默认地形
        /// </summary>
        public void InitinalMap()
        {
            string mapMsg = "";

            if (transform.childCount > 1)
            {
                for (int i = 0; i < chunks2.Count; i++)
                {
                    Destroy(chunks2[i].gameObject);
                }
                chunks  = new Dictionary <Vector3i, Chunk>();
                chunks2 = new List <Chunk>();
                number  = 0;
            }
            heightMap  = new float[(MapLength + 1) * (MapLength + 1)];
            textureMap = new int[MapLength * MapLength];
            byte[]            byteArray = new byte[(MapLength + 1) * (MapLength + 1) * 2];
            StudentCourseInfo info      = JsonMapper.ToObject <StudentCourseInfo>(Resources.Load <DefaultSceneInfo>("Config/DefaultSceneInfo").info);

            mapInfoFromInitinalDemo = info.code;
            JSONNode obj = JSON.Parse(mapInfoFromInitinalDemo);

            mapMsg    = obj["mapInfo"]["mapData"];
            byteArray = System.Convert.FromBase64String(mapMsg);
            for (int j = 0; j < MapLength + 1; j++)
            {
                for (int i = 0; i < MapLength + 1; i++)
                {
                    byteMsg[0] = byteArray[(i + j * (MapLength + 1)) * 2];
                    byteMsg[1] = byteArray[(i + j * (MapLength + 1)) * 2 + 1];
                    TileTerrainMsgTool.ByteToTileMsg(byteMsg, out heightIntNumber, out heightFloatNumber, out TextureNumber);
                    if (i == MapLength || j == MapLength)
                    {
                        heightMap[i + j * (MapLength + 1)] = heightIntNumber - 6f + HeightIntToFloat(heightFloatNumber);
                    }
                    else
                    {
                        heightMap[i + j * (MapLength + 1)] = heightIntNumber - 6f + HeightIntToFloat(heightFloatNumber);
                        textureMap[i + j * MapLength]      = TextureNumber;
                    }
                }
            }
            for (int z = 0; z < 0 + ChunkWidth * chunkLineNumber; z += ChunkWidth)
            {
                for (int x = 0; x < 0 + ChunkWidth * chunkLineNumber; x += ChunkWidth)
                {
                    int xx = ChunkWidth * Mathf.FloorToInt(x / ChunkWidth);
                    int zz = ChunkWidth * Mathf.FloorToInt(z / ChunkWidth);
                    if (!ChunkExists(xx, 0, zz))
                    {
                        CreateChunk(new Vector3i(xx, 0, zz));
                    }
                }
            }
            LoadMapOver?.Invoke();
        }
Esempio n. 2
0
 public bool AddIntoInfoList()//将当前信息添加至总list中
 {
     if (StuNum == null)
     {
         return(false);               //此项目不存在,返回错误信息
     }
     else
     {
         for (int i = 0; i < StudentCourseInfo.ToArray().Length; i++) //遍历已存储信息,确保未被存储
         {
             if (StuNum == StudentCourseInfo[i].StuNum)               //若已存储此信息则更新之
             {
                 StudentCourseInfo.Remove(StudentCourseInfo[i]);
                 StudentCourseInfo.Add(this);
                 return(true);//更新完成
             }
         }
         StudentCourseInfo.Add(this);
         return(true);//添加成功
     }
 }