UO-Dev Arama


Yazar: Bilinmiyor
Tarih: 26-08-2009 13:41


Paylaş : Paylaş

Kod:
using System;
using System.Reflection;
using System.Collections;
using System.Collections.Generic;
using System.Text;

namespace Server.Commands.Generic
{
public sealed class SortExtension : BaseExtension
{
public static ExtensionInfo ExtInfo = new ExtensionInfo( 40, "Order", -1, delegate() { return new SortExtension(); } );

public static void Initialize()
{
ExtensionInfo.Register( ExtInfo );
}

public override ExtensionInfo Info
{
get { return ExtInfo; }
}

private List<OrderInfo> m_Orders;

private IComparer m_Comparer;

public SortExtension()
{
m_Orders = new List<OrderInfo>();
}

public override void Optimize( Mobile from, Type baseType, ref AssemblyEmitter assembly )
{
if ( baseType == null )
throw new Exception( "The ordering extension may only be used in combination with an object conditional." );

foreach ( OrderInfo order in m_Orders )
{
order.Property.BindTo( baseType, PropertyAccess.Read );
order.Property.CheckAccess( from );
}

if ( assembly == null )
assembly = new AssemblyEmitter( "__dynamic", false );

m_Comparer = SortCompiler.Compile( assembly, baseType, m_Orders.ToArray() );
}

public override void Parse( Mobile from, string[] arguments, int offset, int size )
{
if ( size < 1 )
throw new Exception( "Invalid ordering syntax." );

if ( Insensitive.Equals( arguments[offset], "by" ) )
{
++offset;
--size;

if ( size < 1 )
throw new Exception( "Invalid ordering syntax." );
}

int end = offset + size;

while ( offset < end )
{
string binding = arguments[offset++];

bool isAscending = true;

if ( offset < end )
{
string next = arguments[offset];

switch ( next.ToLower() )
{
case "+":
case "up":
case "asc":
case "ascending":
isAscending = true;
++offset;
break;

case "-":
case "down":
case "desc":
case "descending":
isAscending = false;
++offset;
break;
}
}

Property property = new Property( binding );

m_Orders.Add( new OrderInfo( property, isAscending ) );
}
}

public override void Filter( ArrayList list )
{
if ( m_Comparer == null )
throw new InvalidOperationException( "The extension must first be optimized." );

list.Sort( m_Comparer );
}
}
}



Yorumlar

Henüz yorum yapılmamıştır.

Oylamalar

Oylama :
Üyelerin oylama ortalaması (10 dışında) : Henüz Oylanmamış   
Oylar: 0

Benzer Sayfalar

SayfalarYorumlarGönderenTarih
Where Extension0Amesron26-08-2009
Limit Extension0Amesron26-08-2009
Distinct Extension0Amesron26-08-2009
Sort Compiler0Amesron26-08-2009
Base Extension0Amesron26-08-2009


Keywords:

ultima online, RunUO, ultima online download, sphere scripting, role play, uo grafik, second age ultima, uo loop, macroman, pvp server, server kurulumu, sphere, multool, ml mulls, 56b 55r 55i, htmlgumps, client 4x, client edit, sphere release, osi, rp server, sunucular, ghost mouse, inside uo, kingdom reborn, stygian abyss, uo nasıl oynanır, mondain's legacy, age of shadows, world build, grandmaster, ultima online pvp, player dosyaları, ultima online indir, frp game, RunUO 1.0.0, razor, uo rice, hue editör, skill tools, ultima online patch, axis, world build, verdata, verdata patcher, map editör, gump editör, mul patcher, aos mulls, scriptler, anim edit, anim publish, hues mul, hosting vps, event dialog, account sistemi, skill gain, static yapımı,