Skip to content

Commit

Permalink
Merge pull request #12 from Foglio1024/master
Browse files Browse the repository at this point in the history
Merge
  • Loading branch information
Seyuna authored Aug 15, 2018
2 parents 2e41e1d + c2e142a commit 57cb8ea
Show file tree
Hide file tree
Showing 45 changed files with 1,021 additions and 306 deletions.
70 changes: 63 additions & 7 deletions TCC.Core/ClassSpecific/Archer.cs
Original file line number Diff line number Diff line change
@@ -1,49 +1,100 @@
using System;
using System.Collections.Generic;
using System.Linq;
using System.Windows;
using TCC.Parsing.Messages;
using TCC.ViewModels;

namespace TCC.ClassSpecific
{
public static class Archer
{
private static readonly List<ulong> MarkedTargets = new List<ulong>();

private static readonly uint FocusId = 601400;
private static readonly uint FocusXId = 601450;
private static readonly uint[] SniperEyeIDs = { 601100, 601101 };
private static readonly uint[] VelikMarkIDs = { 600500, 600501, 600502 };

public static event Action<ulong> VelikMarkRefreshed;
public static event Action VelikMarkExpired;

public static void CheckVelikMark(ulong target)
{
if (MarkedTargets.Contains(target))
{
MarkedTargets.Remove(target);
if (MarkedTargets.Count == 0) VelikMarkExpired?.Invoke();
}
}

public static void CheckVelikMark(S_ABNORMALITY_BEGIN p)
{
if (!VelikMarkIDs.Contains(p.AbnormalityId)) return;
var target = BossGageWindowViewModel.Instance.NpcList.FirstOrDefault(x => x.EntityId == p.TargetId);
if (target != null)
{
if (!MarkedTargets.Contains(p.TargetId)) MarkedTargets.Add(p.TargetId);
VelikMarkRefreshed?.Invoke(p.Duration);
}
}
public static void CheckVelikMark(S_ABNORMALITY_REFRESH p)
{
if (!VelikMarkIDs.Contains(p.AbnormalityId)) return;
var target = BossGageWindowViewModel.Instance.NpcList.FirstOrDefault(x => x.EntityId == p.TargetId);
if (target != null)
{
if (!MarkedTargets.Contains(p.TargetId)) MarkedTargets.Add(p.TargetId);
VelikMarkRefreshed?.Invoke(p.Duration);
}
}
public static void CheckVelikMark(S_ABNORMALITY_END p)
{
if(!VelikMarkIDs.Contains(p.AbnormalityId)) return;
if (MarkedTargets.Contains(p.TargetId)) MarkedTargets.Remove(p.TargetId);
if (MarkedTargets.Count == 0) VelikMarkExpired?.Invoke();
}

public static void CheckFocus(S_ABNORMALITY_BEGIN p)
{
if (p.AbnormalityId == FocusId && p.TargetId == SessionManager.CurrentPlayer.EntityId)
{
((ArcherBarManager) ClassWindowViewModel.Instance.CurrentManager).Focus.StartFocus();
((ArcherBarManager)ClassWindowViewModel.Instance.CurrentManager).Focus.StartFocus(p.Duration);
}
}
public static void CheckFocus(S_ABNORMALITY_REFRESH p)
{
if (p.AbnormalityId == FocusId && p.TargetId == SessionManager.CurrentPlayer.EntityId)
{
((ArcherBarManager)ClassWindowViewModel.Instance.CurrentManager).Focus.SetFocusStacks(p.Stacks);
((ArcherBarManager)ClassWindowViewModel.Instance.CurrentManager).Focus.SetFocusStacks(p.Stacks, p.Duration);
}
}
public static void CheckFocus(S_ABNORMALITY_END p)
{
if (p.AbnormalityId == FocusId && p.TargetId == SessionManager.CurrentPlayer.EntityId)
{
((ArcherBarManager)ClassWindowViewModel.Instance.CurrentManager).Focus.StopFocus();
}
}
public static void CheckFocusX(S_ABNORMALITY_BEGIN p)
{
if (p.AbnormalityId == FocusXId && p.TargetId == SessionManager.CurrentPlayer.EntityId)
{
((ArcherBarManager)ClassWindowViewModel.Instance.CurrentManager).Focus.StartFocusX();
((ArcherBarManager)ClassWindowViewModel.Instance.CurrentManager).Focus.StartFocusX(p.Duration);
}
}
public static void CheckFocusX(S_ABNORMALITY_REFRESH p)
{
if (p.AbnormalityId == FocusXId && p.TargetId == SessionManager.CurrentPlayer.EntityId)
{
((ArcherBarManager)ClassWindowViewModel.Instance.CurrentManager).Focus.StartFocusX();
((ArcherBarManager)ClassWindowViewModel.Instance.CurrentManager).Focus.StartFocusX(p.Duration);
}
}
public static void CheckFocusEnd(S_ABNORMALITY_END p)
public static void CheckFocusX(S_ABNORMALITY_END p)
{
if ((p.AbnormalityId == FocusId || p.AbnormalityId == FocusXId) && p.TargetId == SessionManager.CurrentPlayer.EntityId)
if (p.AbnormalityId == FocusXId && p.TargetId == SessionManager.CurrentPlayer.EntityId)
{
((ArcherBarManager)ClassWindowViewModel.Instance.CurrentManager).Focus.StopFocus();
((ArcherBarManager)ClassWindowViewModel.Instance.CurrentManager).Focus.StopFocusX();
}

}
Expand All @@ -62,5 +113,10 @@ public static void CheckSniperEyeEnd(S_ABNORMALITY_END p)
if (SniperEyeIDs.Contains(p.AbnormalityId) && p.TargetId == SessionManager.CurrentPlayer.EntityId)
((ArcherBarManager)ClassWindowViewModel.Instance.CurrentManager).Stance.CurrentStance = Data.ArcherStance.None;
}

public static void ClearMarkedTargets()
{
App.BaseDispatcher.Invoke(() => MarkedTargets.Clear());
}
}
}
2 changes: 1 addition & 1 deletion TCC.Core/ClassSpecific/Brawler.cs
Original file line number Diff line number Diff line change
Expand Up @@ -31,7 +31,7 @@ public static void CheckBrawlerAbnormal(S_ABNORMALITY_REFRESH p)
return;
}

