/
area/
classes/net/sourceforge/pain/logic/
classes/net/sourceforge/pain/logic/event/
classes/net/sourceforge/pain/logic/fn/util/
classes/net/sourceforge/pain/network/console/
classes/net/sourceforge/pain/plugin/
classes/net/sourceforge/pain/plugin/reset/
classes/net/sourceforge/pain/plugin/shutdown/
classes/net/sourceforge/pain/plugin/social/
classest/net/sourceforge/pain/db/data/
doc/
doc/paindb/resources/
src/net/sourceforge/pain/logic/
src/net/sourceforge/pain/logic/event/
src/net/sourceforge/pain/logic/fn/util/
src/net/sourceforge/pain/network/console/
src/net/sourceforge/pain/network/console/telnet/
src/net/sourceforge/pain/plugin/
src/net/sourceforge/pain/plugin/command/
src/net/sourceforge/pain/plugin/reset/
src/net/sourceforge/pain/plugin/shutdown/
src/net/sourceforge/pain/plugin/social/
src/net/sourceforge/pain/util/
tests/
tests/net/sourceforge/pain/db/data/
package net.sourceforge.pain;

/**
 * Date: Jan 16, 2003
 * Time: 4:52:06 AM
 */
public abstract class PeriodOfTimeListener implements TimeListener {

	public static final int PERIOD_IN_PULSE = 1;
	public static final int PERIOD_IN_SECONDS = 2;
	private int period;
	private int timeToAct;

	public PeriodOfTimeListener(int period, int periodType) {
		switch (periodType) {
			case PERIOD_IN_PULSE:
				this.period = period;
				break;
			case PERIOD_IN_SECONDS:
				this.period = period * 1000 / Time.PULSE_PER_SCD;
				break;
			default:
				throw new IllegalArgumentException("Illegal Period type:" + periodType);
		}
		timeToAct = 0;
	}

	public void pulse(int time) {
		if (time == timeToAct) {
			return;
		}
		timeToAct += period;
		onPeriod(time);

	}

	protected abstract void onPeriod(int time);
}