Files
abysmal-isle/Scripts/SubSystem/ACC/ACCSystem.cs
Unstable Kitsune 64241058c5 Misc Update
2023-12-09 22:56:44 -05:00

93 lines
2.5 KiB
C#

using System;
using System.IO;
using Server.Gumps;
using Server.Network;
namespace Server.ACC
{
public abstract class ACCSystem
{
public abstract string Name();
public abstract void Save( GenericWriter idx, GenericWriter tdb, GenericWriter writer );
public abstract void Load( BinaryReader idx, BinaryReader tdb, BinaryFileReader reader );
public abstract void Gump( Mobile from, Gump gump, ACCGumpParams subParams );
public abstract void Help( Mobile from, Gump gump );
public abstract void OnResponse( NetState state, RelayInfo info, ACCGumpParams subParams );
public abstract void Enable();
public abstract void Disable();
public bool Enabled{ get{ return ACC.SysEnabled( this.ToString() ); } }
public void StartSave( string path )
{
path += Name()+"/";
if( !Directory.Exists( path ) )
Directory.CreateDirectory( path );
try
{
GenericWriter idx = new BinaryFileWriter( path+Name()+".idx", false );
GenericWriter tdb = new BinaryFileWriter( path+Name()+".tdb", false );
GenericWriter bin = new BinaryFileWriter( path+Name()+".bin", true );
Console.Write( " - Saving {0}...", Name() );
Save( idx, tdb, bin );
idx.Close();
tdb.Close();
bin.Close();
Console.WriteLine( "Done." );
}
catch( Exception err )
{
Console.WriteLine( "Failed. Exception: "+err );
}
}
public void StartLoad( string path )
{
path += Name()+"/";
string idxPath = path+Name()+".idx";
string tdbPath = path+Name()+".tdb";
string binPath = path+Name()+".bin";
if( !Directory.Exists( path ) )
Directory.CreateDirectory( path );
if( File.Exists( idxPath ) && File.Exists( tdbPath ) && File.Exists( binPath ) )
{
using( FileStream idx = new FileStream( idxPath, FileMode.Open, FileAccess.Read, FileShare.Read ) )
{
BinaryReader idxReader = new BinaryReader( idx );
using( FileStream tdb = new FileStream( tdbPath, FileMode.Open, FileAccess.Read, FileShare.Read ) )
{
BinaryReader tdbReader = new BinaryReader( tdb );
using( FileStream bin = new FileStream( binPath, FileMode.Open, FileAccess.Read, FileShare.Read ) )
{
BinaryFileReader binReader = new BinaryFileReader( new BinaryReader( bin ) );
Console.Write( " - Loading {0}", Name() );
Load( idxReader, tdbReader, binReader );
idxReader.Close();
tdbReader.Close();
binReader.Close();
bin.Close();
tdb.Close();
idx.Close();
Console.WriteLine( " - Done." );
}
}
}
}
}
}
}