Пример #1
0
    public void RefreshScreen()
    {
        Flight flight = currFlight;

        World.Sys destSys = flight.destLocation.sys;

        string systemString = destSys.name;

        systemText.SetText(systemString);

        if (destSys.cellCoords == World.GetLocation().sys.cellCoords)
        {
            infoSubScreen.SetActive(false);
            currVisSubScreen.SetActive(true);
        }
        else
        {
            infoSubScreen.SetActive(true);
            currVisSubScreen.SetActive(false);


            string distString = flight.details.distanceSU + " system units.";
            distText.SetText(distString);

            string timeString = flight.details.time + " total.";
            timeText.SetText(timeString);

            string securityString = destSys.FormatSec() + " " + SecurityText(destSys.security);
            securityText.SetText(securityString);

            string fuelTopString = Mathf.Round(Ship.fuel) + "/" + Ship.maxFuel;
            fuelTopText.SetText(fuelTopString);

            string fuelBotString = "-" + flight.details.fuel;
            fuelBotText.SetText(fuelBotString);

            string fuelStatusString;
            Color  fuelStatusColor;

            if (Ship.fuel >= flight.fuel)
            {
                fuelStatusString  = "OK";
                fuelStatusColor   = Color.green;
                fuelBotText.color = new Color(1, 1, 1, 0.5f);
            }
            else
            {
                fuelStatusString  = "BAD";
                fuelStatusColor   = Color.red;
                fuelBotText.color = new Color(1, 0, 0, 0.5f);
            }

            fuelStatusText.SetText(fuelStatusString);
            fuelStatusText.color    = fuelStatusColor;
            fuelStatusOutline.color = fuelStatusColor;
            fuelStatusColor.a       = 0.3f;
            fuelStatusBg.color      = fuelStatusColor;
        }
    }
Пример #2
0
    public void DrawVisualisations(World.Sys sys)
    {
        Vector2 canvasDiam = canvasRect.sizeDelta;

        star    = new VisImage();
        planets = new List <VisImage>();

        #region Init
        //Star
        World.Star starObj = sys.star;

        star.type   = starObj.type;
        star.id     = starObj.id;
        star.color  = starObj.visColor;
        star.sprite = starSprite;
        star.size   = starObj.visSize;

        //Planets
        foreach (World.Planet planet in sys.planets)
        {
            Sprite sprite;
            if (!planet.field)
            {
                sprite = planetSprite;
            }
            else
            {
                sprite = fieldSprite;
            }

            VisImage planetVis = new VisImage
            {
                type   = planet.type,
                id     = planet.id,
                color  = planet.visColor,
                sprite = sprite,
                field  = planet.field
            };

            planets.Add(planetVis);
        }
        #endregion

        #region Positions
        float paddingFromStar = (star.size / 2) * 1.5f;

        star.posX = 0;

        float planetsTotalWidth = 0;
        foreach (VisImage planet in planets)
        {
            planetsTotalWidth += planet.size;
        }
        float canvasTotal = (canvasDiam.x / 2) - paddingFromStar;

        float planetsTotalSpace = canvasTotal - planetsTotalWidth;

        float planetsSpace = planetsTotalSpace / planets.Count;


        for (int i = 0; i <= planets.Count - 1; i++)
        {
            VisImage planet = planets[i];

            float virtPosX = ((planet.size + planetsSpace) * i) + paddingFromStar;
            planet.virtPosX = virtPosX;

            if (virtPosX > canvasDiam.x / 2)
            {
                virtPosX = (canvasDiam.x / 2) - planet.size;
            }

            if (!planet.field)
            {
                planet.posX = virtPosX;
            }
            else
            {
                planet.posX = 0;
            }
        }

        #endregion

        #region Sizes
        for (int i = 0; i <= planets.Count - 1; i++)
        {
            VisImage     planetVis = planets[i];
            World.Planet planet    = World.GetLocation().sys.planets[i];

            if (!planetVis.field)
            {
                planetVis.size = planet.visSize;
            }
            else
            {
                planetVis.size = planetVis.virtPosX * 2;
            }
        }
        #endregion

        #region Render
        DrawVisualisation(star);

        foreach (VisImage planet in planets)
        {
            DrawVisualisation(planet);

            if (!planet.field)
            {
                DrawOrbit(planet);
            }

            //Set a random orbit point
            planet.rect.RotateAround(star.rect.position, Vector3.right, Random.Range(0, 360));
        }
        #endregion

        displaying = true;
    }