if (p.AbnormalityId == CounterGlyphId || p.TargetId == SessionManager.CurrentPlayer.EntityId)
if (p.AbnormalityId == CounterGlyphId && p.TargetId == SessionManager.CurrentPlayer.EntityId)
{
((BrawlerBarManager)ClassWindowViewModel.Instance.CurrentManager).Counter.Start(p.Duration);
((BrawlerBarManager)ClassWindowViewModel.Instance.CurrentManager).CounterProc = true;
Expand Down
72 changes: 64 additions & 8 deletions TCC.Core/ClassSpecific/Priest.cs
Original file line number Diff line number Diff line change
@@ -1,4 +1,5 @@
using System.Collections.Generic;
using System;
using System.Collections.Generic;
using System.Linq;
using TCC.Parsing.Messages;
using TCC.ViewModels;
Expand All @@ -7,36 +8,82 @@ namespace TCC.ClassSpecific
{
public static class Priest
{
private static readonly List<ulong> MarkedTargets = new List<ulong>();
public static event Action<ulong> TripleNemesisRefreshed;
public static event Action TripleNemesisExpired;


public static readonly List<uint> CommonBuffs = new List<uint>
{
805100, 805101, 805102,
805600, 805601, 805602, 805603, 805604,
800300, 800301, 800302,800303, 800304
};

private static readonly uint[] EnergyStarsIDs = { 801500, 801501 , 801502 , 801503, 98000107 };
private static readonly uint[] EnergyStarsIDs = { 801500, 801501, 801502, 801503, 98000107 };
private static readonly int GraceId = 801700;
private static readonly int TripleNemesisId = 28090;
private static readonly uint[] EdictIDs = { 805800, 805801, 805802, 805803 };
internal static void CheckBuff(S_ABNORMALITY_BEGIN p)

public static void CheckTripleNemesis(ulong target)
{
if(p.TargetId == SessionManager.CurrentPlayer.EntityId && EnergyStarsIDs.Contains(p.AbnormalityId))
if (MarkedTargets.Contains(target))
{
MarkedTargets.Remove(target);
if (MarkedTargets.Count == 0) TripleNemesisExpired?.Invoke();
}
}

public static void CheckTripleNemesis(S_ABNORMALITY_BEGIN p)
{
if (TripleNemesisId != p.AbnormalityId) return;
var target = BossGageWindowViewModel.Instance.NpcList.FirstOrDefault(x => x.EntityId == p.TargetId);
if (target != null)
{
if (!MarkedTargets.Contains(p.TargetId)) MarkedTargets.Add(p.TargetId);
TripleNemesisRefreshed?.Invoke(p.Duration);
}
}
public static void CheckTripleNemesis(S_ABNORMALITY_REFRESH p)
{
if (TripleNemesisId != p.AbnormalityId) return;
var target = BossGageWindowViewModel.Instance.NpcList.FirstOrDefault(x => x.EntityId == p.TargetId);
if (target != null)
{
if (!MarkedTargets.Contains(p.TargetId)) MarkedTargets.Add(p.TargetId);
TripleNemesisRefreshed?.Invoke(p.Duration);
}
}
public static void CheckTripleNemesis(S_ABNORMALITY_END p)
{
if (TripleNemesisId != p.AbnormalityId) return;
if (MarkedTargets.Contains(p.TargetId)) MarkedTargets.Remove(p.TargetId);
if (MarkedTargets.Count == 0) TripleNemesisExpired?.Invoke();
}

public static void CheckBuff(S_ABNORMALITY_BEGIN p)
{
CheckTripleNemesis(p);
if (p.TargetId == SessionManager.CurrentPlayer.EntityId && EnergyStarsIDs.Contains(p.AbnormalityId))
{
((PriestBarManager)ClassWindowViewModel.Instance.CurrentManager).EnergyStars.Buff.Start(p.Duration);
return;
}
if (p.TargetId == SessionManager.CurrentPlayer.EntityId && p.AbnormalityId == GraceId)
{
((PriestBarManager)ClassWindowViewModel.Instance.CurrentManager).Grace.Buff.Start(p.Duration);
return;
}
if (p.TargetId == SessionManager.CurrentPlayer.EntityId && EdictIDs.Contains(p.AbnormalityId))
{
((PriestBarManager)ClassWindowViewModel.Instance.CurrentManager).EdictOfJudgment.Buff.Start(p.Duration);
return;
}

}

internal static void CheckBuff(S_ABNORMALITY_REFRESH p)
public static void CheckBuff(S_ABNORMALITY_REFRESH p)
{
CheckTripleNemesis(p);

if (p.TargetId == SessionManager.CurrentPlayer.EntityId && EnergyStarsIDs.Contains(p.AbnormalityId))
{
((PriestBarManager)ClassWindowViewModel.Instance.CurrentManager).EnergyStars.Buff.Refresh(p.Duration);
Expand All @@ -45,15 +92,17 @@ internal static void CheckBuff(S_ABNORMALITY_REFRESH p)
if (p.TargetId == SessionManager.CurrentPlayer.EntityId && p.AbnormalityId == GraceId)
{
((PriestBarManager)ClassWindowViewModel.Instance.CurrentManager).Grace.Buff.Refresh(p.Duration);
return;
}
if (p.TargetId == SessionManager.CurrentPlayer.EntityId && EdictIDs.Contains(p.AbnormalityId))
{
((PriestBarManager)ClassWindowViewModel.Instance.CurrentManager).EdictOfJudgment.Buff.Refresh(p.Duration);
return;
}
}

public static void CheckBuffEnd(S_ABNORMALITY_END p)
{
CheckTripleNemesis(p);
if (p.TargetId == SessionManager.CurrentPlayer.EntityId && EnergyStarsIDs.Contains(p.AbnormalityId))
{
((PriestBarManager)ClassWindowViewModel.Instance.CurrentManager).EnergyStars.Buff.Refresh(0);
Expand All @@ -62,11 +111,18 @@ public static void CheckBuffEnd(S_ABNORMALITY_END p)
if (p.TargetId == SessionManager.CurrentPlayer.EntityId && p.AbnormalityId == GraceId)
{
((PriestBarManager)ClassWindowViewModel.Instance.CurrentManager).Grace.Buff.Refresh(0);
return;
}
if (p.TargetId == SessionManager.CurrentPlayer.EntityId && EdictIDs.Contains(p.AbnormalityId))
{
((PriestBarManager)ClassWindowViewModel.Instance.CurrentManager).EdictOfJudgment.Buff.Refresh(0);
return;
}
}

public static void ClearMarkedTargets()
{
App.BaseDispatcher.Invoke(() => MarkedTargets.Clear());
}
}
}
8 changes: 6 additions & 2 deletions TCC.Core/Controls/ArcherFocusControl.xaml
Original file line number Diff line number Diff line change
Expand Up @@ -9,7 +9,11 @@
<UserControl.LayoutTransform>
<ScaleTransform ScaleX="1" ScaleY="1"/>
</UserControl.LayoutTransform>
<Grid Margin="0,0,0,0" Width="55" Height="55">
<Grid>

<Image Source="../resources/images/char_window_bg.png" HorizontalAlignment="Stretch" VerticalAlignment="Stretch" Width="90"/>
</Grid>
<!--<Grid Margin="0,0,0,0" Width="55" Height="55">
<local:Arc StrokeThickness="5" Margin="-5"
EndAngle="0"
Stroke="#fc3"
Expand Down Expand Up @@ -49,5 +53,5 @@
TextAlignment="Center"
VerticalAlignment="Center" />
</Grid>
</Grid>
</Grid>-->
</UserControl>
47 changes: 23 additions & 24 deletions TCC.Core/Controls/ArcherFocusControl.xaml.cs
Original file line number Diff line number Diff line change
Expand Up @@ -31,41 +31,40 @@ private void UserControl_Loaded(object sender, RoutedEventArgs e)
_context = (ArcherFocusTracker)DataContext;
Thread.Sleep(500);
}
_context.PropertyChanged += _context_PropertyChanged;
}

private void _context_PropertyChanged(object sender, PropertyChangedEventArgs e)
private void OnFocusEnded()
{
if(e.PropertyName == "Refresh")
{
AnimateArcPartial(_context.Stacks);
}
else if(e.PropertyName == "StartFocus")
{
AnimateArcPartial(_context.Stacks);
}
else if(e.PropertyName == "StartFocusX")
{
AnimateArc();
}
else if(e.PropertyName == "Ended")
{
ResetArc();
}
//ResetArc();
}

private void ResetArc()
private void OnFocusXStarted()
{
InternalArc.BeginAnimation(Arc.StartAngleProperty, new DoubleAnimation(0, TimeSpan.FromMilliseconds(100)) {EasingFunction = new QuadraticEase() });
//AnimateArc();
}

private void AnimateArc()
private void OnFocusRefreshed()
{
ExternalArc.BeginAnimation(Arc.EndAngleProperty, new DoubleAnimation(359.9,0, TimeSpan.FromMilliseconds(_context.Duration)));
//AnimateArcPartial(_context.Stacks);
}
private void AnimateArcPartial(int newStacks)

private void OnFocusStarted()
{
InternalArc.BeginAnimation(Arc.StartAngleProperty, new DoubleAnimation(newStacks*36, TimeSpan.FromMilliseconds(100)) { EasingFunction = new QuadraticEase() });
//AnimateArcPartial(_context.Stacks);
}

//private void ResetArc()
//{
// InternalArc.BeginAnimation(Arc.StartAngleProperty, new DoubleAnimation(0, TimeSpan.FromMilliseconds(100)) { EasingFunction = new QuadraticEase() });
//}

//private void AnimateArc()
//{
// ExternalArc.BeginAnimation(Arc.EndAngleProperty, new DoubleAnimation(359.9, 0, TimeSpan.FromMilliseconds(_context.Duration)));
//}
//private void AnimateArcPartial(int newStacks)
//{
// InternalArc.BeginAnimation(Arc.StartAngleProperty, new DoubleAnimation(newStacks * 36, TimeSpan.FromMilliseconds(100)) { EasingFunction = new QuadraticEase() });
//}
}
}
Loading

0 comments on commit 57cb8ea

Please sign in to comment.