84 lines
2.4 KiB
C#
84 lines
2.4 KiB
C#
using System.Diagnostics;
|
|
using ClassicAssist.Data.Spells;
|
|
using ClassicAssist.Shared.Resources;
|
|
using UOC = ClassicAssist.Shared.UO.Commands;
|
|
|
|
namespace ClassicAssist.Data.Macros.Commands
|
|
{
|
|
public static class SpellCommands
|
|
{
|
|
private static readonly SpellManager _manager = SpellManager.GetInstance();
|
|
|
|
[CommandsDisplay( Category = nameof( Strings.Spells ),
|
|
Parameters = new[] { nameof( ParameterType.SpellName ) } )]
|
|
public static void Cast( string name )
|
|
{
|
|
_manager?.CastSpell( name );
|
|
}
|
|
|
|
[CommandsDisplay( Category = nameof( Strings.Spells ),
|
|
Parameters = new[] { nameof( ParameterType.SpellName ), nameof( ParameterType.SerialOrAlias ) } )]
|
|
public static bool Cast( string name, object obj )
|
|
{
|
|
int serial = AliasCommands.ResolveSerial( obj );
|
|
|
|
if ( serial == 0 )
|
|
{
|
|
UOC.SystemMessage( Strings.Invalid_or_unknown_object_id );
|
|
return false;
|
|
}
|
|
|
|
SpellData sd = _manager.GetSpellData( name ) ?? _manager.GetMasteryData( name );
|
|
|
|
if ( sd == null )
|
|
{
|
|
UOC.SystemMessage( Strings.Unknown_spell___ );
|
|
return false;
|
|
}
|
|
|
|
// Debugging only
|
|
Stopwatch sw = new Stopwatch();
|
|
sw.Start();
|
|
//
|
|
|
|
_manager.CastSpell( sd.ID );
|
|
|
|
int index = 0;
|
|
bool result;
|
|
|
|
if ( Options.CurrentOptions.UseExperimentalFizzleDetection )
|
|
{
|
|
( index, result ) = UOC.WaitForTargetOrFizzle( sd.Timeout + 1000 );
|
|
}
|
|
else
|
|
{
|
|
result = TargetCommands.WaitForTarget( sd.Timeout + 500 );
|
|
}
|
|
|
|
if ( index == 0 && !result )
|
|
{
|
|
UOC.SystemMessage( Strings.Timeout___ );
|
|
return false;
|
|
}
|
|
|
|
if ( !result )
|
|
{
|
|
return false;
|
|
}
|
|
|
|
// Debugging only
|
|
sw.Stop();
|
|
|
|
if ( Options.CurrentOptions.Debug )
|
|
{
|
|
UOC.SystemMessage(
|
|
$"Target received in {sw.ElapsedMilliseconds}ms, Spell data timeout: {sd.Timeout}ms" );
|
|
}
|
|
//
|
|
|
|
TargetCommands.Target( serial );
|
|
|
|
return true;
|
|
}
|
|
}
|
|
} |