/
codebase/
codebase/area/
codebase/doc/
codebase/etc/
codebase/src/net/sourceforge/pain/data/trigger/
codebase/src/net/sourceforge/pain/logic/
codebase/src/net/sourceforge/pain/logic/affect/
codebase/src/net/sourceforge/pain/logic/event/
codebase/src/net/sourceforge/pain/logic/event/deploy/
codebase/src/net/sourceforge/pain/logic/event/guitool/
codebase/src/net/sourceforge/pain/logic/event/guitool/event/
codebase/src/net/sourceforge/pain/logic/fn/util/
codebase/src/net/sourceforge/pain/logic/trigger/
codebase/src/net/sourceforge/pain/logic/trigger/impl/
codebase/src/net/sourceforge/pain/network/console/
codebase/src/net/sourceforge/pain/network/console/telnet/
codebase/src/net/sourceforge/pain/network/guitool/
codebase/src/net/sourceforge/pain/plugin/
codebase/src/net/sourceforge/pain/plugin/command/
codebase/src/net/sourceforge/pain/plugin/reset/
codebase/src/net/sourceforge/pain/plugin/shutdown/
codebase/src/net/sourceforge/pain/plugin/social/
codebase/src/net/sourceforge/pain/util/
db/doc/javadoc/resources/
db/src/net/sourceforge/pain/util/
gui/
gui/lib/
gui/src/net/sourceforge/pain/tools/guitool/dbbrowse/
gui/src/net/sourceforge/pain/tools/guitool/dialog/
gui/src/net/sourceforge/pain/tools/guitool/menu/
gui/src/net/sourceforge/pain/tools/guitool/resources/
gui/src/net/sourceforge/pain/tools/guitool/resources/images/
gui/src/net/sourceforge/pain/tools/guitool/resources/images/explorer/
tests/
tests/src/
tests/src/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) throws Exception {
		if (time == timeToAct) {
			return;
		}
		timeToAct += period;
		onPeriod(time);

	}

	protected abstract void onPeriod(int time) throws Exception;
}