/
com/planet_ink/coffee_mud/Abilities/Common/
com/planet_ink/coffee_mud/Abilities/Diseases/
com/planet_ink/coffee_mud/Abilities/Druid/
com/planet_ink/coffee_mud/Abilities/Fighter/
com/planet_ink/coffee_mud/Abilities/Languages/
com/planet_ink/coffee_mud/Abilities/Misc/
com/planet_ink/coffee_mud/Abilities/Prayers/
com/planet_ink/coffee_mud/Abilities/Properties/
com/planet_ink/coffee_mud/Abilities/Skills/
com/planet_ink/coffee_mud/Abilities/Songs/
com/planet_ink/coffee_mud/Abilities/Spells/
com/planet_ink/coffee_mud/Abilities/Thief/
com/planet_ink/coffee_mud/Abilities/Traps/
com/planet_ink/coffee_mud/Behaviors/
com/planet_ink/coffee_mud/CharClasses/interfaces/
com/planet_ink/coffee_mud/Commands/
com/planet_ink/coffee_mud/Commands/interfaces/
com/planet_ink/coffee_mud/Common/
com/planet_ink/coffee_mud/Common/interfaces/
com/planet_ink/coffee_mud/Exits/interfaces/
com/planet_ink/coffee_mud/Items/Armor/
com/planet_ink/coffee_mud/Items/Basic/
com/planet_ink/coffee_mud/Items/CompTech/
com/planet_ink/coffee_mud/Items/MiscMagic/
com/planet_ink/coffee_mud/Items/Weapons/
com/planet_ink/coffee_mud/Items/interfaces/
com/planet_ink/coffee_mud/Libraries/
com/planet_ink/coffee_mud/Libraries/interfaces/
com/planet_ink/coffee_mud/Locales/
com/planet_ink/coffee_mud/MOBS/
com/planet_ink/coffee_mud/Races/
com/planet_ink/coffee_mud/Races/interfaces/
com/planet_ink/coffee_mud/WebMacros/
com/planet_ink/coffee_mud/WebMacros/interfaces/
com/planet_ink/coffee_mud/core/
com/planet_ink/coffee_mud/core/collections/
com/planet_ink/coffee_mud/core/interfaces/
com/planet_ink/coffee_mud/core/intermud/
com/planet_ink/coffee_mud/core/intermud/i3/
com/planet_ink/coffee_web/server/
com/planet_ink/siplet/applet/
lib/
resources/factions/
resources/fakedb/
resources/progs/autoplayer/
resources/quests/holidays/
web/
web/admin.templates/
web/admin/grinder/
web/admin/images/
web/clan.templates/
web/pub.templates/
web/pub/images/mxp/
web/pub/sounds/
web/pub/textedit/
package com.planet_ink.coffee_mud.Common;
import com.planet_ink.coffee_mud.core.interfaces.*;
import com.planet_ink.coffee_mud.core.*;
import com.planet_ink.coffee_mud.core.collections.*;
import com.planet_ink.coffee_mud.Abilities.interfaces.*;
import com.planet_ink.coffee_mud.Areas.interfaces.*;
import com.planet_ink.coffee_mud.Behaviors.interfaces.*;
import com.planet_ink.coffee_mud.CharClasses.interfaces.*;
import com.planet_ink.coffee_mud.Commands.interfaces.*;
import com.planet_ink.coffee_mud.Common.interfaces.*;
import com.planet_ink.coffee_mud.Exits.interfaces.*;
import com.planet_ink.coffee_mud.Items.interfaces.*;
import com.planet_ink.coffee_mud.Libraries.interfaces.*;
import com.planet_ink.coffee_mud.Locales.interfaces.*;
import com.planet_ink.coffee_mud.MOBS.interfaces.*;
import com.planet_ink.coffee_mud.Races.interfaces.*;

import java.io.ByteArrayOutputStream;
import java.io.IOException;
import java.util.Enumeration;
import java.util.Hashtable;
import java.util.Properties;
import java.util.Vector;

/*
   Copyright 2015-2016 Bo Zimmerman

   Licensed under the Apache License, Version 2.0 (the "License");
   you may not use this file except in compliance with the License.
   You may obtain a copy of the License at

	   http://www.apache.org/licenses/LICENSE-2.0

   Unless required by applicable law or agreed to in writing, software
   distributed under the License is distributed on an "AS IS" BASIS,
   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
   See the License for the specific language governing permissions and
   limitations under the License.
*/
public class DefaultAuction implements AuctionData
{
	@Override
	public String ID()
	{
		return "DefaultAuction";
	}

