static public List <PlayerController.MapElement> loadExistMapList()
    {
        List <PlayerController.MapElement> list = new List <PlayerController.MapElement>();

        String[] directories = DataUtility.getFolderList();
        for (int i = 0; i < directories.Length; i++)
        {
            WorldDataConst.WorldData worldInfo = DataUtility.load <WorldDataConst.WorldData>(directories[i], WORLD_FILENAME);
            if (worldInfo != null)
            {
                PlayerController.MapElement element = new PlayerController.MapElement();
                element.name            = worldInfo.name;
                element.uuid            = worldInfo.uuid;
                element.seeds           = worldInfo.seeds;
                element.width           = worldInfo.width;
                element.height          = worldInfo.height;
                element.lastUpdate_long = worldInfo.lastUpdate;
                element.lastUpdate      = DateTimeOffset.FromUnixTimeSeconds(worldInfo.lastUpdate).LocalDateTime.ToString();
                element.pathName        = directories[i];
                list.Add(element);
            }
        }

        MapComparer comparer = new MapComparer();

        list.Sort((a, b) => (int)(a.lastUpdate_long - b.lastUpdate_long));
        list.Reverse();
        return(list);
    }
Example #2
0
 public void loadNewMapDatas()
 {
     if (newWorldData_Generate != null)
     {
         worldData = newWorldData_Generate;
         preNotifyNewMap();
     }
 }
Example #3
0
 public async void Cmd_Generate_Async(string name, string seeds, int width, int height)
 {
     var context = SynchronizationContext.Current;
     await Task.Run(() =>
     {
         worldData             = WorldGenerator.GenerateMap(name, seeds, width, height);
         newWorldData_Generate = worldData;
         preNotifyNewMap();
         current_uuid = newWorldData_Generate.uuid;
         Debug.Log("Generate End!");
     });
 }
    static public WorldDataConst.WorldData loadExistMapDatas(PlayerController.MapElement element)
    {
        var dbPath = element.pathName;

        WorldDataConst.WorldData worldData = DataUtility.load <WorldDataConst.WorldData>(dbPath, WORLD_FILENAME);
        worldData.terrainList    = DataUtility.load <ListStore <WorldDataConst.EachTerrainData> >(dbPath, TERRAIN_FILENAME).getList();
        worldData.buildingList   = DataUtility.load <ListStore <WorldDataConst.EachRegionData> >(dbPath, BUILDING_FILENAME).getList();
        worldData.vehicleList    = DataUtility.load <ListStore <WorldDataConst.EachVehicleInfo> >(dbPath, VEHICLE_FILENAME).getList();
        worldData.wildAnimalList = DataUtility.load <ListStore <WorldDataConst.EachWildAnimal> >(dbPath, WILDANIMAL_FILENAME).getList();
        worldData.mapPicture     = DataUtility.readPictureData(dbPath, MAPIMAGE_FILENAME);

        return(worldData);
    }
    static public void storeNemMap(WorldDataConst.WorldData worldData, string name)
    {
        worldData.name = name;
        DateTime dt          = DateTime.Now.ToUniversalTime();
        DateTime dtUnixEpoch = new DateTime(1970, 1, 1, 0, 0, 0, DateTimeKind.Utc);

        worldData.lastUpdate = (long)dt.Subtract(dtUnixEpoch).TotalSeconds;

        DataUtility.save(worldData, worldData.uuid, WORLD_FILENAME);
        DataUtility.save(ListStore <WorldDataConst.EachTerrainData> .getListStore(worldData.terrainList), worldData.uuid, TERRAIN_FILENAME);
        DataUtility.save(ListStore <WorldDataConst.EachRegionData> .getListStore(worldData.buildingList), worldData.uuid, BUILDING_FILENAME);
        DataUtility.save(ListStore <WorldDataConst.EachVehicleInfo> .getListStore(worldData.vehicleList), worldData.uuid, VEHICLE_FILENAME);
        DataUtility.save(ListStore <WorldDataConst.EachWildAnimal> .getListStore(worldData.wildAnimalList), worldData.uuid, WILDANIMAL_FILENAME);
        DataUtility.storePictureData(worldData.mapPicture, worldData.uuid, MAPIMAGE_FILENAME);
    }
Example #6
0
 public void setReadyToStart()
 {
     isReady = true;
     newWorldData_Generate = null;
     foreach (KeyValuePair <NetworkInstanceId, NetworkIdentity> dict in ClientScene.objects)
     {
         NetworkIdentity  networkIdentity = dict.Value;
         PlayerController playerCtr       = networkIdentity.GetComponent <PlayerController>();
         if (playerCtr != null)
         {
             playerCtr.TargetDispTopMenuPanel(playerCtr.connectionToClient);
             playerCtr.Target_CloseInformationPanel(playerCtr.connectionToClient);
         }
     }
 }
