Пример #1
0
    public void ResetGalaxy()
    {
        List <Star> starList = starToObjectMap.Keys.ToList <Star>();

        starToObjectMap = new Dictionary <Star, GameObject>();

        for (int i = 0; i < starList.Count; i++)
        {
            Star       star   = starList[i];
            GameObject starGO = SpaceObjects.CreateSphereObject(star.starName, star.starPosition, this.transform);
            SetStarMaterial(starGO, star);
            starToObjectMap.Add(star, starGO);
        }

        GalaxyInstance.galaxyView = true;
    }
    // This method creates the solar system view after a star is clicked on in the galaxy view
    public void CreateSolarSystem(Star star)
    {
        GameObject starGO = GameObject.CreatePrimitive(PrimitiveType.Sphere);

        starGO.transform.position = Vector3.zero;
        starGO.name = star.starName;
        starGO.transform.SetParent(this.transform);

        for (int i = 0; i < star.planetList.Count; i++)
        {
            Planet planet = star.planetList[i];

            Vector3 planetPos = PositionMath.PlanetPosition(i);

            SpaceObjects.CreateSphereObject(planet.planetName, planetPos, this.transform);
        }
    }
Пример #3
0
        public void CreateSolarSystem(Star starData)
        {
            CameraController.instance.SolarSystemCameraSettings();

            SpaceObjects.CreateSphereObject(starData.starName, Vector3.zero, transform);

            for (int i = 0; i < starData.planetList.Count; i++)
            {
                Planet planet = starData.planetList[i];

                Vector3 planetPos = PositionMath.PlanetPosition(i);

                SpaceObjects.CreateSphereObject(planet.planetName, planetPos, this.transform);

                GameObject orbit = SpaceObjects.CreateOrbitPath(orbitSpritePrefab, planet.planetName + " Orbit", i + 1, transform);
            }

            galaxyViewButton.interactable = true;
        }
    // This method creates the solar system view after a star is clicked on in the galaxy view
    public void CreateSolarSystem(Star star)
    {
        Random.InitState(Galaxy.GalaxyInstance.seedNumber);

        Galaxy.GalaxyInstance.galaxyView = false;

        SpaceObjects.CreateSphereObject(star.starName, Vector3.zero, this.transform);

        for (int i = 0; i < star.planetList.Count; i++)
        {
            Planet planet = star.planetList[i];

            Vector3 planetPos = PositionMath.PlanetPosition(i);

            SpaceObjects.CreateSphereObject(planet.planetName, planetPos, this.transform);
        }

        galaxyViewButton.interactable = true;
    }
Пример #5
0
    private static void MoveShot()
    {
        List <SpaceObjects> newList = new List <SpaceObjects>();

        for (int i = 0; i < shotsFired.Count; i++)
        {
            SpaceObjects currentShot = shotsFired[i];
            SpaceObjects newShot     = new SpaceObjects();
            newShot.x      = currentShot.x;
            newShot.y      = currentShot.y - 1;
            newShot.symbol = currentShot.symbol;
            newShot.color  = currentShot.color;

            if (newShot.y >= 0)
            {
                newList.Add(newShot);
            }
        }
        shotsFired = newList;
    }
    // This method creates the solar system view after a star is clicked on in the galaxy view
    public void CreateSolarSystem(Star star)
    {
        CameraController.cameraController.ResetCamera();

        Galaxy.GalaxyInstance.selectionIcon.SetActive(false);

        Random.InitState(Galaxy.GalaxyInstance.seedNumber);

        Galaxy.GalaxyInstance.galaxyView = false;

        GameObject starGO = SpaceObjects.CreateSphereObject(star.starName, Vector3.zero, this.transform);

        if (star.starOwned == true)
        {
            starGO.GetComponent <MeshRenderer>().material = starOwnedMaterial;
        }

        for (int i = 0; i < star.planetList.Count; i++)
        {
            Planet planet = star.planetList[i];

            Vector3 planetPos = PositionMath.PlanetPosition(i);

            GameObject planetGO = SpaceObjects.CreateSphereObject(planet.planetName, planetPos, this.transform);

            if (planet.planetColonised == true)
            {
                planetGO.GetComponent <MeshRenderer>().material = planetColonisedMaterial;
            }

            GameObject orbit = SpaceObjects.CreateOrbitPath(OrbitSpritePrefab, planet.planetName + " Orbit", i + 1, this.transform);
        }

        galaxyViewButton.interactable = true;
        buildShipButton.interactable  = true;

        storeMaxZoom = CameraController.cameraController.maxZoom;
        CameraController.cameraController.maxZoom = solarSystemZoom;

        fleetManager.EnableFleets();
    }