	@Override
	public String name()
	{
		return ID();
	}
	
	public Item		auctioningI		= null;
	public MOB		auctioningM		= null;
	public MOB		highBidderM		= null;
	public String	currency		= "";
	public double	highBid			= 0.0;
	public double	bid				= 0.0;
	public double	buyOutPrice		= 0.0;
	public int		state			= -1;
	public long		tickDown		= 0;
	public long		start			= 0;
	public String	auctionDBKey	= "";

	@Override
	public CMObject newInstance()
	{
		try
		{
			return getClass().newInstance();
		}
		catch (final Exception e)
		{
			return new DefaultAuction();
		}
	}

	@Override
	public int compareTo(CMObject o)
	{
		return CMClass.classID(this).compareToIgnoreCase(CMClass.classID(o));
	}

	@Override
	public void initializeClass()
	{
	}

	@Override
	public CMObject copyOf()
	{
		try
		{
			return (DefaultAuction)this.clone();
		}
		catch(final CloneNotSupportedException e)
		{
			return newInstance();
		}
	}
	
	@Override
	public int daysRemaining(MOB mob, MOB mob2)
	{
		if (System.currentTimeMillis() >= tickDown)
			return 0;
		Area A = CMLib.map().getStartArea(mob);
		if (A == null)
			A = CMLib.map().getStartArea(mob2);
		long daysRemain = tickDown - System.currentTimeMillis();
		daysRemain = Math.round(Math.floor(CMath.div(CMath.div(daysRemain, CMProps.getMillisPerMudHour()), A.getTimeObj().getHoursInDay())));
		return (int) daysRemain;
	}

	@Override
	public int daysEllapsed(MOB mob, MOB mob2)
	{
		if (System.currentTimeMillis() < start)
			return 0;
		Area A = CMLib.map().getStartArea(mob);
		if (A == null)
			A = CMLib.map().getStartArea(mob2);
		long daysRemain = System.currentTimeMillis() - start;
		daysRemain = Math.round(Math.floor(CMath.div(CMath.div(daysRemain, CMProps.getMillisPerMudHour()), A.getTimeObj().getHoursInDay())));
		return (int) daysRemain;
	}
	
	@Override
	public Item getAuctionedItem()
	{
		return auctioningI;
	}
	
	@Override
	public void setAuctionedItem(Item auctioningI)
	{
		this.auctioningI = auctioningI;
	}
	
	@Override
	public MOB getAuctioningMob()
	{
		return auctioningM;
	}
	
	@Override
	public void setAuctioningMob(MOB auctioningM)
	{
		this.auctioningM = auctioningM;
	}
	
	@Override
	public MOB getHighBidderMob()
	{
		return highBidderM;
	}
	
	@Override
	public void setHighBidderMob(MOB highBidderM)
	{
		this.highBidderM = highBidderM;
	}
	
	@Override
	public String getCurrency()
	{
		return currency;
	}
	
	@Override
	public void setCurrency(String currency)
	{
		this.currency = currency;
	}
	
	@Override
	public double getHighBid()
	{
		return highBid;
	}
	
	@Override
	public void setHighBid(double highBid)
	{
		this.highBid = highBid;
	}
	
	@Override
	public double getBid()
	{
		return bid;
	}
	
	@Override
	public void setBid(double bid)
	{
		this.bid = bid;
	}
	
	@Override
	public double getBuyOutPrice()
	{
		return buyOutPrice;
	}
	
	@Override
	public void setBuyOutPrice(double buyOutPrice)
	{
		this.buyOutPrice = buyOutPrice;
	}
	
	@Override
	public int getAuctionState()
	{
		return state;
	}
	
	@Override
	public void setAuctionState(int state)
	{
		this.state = state;
	}
	
	@Override
	public long getAuctionTickDown()
	{
		return tickDown;
	}
	
	@Override
	public void setAuctionTickDown(long tickDown)
	{
		this.tickDown = tickDown;
	}
	
	@Override
	public long getStartTime()
	{
		return start;
	}
	
	@Override
	public void setStartTime(long start)
	{
		this.start = start;
	}
	
	@Override
	public String getAuctionDBKey()
	{
		return auctionDBKey;
	}
	
	@Override
	public void setAuctionDBKey(String auctionDBKey)
	{
		this.auctionDBKey = auctionDBKey;
	}
}