Example #7
0
    static public Texture2D createMapPicture(WorldDataConst.WorldData worldData)
    {
        // テクスチャ生成
        var tex = new Texture2D(worldData.width, worldData.height);

        for (int y = 0; y < worldData.height; y++)
        {
            for (int x = 0; x < worldData.width; x++)
            {
                WorldDataConst.EachTerrainData terrainData = worldData.terrainList[y * worldData.width + x];
                Color  color       = Color.cyan;
                string colorString = "#4080C0"; // 赤色の16進数文字列
                ColorUtility.TryParseHtmlString(colorString, out color);
                if (terrainData.type == WorldDataConst.TileType.FIELD)
                {
                    colorString = "#A7C131"; // 赤色の16進数文字列
                    ColorUtility.TryParseHtmlString(colorString, out color);
                }
                tex.SetPixel(x, y, color);
            }
        }
        return(tex);
    }
Example #8
0
 public void loadExistMapDatas(PlayerController.MapElement element)
 {
     worldData = WorldDataUtility.loadExistMapDatas(element);
     preNotifyNewMap();
     current_uuid = element.pathName;
 }
Example #9
0
    //サーバでの世界データ作成
    static public WorldDataConst.WorldData GenerateMap(string name, string seeds, int width, int height)
    {
        Vector2Int size = new Vector2Int(width, height);

        Debug.Log("Start Generating! Seeds:" + seeds + " Width:" + size.x + " Height:" + size.y);

        //Seedsごとに同じ地図データを生成するため、Seeds固定の乱数生成器を作成
        System.Random rnd = new System.Random(seeds.GetHashCode());

        int seaSplitNum   = 10;
        int seaSplitSizeX = size.x / seaSplitNum;
        int seaSplitSizeY = size.y / seaSplitNum;

        Debug.Log("SplitWidth:" + seaSplitSizeX + " SplitHeight:" + seaSplitSizeY);

        //地図上に描く縦横の海バンド生成
        List <BandSeed> verticalBands   = generateBandSeeds(rnd, 0, 2, seaSplitNum, seaSplitSizeX);
        List <BandSeed> horizontalBands = generateBandSeeds(rnd, 0, 2, seaSplitNum, seaSplitSizeY);

        //地図上に描く海のSeeds
        List <TerrainSeed> sea_seeds = generateSeeds(rnd, size, 0, 5, seaSplitSizeX, seaSplitSizeY, 2);
        //地図上に描く陸のSeeds
        List <TerrainSeed> field_seeds = generateSeeds(rnd, size, 5, 12, seaSplitSizeX, seaSplitSizeY, 1);

        //Seedsを元に初期マップ生成
        WorldDataConst.EachTerrainData[] tileMap = generateFirstTileMap(rnd, size, verticalBands, horizontalBands, sea_seeds, field_seeds);

        //マップをランダマイズ
        int tryIndex = rnd.Next(10, 30);

        for (int l = 0; l < tryIndex; l++)
        {
            tileMap = deformationTileMap(rnd, size, tileMap);
        }
        //マップに存在する1Cellの陸や海を除去
        tileMap = fillGap(size, tileMap);


        //すべての陸と海のサイズを計算
        int[] areaNoList = Enumerable.Repeat <int>(-1, tileMap.Length).ToArray();
        List <AreaInvestigationInfo> sizeList = investigationSizeList(size, tileMap, areaNoList);

        sizeList = aggregateSizeList(sizeList);

        //小さな島は削除
        tileMap = removeSmallIsland(size, tileMap, areaNoList, sizeList);

        WorldDataConst.WorldData worldData = new WorldDataConst.WorldData();

        worldData.name   = name;
        worldData.uuid   = Guid.NewGuid().ToString().Replace("-", "");
        worldData.seeds  = seeds;
        worldData.width  = width;
        worldData.height = height;
        //現在のUTC時刻取得
        DateTime dt          = DateTime.Now.ToUniversalTime();
        DateTime dtUnixEpoch = new DateTime(1970, 1, 1, 0, 0, 0, DateTimeKind.Utc);

        worldData.lastUpdate     = (long)dt.Subtract(dtUnixEpoch).TotalSeconds;
        worldData.terrainList    = new List <WorldDataConst.EachTerrainData>(tileMap);
        worldData.buildingList   = new List <WorldDataConst.EachRegionData>();
        worldData.vehicleList    = new List <WorldDataConst.EachVehicleInfo>();
        worldData.wildAnimalList = new List <WorldDataConst.EachWildAnimal>();

        return(worldData);
    }