Advertisement
s4000

HerbOre

Jul 13th, 2023
874
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C# 4.40 KB | Gaming | 0 0
  1. namespace T4.Plugins.DAV;
  2.  
  3. public class HerbOre : BasePlugin, IRenderEnabler, IGameWorldPainter {
  4.     public Feature IconSetting { get; private set; }
  5.  
  6.     public float SizeMap { get; set; } = 5f;
  7.     public float SizeScreen { get; set; } = 10f;
  8.  
  9.     private IEnumerable<IGizmoActor> matList { get; set; }
  10.     private Dictionary<ActorSnoId, bool> actorList { get; set; }
  11.     private ITexture iconMap { get; set; } = Services.Render.GetTexture(SupportedTextureId.UIMinimapIcons_109);
  12.     private ITexture iconOre { get; set; } = Services.Render.GetTexture(SupportedTextureId.UIChallengesCrafting01_012);
  13.     private ITexture iconHerb { get; set; } = Services.Render.GetTexture(SupportedTextureId.UIChallengesCrafting01_027);
  14.  
  15.     public bool BeforeRender() {
  16.         matList = Services.Game.GizmoActors.Where(x => actorList.TryGetValue(x.ActorSno.SnoId, out var enabled) && enabled);
  17.  
  18.         return true;
  19.     }
  20.  
  21.     public void PaintGameWorld(GameWorldLayer layer) {
  22.         if (matList.Count() == 0) return;
  23.  
  24.         if (layer == GameWorldLayer.Map) {
  25.             if (SizeMap <= 0) return;
  26.  
  27.             var sizeMap = Services.Game.WindowHeight / 108f * SizeMap;
  28.             var sizeMap2 = sizeMap / 2;
  29.             foreach (var actor in matList) {
  30.                 if (actor.Coordinate.IsOnMap)
  31.                     iconMap.Draw(actor.Coordinate.MapX - sizeMap2, actor.Coordinate.MapY - sizeMap2, sizeMap, sizeMap, false);
  32.             }
  33.         }
  34.         else if (SizeScreen > 0) {
  35.             var sizeScreen = Services.Game.WindowHeight / 108f * SizeScreen;
  36.             var sizeScreen2 = sizeScreen / 2;
  37.             foreach (var actor in matList) {
  38.                 if (actor.Coordinate.IsOnScreen)
  39.                     DrawIcon(actor.ActorSno.SnoId, actor.Coordinate.ScreenX - sizeScreen2, actor.Coordinate.ScreenY - sizeScreen2, sizeScreen, false);
  40.             }
  41.         }
  42.     }
  43.  
  44.     private void DrawIcon(ActorSnoId actorId, float x, float y, float size, bool sharp) {
  45.         switch (actorId) {
  46.             case ActorSnoId.HarvestNode_Ore_Global_Common :
  47.             case ActorSnoId.HarvestNode_Ore_Global_Common_PROLOGUE :
  48.             case ActorSnoId.HarvestNode_Ore_Global_Rare :
  49.             case ActorSnoId.USZ_HarvestNode_Ore_UberSubzone_001_Dyn :
  50.                 iconOre.Draw(x, y, size, size, sharp);
  51.                 break;
  52.             default :
  53.                 iconHerb.Draw(x, y, size, size, sharp);
  54.                 break;
  55.         }
  56.     }
  57.  
  58. // initial setting
  59.     public override string GetDescription() => Services.Translation.Translate(this, "show the nearby herbs/ores");
  60.  
  61.     public override void Load() {
  62.         base.Load();
  63.  
  64.         var actorSnoIds = new ActorSnoId[] {
  65.             ActorSnoId.HarvestNode_Herb_Common_Gallowvine,
  66.             ActorSnoId.HarvestNode_Herb_Common_Gallowvine_PROLOGUE,
  67.             ActorSnoId.HarvestNode_Herb_Frac_Biteberry,
  68.             ActorSnoId.HarvestNode_Herb_Frac_Biteberry_PROLOGUE,
  69.             ActorSnoId.HarvestNode_Herb_Hawe_Blightshade,
  70.             ActorSnoId.HarvestNode_Herb_Kehj_Lifesbane,
  71.             ActorSnoId.HarvestNode_Herb_Rare_Angelbreath,
  72.             ActorSnoId.HarvestNode_Herb_Rare_FiendRose,
  73.             ActorSnoId.HarvestNode_Herb_Scos_HowlerMoss,
  74.             ActorSnoId.HarvestNode_Herb_Step_Reddamine,
  75.  
  76.             ActorSnoId.HarvestNode_Ore_Global_Common,
  77.             ActorSnoId.HarvestNode_Ore_Global_Common_PROLOGUE,
  78.             ActorSnoId.HarvestNode_Ore_Global_Rare,
  79.             ActorSnoId.USZ_HarvestNode_Ore_UberSubzone_001_Dyn
  80.         };
  81.  
  82.         actorList = actorSnoIds.ToDictionary(x => x, x => true);
  83.  
  84.         IconSetting = new Feature() {
  85.             Plugin = this,
  86.             NameOf = nameof(IconSetting),
  87.             DisplayName = () => Services.Translation.Translate(this, "icon on screen / map"),
  88.             Resources = new() {
  89.                 new FloatFeatureResource() {
  90.                     NameOf = nameof(SizeScreen),
  91.                     DisplayText = () => Services.Translation.Translate(this, "icon size - screen"),
  92.                     MinValue = 0.0f,
  93.                     MaxValue = 20.0f,
  94.                     Getter = () => SizeScreen,
  95.                     Setter = newValue => SizeScreen = MathF.Round(newValue, 1),
  96.                 },
  97.                 new FloatFeatureResource() {
  98.                     NameOf = nameof(SizeMap),
  99.                     DisplayText = () => Services.Translation.Translate(this, "icon size - map"),
  100.                     MinValue = 0.0f,
  101.                     MaxValue = 10.0f,
  102.                     Getter = () => SizeMap,
  103.                     Setter = newValue => SizeMap = MathF.Round(newValue, 1),
  104.                 },
  105.             },
  106.         };
  107.  
  108.         for (var i = 0; i < actorSnoIds.Length; i++) {
  109.             var actorSnoId = actorSnoIds[i];
  110.             IconSetting.Resources.Add(new BooleanFeatureResource() {
  111.                 NameOf = actorSnoId.ToString(),
  112.                 DisplayText = () => Services.GameData.GetActorSno(actorSnoId).NameLocalized,
  113.                 Getter = () => actorList[actorSnoId], // .TryGetValue(actorSnoId, out var enabled) && enabled,
  114.                 Setter = newValue => actorList[actorSnoId] = newValue,
  115.             });
  116.         }
  117.  
  118.         Services.Customization.RegisterFeature(IconSetting);
  119.     }
  120. }
Tags: Thud4
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement