public override string GetExplanationUnfinalized(StatRequest req, ToStringNumberSense numberSense)
        {
            StringBuilder stringBuilder = new StringBuilder();

            var ammoSet = GunDef(req)?.GetCompProperties <CompProperties_AmmoUser>().ammoSet;

            if (AmmoUtility.IsAmmoSystemActive(ammoSet))
            {
                if (ammoSet != null)
                {
                    // Append various ammo stats
                    stringBuilder.AppendLine(ammoSet.LabelCap + "\n");
                    foreach (var cur in ammoSet.ammoTypes)
                    {
                        string label = string.IsNullOrEmpty(cur.ammo.ammoClass.LabelCapShort) ? (string)cur.ammo.ammoClass.LabelCap : cur.ammo.ammoClass.LabelCapShort;
                        stringBuilder.AppendLine(label + ":\n" + cur.projectile.GetProjectileReadout(Gun(req)));   //Is fine handling req.Thing == null, then it sets mult = 1
                    }
                }
            }
            else
            {
                var projectiles = GunDef(req)?.Verbs?.Where(x => x.defaultProjectile != null).Select(x => x.defaultProjectile);

                foreach (var cur in projectiles)
                {
                    stringBuilder.AppendLine(cur.LabelCap + ":\n" + cur.GetProjectileReadout(Gun(req)));
                }
            }

            return(stringBuilder.ToString().TrimEndNewlines());
        }
        public override IEnumerable <Dialog_InfoCard.Hyperlink> GetInfoCardHyperlinks(StatRequest statRequest)
        {
            var ammoSet = GunDef(statRequest)?.GetCompProperties <CompProperties_AmmoUser>().ammoSet;

            if (ammoSet != null && AmmoUtility.IsAmmoSystemActive(ammoSet))
            {
                foreach (var ammoType in ammoSet.ammoTypes)
                {
                    yield return(new Dialog_InfoCard.Hyperlink(ammoType.ammo));
                }
            }
        }
        public override string GetStatDrawEntryLabel(StatDef stat, float value, ToStringNumberSense numberSense, StatRequest optionalReq, bool finalized = true)
        {
            var ammoSet = GunDef(optionalReq)?.GetCompProperties <CompProperties_AmmoUser>()?.ammoSet;

            if (AmmoUtility.IsAmmoSystemActive(ammoSet))
            {
                return(ammoSet?.LabelCap);
            }
            else
            {
                var projectiles = GunDef(optionalReq)?.Verbs?.Where(x => x.defaultProjectile != null).Select(x => x.defaultProjectile);
                return(projectiles.First().LabelCap + (projectiles.Count() > 1 ? "(+" + (projectiles.Count() - 1) + ")" : ""));
            }
        }
        public override bool ShouldShowFor(StatRequest req)
        {
            if (!base.ShouldShowFor(req))
            {
                return(false);
            }

            AmmoSetDef ammoSet = GunDef(req)?.GetCompProperties <CompProperties_AmmoUser>()?.ammoSet;

            if (AmmoUtility.IsAmmoSystemActive(ammoSet))
            {
                return(ammoSet != null);
            }
            else
            {
                return(GunDef(req)?.Verbs?.Any(x => x.defaultProjectile != null) ?? false);
            }
        }
Пример #5
0
        public override string GetInspectString()
        {
            StringBuilder stringBuilder = new StringBuilder();
            string        inspectString = base.GetInspectString();

            if (!inspectString.NullOrEmpty())
            {
                stringBuilder.AppendLine(inspectString);
            }
            if (AmmoUtility.IsAmmoSystemActive(AmmoDef))
            {
                var count = AmmoDef?.Users.Count ?? 0;

                if (count >= 1)
                {
                    stringBuilder.AppendLine("CE_UsedBy".Translate() + ": " + AmmoDef.Users.FirstOrDefault().LabelCap + (AmmoDef.Users.Count > 1 ? " (+" + (AmmoDef.Users.Count - 1) + ")" : ""));
                }
            }

            return(stringBuilder.ToString().TrimEndNewlines());
        }
Пример #6
0
 private bool ShouldDisplayAmmoSet(AmmoSetDef ammoSet)
 {
     return(ammoSet != null && AmmoUtility.IsAmmoSystemActive(ammoSet));
 }