public void handleInteraction(SidearmsListInteraction interaction, Event ev) { CompSidearmMemory pawnMemory = CompSidearmMemory.GetMemoryCompForPawn(parent); if (pawnMemory == null) { return; } var dropMode = parent.Drafted ? DroppingModeEnum.Combat : DroppingModeEnum.Calm; if (ev.button == LEFT_CLICK) { switch (interaction) { case SidearmsListInteraction.SelectorRanged: PlayerKnowledgeDatabase.KnowledgeDemonstrated(SidearmsDefOf.Concept_SimpleSidearmsPreference, KnowledgeAmount.SpecificInteraction); PlayerKnowledgeDatabase.KnowledgeDemonstrated(SidearmsDefOf.Concept_SimpleSidearmsBasic, KnowledgeAmount.SmallInteraction); pawnMemory.primaryWeaponMode = PrimaryWeaponMode.Ranged; break; case SidearmsListInteraction.SelectorSkill: PlayerKnowledgeDatabase.KnowledgeDemonstrated(SidearmsDefOf.Concept_SimpleSidearmsPreference, KnowledgeAmount.SpecificInteraction); PlayerKnowledgeDatabase.KnowledgeDemonstrated(SidearmsDefOf.Concept_SimpleSidearmsBasic, KnowledgeAmount.SmallInteraction); pawnMemory.primaryWeaponMode = PrimaryWeaponMode.BySkill; break; case SidearmsListInteraction.SelectorMelee: PlayerKnowledgeDatabase.KnowledgeDemonstrated(SidearmsDefOf.Concept_SimpleSidearmsPreference, KnowledgeAmount.SpecificInteraction); PlayerKnowledgeDatabase.KnowledgeDemonstrated(SidearmsDefOf.Concept_SimpleSidearmsBasic, KnowledgeAmount.SmallInteraction); pawnMemory.primaryWeaponMode = PrimaryWeaponMode.Melee; break; case SidearmsListInteraction.Weapon: Thing weapon = interactionWeapon; ThingDefStuffDefPair weaponType = weapon.toThingDefStuffDefPair(); if (parent.Drafted) { PlayerKnowledgeDatabase.KnowledgeDemonstrated(SidearmsDefOf.Concept_SimpleSidearmsAdvancedDrafted, KnowledgeAmount.SpecificInteraction); PlayerKnowledgeDatabase.KnowledgeDemonstrated(SidearmsDefOf.Concept_SimpleSidearmsBasic, KnowledgeAmount.SmallInteraction); pawnMemory.SetWeaponAsForced(weaponType, true); if (parent.equipment.Primary != weapon && weapon is ThingWithComps) { WeaponAssingment.equipSpecificWeaponTypeFromInventory(parent, weaponType, MiscUtils.shouldDrop(dropMode), false); } } else if (pawnMemory.DefaultRangedWeapon == weaponType || pawnMemory.PreferredMeleeWeapon == weaponType || weaponType.isToolNotWeapon()) { if (weaponType.thing.IsRangedWeapon) { PlayerKnowledgeDatabase.KnowledgeDemonstrated(SidearmsDefOf.Concept_SimpleSidearmsAdvancedRanged, KnowledgeAmount.SpecificInteraction); } else { PlayerKnowledgeDatabase.KnowledgeDemonstrated(SidearmsDefOf.Concept_SimpleSidearmsAdvancedMelee, KnowledgeAmount.SpecificInteraction); } PlayerKnowledgeDatabase.KnowledgeDemonstrated(SidearmsDefOf.Concept_SimpleSidearmsBasic, KnowledgeAmount.SmallInteraction); pawnMemory.SetWeaponAsForced(weaponType, false); if (parent.equipment.Primary != weapon && weapon is ThingWithComps) { WeaponAssingment.equipSpecificWeaponTypeFromInventory(parent, weaponType, MiscUtils.shouldDrop(dropMode), false); } } else { PlayerKnowledgeDatabase.KnowledgeDemonstrated(SidearmsDefOf.Concept_SimpleSidearmsBasic, KnowledgeAmount.SmallInteraction); if (weaponType.thing.IsRangedWeapon) { PlayerKnowledgeDatabase.KnowledgeDemonstrated(SidearmsDefOf.Concept_SimpleSidearmsAdvancedRanged, KnowledgeAmount.SpecificInteraction); pawnMemory.SetRangedWeaponTypeAsDefault(weaponType); } else { PlayerKnowledgeDatabase.KnowledgeDemonstrated(SidearmsDefOf.Concept_SimpleSidearmsAdvancedMelee, KnowledgeAmount.SpecificInteraction); pawnMemory.SetMeleeWeaponTypeAsPreferred(weaponType); } } break; case SidearmsListInteraction.WeaponMemory: ThingDefStuffDefPair weaponMemory = interactionWeaponType.Value; if (parent.Drafted) { //allow nothing } else { if (weaponMemory.thing.IsRangedWeapon) { PlayerKnowledgeDatabase.KnowledgeDemonstrated(SidearmsDefOf.Concept_SimpleSidearmsAdvancedRanged, KnowledgeAmount.SpecificInteraction); PlayerKnowledgeDatabase.KnowledgeDemonstrated(SidearmsDefOf.Concept_SimpleSidearmsBasic, KnowledgeAmount.SmallInteraction); pawnMemory.SetRangedWeaponTypeAsDefault(weaponMemory); } else { PlayerKnowledgeDatabase.KnowledgeDemonstrated(SidearmsDefOf.Concept_SimpleSidearmsAdvancedMelee, KnowledgeAmount.SpecificInteraction); PlayerKnowledgeDatabase.KnowledgeDemonstrated(SidearmsDefOf.Concept_SimpleSidearmsBasic, KnowledgeAmount.SmallInteraction); pawnMemory.SetMeleeWeaponTypeAsPreferred(weaponMemory); } } break; case SidearmsListInteraction.Unarmed: if (parent.Drafted) { PlayerKnowledgeDatabase.KnowledgeDemonstrated(SidearmsDefOf.Concept_SimpleSidearmsAdvancedDrafted, KnowledgeAmount.SpecificInteraction); PlayerKnowledgeDatabase.KnowledgeDemonstrated(SidearmsDefOf.Concept_SimpleSidearmsBasic, KnowledgeAmount.SmallInteraction); pawnMemory.SetUnarmedAsForced(true); if (parent.equipment.Primary != null) { WeaponAssingment.equipSpecificWeapon(parent, null, MiscUtils.shouldDrop(dropMode), false); } } else if (pawnMemory.PreferredUnarmed) { PlayerKnowledgeDatabase.KnowledgeDemonstrated(SidearmsDefOf.Concept_SimpleSidearmsAdvancedMelee, KnowledgeAmount.SpecificInteraction); PlayerKnowledgeDatabase.KnowledgeDemonstrated(SidearmsDefOf.Concept_SimpleSidearmsBasic, KnowledgeAmount.SmallInteraction); pawnMemory.SetUnarmedAsForced(false); if (parent.equipment.Primary != null) { WeaponAssingment.equipSpecificWeapon(parent, null, MiscUtils.shouldDrop(dropMode), false); } } else { PlayerKnowledgeDatabase.KnowledgeDemonstrated(SidearmsDefOf.Concept_SimpleSidearmsAdvancedMelee, KnowledgeAmount.SpecificInteraction); PlayerKnowledgeDatabase.KnowledgeDemonstrated(SidearmsDefOf.Concept_SimpleSidearmsBasic, KnowledgeAmount.SmallInteraction); pawnMemory.SetUnarmedAsPreferredMelee(); } break; case SidearmsListInteraction.None: default: return; break; } } else if (ev.button == RIGHT_CLICK) { switch (interaction) { case SidearmsListInteraction.SelectorRanged: case SidearmsListInteraction.SelectorSkill: case SidearmsListInteraction.SelectorMelee: break; case SidearmsListInteraction.Weapon: Thing weapon = interactionWeapon; ThingDefStuffDefPair weaponType = weapon.toThingDefStuffDefPair(); if (interactionWeaponIsDuplicate) { PlayerKnowledgeDatabase.KnowledgeDemonstrated(SidearmsDefOf.Concept_SidearmsDropping, KnowledgeAmount.SpecificInteraction); PlayerKnowledgeDatabase.KnowledgeDemonstrated(SidearmsDefOf.Concept_SimpleSidearmsBasic, KnowledgeAmount.SmallInteraction); WeaponAssingment.dropSidearm(parent, weapon, true); } else { if (parent.Drafted) { if (pawnMemory.ForcedWeaponWhileDrafted == weaponType) { PlayerKnowledgeDatabase.KnowledgeDemonstrated(SidearmsDefOf.Concept_SimpleSidearmsAdvancedDrafted, KnowledgeAmount.SpecificInteraction); PlayerKnowledgeDatabase.KnowledgeDemonstrated(SidearmsDefOf.Concept_SimpleSidearmsBasic, KnowledgeAmount.SmallInteraction); pawnMemory.UnsetForcedWeapon(true); } } else { if (pawnMemory.ForcedWeapon == weaponType) { if (weaponType.thing.IsRangedWeapon) { PlayerKnowledgeDatabase.KnowledgeDemonstrated(SidearmsDefOf.Concept_SimpleSidearmsAdvancedRanged, KnowledgeAmount.SpecificInteraction); } else { PlayerKnowledgeDatabase.KnowledgeDemonstrated(SidearmsDefOf.Concept_SimpleSidearmsAdvancedMelee, KnowledgeAmount.SpecificInteraction); } PlayerKnowledgeDatabase.KnowledgeDemonstrated(SidearmsDefOf.Concept_SimpleSidearmsBasic, KnowledgeAmount.SmallInteraction); pawnMemory.UnsetForcedWeapon(false); } else if (weaponType.thing.IsRangedWeapon & pawnMemory.DefaultRangedWeapon == weaponType) { PlayerKnowledgeDatabase.KnowledgeDemonstrated(SidearmsDefOf.Concept_SimpleSidearmsAdvancedRanged, KnowledgeAmount.SpecificInteraction); PlayerKnowledgeDatabase.KnowledgeDemonstrated(SidearmsDefOf.Concept_SimpleSidearmsBasic, KnowledgeAmount.SmallInteraction); pawnMemory.UnsetRangedWeaponDefault(); } else if (pawnMemory.PreferredMeleeWeapon == weaponType) { PlayerKnowledgeDatabase.KnowledgeDemonstrated(SidearmsDefOf.Concept_SimpleSidearmsAdvancedMelee, KnowledgeAmount.SpecificInteraction); PlayerKnowledgeDatabase.KnowledgeDemonstrated(SidearmsDefOf.Concept_SimpleSidearmsBasic, KnowledgeAmount.SmallInteraction); pawnMemory.UnsetMeleeWeaponPreference(); } else { PlayerKnowledgeDatabase.KnowledgeDemonstrated(SidearmsDefOf.Concept_SidearmsDropping, KnowledgeAmount.SpecificInteraction); PlayerKnowledgeDatabase.KnowledgeDemonstrated(SidearmsDefOf.Concept_SimpleSidearmsBasic, KnowledgeAmount.SmallInteraction); WeaponAssingment.dropSidearm(parent, weapon, true); } } } break; case SidearmsListInteraction.WeaponMemory: ThingDefStuffDefPair weaponMemory = interactionWeaponType.Value; if (interactionWeaponIsDuplicate) { PlayerKnowledgeDatabase.KnowledgeDemonstrated(SidearmsDefOf.Concept_SidearmsMissing, KnowledgeAmount.SmallInteraction); PlayerKnowledgeDatabase.KnowledgeDemonstrated(SidearmsDefOf.Concept_SimpleSidearmsBasic, KnowledgeAmount.SmallInteraction); pawnMemory.ForgetSidearmMemory(weaponMemory); } else { if (parent.Drafted) { if (pawnMemory.ForcedWeaponWhileDrafted == weaponMemory) { if (weaponMemory.thing.IsRangedWeapon) { PlayerKnowledgeDatabase.KnowledgeDemonstrated(SidearmsDefOf.Concept_SimpleSidearmsAdvancedRanged, KnowledgeAmount.SpecificInteraction); } else { PlayerKnowledgeDatabase.KnowledgeDemonstrated(SidearmsDefOf.Concept_SimpleSidearmsAdvancedMelee, KnowledgeAmount.SpecificInteraction); } PlayerKnowledgeDatabase.KnowledgeDemonstrated(SidearmsDefOf.Concept_SimpleSidearmsBasic, KnowledgeAmount.SmallInteraction); pawnMemory.UnsetForcedWeapon(true); } } else { if (pawnMemory.ForcedWeapon == weaponMemory) { if (weaponMemory.thing.IsRangedWeapon) { PlayerKnowledgeDatabase.KnowledgeDemonstrated(SidearmsDefOf.Concept_SimpleSidearmsAdvancedRanged, KnowledgeAmount.SpecificInteraction); } else { PlayerKnowledgeDatabase.KnowledgeDemonstrated(SidearmsDefOf.Concept_SimpleSidearmsAdvancedMelee, KnowledgeAmount.SpecificInteraction); } PlayerKnowledgeDatabase.KnowledgeDemonstrated(SidearmsDefOf.Concept_SimpleSidearmsBasic, KnowledgeAmount.SmallInteraction); pawnMemory.UnsetForcedWeapon(false); } else if (weaponMemory.thing.IsRangedWeapon & pawnMemory.DefaultRangedWeapon == weaponMemory) { PlayerKnowledgeDatabase.KnowledgeDemonstrated(SidearmsDefOf.Concept_SimpleSidearmsAdvancedRanged, KnowledgeAmount.SpecificInteraction); PlayerKnowledgeDatabase.KnowledgeDemonstrated(SidearmsDefOf.Concept_SimpleSidearmsBasic, KnowledgeAmount.SmallInteraction); pawnMemory.UnsetRangedWeaponDefault(); } else if (pawnMemory.PreferredMeleeWeapon == weaponMemory) { PlayerKnowledgeDatabase.KnowledgeDemonstrated(SidearmsDefOf.Concept_SimpleSidearmsAdvancedMelee, KnowledgeAmount.SpecificInteraction); PlayerKnowledgeDatabase.KnowledgeDemonstrated(SidearmsDefOf.Concept_SimpleSidearmsBasic, KnowledgeAmount.SmallInteraction); pawnMemory.UnsetMeleeWeaponPreference(); } else { PlayerKnowledgeDatabase.KnowledgeDemonstrated(SidearmsDefOf.Concept_SidearmsMissing, KnowledgeAmount.SpecificInteraction); PlayerKnowledgeDatabase.KnowledgeDemonstrated(SidearmsDefOf.Concept_SimpleSidearmsBasic, KnowledgeAmount.SmallInteraction); pawnMemory.ForgetSidearmMemory(weaponMemory); } } } break; case SidearmsListInteraction.Unarmed: if (parent.Drafted && pawnMemory.ForcedUnarmedWhileDrafted) { PlayerKnowledgeDatabase.KnowledgeDemonstrated(SidearmsDefOf.Concept_SimpleSidearmsAdvancedDrafted, KnowledgeAmount.SpecificInteraction); PlayerKnowledgeDatabase.KnowledgeDemonstrated(SidearmsDefOf.Concept_SimpleSidearmsBasic, KnowledgeAmount.SmallInteraction); pawnMemory.UnsetUnarmedAsForced(true); } else if (pawnMemory.ForcedUnarmed) { PlayerKnowledgeDatabase.KnowledgeDemonstrated(SidearmsDefOf.Concept_SimpleSidearmsAdvancedMelee, KnowledgeAmount.SpecificInteraction); PlayerKnowledgeDatabase.KnowledgeDemonstrated(SidearmsDefOf.Concept_SimpleSidearmsBasic, KnowledgeAmount.SmallInteraction); pawnMemory.UnsetUnarmedAsForced(false); } else if (pawnMemory.PreferredUnarmed) { PlayerKnowledgeDatabase.KnowledgeDemonstrated(SidearmsDefOf.Concept_SimpleSidearmsAdvancedMelee, KnowledgeAmount.SpecificInteraction); PlayerKnowledgeDatabase.KnowledgeDemonstrated(SidearmsDefOf.Concept_SimpleSidearmsBasic, KnowledgeAmount.SmallInteraction); pawnMemory.UnsetMeleeWeaponPreference(); } break; case SidearmsListInteraction.None: default: return; break; } } }
public void DrawIconForUnarmed(Pawn pawn, CompSidearmMemory pawnMemory, Rect contentRect, Vector2 iconOffset) { var iconRect = new Rect(contentRect.x + iconOffset.x, contentRect.y + iconOffset.y, IconSize, IconSize); //var iconColor = iconBaseColor; string hoverText; if (pawn.Drafted) { if (pawnMemory.ForcedUnarmedWhileDrafted) { hoverText = "DrawSidearm_gizmoTooltipUnarmedForcedWhileDrafted"; } else { hoverText = "DrawSidearm_gizmoTooltipUnarmedWhileDrafted"; } } else { if (pawnMemory.ForcedUnarmed) { hoverText = "DrawSidearm_gizmoTooltipUnarmedForced"; } else if (pawnMemory.PreferredUnarmed) { hoverText = "DrawSidearm_gizmoTooltipUnarmedPreferred"; } else { hoverText = "DrawSidearm_gizmoTooltipUnarmed"; } } TooltipHandler.TipRegion(iconRect, hoverText.Translate()); MouseoverSounds.DoRegion(iconRect, SoundDefOf.Mouseover_Command); Texture2D drawPocket = TextureResources.drawPocket; if (Mouse.IsOver(iconRect)) { GUI.color = iconMouseOverColor; GUI.DrawTexture(iconRect, drawPocket); //Graphics.DrawTexture(iconRect, TextureResources.drawPocket, new Rect(0, 0, 1f, 1f), 0, 0, 0, 0, iconMouseOverColor); } else { GUI.color = iconBaseColor; GUI.DrawTexture(iconRect, drawPocket); //Graphics.DrawTexture(iconRect, TextureResources.drawPocket, new Rect(0, 0, 1f, 1f), 0, 0, 0, 0, iconBaseColor); } Texture resolvedIcon = TexCommand.AttackMelee; GUI.color = Color.white; GUI.DrawTexture(iconRect, resolvedIcon); GUI.color = Color.white; GUI.color = Color.white; if (pawnMemory.ForcedUnarmedWhileDrafted) { GUI.DrawTexture(iconRect, TextureResources.forcedDrafted); } if (pawnMemory.ForcedUnarmed) { GUI.DrawTexture(iconRect, TextureResources.forcedAlways); } if (pawnMemory.PreferredUnarmed) { GUI.DrawTexture(iconRect, TextureResources.preferredMelee); } else { GUI.color = Color.white; } if (Widgets.ButtonInvisible(iconRect, true)) { interactedWith = SidearmsListInteraction.Unarmed; } }
public void DrawIconForWeapon(Pawn pawn, CompSidearmMemory pawnMemory, ThingWithComps weapon, bool isDuplicate, Rect contentRect, Vector2 iconOffset) { if (weapon is null || weapon.def is null || weapon.def.uiIcon is null) { return; } ThingDefStuffDefPair weaponType = weapon.toThingDefStuffDefPair(); var iconRect = new Rect(contentRect.x + iconOffset.x, contentRect.y + iconOffset.y, IconSize, IconSize); //var iconColor = iconBaseColor; string hoverText; if (pawn.Drafted) { if (pawnMemory.ForcedWeaponWhileDrafted == weapon.toThingDefStuffDefPair()) { hoverText = "DrawSidearm_gizmoTooltipForcedWhileDrafted"; } else { hoverText = "DrawSidearm_gizmoTooltipWhileDrafted"; } } else { if (pawnMemory.ForcedWeapon == weapon.toThingDefStuffDefPair()) { hoverText = "DrawSidearm_gizmoTooltipForced"; } else { if (weapon.def.IsRangedWeapon) { if (pawnMemory.DefaultRangedWeapon == weaponType) { hoverText = "DrawSidearm_gizmoTooltipRangedDefault"; } else { hoverText = "DrawSidearm_gizmoTooltipRanged"; } } else { if (pawnMemory.PreferredMeleeWeapon == weaponType) { hoverText = "DrawSidearm_gizmoTooltipMeleePreferred"; } else { hoverText = "DrawSidearm_gizmoTooltipMelee"; } } } } TooltipHandler.TipRegion(iconRect, string.Format(hoverText.Translate(), weapon.toThingDefStuffDefPair().getLabel())); MouseoverSounds.DoRegion(iconRect, SoundDefOf.Mouseover_Command); Texture2D drawPocket; if (pawnMemory.RememberedWeapons.Contains(weapon.toThingDefStuffDefPair())) { drawPocket = TextureResources.drawPocket; } else { drawPocket = TextureResources.drawPocketTemp; } if (Mouse.IsOver(iconRect)) { LessonAutoActivator.TeachOpportunity(SidearmsDefOf.Concept_SidearmsDropping, OpportunityType.GoodToKnow); if (pawn.Drafted) { LessonAutoActivator.TeachOpportunity(SidearmsDefOf.Concept_SimpleSidearmsAdvancedDrafted, OpportunityType.GoodToKnow); } else { if (weapon.def.IsRangedWeapon) { LessonAutoActivator.TeachOpportunity(SidearmsDefOf.Concept_SimpleSidearmsAdvancedRanged, OpportunityType.GoodToKnow); } else { LessonAutoActivator.TeachOpportunity(SidearmsDefOf.Concept_SimpleSidearmsAdvancedMelee, OpportunityType.GoodToKnow); } } GUI.color = iconMouseOverColor; GUI.DrawTexture(iconRect, drawPocket); //Graphics.DrawTexture(iconRect, TextureResources.drawPocket, new Rect(0, 0, 1f, 1f), 0, 0, 0, 0, iconMouseOverColor); } else { GUI.color = iconBaseColor; GUI.DrawTexture(iconRect, drawPocket); //Graphics.DrawTexture(iconRect, TextureResources.drawPocket, new Rect(0, 0, 1f, 1f), 0, 0, 0, 0, iconBaseColor); } Graphic outerGraphic = weaponType.thing.graphic; if (outerGraphic is Graphic_StackCount) { outerGraphic = (outerGraphic as Graphic_StackCount).SubGraphicForStackCount(weapon.stackCount, weaponType.thing); } Material material = outerGraphic.ExtractInnerGraphicFor(null).MatAt(weaponType.thing.defaultPlacingRot, null); Texture resolvedIcon = (Texture2D)material.mainTexture; GUI.color = weapon.DrawColor; GUI.DrawTexture(iconRect, resolvedIcon); GUI.color = Color.white; if (weapon.stackCount > 1) { var store = Text.Anchor; Text.Anchor = TextAnchor.MiddleCenter; Widgets.Label(iconRect, weapon.stackCount.ToString()); Text.Anchor = store; } if (!isDuplicate) { GUI.color = Color.white; if (pawnMemory.ForcedWeaponWhileDrafted == weaponType) { GUI.DrawTexture(iconRect, TextureResources.forcedDrafted); } if (pawnMemory.ForcedWeapon == weaponType) { GUI.DrawTexture(iconRect, TextureResources.forcedAlways); } if (weaponType.thing.IsRangedWeapon & pawnMemory.DefaultRangedWeapon == weaponType) { GUI.DrawTexture(iconRect, TextureResources.defaultRanged); } else if (pawnMemory.PreferredMeleeWeapon == weaponType) { GUI.DrawTexture(iconRect, TextureResources.preferredMelee); } GUI.color = Color.white; } UIHighlighter.HighlightOpportunity(iconRect, "SidearmInInventory"); if (weapon.def.IsRangedWeapon) { UIHighlighter.HighlightOpportunity(iconRect, "SidearmInInventoryRanged"); } else { UIHighlighter.HighlightOpportunity(iconRect, "SidearmInInventoryMelee"); } if (Widgets.ButtonInvisible(iconRect, true)) { interactedWith = SidearmsListInteraction.Weapon; interactionWeapon = weapon; interactionWeaponIsDuplicate = isDuplicate; } }
public void DrawIconForWeaponMemory(Pawn pawn, CompSidearmMemory pawnMemory, ThingDefStuffDefPair weaponType, int stackCount, bool isDuplicate, Rect contentRect, Vector2 iconOffset) { Graphic g = weaponType.thing.graphicData.Graphic; var iconRect = new Rect(contentRect.x + iconOffset.x, contentRect.y + iconOffset.y, IconSize, IconSize); Texture2D drawPocket; drawPocket = TextureResources.drawPocketMemory; if (pawn.Drafted) { TooltipHandler.TipRegion(iconRect, string.Format("DrawSidearm_gizmoTooltipMemoryWhileDrafted".Translate(), weaponType.getLabel())); } else { TooltipHandler.TipRegion(iconRect, string.Format("DrawSidearm_gizmoTooltipMemory".Translate(), weaponType.getLabel())); } MouseoverSounds.DoRegion(iconRect, SoundDefOf.Mouseover_Command); if (Mouse.IsOver(iconRect)) { LessonAutoActivator.TeachOpportunity(SidearmsDefOf.Concept_SidearmsMissing, OpportunityType.GoodToKnow); GUI.color = iconMouseOverColor; GUI.DrawTexture(iconRect, drawPocket); } else { GUI.color = iconBaseColor; GUI.DrawTexture(iconRect, drawPocket); } Graphic outerGraphic = weaponType.thing.graphic; if (outerGraphic is Graphic_StackCount) { outerGraphic = (outerGraphic as Graphic_StackCount).SubGraphicForStackCount(stackCount, weaponType.thing); } Material material = outerGraphic.ExtractInnerGraphicFor(null).MatAt(weaponType.thing.defaultPlacingRot, null); Texture resolvedIcon = (Texture2D)material.mainTexture; GUI.color = weaponType.getDrawColor(); GUI.DrawTexture(iconRect, resolvedIcon); GUI.color = Color.white; if (stackCount > 1) { var store = Text.Anchor; Text.Anchor = TextAnchor.MiddleCenter; Widgets.Label(iconRect, stackCount.ToString()); Text.Anchor = store; } if (!isDuplicate) { GUI.color = Color.white; if (pawnMemory.ForcedWeapon == weaponType) { GUI.DrawTexture(iconRect, TextureResources.forcedAlways); } if (weaponType.thing.IsRangedWeapon & pawnMemory.DefaultRangedWeapon == weaponType) { GUI.DrawTexture(iconRect, TextureResources.defaultRanged); } else if (pawnMemory.PreferredMeleeWeapon == weaponType) { GUI.DrawTexture(iconRect, TextureResources.preferredMelee); } GUI.color = Color.white; } UIHighlighter.HighlightOpportunity(iconRect, "SidearmMissing"); if (Widgets.ButtonInvisible(iconRect, true)) { interactedWith = SidearmsListInteraction.WeaponMemory; interactionWeaponType = weaponType; interactionWeaponIsDuplicate = isDuplicate; } }
public void DrawPreferenceSelector(Pawn pawn, CompSidearmMemory pawnMemory, Rect contentRect) { var rangedIconRect = new Rect(contentRect.x, contentRect.y, PreferenceIconWidth, PreferenceIconHeight); var skillIconRect = new Rect(contentRect.x, contentRect.y + PreferenceIconHeight + IconGap, PreferenceIconWidth, PreferenceIconHeight); var meleeIconRect = new Rect(contentRect.x, contentRect.y + (PreferenceIconHeight + IconGap) * 2, PreferenceIconWidth, PreferenceIconHeight); var skillPref = pawn.getSkillWeaponPreference(); if (Mouse.IsOver(contentRect)) { LessonAutoActivator.TeachOpportunity(SidearmsDefOf.Concept_SimpleSidearmsBasic, OpportunityType.Important); LessonAutoActivator.TeachOpportunity(SidearmsDefOf.Concept_SimpleSidearmsPreference, OpportunityType.Important); } if (Mouse.IsOver(rangedIconRect)) { if (pawnMemory.primaryWeaponMode == PrimaryWeaponMode.Ranged) { GUI.color = preferenceHighlightSet; } else { GUI.color = preferenceHighlight; } GUI.DrawTexture(rangedIconRect, TextureResources.preferRanged); TooltipHandler.TipRegion(rangedIconRect, string.Format("SidearmPreference_Ranged".Translate())); MouseoverSounds.DoRegion(rangedIconRect, SoundDefOf.Mouseover_Command); } else { if (pawnMemory.primaryWeaponMode == PrimaryWeaponMode.Ranged) { GUI.color = preferenceSet; } else if (pawnMemory.primaryWeaponMode == PrimaryWeaponMode.BySkill && skillPref == PrimaryWeaponMode.Ranged) { GUI.color = preferenceOfSkill; } else { GUI.color = preferenceBase; } GUI.DrawTexture(rangedIconRect, TextureResources.preferRanged); } if (Mouse.IsOver(skillIconRect)) { if (pawnMemory.primaryWeaponMode == PrimaryWeaponMode.BySkill) { GUI.color = preferenceHighlightSet; } else { GUI.color = preferenceHighlight; } GUI.DrawTexture(skillIconRect, TextureResources.preferSkilled); TooltipHandler.TipRegion(skillIconRect, string.Format("SidearmPreference_Skill".Translate())); MouseoverSounds.DoRegion(skillIconRect, SoundDefOf.Mouseover_Command); } else { if (pawn.skills != null) { if (pawnMemory.primaryWeaponMode == PrimaryWeaponMode.BySkill) { GUI.color = preferenceSet; } else { GUI.color = preferenceBase; } GUI.DrawTexture(skillIconRect, TextureResources.preferSkilled); } } if (Mouse.IsOver(meleeIconRect)) { if (pawnMemory.primaryWeaponMode == PrimaryWeaponMode.Melee) { GUI.color = preferenceHighlightSet; } else { GUI.color = preferenceHighlight; } GUI.DrawTexture(meleeIconRect, TextureResources.preferMelee); TooltipHandler.TipRegion(meleeIconRect, string.Format("SidearmPreference_Melee".Translate())); MouseoverSounds.DoRegion(meleeIconRect, SoundDefOf.Mouseover_Command); } else { if (pawnMemory.primaryWeaponMode == PrimaryWeaponMode.Melee) { GUI.color = preferenceSet; } else if (pawnMemory.primaryWeaponMode == PrimaryWeaponMode.BySkill && skillPref == PrimaryWeaponMode.Melee) { GUI.color = preferenceOfSkill; } else { GUI.color = preferenceBase; } GUI.DrawTexture(meleeIconRect, TextureResources.preferMelee); } UIHighlighter.HighlightOpportunity(rangedIconRect, "SidearmPreferenceButton"); UIHighlighter.HighlightOpportunity(skillIconRect, "SidearmPreferenceButton"); UIHighlighter.HighlightOpportunity(meleeIconRect, "SidearmPreferenceButton"); if (Widgets.ButtonInvisible(rangedIconRect, true)) { interactedWith = SidearmsListInteraction.SelectorRanged; } if (Widgets.ButtonInvisible(skillIconRect, true)) { interactedWith = SidearmsListInteraction.SelectorSkill; } if (Widgets.ButtonInvisible(meleeIconRect, true)) { interactedWith = SidearmsListInteraction.SelectorMelee; } }
public void DrawIconForWeaponMemory(Pawn pawn, GoldfishModule pawnMemory, ThingStuffPair weaponType, bool isDuplicate, Rect contentRect, Vector2 iconOffset) { Graphic g = weaponType.thing.graphicData.Graphic; var iconRect = new Rect(contentRect.x + iconOffset.x, contentRect.y + iconOffset.y, IconSize, IconSize); Texture2D drawPocket; drawPocket = TextureResources.drawPocketMemory; if (pawn.Drafted) { TooltipHandler.TipRegion(iconRect, string.Format("DrawSidearm_gizmoTooltipMemoryWhileDrafted".Translate(), weaponType.getLabel())); } else { TooltipHandler.TipRegion(iconRect, string.Format("DrawSidearm_gizmoTooltipMemory".Translate(), weaponType.getLabel())); } MouseoverSounds.DoRegion(iconRect, SoundDefOf.Mouseover_Command); if (Mouse.IsOver(iconRect)) { LessonAutoActivator.TeachOpportunity(SidearmsDefOf.Concept_SidearmsMissing, OpportunityType.GoodToKnow); GUI.color = iconMouseOverColor; GUI.DrawTexture(iconRect, drawPocket); } else { GUI.color = iconBaseColor; GUI.DrawTexture(iconRect, drawPocket); } Texture resolvedIcon = weaponType.thing.uiIcon; GUI.color = weaponType.getDrawColor(); GUI.DrawTexture(iconRect, resolvedIcon); GUI.color = Color.white; if (!isDuplicate) { GUI.color = Color.white; if (pawnMemory.ForcedWeapon == weaponType) { GUI.DrawTexture(iconRect, TextureResources.forcedAlways); } if (weaponType.thing.IsRangedWeapon & pawnMemory.DefaultRangedWeapon == weaponType) { GUI.DrawTexture(iconRect, TextureResources.defaultRanged); } else if (pawnMemory.PreferredMeleeWeapon == weaponType) { GUI.DrawTexture(iconRect, TextureResources.preferredMelee); } GUI.color = Color.white; } UIHighlighter.HighlightOpportunity(iconRect, "SidearmMissing"); if (Widgets.ButtonInvisible(iconRect, true)) { interactedWith = SidearmsListInteraction.WeaponMemory; interactionWeaponType = weaponType; interactionWeaponIsDuplicate = isDuplicate; } }