Пример #7
0
    public void CreateSolarSystem(Star star)
    {
        CameraController.Instance.ResetCamera();
        Random.InitState(Galaxy.Instance.seedNumber);
        Galaxy.Instance.GalaxyView = false;
        Galaxy.Instance.PathView   = false;
        var mainStar = SpaceObjects.CreateSphereObject(star.StarName, Vector3.zero, star.StarSize, this.transform);

        mainStar.GetComponent <Renderer>().material.color = SpaceObjects.StarColors[star.ColorIndex];
        for (int i = 0; i < star.NumberOfPlanets; i++)
        {
            PlanetaryObject planet = star.PlanetList[i];
            if (planet.PlanetType != "Empty")
            {
                var position = PositionMath.PlanetPosition(i);

                SpaceObjects.CreateSphereObject(planet.PlanetName, position, planet.PlanetSize, this.transform);
                //var orbit = SpaceObjects.CreateOrbitPath(OrbitSpritePrefab, planet.PlanetName + "Orbit", i + 1, this.transform);
                var orbit  = SpaceObjects.CreateOrbitRing(OrbitCirclePrefab, "Orbit " + i, i + 1, this.transform);
                var circle = orbit.GetComponent <Circle>();
                circle.SetupCircle();
                if (i < 3)
                {
                    circle.SetColor(Color.yellow, Color.yellow);
                }
                else if (i == 3)
                {
                    circle.SetColor(Color.green, Color.green);
                }
                else
                {
                    circle.SetColor(Color.blue, Color.blue);
                }
            }
        }

        galaxyViewButton.interactable = true;
        pathViewButton.interactable   = false;
        SystemDetailsText.text        = star.Details(2);
    }
Пример #8
0
    void CreateSolarSystem(Star star)
    {
        Random.InitState(Galaxy.GalaxyInstance.seedNumber);

        Galaxy.GalaxyInstance.galaxyView = false;

        SpaceObjects.CreateSphereObject(star.starName, Vector3.zero, this.transform);

        for (int i = 0; i < star.planetList.Count; i++)
        {
            Planet planet = star.planetList[i];

            float distance = (i + 1) * 5;
            float angle    = Random.Range(0, 2 * Mathf.PI);

            Vector3 planetPos = new Vector3(distance * Mathf.Cos(angle), 0, distance * Mathf.Sin(angle));

            SpaceObjects.CreateSphereObject(planet.planetName, planetPos, this.transform);
        }

        galaxyViewButton.interactable = true;
    }
Пример #9
0
    // This method creates a galaxy of stars and planet information.
    public void CreateGalaxy()
    {
        starToObjectMap = new Dictionary <Star, GameObject>();

        Random.InitState(seedNumber);

        galaxyView = true;

        int failCount = 0;

        for (int i = 0; i < numberOfStars; i++)
        {
            Star starData = new Star("Star" + i, Random.Range(1, 10));
            //Debug.Log("Created " + starData.starName + " with " + starData.numberOfPlanets + " planets");
            CreatePlanetData(starData);

            Vector3 cartPosition = PositionMath.RandomPosition(minimumRadius, maximumRadius);

            Collider[] positionCollider = Physics.OverlapSphere(cartPosition, minDistBetweenStars);

            if (positionCollider.Length == 0)
            {
                GameObject starGO = SpaceObjects.CreateSphereObject(starData.starName, cartPosition, this.transform);
                starToObjectMap.Add(starData, starGO);
                failCount = 0;
            }
            else
            {
                i--;
                failCount++;
            }

            if (failCount > numberOfStars)
            {
                Debug.LogError("Could not fit all the stars in the galaxy. Distance between stars too big!");
                break;
            }
        }
    }
Пример #10
0
    private static void MoveEnemyShips()
    {
        int chance = randomGenerator.Next(1, 101);

        if (chance < 15)
        {
            List <SpaceObjects> newList = new List <SpaceObjects>();
            for (int i = 0; i < enemyShips.Count; i++)
            {
                SpaceObjects currentEnemy = enemyShips[i];
                SpaceObjects newEnemy     = new SpaceObjects();
                newEnemy.x      = currentEnemy.x;
                newEnemy.y      = currentEnemy.y + 1;
                newEnemy.symbol = currentEnemy.symbol;
                newEnemy.color  = currentEnemy.color;

                if (newEnemy.y == userShip.y)
                {
                    livesCount--;
                    lostGame = true;
                }

                if (newEnemy.y < Console.WindowHeight)
                {
                    newList.Add(newEnemy);
                }


                if (livesCount <= 0)
                {
                    PrintStringOnPosition(8, 10, "GAME OVER!!!", ConsoleColor.Red);
                    PrintStringOnPosition(8, 12, "Press [enter] to exit", ConsoleColor.Red);
                    Console.ReadLine();
                    Environment.Exit(0);
                }
            }
            enemyShips = newList;
        }
    }
Пример #11
0
    // This method creates the solar system view after a star is clicked on in the galaxy view
    public void CreateSolarSystem(Star star)
    {
        CameraController.cameraController.ResetCamera();

        Random.InitState(Galaxy.GalaxyInstance.seedNumber);

        Galaxy.GalaxyInstance.galaxyView = false;

        SpaceObjects.CreateSphereObject(star.starName, Vector3.zero, this.transform);

        for (int i = 0; i < star.planetList.Count; i++)
        {
            Planet planet = star.planetList[i];

            Vector3 planetPos = PositionMath.PlanetPosition(i);

            SpaceObjects.CreateSphereObject(planet.planetName, planetPos, this.transform);

            GameObject orbit = SpaceObjects.CreateOrbitPath(OrbitSpritePrefab, planet.planetName + " Orbit", i + 1, this.transform);
        }

        galaxyViewButton.interactable = true;
    }
Пример #12
0
        public override string ToString()
        {
            var largestObject = SpaceObjects.Largest();

            // If sector doesn't have space objects, or the star system is unexplored, early return just the sector name
            if (largestObject == null || StarSystem == null)
            {
                return(Name);
            }

            // From here on, largestObject and StarSystem are defined

            // Don't display the star system name, if the space object's name contains it, to avoid repetition
            bool objectNameContainsStarName = Regex.IsMatch(largestObject.Name, string.Format(@"\b{0}\b", Regex.Escape(StarSystem.Name ?? "(unexplored)")));

            if (objectNameContainsStarName)
            {
                return(largestObject + " (" + Coordinates.X + ", " + Coordinates.Y + ")");
            }
            else
            {
                return(largestObject + " at " + Name);
            }
        }
Пример #13
0
    public void CreateSpiralGalaxy()
    {
        Random.InitState(seedNumber);

        float starsPerArm        = numberOfStars / numberOfArms;
        int   starsPerArmRounded = Mathf.RoundToInt(starsPerArm);
        int   difference         = numberOfStars - (starsPerArmRounded * numberOfArms);

        for (int i = 0; i < numberOfArms; i++)
        {
            for (int j = 0; j < starsPerArmRounded; j++)
            {
                Star  starData  = new Star("Star " + (j + (starsPerArm * i)), Random.Range(1, 10));
                float armAngle  = (((Mathf.PI * 2f) / numberOfArms) * i);
                float starAngle = (((Mathf.PI * 2f) / starsPerArmRounded) * j);

                float angle    = PositionMath.SpiralAngle(armAngle, starAngle) + Random.Range(-Mathf.PI / (2 * numberOfArms), Mathf.PI / (2 * numberOfArms));
                float distance = (4 * numberOfArms) * Mathf.Sqrt(j + 1) + minimumRadius;

                Vector3 cartPos = PositionMath.PolarToCart(distance, angle);
                SpaceObjects.CreateSphereObject(starData.starName, cartPos, this.transform);
            }
        }
    }
