Code:
// Decorator for Wizard's Energy Twister
using System.Linq;
using Turbo.Plugins.Default;
namespace Turbo.Plugins.alternate
{
public class EnergyTwisterPlugin : BasePlugin, IInGameWorldPainter
{
public WorldDecoratorCollection EnergyTwisterDecorator { get; set; }
public WorldDecoratorCollection EnergyTwisterMergedDecorator { get; set; }
public int twisterCountDown { get; set; }
public int twisterRadius { get; set; }
public EnergyTwisterPlugin()
{
Enabled = true;
twisterCountDown = 6;
twisterRadius = 5;
}
public override void Load(IController hud)
{
base.Load(hud);
Order = 10000;
EnergyTwisterDecorator = new WorldDecoratorCollection(
new MapShapeDecorator(Hud)
{
Brush = Hud.Render.CreateBrush(220, 255, 0, 255, 1),
Radius = 8.0f,
ShapePainter = new CircleShapePainter(Hud),
},
new GroundTimerDecorator(Hud)
{
CountDownFrom = twisterCountDown,
BackgroundBrushEmpty = Hud.Render.CreateBrush(128, 0, 0, 0, 0),
BackgroundBrushFill = Hud.Render.CreateBrush(230, 255, 0, 0, 0),
Radius = 10,
},
new GroundLabelDecorator(Hud)
{
CountDownFrom = twisterCountDown,
TextFont = Hud.Render.CreateFont("tahoma", 7, 255, 255, 250, 250, false, false, 128, 0, 0, 0, true),
},
new GroundCircleDecorator(Hud)
{
Brush = Hud.Render.CreateBrush(250, 255, 0, 0, 2),
Radius = twisterRadius,
},
new GroundCircleDecorator(Hud)
{
Brush = Hud.Render.CreateBrush(50, 255, 0, 0, 0),
Radius = twisterRadius,
}
);
EnergyTwisterMergedDecorator = new WorldDecoratorCollection(
new MapShapeDecorator(Hud)
{
Brush = Hud.Render.CreateBrush(220, 255, 0, 255, 1),
Radius = 8.0f,
ShapePainter = new CircleShapePainter(Hud),
},
new GroundTimerDecorator(Hud)
{
CountDownFrom = twisterCountDown,
BackgroundBrushEmpty = Hud.Render.CreateBrush(128, 0, 0, 0, 0),
BackgroundBrushFill = Hud.Render.CreateBrush(230, 255, 0, 0, 0),
Radius = 10,
},
new GroundLabelDecorator(Hud)
{
CountDownFrom = twisterCountDown,
TextFont = Hud.Render.CreateFont("tahoma", 7, 255, 255, 250, 250, false, false, 128, 0, 0, 0, true),
},
new GroundCircleDecorator(Hud)
{
Brush = Hud.Render.CreateBrush(250, 255, 0, 0, 2),
Radius = twisterRadius,
},
new GroundCircleDecorator(Hud)
{
Brush = Hud.Render.CreateBrush(150, 255, 0, 0, 0),
Radius = twisterRadius,
}
);
}
public void PaintWorld(WorldLayer layer)
{
if (Hud.Game.IsInTown) return;
// Mistral Breeze
//_wizard_tornado_golden
//_wizard_tornado_golden_big
// Gale Force
//_x1_wizard_tornado_fire
//_x1_wizard_tornado_fire_big
// Raging Storm
//_x1_wizard_tornado_damage
// Storm Chaser
//_wizard_tornado_obsidian
//_wizard_tornado_obsidian_big
// Wicked Wind
//_x1_wizard_tornado_stationary
//_x1_wizard_tornado_stationary_big
var actors = Hud.Game.Actors.Where(a => (
(a.SnoActor.Sno == ActorSnoEnum._wizard_tornado_golden)
|| (a.SnoActor.Sno == ActorSnoEnum._x1_wizard_tornado_fire)
|| (a.SnoActor.Sno == ActorSnoEnum._x1_wizard_tornado_damage)
|| (a.SnoActor.Sno == ActorSnoEnum._wizard_tornado_obsidian)
|| (a.SnoActor.Sno == ActorSnoEnum._x1_wizard_tornado_stationary)
));
foreach (var actor in actors)
{
EnergyTwisterDecorator.Paint(layer, actor, actor.FloorCoordinate, string.Empty);
}
var mergedActors = Hud.Game.Actors.Where(a => (
(a.SnoActor.Sno == ActorSnoEnum._wizard_tornado_golden_big)
|| (a.SnoActor.Sno == ActorSnoEnum._x1_wizard_tornado_fire_big)
|| (a.SnoActor.Sno == ActorSnoEnum._wizard_tornado_obsidian_big)
|| (a.SnoActor.Sno == ActorSnoEnum._x1_wizard_tornado_stationary_big)
));
foreach (var mergedActor in mergedActors)
{
EnergyTwisterMergedDecorator.Paint(layer, mergedActor, mergedActor.FloorCoordinate, string.Empty);
}
}
}
}