first commit
This commit is contained in:
@@ -0,0 +1,84 @@
|
||||
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;
|
||||
}
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user