BritainKnights/Source/Guild.cs

145 lines
3.3 KiB
C#

/***************************************************************************
* 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<int, BaseGuild> m_GuildList = new Dictionary<int, BaseGuild>();
private static int m_NextID = 1;
public static Dictionary<int, BaseGuild> 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<BaseGuild> Search( string find )
{
string[] words = find.ToLower().Split( ' ' );
List<BaseGuild> results = new List<BaseGuild>();
foreach ( BaseGuild g in m_GuildList.Values )
{
bool match = true;
string name = g.Name.ToLower();
for (int i=0;i<words.Length;i++)
{
if ( name.IndexOf( words[i] ) == -1 )
{
match = false;
break;
}
}
if ( match )
results.Add( g );
}
return results;
}
public override string ToString()
{
return String.Format( "0x{0:X} \"{1} [{2}]\"", m_Id, Name, Abbreviation );
}
}
}