Пример #1
0
    private TransmissionRay CreateTransmissionRay(Transmission.Data transmission)
    {
        var ray = Instantiate(_rayPrefab);

        ray.transform.position = _firingPoint.position;
        ray.transform.rotation = _firingPoint.rotation;
        ray.Setup(transmission);
        return(ray);
    }
Пример #2
0
 private void RandomizeGoal()
 {
     _goalTransmission = new Transmission.Data();
     for (int i = 0; i < Transmission.NUMBER_OF_SIGNALS; i++)
     {
         var enumValues  = Enum.GetValues(typeof(SignalKey));
         var randomValue = (SignalKey)enumValues.GetValue(Random.Range(0, enumValues.Length));
         _goalTransmission.Signals[i] = randomValue;
     }
 }
Пример #3
0
    private void OnCollisionEnter2D(Collision2D other)
    {
        switch (PlanetState)
        {
        case State.Ongoing:
            // Nothing - keep running
            break;

        case State.Won:
            _loveParticles.Play();
            _loveSound.Play();
            GameManager.ControlPanel.EnableUI();
            return;

        case State.Lost:
            _hateParticles.Play();
            _hateSound.Play();
            GameManager.ControlPanel.EnableUI();
            return;

        default:
            throw new ArgumentOutOfRangeException();
        }
        if (PlanetState != State.Ongoing)
        {
            // Interactions are only with Ongoing planets
            return;
        }

        var ray = other.gameObject.GetComponent <TransmissionRay>();

        if (ray == null)
        {
            return;
        }

        _lastTransmission = ray.Transmission;
        _lastEvaluation   = EvaluateTransmission(ray.Transmission);
        _likeness        -= _angerMod;

        GameManager.AlienPanel.Setup(GetAlienSprite(_lastEvaluation), _lastTransmission, _lastEvaluation, _likeness);
        GameManager.AlienPanel.Show(OnAlienPanelDone);

        if (_lastEvaluation.Score >= 3.9f)
        {
            OnPlanetWin();
        }
        else if (_likeness <= 0.0f)
        {
            OnPlanetLose();
        }
    }
Пример #4
0
    private Evaluation EvaluateTransmission(Transmission.Data transmission)
    {
        var eval = new Evaluation();

        for (int i = 0; i < Transmission.NUMBER_OF_SIGNALS; i++)
        {
            eval.Results[i] = Evaluation.Result.Bad;
        }

        for (int i = 0; i < Transmission.NUMBER_OF_SIGNALS; i++)
        {
            if (transmission.Signals[i] == _goalTransmission.Signals[i])
            {
                // Perfect hit!
                eval.Results[i] = Evaluation.Result.Perfect;
                eval.Score     += 1.0f;
                continue;
            }

            // Check for good hit
            for (int j = 0; j < Transmission.NUMBER_OF_SIGNALS; j++)
            {
                if (transmission.Signals[i] == _goalTransmission.Signals[j])
                {
                    // Found good hit
                    eval.Results[i] = Evaluation.Result.Good;
                    eval.Score     += 1.0f;
                    break;
                }
            }

            eval.Score -= 1.0f;
        }

        return(eval);
    }
Пример #5
0
 public void ShootTransmission(Transmission.Data transmission)
 {
     var ray = CreateTransmissionRay(transmission);
 }
Пример #6
0
 public void Setup(Transmission.Data transmission)
 {
     Transmission = transmission;
 }
Пример #7
0
 public void Setup(Sprite alienSprite, Transmission.Data transmission, Planet.Evaluation evaluation, float likeness)
 {
     _alienImage.sprite = alienSprite;
     _Evaluation.SetEvaluation(transmission, evaluation);
     _likenessMeter.value = likeness;
 }