Ejemplo n.º 1
0
        private void DrawFlightWindow(int id)
        {
            if (GUI.Button(new Rect(flightWindowRect.width - 28, 2, 25, 16), "X"))
            {
                needToShowFlight = false;
            }


            List <LaunchEvent> launches = EventProcessor.Instance.launches.GetRange(0, EventProcessor.Instance.launches.Count);

            /*if (reverseFlights)
            *       launches.Reverse();*/
            LaunchEvent launch = launches[flightIdToShow];

            if (!(launch.IsMissionFinished() || launch.GetLastEvent() is EndFlightEvent))
            {
                if (GUI.Button(new Rect(5, flightWindowRect.height - 22, 100, 20), "Finish mission"))
                {
                    EventProcessor.Instance.OnFinishMission(launch);
                }
            }
            Rect     captionRect = new Rect(0, 2, flightWindowRect.width, 16);
            string   txt         = "Flight №" + launch.posInTable + " - " + launch.shipName;
            GUIStyle currentStyle;

            if (FlightGlobals.ActiveVessel != null && FlightGlobals.ActiveVessel.id.ToString() == launch.shipID)
            {
                currentStyle = activeStyle;
            }
            else if (launch.IsDestroyed())
            {
                currentStyle = destroyedStyle;
            }
            else if (launch.GetEndDate() != -1)
            {
                currentStyle = endedStyle;
            }
            else
            {
                currentStyle = proceedingStyle;
            }
            currentStyle.fontStyle = FontStyle.Bold;
            currentStyle.alignment = TextAnchor.MiddleCenter;
            GUI.Label(captionRect, txt, currentStyle);
            currentStyle.fontStyle = FontStyle.Normal;
            currentStyle.alignment = TextAnchor.MiddleLeft;



            GUILayout.BeginHorizontal();
            GUILayout.BeginVertical(GUILayout.Width(100));
            GUILayout.Label("Vessel", boldtext);
            GUILayout.Label("Launch date", boldtext);
            GUILayout.Label("Launch mass", boldtext);
            GUILayout.Label("Cost", boldtext);
            hintContent.text    = "Close Orbit/SOI masses";
            hintContent.tooltip = "Masses";
            GUILayout.Label(hintContent, boldtext);
            GUILayout.Label("Docked", boldtext);
            GUILayout.Label("EVAs", boldtext);
            GUILayout.Label("Max speed", boldtext);
            GUILayout.Label("Max Gee", boldtext);
            hintContent.text    = "Landings";
            hintContent.tooltip = "Biomes";
            GUILayout.Label(hintContent, boldtext);
            GUILayout.Label("End date", boldtext);
            GUILayout.Label("Duration", boldtext);
            GUILayout.Label("Final mass", boldtext);
            hintContent.text    = "Science points";
            hintContent.tooltip = "Science points";
            GUILayout.Label(hintContent, boldtext);
            GUILayout.EndVertical();

            GUILayout.BeginVertical(GUILayout.Width(400));
            GUILayout.Label(launch.shipName);
            GUILayout.Label(Utils.TicksToDate(launch.time));
            GUILayout.Label(Utils.CorrectNumber(launch.launchMass.ToString(), 3));
            GUILayout.Label(Utils.CorrectNumber(launch.launchCost.ToString()));
            float  massOnOrbit     = launch.GetMassOnOrbit();
            string massOnOrbitText = "-";

            if (massOnOrbit > 0)
            {
                massOnOrbitText = massOnOrbit.ToString();
            }
            hintContent.text    = Utils.CorrectNumber(massOnOrbitText);
            hintContent.tooltip = "Masses";
            GUILayout.Label(hintContent);
            GUILayout.Label(launch.GetDockings().ToString());
            GUILayout.Label(launch.GetEvas().ToString());
            GUILayout.Label(Utils.CorrectNumber(launch.maxSpeed.ToString()) + "m/s");
            GUILayout.Label(Utils.CorrectNumber(launch.maxGee.ToString()) + " G");
            hintContent.text    = launch.GetLandingsCount().ToString();
            hintContent.tooltip = "Biomes";
            GUILayout.Label(hintContent);

            long endDate = launch.GetEndDate();

            if (endDate != -1)
            {
                GUILayout.Label(Utils.TicksToDate(endDate));
                GUILayout.Label(Utils.TicksToTotalTime(launch.GetTotalFlightTime()));
            }
            else
            {
                GUILayout.Label("-");
                GUILayout.Label(Utils.TicksToTotalTime(launch.GetTotalFlightTime()));
            }
            GUILayout.Label(Utils.CorrectNumber(launch.GetFinalMass().ToString(), 3));
            float  sciencePoints     = launch.GetSciencePoints();
            string sciencePointsText = "-";

            if (sciencePoints > 0)
            {
                sciencePointsText = Utils.CorrectNumber(sciencePoints.ToString());
            }
            hintContent.text    = sciencePointsText;
            hintContent.tooltip = "Science points";
            GUILayout.Label(sciencePointsText);
            GUILayout.EndVertical();

            GUILayout.BeginVertical();
            GUILayout.Box("SOI changes (dates, SOI names)");
            scrollViewVector1 = GUILayout.BeginScrollView(scrollViewVector1, GUILayout.Height((flightWindowRect.height - 130) / 3));
            List <FlightEvent> sois = launch.GetSOIChanges().ToArray().ToList <FlightEvent>();

            sois.AddRange(launch.GetLandings());
            sois.Sort();
            foreach (FlightEvent record in sois)
            {
                if (record is SOIChangeEvent)
                {
                    GUILayout.Label(Utils.TicksToDate(record.time) + " \t " + (record as SOIChangeEvent).soiName.ToString());
                }
                else
                {
                    GUILayout.Label(Utils.TicksToDate(record.time) + " \t Land:" + (record as LandingEvent).mainBodyName.ToString()
                                    + ":" + (record as LandingEvent).biome.ToString());
                }
            }
            GUILayout.EndScrollView();
            GUILayout.Box("Initial crew");
            scrollViewVector2 = GUILayout.BeginScrollView(scrollViewVector2, GUILayout.Height((flightWindowRect.height - 130) / 3));
            foreach (string crewMember in launch.crewMembers)
            {
                GUILayout.Label(crewMember);
            }
            GUILayout.EndScrollView();
            GUILayout.Box("Final crew");
            scrollViewVector3 = GUILayout.BeginScrollView(scrollViewVector3, GUILayout.Height((flightWindowRect.height - 130) / 3));
            foreach (string crewMember in launch.GetFinalCrew())
            {
                GUILayout.Label(crewMember);
            }
            GUILayout.EndScrollView();

            GUILayout.EndVertical();
            GUILayout.BeginVertical();
            GUILayout.EndVertical();
            GUILayout.EndHorizontal();

            ProcessPopup();
            GUI.DragWindow(new Rect(0, 0, 10000, 20));
        }