s4000

DAV_BossAnimeLog.cs

May 4th, 2019
854
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. using System;
  2. using Turbo.Plugins.Default;
  3. using System.Collections.Generic;
  4. using System.Linq;
  5. using System.Windows.Forms;
  6. using System.Threading;
  7. using System.Text.RegularExpressions;
  8. using System.Globalization;
  9.  
  10. namespace Turbo.Plugins.DavMonster
  11. {
  12.     public class DAV_BossAnimeLog : BasePlugin, IInGameWorldPainter, INewAreaHandler {
  13.         private string CurrentAnime { get; set; }
  14.         public List<string> BossList;
  15.         public WorldDecoratorCollection BossDecorator { get; set; }
  16.        
  17.         public float XPos { get; set; }
  18.         public float YPos { get; set; }
  19.         public IFont SkillFont { get; set; }
  20.         public Dictionary<string, string> BossSkillBoard;
  21.        
  22.         private IUiElement chatentry {
  23.             get { return Hud.Render.GetUiElement("Root.NormalLayer.chatentry_dialog_backgroundScreen.chatentry_content.chat_editline"); }
  24.         }
  25.  
  26.         public DAV_BossAnimeLog() {
  27.             Enabled = true;
  28.            
  29.             BossList = new List<string> {};
  30.         }
  31.        
  32.         private IQuest riftQuest { get { return Hud.Game.Quests.FirstOrDefault(q => q.SnoQuest.Sno == 382695); } }
  33.  
  34.         public override void Load(IController hud) {
  35.             base.Load(hud);
  36.            
  37.             XPos = Hud.Window.Size.Width * 0.2f; // adjust according to EliteBarPlugin
  38.             YPos = Hud.Window.Size.Height * 0.04f; // adjust according to EliteBarPlugin
  39.             SkillFont = Hud.Render.CreateFont("tahoma", 6f, 200, 255, 255, 255, false, false, true);
  40.            
  41.             BossSkillBoard = new Dictionary<string, string>();
  42.            
  43.             BossDecorator = new WorldDecoratorCollection(
  44.                 new GroundLabelDecorator(Hud) {
  45.                     BackgroundBrush = Hud.Render.CreateBrush(255, 102, 204, 0, 0),
  46.                     BorderBrush = Hud.Render.CreateBrush(192, 255, 255, 255, 1),
  47.                     TextFont = Hud.Render.CreateFont("tahoma", 6.5f, 255, 255, 255, 255, true, false, false)
  48.                 }
  49.             );
  50.         }
  51.  
  52.         public void PaintWorld(WorldLayer layer) { 
  53.             if (Hud.Game.SpecialArea != SpecialArea.GreaterRift) return;
  54.            
  55.             var bosses = Hud.Game.AliveMonsters.Where(m => m.Rarity == ActorRarity.Boss);
  56.             foreach(IMonster monster in bosses) {
  57.                 if (monster.SummonerAcdDynamicId != 0) continue;
  58.                
  59.                 string outmessage;
  60.                 if (BossSkillBoard.TryGetValue(monster.SnoMonster.NameEnglish, out outmessage)) {
  61.                     var name = SkillFont.GetTextLayout(outmessage);
  62.                     SkillFont.DrawText(name, XPos + 3, YPos);
  63.                 }
  64.                
  65.                 if (BossList.Contains(monster.SnoMonster.NameLocalized) || BossList.Contains(monster.SnoMonster.NameEnglish)) {
  66.                     BossDecorator.Paint(layer, monster, monster.FloorCoordinate, monster.Animation.ToString());
  67.                
  68.                     var TmpAnime = monster.Animation.ToString();
  69.                     if (CurrentAnime == null || CurrentAnime != TmpAnime) {
  70.                         CurrentAnime = TmpAnime;
  71.                         var writelog = "\t" + monster.SnoMonster.NameLocalized + "\t" + TmpAnime;
  72.                         Hud.TextLog.Log("BossAnimeLog", writelog, true, true);
  73.                     }
  74.                 }
  75.             }
  76.         }
  77.        
  78.         public void OnNewArea(bool newGame, ISnoArea area) {
  79.             if (riftQuest == null || (riftQuest != null && riftQuest.State == QuestState.none)) {
  80.                 var message = "----- New Game -----";
  81.                 if (CurrentAnime == null || CurrentAnime != message) {
  82.                     CurrentAnime = message;
  83.                     Hud.TextLog.Log("BossAnimeLog",message, true, true);
  84.                 }
  85.             }
  86.         }
  87.     }
  88. }
RAW Paste Data