Пример #14
0
 public IEnumerable <IAbilityObject> GetContainedAbilityObjects(Empire emp)
 {
     return(SpaceObjects.Where(sobj => sobj?.Owner == emp).OfType <IAbilityObject>());
 }
Пример #15
0
 private void Start()
 {
     spaceController = SpaceController.Instance;
     thisObject      = GetComponent <SpaceObjects>();
 }
Пример #16
0
    public void CreateSpiralGalaxy()
    {
        float percent              = percentageStarsCentre / 100f;
        float starsInCentre        = percent * numberOfStars;
        int   starsInCentreRounded = Mathf.RoundToInt(starsInCentre);

        float starsPerArm        = (numberOfStars - starsInCentreRounded) / numberOfArms;
        int   starsPerArmRounded = Mathf.RoundToInt(starsPerArm);
        int   difference         = numberOfStars - (starsPerArmRounded * numberOfArms) - starsInCentreRounded;

        int starCount = 0;

        // Spawn Arms
        for (int i = 0; i < numberOfArms; i++)
        {
            for (int j = 0; j < starsPerArmRounded; j++)
            {
                Star starData = new Star("Star " + starCount, Random.Range(1, 10));
                starCount++;

                float armAngle  = (((Mathf.PI * 2f) / numberOfArms) * i);
                float starAngle = (((Mathf.PI * 2f) / starsPerArmRounded) * j);

                float angle    = PositionMath.SpiralAngle(armAngle, starAngle) + Random.Range(-Mathf.PI / (2 * numberOfArms), Mathf.PI / (2 * numberOfArms));
                float distance = (6 * numberOfArms) * Mathf.Sqrt(j + 1) + minimumRadius;

                Vector3 cartPosition = PositionMath.PolarToCart(distance, angle);

                int failCount = 0;

                bool collision = PositionMath.CheckCollisions(minDistBetweenStars, cartPosition);

                if (collision != true)
                {
                    GameObject starGO = SpaceObjects.CreateSphereObject(starData.starName, cartPosition, this.transform);
                    failCount = 0;
                }
                else
                {
                    j--;
                    failCount++;
                }
                if (failCount > numberOfStars)
                {
                    break;
                }
            }
        }

        // Spawn Centre
        for (int k = 0; k < starsInCentreRounded + difference; k++)
        {
            Star starData = new Star("Star " + starCount, Random.Range(1, 10));
            starCount++;
            Vector3 cartPosition = PositionMath.RandomPosition(minimumRadius, minimumRadius + (numberOfArms * 20));

            bool collision = PositionMath.CheckCollisions(minDistBetweenStars, cartPosition);

            int failCount = 0;

            if (collision != true)
            {
                GameObject starGO = SpaceObjects.CreateSphereObject(starData.starName, cartPosition, this.transform);
                failCount = 0;
            }
            else
            {
                k--;
                failCount++;
            }
            if (failCount > numberOfStars)
            {
                break;
            }
        }
    }
Пример #17
0
 public void AddSpaceObject(SpaceObjects _obj)
 {
     objects.Add(_obj);
 }
    void CreateStarObject(Star starData, Vector3 cartPosition)
    {
        GameObject starGO = SpaceObjects.CreateSphereObject(starData.starName, cartPosition, this.transform);

        starToObjectMap.Add(starData, starGO);
    }
Пример #19
0
 /// <summary>
 /// Finds all space objects of a type.
 /// </summary>
 /// <typeparam name="T"></typeparam>
 /// <returns></returns>
 public IEnumerable <T> FindSpaceObjects <T>()
 {
     return(SpaceObjects.OfType <T>());
 }