コード例 #1
0
ファイル: OpponentSetup.cs プロジェクト: JoepS/Portfolio
    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;
    }
コード例 #2
0
// 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
    }