/*************************************************************************** * Guild.cs * ------------------- * begin : May 1, 2002 * copyright : (C) The RunUO Software Team * email : info@runuo.com * * $Id$ * ***************************************************************************/ /*************************************************************************** * * 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 2 of the License, or * (at your option) any later version. * ***************************************************************************/ using System; using System.Collections; using System.Collections.Generic; using Server.Items; namespace Server.Guilds { public enum GuildType { Regular, Chaos, Order } public abstract class BaseGuild : ISerializable { private int m_Id; protected BaseGuild( int Id )//serialization ctor { m_Id = Id; m_GuildList.Add( m_Id, this ); if ( m_Id+1 > m_NextID ) m_NextID = m_Id + 1; } protected BaseGuild() { m_Id = m_NextID++; m_GuildList.Add( m_Id, this ); } [CommandProperty( AccessLevel.Counselor )] public int Id { get { return m_Id; } } int ISerializable.TypeReference { get { return 0; } } int ISerializable.SerialIdentity { get { return m_Id; } } public abstract void Deserialize( GenericReader reader ); public abstract void Serialize( GenericWriter writer ); public abstract string Abbreviation { get; set; } public abstract string Name { get; set; } public abstract GuildType Type { get; set; } public abstract bool Disbanded{ get; } public abstract void OnDelete( Mobile mob ); private static Dictionary m_GuildList = new Dictionary(); private static int m_NextID = 1; public static Dictionary List { get { return m_GuildList; } } public static BaseGuild Find( int id ) { BaseGuild g; m_GuildList.TryGetValue( id, out g ); return g; } public static BaseGuild FindByName( string name ) { foreach ( BaseGuild g in m_GuildList.Values ) { if ( g.Name == name ) return g; } return null; } public static BaseGuild FindByAbbrev( string abbr ) { foreach ( BaseGuild g in m_GuildList.Values ) { if ( g.Abbreviation == abbr ) return g; } return null; } public static List Search( string find ) { string[] words = find.ToLower().Split( ' ' ); List results = new List(); foreach ( BaseGuild g in m_GuildList.Values ) { bool match = true; string name = g.Name.ToLower(); for (int i=0;i