#region License
// Copyright (C) 2020 Reetus
//
// This program is free software: you can redistribute it and/or modify
// it under the terms of the GNU General Public License as published by
// the Free Software Foundation, either version 3 of the License, or
// (at your option) any later version.
//
// This program is distributed in the hope that it will be useful,
// but WITHOUT ANY WARRANTY; without even the implied warranty of
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
// GNU General Public License for more details.
//
// You should have received a copy of the GNU General Public License
// along with this program. If not, see .
#endregion
using System.Collections;
using System.Collections.Generic;
using System.Linq;
using ClassicAssist.Shared;
using ClassicAssist.UO.Network.Packets;
namespace ClassicAssist.UO.Data
{
public enum QuestPointerType
{
Resurrection,
Corpse,
Other
}
public class QuestPointerList : IEnumerable
{
private readonly object _lock = new object();
private readonly List _questPointers = new List();
public IEnumerator GetEnumerator()
{
return _questPointers.GetEnumerator();
}
IEnumerator IEnumerable.GetEnumerator()
{
return GetEnumerator();
}
public void Add( QuestPointer questPointer )
{
lock ( _lock )
{
_questPointers.Add( questPointer );
}
Engine.SendPacketToClient( new DisplayQuestPointer( true, questPointer.X, questPointer.Y,
questPointer.Serial ) );
}
public void Remove( QuestPointer questPointer )
{
lock ( _lock )
{
_questPointers.Remove( questPointer );
}
Engine.SendPacketToClient( new DisplayQuestPointer( false, questPointer.X, questPointer.Y,
questPointer.Serial ) );
}
public void Clear()
{
Remove( _questPointers );
}
public void Remove( IEnumerable questPointers )
{
foreach ( QuestPointer questPointer in questPointers.ToArray() )
{
Remove( questPointer );
}
}
public void RemoveByType( QuestPointerType type )
{
IEnumerable pointers = _questPointers.Where( p => p.Type == type );
Remove( pointers );
}
}
public class QuestPointer
{
public int Serial { get; set; }
public QuestPointerType Type { get; set; }
public int X { get; set; }
public int Y { get; set; }
}
}