155 lines
		
	
	
		
			3.8 KiB
		
	
	
	
		
			Java
		
	
	
	
	
	
			
		
		
	
	
			155 lines
		
	
	
		
			3.8 KiB
		
	
	
	
		
			Java
		
	
	
	
	
	
| /*
 | |
|  * Copyright (C) 2004-2015 L2J Server
 | |
|  * 
 | |
|  * This file is part of L2J Server.
 | |
|  * 
 | |
|  * L2J Server 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 3 of the License, or
 | |
|  * (at your option) any later version.
 | |
|  * 
 | |
|  * L2J Server is distributed in the hope that it will be useful,
 | |
|  * but WITHOUT ANY WARRANTY; without even the implied warranty of
 | |
|  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
 | |
|  * General Public License for more details.
 | |
|  * 
 | |
|  * You should have received a copy of the GNU General Public License
 | |
|  * along with this program. If not, see <http://www.gnu.org/licenses/>.
 | |
|  */
 | |
| package com.l2jserver.gameserver.model;
 | |
| 
 | |
| import com.l2jserver.gameserver.model.items.instance.L2ItemInstance;
 | |
| import com.l2jserver.gameserver.model.skills.Skill;
 | |
| 
 | |
| /**
 | |
|  * Simple class containing all necessary information to maintain<br>
 | |
|  * valid time stamps and reuse for skills and items reuse upon re-login.<br>
 | |
|  * <b>Filter this carefully as it becomes redundant to store reuse for small delays.</b>
 | |
|  * @author Yesod, Zoey76
 | |
|  */
 | |
| public class TimeStamp
 | |
| {
 | |
| 	/** Item or skill ID. */
 | |
| 	private final int _id1;
 | |
| 	/** Item object ID or skill level. */
 | |
| 	private final int _id2;
 | |
| 	/** Item or skill reuse time. */
 | |
| 	private final long _reuse;
 | |
| 	/** Time stamp. */
 | |
| 	private final long _stamp;
 | |
| 	/** Shared reuse group. */
 | |
| 	private final int _group;
 | |
| 	
 | |
| 	/**
 | |
| 	 * Skill time stamp constructor.
 | |
| 	 * @param skill the skill upon the stamp will be created.
 | |
| 	 * @param reuse the reuse time for this skill.
 | |
| 	 * @param systime overrides the system time with a customized one.
 | |
| 	 */
 | |
| 	public TimeStamp(Skill skill, long reuse, long systime)
 | |
| 	{
 | |
| 		_id1 = skill.getId();
 | |
| 		_id2 = skill.getLevel();
 | |
| 		_reuse = reuse;
 | |
| 		_stamp = systime > 0 ? systime : System.currentTimeMillis() + reuse;
 | |
| 		_group = -1;
 | |
| 	}
 | |
| 	
 | |
| 	/**
 | |
| 	 * Item time stamp constructor.
 | |
| 	 * @param item the item upon the stamp will be created.
 | |
| 	 * @param reuse the reuse time for this item.
 | |
| 	 * @param systime overrides the system time with a customized one.
 | |
| 	 */
 | |
| 	public TimeStamp(L2ItemInstance item, long reuse, long systime)
 | |
| 	{
 | |
| 		_id1 = item.getId();
 | |
| 		_id2 = item.getObjectId();
 | |
| 		_reuse = reuse;
 | |
| 		_stamp = systime > 0 ? systime : System.currentTimeMillis() + reuse;
 | |
| 		_group = item.getSharedReuseGroup();
 | |
| 	}
 | |
| 	
 | |
| 	/**
 | |
| 	 * Gets the time stamp.
 | |
| 	 * @return the time stamp, either the system time where this time stamp was created or the custom time assigned
 | |
| 	 */
 | |
| 	public long getStamp()
 | |
| 	{
 | |
| 		return _stamp;
 | |
| 	}
 | |
| 	
 | |
| 	/**
 | |
| 	 * Gets the item ID.
 | |
| 	 * @return the item ID
 | |
| 	 */
 | |
| 	public int getItemId()
 | |
| 	{
 | |
| 		return _id1;
 | |
| 	}
 | |
| 	
 | |
| 	/**
 | |
| 	 * Gets the item object ID.
 | |
| 	 * @return the item object ID
 | |
| 	 */
 | |
| 	public int getItemObjectId()
 | |
| 	{
 | |
| 		return _id2;
 | |
| 	}
 | |
| 	
 | |
| 	/**
 | |
| 	 * Gets the skill ID.
 | |
| 	 * @return the skill ID
 | |
| 	 */
 | |
| 	public int getSkillId()
 | |
| 	{
 | |
| 		return _id1;
 | |
| 	}
 | |
| 	
 | |
| 	/**
 | |
| 	 * Gets the skill level.
 | |
| 	 * @return the skill level
 | |
| 	 */
 | |
| 	public int getSkillLvl()
 | |
| 	{
 | |
| 		return _id2;
 | |
| 	}
 | |
| 	
 | |
| 	/**
 | |
| 	 * Gets the reuse.
 | |
| 	 * @return the reuse
 | |
| 	 */
 | |
| 	public long getReuse()
 | |
| 	{
 | |
| 		return _reuse;
 | |
| 	}
 | |
| 	
 | |
| 	/**
 | |
| 	 * Get the shared reuse group.<br>
 | |
| 	 * Only used on items.
 | |
| 	 * @return the shared reuse group
 | |
| 	 */
 | |
| 	public int getSharedReuseGroup()
 | |
| 	{
 | |
| 		return _group;
 | |
| 	}
 | |
| 	
 | |
| 	/**
 | |
| 	 * Gets the remaining time.
 | |
| 	 * @return the remaining time for this time stamp to expire
 | |
| 	 */
 | |
| 	public long getRemaining()
 | |
| 	{
 | |
| 		return Math.max(_stamp - System.currentTimeMillis(), 0);
 | |
| 	}
 | |
| 	
 | |
| 	/**
 | |
| 	 * Verifies if the reuse delay has passed.
 | |
| 	 * @return {@code true} if this time stamp has expired, {@code false} otherwise
 | |
| 	 */
 | |
| 	public boolean hasNotPassed()
 | |
| 	{
 | |
| 		return System.currentTimeMillis() < _stamp;
 | |
| 	}
 | |
| }
 | 
