public static double GetDistance_m(RoadSetting roadSetting)
 {
     return(GetDistance_km(roadSetting) * 1000);
 }
        public async override void Run()
        {
            RoomComponent roomComponent = Game.Scene.GetComponent <RoomComponent>();

            if (roomComponent == null)
            {
                //TODO:用command時防呆,這邊先return,應該有更好的做法
                return;
            }

            ConfigComponent configComponent = Game.Scene.GetComponent <ConfigComponent>();

            IConfig[] roadSettings = configComponent.GetAll(typeof(RoadSetting));

            StartConfigComponent startConfigComponent = Game.Scene.GetComponent <StartConfigComponent>();
            StartConfig          startConfig          = startConfigComponent.StartConfig;

            for (int i = 0; i < roadSettings.Length; i++)
            {
                RoadSetting roadSetting = roadSettings[i] as RoadSetting;
                if (roadSetting == null)
                {
                    continue;
                }
                if (roadSetting.Id < RoadHelper.RoamingIdStart || roadSetting.Id > RoadHelper.RoamingIdEnd)
                {
                    continue;
                }
                int mapIndex = startConfigComponent.MapConfigs.IndexOf(startConfig);
                if (startConfig.AppType != AppType.AllServer)
                {
                    if (roadSetting.MapServerIndex != mapIndex)
                    {
                        continue;
                    }
                }
                var      mapLimitSetting = (MapLimitSetting)configComponent.Get(typeof(MapLimitSetting), roadSetting.MapServerIndex);
                RoomInfo roamingRoomInfo = new RoomInfo()
                {
                    Title          = string.Empty,
                    RoadSettingId  = roadSetting.Id,
                    MaxMemberCount = mapLimitSetting == null ? 1000 : mapLimitSetting.MaxUserCount,
                };

                var room = roomComponent.GetRoamingBySettingId(roadSetting.Id);

                if (room == null)
                {
                    roamingRoomInfo.NowMemberCount = 0;
                    room = await roomComponent.CreateRoamingRoom(roamingRoomInfo);
                }
                else
                {
                    room.SetData(roamingRoomInfo);
                }

                roomComponent.Update(room).Coroutine();

                //RoomInfo teamRoomInfo = new RoomInfo()
                //{
                //    Title = $"測試組隊_{RandomHelper.RandomNumber(1515, 54861655)}",
                //    RoadSettingId = roadSetting.Id,
                //    MaxMemberCount = 8,
                //    NowMemberCount = 0,
                //};

                //TeamRoomData teamRoomData = new TeamRoomData()
                //{
                //    LeaderName = $"測試玩家_{i}",
                //    LeaderUid = 989898989,
                //    StartUTCTimeTick = DateTime.UtcNow.Ticks,
                //};

                //roomComponent.CreateTeamRoom(teamRoomInfo, teamRoomData);
            }
        }
 public static double GetDistance_km(RoadSetting roadSetting)
 {
     return(roadSetting.Distance * 0.5f);
 }