public override void Copy(Model m) { OpponentSetup o = (OpponentSetup)m; this.TackingAccuracy = o.TackingAccuracy; this.TackingExtra = o.TackingExtra; this.TackingSpeed = o.TackingSpeed; this.BestUpwindAngle = o.BestUpwindAngle; }
// Use this for initialization void Start() { GetWeather(); instance = this; _buoys = new List <GameObject>(); MainGameController.instance.canGoBack = false; _currentTrack = MainGameController.instance.databaseController.connection.Table <Track>().Where(x => x.id == _currentRace.TrackId).First(); DrawTrack(_currentTrack); //_waypointsPanel.transform.localPosition = -(Vector3.Lerp(_currentTrack.GetWaypoints()[0], _currentTrack.GetWaypoints()[1], 0.5f) - new Vector3(0, 500, 0)); _buoyIndicator = 0; List <Person> _avaliablePersons = MainGameController.instance.databaseController.connection.Table <Person>().Where(x => x.LocationId == _currentRace.LocationId && x.BoatId == _currentRace.BoatsUsedId && x.OpponentSetupId != -1 ).ToList(); int playerPosition = Random.Range(0, _avaliablePersons.Count); for (int i = 0; i < _avaliablePersons.Count + 1; i++) { if (i != playerPosition) { int newi = i; if (i > playerPosition) { newi -= 1; } Person p = _avaliablePersons[newi]; GameObject opponent = GameObject.Instantiate(_opponentPrefab); opponent.name = "Opponent " + p.Name; opponent.transform.SetParent(_opponentsParent.transform); opponent.transform.localScale = Vector3.one; opponent.transform.localPosition = Vector3.zero; OpponentRaceAi ora = opponent.GetComponentInChildren <OpponentRaceAi>(); Boat b = MainGameController.instance.databaseController.connection.Table <Boat>().Where(x => x.id == p.BoatId).First(); ora.gameObject.transform.position = _buoys[0].transform.position + new Vector3((i + 2) * opponent.GetComponent <RectTransform>().sizeDelta.x * 1.5f, -500); OpponentSetup os = MainGameController.instance.databaseController.connection.Table <OpponentSetup>().Where(x => x.id == p.OpponentSetupId).First(); ora.SetOpponentValues(p, os.TackingAccuracy, os.TackingExtra, os.TackingSpeed, b.GetNGZLimit(), os.BestUpwindAngle); _opponenents.Add(ora); _minmapController.AddOpponent(opponent); } else { Vector3 pos = -(_currentTrack.GetWaypoints()[0] + new Vector2((i + 2) * _playerBoat.GetComponent <RectTransform>().sizeDelta.x * 1.5f, -500)); _waypointsPanel.transform.localPosition = pos; } } WaypointBuoy newBuoy = _buoys[_currentTrack.GetWaypointOrder()[_buoyIndicator]].GetComponent <WaypointBuoy>(); if (newBuoy.transform.position.y > _playerBoat.transform.position.y) { _playerBoat.target = newBuoy.upwindTarget; } else { _playerBoat.target = newBuoy.downwindTarget; } _playerTargetBuoy = _playerBoat.target; if (_windSpeed > _playerBoat.GetMaxWindSpeedSails()) { StartCoroutine(_playerBoat.ReceiveDamage()); } foreach (OpponentRaceAi ora in _opponenents) { ora.SetFinishTarget(_finishedRaceTarget); ora.buoys = _buoys; ora.trackOrder = _currentTrack.GetWaypointOrder(); if (newBuoy.transform.position.y > ora.transform.position.y) { ora.target = newBuoy.upwindTarget; } else { ora.target = newBuoy.downwindTarget; } } //Vector3 euler = Vector3.zero; //euler.z = _windAngle; //_waypointsPanel.transform.localEulerAngles = euler; _minmapController.DrawTrack(_currentTrack); StartCoroutine(CountDown(5)); #if UNITY_EDITOR //GetWayPointsTemp(); #endif }