using System;
using System.Collections;
using System.Collections.Generic;
using Server;
using Server.Items;
using Server.ContextMenus;

namespace Server.Mobiles
{
	public class TinkerGuildmaster : BaseGuildmaster
	{
		public override NpcGuild NpcGuild{ get{ return NpcGuild.TinkersGuild; } }

		[Constructable]
		public TinkerGuildmaster() : base( "tinker" )
		{
			SetSkill( SkillName.Lockpicking, 65.0, 88.0 );
			SetSkill( SkillName.Tinkering, 90.0, 100.0 );
			SetSkill( SkillName.RemoveTrap, 85.0, 100.0 );
		}

		public TinkerGuildmaster( Serial serial ) : base( serial )
		{
		}

		public override void Serialize( GenericWriter writer )
		{
			base.Serialize( writer );

			writer.Write( 0 ); // version
		}

		public override void Deserialize( GenericReader reader )
		{
			base.Deserialize( reader );

			int version = reader.ReadInt();
		}

        public override void AddCustomContextEntries(Mobile from, List<ContextMenuEntry> list)
        {
            if (Core.ML && from.Alive)
            {
                RechargeEntry entry = new RechargeEntry(from, this);

                if (WeaponEngravingTool.Find(from) == null)
                    entry.Enabled = false;

                list.Add(entry);
            }

            base.AddCustomContextEntries(from, list);
        }

        private class RechargeEntry : ContextMenuEntry
        {
            private Mobile m_From;
            private Mobile m_Vendor;

            public RechargeEntry(Mobile from, Mobile vendor)
                : base(6271, 6)
            {
                m_From = from;
                m_Vendor = vendor;
            }

            public override void OnClick()
            {
                if (!Core.ML || m_Vendor == null || m_Vendor.Deleted)
                    return;

                WeaponEngravingTool tool = WeaponEngravingTool.Find(m_From);

                if (tool != null && tool.UsesRemaining <= 0)
                {
                    if (Banker.GetBalance(m_From) >= 100000)
                        m_From.SendGump(new WeaponEngravingTool.ConfirmGump(tool, m_Vendor));
                    else
                        m_Vendor.Say(1076167); // You need a 100,000 gold and a blue diamond to recharge the weapon engraver.
                }
                else
                    m_Vendor.Say(1076164); // I can only help with this if you are carrying an engraving tool that needs repair.
            }
        }
	}
}