//==============================================//
// Created by Dupre //
// Thanks to: //
// Zippy //
// Ike //
// Ignacio //
// //
// For putting up with a 'tard like me :) //
// //
//==============================================//
using System;
using Server;
using Server.Items;
using Server.Mobiles;
using Server.Network;
using Server.Gumps;
using System.Collections;
namespace Server.Items
{
public class TentDestroyer : BaseAddon
{
[CommandProperty( AccessLevel.GameMaster )]
public DateTime DeleteTime{ get{ return m_DeleteTime; } }
public int TentStatus
{
get
{
DateTime start = DeleteTime - TimeSpan.FromSeconds( 140.0 );;
if ( DateTime.Now - start < TimeSpan.FromSeconds( 1.0 ) )
return 1043010; // This structure is like new.
if ( DateTime.Now - start < TimeSpan.FromSeconds( 20.0 ) )
return 1043011; // This structure is slightly worn.
if ( DateTime.Now - start < TimeSpan.FromSeconds( 40.0 ) )
return 1043012; // This structure is somewhat worn.
if ( DateTime.Now - start < TimeSpan.FromSeconds( 60.0 ) )
return 1043013; // This structure is fairly worn.
if ( DateTime.Now - start < TimeSpan.FromSeconds( 120.0 ) )
return 1043014; // This structure is greatly worn.
return 1043015; // This structure is in danger of collapsing.
}
}
[Constructable]
public TentDestroyer( TentWalls tentwalls,TentRoof tentroof,TentFloor tentfloor,TentTrim tenttrim, PlayerMobile player, SecureTent chest) :
this ( tentwalls, tentroof, tentfloor, tenttrim, player, chest, null )
{
}
[Constructable]
public TentDestroyer( TentWalls tentwalls,TentRoof tentroof,TentFloor tentfloor,TentTrim tenttrim, PlayerMobile player, SecureTent chest, TentCampFirePit tentcampfirepit)
{
Name = "A tent carrying bag";
m_Player = player;
m_TentRoof = tentroof;
m_TentWalls = tentwalls;
m_TentFloor = tentfloor;
m_TentTrim = tenttrim;
m_Chest = chest;
m_TentCampFirePit = tentcampfirepit;
m_DeleteTime = DateTime.Now + TimeSpan.FromSeconds( 140.0 );
m_Timer = new DeleteTimer( this, m_DeleteTime );
m_Timer.Start();
//m_TentCampFirePit = new TentCampFirePit( this );
//Point3D relLoc = new Point3D( m_TentCampFirePit.X + this.X, this.Y, this.Z );
//m_TentCampFirePit.MoveToWorld( relLoc, this.Map );
this.ItemID = 2648; // 2645;
this.Visible = true;
Hue = 1801; // 1072;
}
private TentRoof m_TentRoof;
private TentWalls m_TentWalls;
private TentTrim m_TentTrim;
private TentFloor m_TentFloor;
private PlayerMobile m_Player;
private SecureTent m_Chest;
private TentCampFirePit m_TentCampFirePit;
private DateTime m_DeleteTime;
private Timer m_Timer;
public PlayerMobile Player
{
get{ return m_Player; }
}
public override void OnDoubleClick( Mobile from )
{
from.SendGump (new TentRepackGump(this,from));
}
public override void OnSingleClick( Mobile from )
{
LabelTo( from, this.TentStatus );
}
public override void OnDelete()
{
if ( m_TentFloor != null ) // m_TentFloor
{
m_TentFloor.Delete();
}
else
{
Console.WriteLine("m_TentFloor was null");
}
if ( m_TentTrim != null ) // m_TentTrim
{
m_TentTrim.Delete();
}
else
{
Console.WriteLine("m_TentTrim was null");
}
if ( m_TentWalls != null ) // m_TentWalls
{
m_TentWalls.Delete();
}
else
{
Console.WriteLine("m_TentWalls was null");
}
if ( m_TentRoof != null ) // m_TentRoof
{
m_TentRoof.Delete();
}
else
{
Console.WriteLine("m_TentRoof was null");
}
if ( m_Chest != null ) // m_Chest
{
m_Chest.Delete();
}
else
{
Console.WriteLine("m_Chest was null");
}
if ( m_TentCampFirePit != null ) // m_TentVerifier
{
m_TentCampFirePit.Delete();
}
else
{
// Console.WriteLine("m_TentVerifier was null - this is okay to see if you had tent verifiers before. Comment this line out after all are cleared.");
}
}
public void RefreshTent()
{
m_Timer.Stop();
m_DeleteTime = DateTime.Now + TimeSpan.FromSeconds( 140.0 );
m_Timer = new DeleteTimer( this, m_DeleteTime );
m_Timer.Start();
}
public void RepackTent( Mobile from )
{
if (m_Player==from )
{
if ( m_Chest != null && m_Chest.Items.Count > 0 )
{
from.SendMessage( "You must remove the items from the travel backpack before packing up your tent." );
}
else
{
this.Delete();
from.AddToBackpack( new TentDeed() );
from.SendMessage( "You pack up your tent and place it in your backpack." );
}
}
else
{
from.SendMessage( "You don't appear to own this tent." );
}
}
public TentDestroyer( Serial serial ) : base( serial )
{
}
public override void Serialize( GenericWriter writer )
{
base.Serialize( writer );
writer.Write( (int) 1 ); // version
writer.Write( m_TentTrim );
writer.Write( m_TentFloor );
writer.Write( m_TentWalls );
writer.Write( m_TentRoof );
writer.Write( m_Player );
writer.Write( m_Chest );
writer.Write( m_TentCampFirePit );
writer.WriteDeltaTime( m_DeleteTime );
}
public override void Deserialize( GenericReader reader )
{
base.Deserialize( reader );
int version = reader.ReadInt();
m_TentTrim = (TentTrim)reader.ReadItem();
m_TentFloor = (TentFloor)reader.ReadItem();
m_TentWalls = (TentWalls)reader.ReadItem();
m_TentRoof = (TentRoof)reader.ReadItem();
m_Player = (PlayerMobile)reader.ReadMobile();
m_Chest = (SecureTent)reader.ReadItem();
m_TentCampFirePit = (TentCampFirePit)reader.ReadItem();
m_DeleteTime = reader.ReadDeltaTime();
}
private class DeleteTimer : Timer
{
private Item m_Item;
public DeleteTimer( Item item, DateTime time ) : base( time - DateTime.Now )
{
m_Item = item;
Priority = TimerPriority.OneSecond;
}
protected override void OnTick()
{
TentDeed tentd = new TentDeed();
tentd.Location = new Point3D( m_Item.X, m_Item.Y, m_Item.Z );
tentd.Map = m_Item.Map;
m_Item.Delete();
}
}
}
}