/// <summary> /// RoundSettings을 기반으로 RoundData를 새로 생성 /// </summary> public void GenerateRoundDatas() { roundSettings.Validate(); RoundDatas = new RoundData[roundSettings.roundNumber]; // 마지막 라운드 RoundDatas[roundSettings.roundNumber - 1] = new RoundData( roundSettings.roundNumber, SelectFinalPosition(), roundSettings.diametersAfterClosing[roundSettings.roundNumber - 1], roundSettings.waitPeriods[roundSettings.roundNumber - 1], roundSettings.timeToCloses[roundSettings.roundNumber - 1], roundSettings.tickDamages[roundSettings.roundNumber - 1]); // 마지막에서 두 번째 라운드부터 거꾸로 계산 for (int round = roundSettings.roundNumber - 2; round >= 0; round--) { Vector2 randomValue = UnityEngine.Random.insideUnitCircle; randomValue *= roundSettings.diametersAfterClosing[round] / 2f - roundSettings.diametersAfterClosing[round + 1] / 2f; RoundDatas[round] = new RoundData( round + 1, RoundDatas[round + 1].Center + randomValue, roundSettings.diametersAfterClosing[round], roundSettings.waitPeriods[round], roundSettings.timeToCloses[round], roundSettings.tickDamages[round]); } photonView.RPC(nameof(SyncRoundDatas), PhotonTargets.OthersBuffered, RoundDatas.Length, RoundDatas.Select(e => e.Center).ToArray(), RoundDatas.Select(e => e.DiameterAfterClosing).ToArray(), RoundDatas.Select(e => e.WaitPeriod).ToArray(), RoundDatas.Select(e => e.TimeToClose).ToArray(), RoundDatas.Select(e => e.TickDamage).ToArray()); }