void Start()
    {
        _playableGOMovement = _playerGO.GetComponent <PlayableGOMovement>();
        _planetBehaviour    = _planetGO.GetComponent <PlanetBehaviour>();
        _scoreText.text     = "Score: " + _score;
        _looseText.gameObject.SetActive(false);
        _audioScore = gameObject.GetComponentInChildren <AudioSource>();
        _shipIndex  = PlayerPrefs.GetInt("shipIndex");
        Transform rootSpaceShipsGO = _playerGO.transform.GetChild(0);

        for (int i = 0; i < rootSpaceShipsGO.transform.childCount; i++)
        {
            _shipsGOs.Add(rootSpaceShipsGO.GetChild(i).gameObject);
            if (i == PlayerPrefs.GetInt("shipIndex"))
            {
                _shipsGOs[i].SetActive(true);
            }
            else
            {
                _shipsGOs[i].SetActive(false);
            }
        }

        if (!_testMode)
        {
            StartCoroutine("spawnEnemy");
        }
    }
Exemple #2
0
    void PlanetHit(PlanetBehaviour planet, RocketBehaviour rocket, PlanetBehaviour.HitInfo hitInfo)
    {
        if (planet != playerController.playerPlanet)
        {
            AddPoints((int)(configuration.damageScoreMultiplier * hitInfo.damageDealt));

            if (hitInfo.coreExposed)
            {
                uiController.FlashMessage("CORE EXPOSED");
                AddPoints(500);
            }

            if (hitInfo.coreHit)
            {
                uiController.FlashMessage("CORE HIT");
                AddPoints(1000);
            }

            if (planet.state.hitPoints <= 0.0f)
            {
                planet.Explode();
            }
        }
        else
        {
            if (playerController.playerPlanet.state.hitPoints <= 0.0f)
            {
                GameOver();
            }
        }
    }
Exemple #3
0
 public void Initialize(InteractionData interactionData)
 {
     PlanetBehaviour = GetComponent <PlanetBehaviour>();
     interactionData.CurrentlySelectedPlanet.Subscribe(planet =>
     {
         IsUnderCursor = planet == this && gameObject.activeSelf;
     }).AddTo(gameObject);
 }
Exemple #4
0
        public ShipList(PlanetBehaviour planet, Vector3 axis, float speed)
        {
            this.planet = planet;
            sqrRadius   = planet.radius * planet.radius;

            this.axis  = axis;
            this.speed = speed;
        }
Exemple #5
0
 public void SetTarget(PlanetBehaviour target)
 {
     if (Ship.State == ShipState.Idle && target != TargetPlanet)
     {
         TargetPlanet = target;
         Ship.State   = ShipState.Moving;
         transform.SetParent(null);
     }
 }
    private Vector3 GetGravityForce(PlanetBehaviour mass)
    {
        float   distance = (mass.transform.position - transform.position).magnitude;
        float   m1       = _rigidbody.mass;
        float   m2       = mass._rigidbody.mass;
        float   G        = Global.GRAVITY;
        float   force    = G * m1 * m2 / Mathf.Pow(distance, 2);
        Vector3 dir      = (mass.transform.position - transform.position).normalized;

        return(-dir * force);
    }
 void HandlePlanetCollision(Vector3 hitPosition, PlanetBehaviour otherPlanet)
 {
     if (otherPlanet.mass < mass)
     {
         var damage = configuration.collisionMassDamageMultiplier * otherPlanet.mass;
         ReceiveDamage(damage, hitPosition, otherPlanet.configuration.mainColor);
     }
     else
     {
         Explode();
     }
 }
Exemple #8
0
 void PlanetExploded(PlanetBehaviour planet)
 {
     levels [currentLevel].GetComponent <LevelBehaviour> ().numPlanets--;
     if (planet.configuration.isPlayer)
     {
         GameOver();
     }
     else if (levels [currentLevel].GetComponent <LevelBehaviour> ().numPlanets == 0)
     {
         currentLevel++;
         LoadLevel();
     }
 }
    public IEnumerator SpawnDelay(PlanetBehaviour p, float timer, WarpBehviour crt, Text warpText, float warpTimer)
    {
        warpText.text = "Taking Off";
        anim.SetBool("Victory", true);
        yield return(new WaitForSeconds(timer));

        SpawnOnOtherPlanet(p);
        warpText.text = "Landing";
        yield return(new WaitForSeconds(timer));

        anim.SetBool("Victory", false);
        crt.inputEvents.SetActive(true);
        crt.warping   = false;
        enabled       = true;
        crt.coroutine = null;
    }
