Exemplo n.º 1
0
        private void LateUpdate()
        {
            if (!FlightGlobals.ready)
            {
                return;
            }

            if (FlightGlobals.ActiveVessel == null)
            {
                return;
            }

            if (FlightGlobals.ActiveVessel.isEVA)
            {
                return;
            }

            if (reload)
            {
                reload = false;

                var crew = KerbalPortraitGallery.Instance.Portraits;

                for (int i = 0; i < crew.Count; i++)
                {
                    KerbalPortrait p = crew[i];

                    if (p == null)
                    {
                        continue;
                    }

                    Kerbal k = p.crewMember;

                    if (k == null)
                    {
                        return;
                    }

                    if (currentCrew.Contains(p.crewMemberName))
                    {
                        continue;
                    }

                    if (k.state == Kerbal.States.DEAD)
                    {
                        continue;
                    }

                    KerbalTrait K = new KerbalTrait(k, p);

                    if (K == null)
                    {
                        continue;
                    }

                    currentCrew.Add(p.crewMemberName, K);
                }
            }
        }
Exemplo n.º 2
0
        private void Update()
        {
            if (!transferButton && !hoverHighlight)
            {
                return;
            }

            var enumerator = currentCrew.GetDictEnumerator();

            while (enumerator.MoveNext())
            {
                KerbalTrait k = enumerator.Current.Value;

                if (k == null)
                {
                    continue;
                }

                if (k.Portrait.hoverArea.Hover)
                {
                    if (extendedTooltips)
                    {
                        k.Portrait.tooltip.descriptionString = k.CachedTooltip + extraTooltip(k);
                    }

                    if (transferButton)
                    {
                        Vessel v = k.Crew.InPart.vessel;

                        if (v.GetCrewCapacity() > v.GetCrewCount())
                        {
                            if (!k.TransferButton.gameObject.activeSelf)
                            {
                                k.TransferButton.gameObject.SetActive(true);
                            }
                        }
                        else if (k.TransferButton.gameObject.activeSelf)
                        {
                            k.TransferButton.gameObject.SetActive(false);
                        }
                    }

                    k.setHighlight(hoverHighlight);
                }
                else
                {
                    k.setHighlight(false);
                }
            }
        }
Exemplo n.º 3
0
        private string extraTooltip(KerbalTrait k)
        {
            StringBuilder sb = StringBuilderCache.Acquire();

            if (k.ProtoCrew.experienceTrait.Config.Name == "Tourist")
            {
                sb.AppendLine();
                sb.AppendLine();
                sb.AppendFormat("<b>{0}</b>", Localizer.Format("#PORTRAIT_STATS_UI_ITINERARY", k.ProtoCrew.name));
                if (k.TouristParams.Count > 0)
                {
                    for (int i = 0; i < k.TouristParams.Count; i++)
                    {
                        sb.AppendLine();
                        sb.Append(k.TouristParams[i]);
                    }
                }
                else
                {
                    sb.AppendLine();
                    sb.Append(go_home);
                }
                sb.AppendLine();
                sb.AppendLine();
                sb.Append(k.Crew.InPart.partInfo.title);
            }
            else
            {
                sb.AppendLine();
                sb.AppendLine();
                sb.AppendFormat("<b>{0}</b> {1:P0} <b>{2}</b> {3:P0}", courage, k.ProtoCrew.courage, stupidity, k.ProtoCrew.stupidity);

                bool vet = k.ProtoCrew.veteran;
                bool bad = k.ProtoCrew.isBadass;

                if (vet || bad)
                {
                    sb.AppendLine();

                    if (vet)
                    {
                        sb.Append(veteran);
                    }

                    if (bad)
                    {
                        if (vet)
                        {
                            sb.AppendFormat(" - {0}", badass);
                        }
                        else
                        {
                            sb.Append(badass);
                        }
                    }
                }

                sb.AppendLine();
                sb.AppendLine();
                sb.Append(k.Crew.InPart.partInfo.title);
                sb.AppendLine();
                sb.AppendLine();
                if (PortraitStats.Instance.careerMode)
                {
                    sb.AppendFormat("<b>{0}</b> {1:F2}/{2}", experience, k.ProtoCrew.experience, KerbalRoster.GetExperienceLevelRequirement(k.ProtoCrew.experienceLevel));
                }

                string log = KerbalRoster.GenerateExperienceLog(k.ProtoCrew.flightLog);
                if (!string.IsNullOrEmpty(log))
                {
                    sb.AppendLine();
                    sb.AppendLine();
                    sb.AppendFormat("<b>{0}</b>", current_flight);
                    sb.AppendLine();
                    sb.Append(log);
                }
            }

            return(sb.ToStringAndRelease());
        }