public override void MergeWith(Gizmo other) { base.MergeWith(other); VEF_Gizmo_SwitchRangedVerb switchRangedVerb = other as VEF_Gizmo_SwitchRangedVerb; if (switchRangedVerb == null) { Log.ErrorOnce("Tried to merge Command_VerbTarget with unexpected type", 73406263, false); return; } if (this.groupedVerbs == null) { this.groupedVerbs = new List <Verb>(); } this.groupedVerbs.Add(switchRangedVerb.verb); if (switchRangedVerb.groupedVerbs != null) { this.groupedVerbs.AddRange(switchRangedVerb.groupedVerbs); } List <object> selectedPawns = Find.Selector.SelectedObjectsListForReading.FindAll(o => o.GetType() == typeof(Pawn)); }
private Command_VerbTarget CreateVerbTargetCommand(Verb verb) { VEF_Gizmo_SwitchRangedVerb command_VerbTarget = new VEF_Gizmo_SwitchRangedVerb(Pawn) { tutorTag = "VerbTarget", hotKey = KeyBindingDefOf.Misc5, icon = BaseContent.BadTex, order = +1f, verb = verb }; if (verb != null && verb.IsStillUsableBy(Pawn)) { if (verb.caster.Faction != Faction.OfPlayer) { command_VerbTarget.Disable("CannotOrderNonControlled".Translate()); } else if (verb.CasterIsPawn) { // Disables Conditions if (verb.CasterPawn.story.WorkTagIsDisabled(WorkTags.Violent)) { command_VerbTarget.Disable("IsIncapableOfViolence".Translate(verb.CasterPawn.LabelShort, verb.CasterPawn)); } else if (!verb.CasterPawn.drafter.Drafted) { command_VerbTarget.Disable("IsNotDrafted".Translate(verb.CasterPawn.LabelShort, verb.CasterPawn)); } // Visible Conditions if (verb == null || (rangedVerbs.Count == 1 && verb.EquipmentSource != null && verb.EquipmentSource == verb.CasterPawn.equipment.Primary) || (verb.CasterPawn.story.WorkTagIsDisabled(WorkTags.Violent) && !verb.CasterPawn.Drafted) || VEF_Comp_Pawn_RangedVerbs.ShouldUseSquadAttackGizmo()) { this.visible = false; } else { this.visible = true; } //Description, Icon and Label Conditions Texture2D tempIcon = BaseContent.BadTex; if (CurRangedVerb.EquipmentSource != null) { command_VerbTarget.defaultDesc = (verb.verbProps.label == verb.EquipmentSource.def.label) ? verb.EquipmentSource.LabelCap + ": " + verb.EquipmentSource.def.description.CapitalizeFirst() : verb.verbProps.label + " :: " + verb.EquipmentSource.LabelCap + ": " + verb.EquipmentSource.def.description.CapitalizeFirst(); tempIcon = CurRangedVerb.EquipmentSource.def.uiIcon; if (tempIcon != BaseContent.BadTex || tempIcon != null) { command_VerbTarget.icon = tempIcon; } } else if (verb.verbProps.LaunchesProjectile) { if (verb.HediffCompSource != null) { command_VerbTarget.defaultDesc = (verb.verbProps.label == verb.HediffSource.def.label) ? verb.HediffSource.def.LabelCap + ": " + verb.HediffSource.def.description.CapitalizeFirst() : verb.verbProps.label + " :: " + verb.HediffSource.LabelCap + ": " + verb.HediffSource.def.description.CapitalizeFirst(); } else { command_VerbTarget.defaultDesc = (verb.verbProps.label == verb.CasterPawn.def.label) ? "Biological weapon of " + verb.CasterPawn.def.label + ": " + verb.CasterPawn.def.description.CapitalizeFirst() : CurRangedVerb.verbProps.label.CapitalizeFirst() + " :: Biological weapon of " + verb.CasterPawn.def.label + ": " + verb.CasterPawn.def.description.CapitalizeFirst(); } tempIcon = verb.GetProjectile().uiIcon; if (tempIcon != null) { command_VerbTarget.icon = tempIcon; } } else { if (verb.HediffSource != null) { command_VerbTarget.defaultDesc = (verb.verbProps.label == verb.HediffSource.def.label) ? verb.HediffSource.def.LabelCap + ": " + verb.HediffSource.def.description.CapitalizeFirst() : verb.verbProps.label + " :: " + verb.HediffSource.LabelCap + ": " + verb.HediffSource.def.description.CapitalizeFirst(); if (verb.HediffSource.def.spawnThingOnRemoved.uiIcon != null) { tempIcon = verb.HediffSource.def.spawnThingOnRemoved.uiIcon; } } else { command_VerbTarget.defaultDesc = (verb.verbProps.label == verb.CasterPawn.def.label) ? "Biological weapon of " + verb.CasterPawn.def.label + ": " + verb.CasterPawn.def.description.CapitalizeFirst() : CurRangedVerb.verbProps.label.CapitalizeFirst() + " :: Biological weapon of " + verb.CasterPawn.def.label + ": " + verb.CasterPawn.def.description.CapitalizeFirst(); if (verb.CasterIsPawn && verb.CasterPawn.def.uiIcon != null) { tempIcon = verb.CasterPawn.def.uiIcon; } } if (tempIcon != null) { command_VerbTarget.icon = tempIcon; } } } } else { this.visible = false; command_VerbTarget.Disable(); } return(command_VerbTarget); }