Exemple #10
0
        public static void GenerateGalaxy(Vector3 position, SunSystem sunSystem, Navigation navigation, ICollection <SpaceBody> outGeneratedObjects, AsyncProcessor asyncProcessor)
        {
            List <Obstacle> obstacles = new List <Obstacle>();

            var sun = ((SunBehaviour)GameObject.Instantiate(Resources.Load <SunBehaviour>(@"Environment\Sun"), position, Quaternion.identity));

            outGeneratedObjects.Add(sun);

            Color sunColor = new Color(.5f, .5f, .5f) + new Color(Random.value, Random.value, Random.value) * .5f;

            sun.Initialize(sunColor, sunSystem.sun.radius, asyncProcessor);

            sun.AddMyComponent <WorldlGravity>();
            var obstacle = sun.AddMyComponent <Obstacle>();

            obstacle.radius = sunSystem.sun.radius;
            obstacles.Add(obstacle);

            PlanetBehaviour planet = Resources.Load <PlanetBehaviour>(@"Environment\Planet");

            Vector3 axisRight = MyVector.RandomAxis3();
            Vector3 axisUp    = Vector3.Cross(sun.transform.up, axisRight);

            foreach (var pl in sunSystem.planets)
            {
                var p = GameObject.Instantiate(planet, sun.transform.position + axisRight * pl.axisOffset, Quaternion.identity);

                p.transform.RotateAround(sun.transform.position, axisUp, Random.value * 360);

                p.Initialize(sun, axisUp, pl.radius, asyncProcessor);

                if (Random.value < .1f)
                {
                    p.InitializeAtmosphere(sunColor, sun.transform.position, sunSystem.sun.radius, pl.radius, asyncProcessor);
                }

                p.AddMyComponent <WorldlGravity>();
                obstacle        = p.AddMyComponent <Obstacle>();
                obstacle.radius = pl.radius;
                obstacles.Add(obstacle);

                outGeneratedObjects.Add(p);
            }

            navigation.AddObstacles(obstacles);
        }
    public void SpawnOnOtherPlanet(PlanetBehaviour p)
    {
        var children    = p.gameObject.transform.GetComponentsInChildren <Transform>();
        var spawnPoints = new List <GameObject>();

        foreach (var child in children)
        {
            if (child.gameObject.tag != "SpawnPoint")
            {
                continue;
            }
            spawnPoints.Add(child.gameObject);
        }

        var tpLocation = spawnPoints[Random.Range(0, spawnPoints.Count)].transform.position;

        transform.position = tpLocation;
    }
Exemple #12
0
    public void Start()
    {
        if (PlanetModifiers.Planets.Count == 0)
        {
            PlanetModifiers.init();
        }

        planetDropDown = transform.Find("Planet_Dropdown").GetComponent <Dropdown>();
        populateDropdown();
        planetDropDown.onValueChanged.AddListener(delegate {
            changePlanetType(planetDropDown);
        });


        playGameBtn  = transform.Find("Next_Button").GetComponent <Button>();
        genPlanetBtn = transform.Find("Refresh_Button").GetComponent <Button>();
        playGameBtn.onClick.AddListener(PlayGame);
        genPlanetBtn.onClick.AddListener(GeneratePlanet);

        backBtn = transform.Find("Back_Button").GetComponent <Button>();
        backBtn.onClick.AddListener(Back);

        planetName = transform.Find("Input_Name").GetComponent <InputField>();

        scaleSlider       = transform.Find("Scale_Slider").GetComponent <Slider>();
        scaleSlider.value = PlanetInfo.info.planetScale;
        scaleSlider.onValueChanged.AddListener(delegate { valueChangeScale(); });

        speedSlider       = transform.Find("Speed_Slider").GetComponent <Slider>();
        speedSlider.value = PlanetInfo.info.rotationSpeed;
        speedSlider.onValueChanged.AddListener(delegate { valueChangeSpeed(); });

        messageBox = transform.Find("Message_Box").GetComponent <MessageOk>();
        pt         = transform.Find("Planet_Preview").GetComponentInChildren <PerlinNoiseTerrain>();
        pb         = transform.Find("Planet_Preview").GetComponentInChildren <PlanetBehaviour>();
    }
    // Update is called once per frame
    void Update()
    {
        for (int j = 0; j < nb; j++)
        {
            bodyGos [j].transform.position = (x [j] - x [centerObject]).v3();
            PlanetBehaviour pb = bodyGos [j].GetComponent <PlanetBehaviour> ();
            pb.x      = x [j];
            pb.center = x [centerObject];
            pb.v      = v [j];
            pb.mu     = (float)(m [0] * G);
        }

        //float timestep = Input.GetAxis ("Timestep");
        //threadDT *= (1.0f + 0.25f * timestep);


        for (int j = 0; j < nb; j++)
        {
            if (x[j].sqrMagnitude > 1000.0f || toBeRemoved[j] == true)
            {
                popObject(j);
                break;
            }
        }

        //Center();


        float timeAxis = Input.GetAxis("timeAxis");

        if (timeAxis != 0.0f)
        {
            modelDT *= (1.0f + Time.deltaTime * timeAxis * 1.0f);
            Debug.Log(modelDT);
        }

        if (Input.GetButtonDown("FocusUp"))
        {
            centerObject++;
            centerObject = centerObject % nb;
        }
        if (Input.GetButtonDown("FocusDown"))
        {
            centerObject--;
            centerObject = centerObject % nb;
        }


        //float dt;
        //if (threaded)
        //	dt = threadDT;
        //else
        //	dt = Time.fixedDeltaTime;

        GameObject.Find("TimeDisplay").GetComponent <Text> ().text  = string.Format("DT = {0:####.0000}  ", modelDT);
        GameObject.Find("FocusDisplay").GetComponent <Text> ().text = string.Format("Focus = {0}  ", centerObject);
        GameObject.Find("NDisplay").GetComponent <Text> ().text     = string.Format("N = {0}  ", nb);

        /*
         *      if (Input.GetButtonDown ("Cancel")) {
         *              // clear all trail
         *              for(int j=0;j<nb;j++) {
         *                      bodyGos[j].GetComponent<PlanetBehaviour>().Clear();
         *              }
         *      }
         */
    }
Exemple #14
0
 private void LevelChanged()
 {
     _planet = _solarSystemBehaviour.Planets.FirstOrDefault(planet => planet.Planet.PlanetType == PlanetType.Home);
     gameObject.SetActive(_planet);
     RefreshPosition();
 }