2011-05-13 04:24:42 -04:00
|
|
|
package org.moparscape.msc.gs.event;
|
2011-04-27 01:44:26 -04:00
|
|
|
|
2011-05-13 04:24:42 -04:00
|
|
|
import org.moparscape.msc.gs.Instance;
|
|
|
|
import org.moparscape.msc.gs.core.DelayedEventHandler;
|
2011-05-13 06:22:12 -04:00
|
|
|
import org.moparscape.msc.gs.core.GameEngine;
|
2011-05-13 04:24:42 -04:00
|
|
|
import org.moparscape.msc.gs.model.Player;
|
|
|
|
import org.moparscape.msc.gs.model.World;
|
2011-04-27 01:44:26 -04:00
|
|
|
|
|
|
|
public abstract class DelayedEvent {
|
2011-06-25 01:44:53 -04:00
|
|
|
public static final World world = Instance.getWorld();
|
|
|
|
protected int delay = 500;
|
|
|
|
protected final DelayedEventHandler handler = Instance.getWorld()
|
|
|
|
.getDelayedEventHandler();
|
|
|
|
private long lastRun = GameEngine.getTime();
|
|
|
|
protected Player owner;
|
|
|
|
protected boolean matchRunning = true;
|
|
|
|
public Object[] args = null;
|
|
|
|
|
|
|
|
// f2p
|
|
|
|
public DelayedEvent(Player owner, int delay) {
|
|
|
|
this.owner = owner;
|
|
|
|
this.delay = delay;
|
|
|
|
}
|
|
|
|
|
|
|
|
public DelayedEvent(Player owner, int delay, Object[] arg) {
|
|
|
|
args = arg;
|
|
|
|
this.owner = owner;
|
|
|
|
this.delay = delay;
|
|
|
|
}
|
|
|
|
|
|
|
|
public boolean belongsTo(Player player) {
|
|
|
|
return owner != null && owner.equals(player);
|
|
|
|
}
|
|
|
|
|
|
|
|
public int getDelay() {
|
|
|
|
return delay;
|
|
|
|
}
|
|
|
|
|
|
|
|
public Object getIdentifier() {
|
|
|
|
return null;
|
|
|
|
}
|
|
|
|
|
|
|
|
public Player getOwner() {
|
|
|
|
return owner;
|
|
|
|
}
|
|
|
|
|
|
|
|
public boolean hasOwner() {
|
|
|
|
return owner != null;
|
|
|
|
}
|
|
|
|
|
|
|
|
public boolean is(DelayedEvent e) {
|
|
|
|
return (e.getIdentifier() != null && e.getIdentifier().equals(
|
|
|
|
getIdentifier()));
|
|
|
|
}
|
|
|
|
|
|
|
|
public abstract void run();
|
|
|
|
|
|
|
|
public void setDelay(int delay) {
|
|
|
|
this.delay = delay;
|
|
|
|
}
|
|
|
|
|
|
|
|
public void setLastRun(long time) {
|
|
|
|
lastRun = time;
|
|
|
|
}
|
|
|
|
|
|
|
|
public final boolean shouldRemove() {
|
|
|
|
return !matchRunning;
|
|
|
|
}
|
|
|
|
|
|
|
|
public final boolean shouldRun() {
|
|
|
|
return matchRunning && GameEngine.getTime() - lastRun >= delay;
|
|
|
|
}
|
|
|
|
|
|
|
|
public final void stop() {
|
|
|
|
matchRunning = false;
|
|
|
|
}
|
|
|
|
|
|
|
|
public int timeTillNextRun() {
|
|
|
|
int time = (int) (delay - (GameEngine.getTime() - lastRun));
|
|
|
|
return time < 0 ? 0 : time;
|
|
|
|
}
|
|
|
|
|
|
|
|
public final void updateLastRun() {
|
|
|
|
lastRun = GameEngine.getTime();
|
|
|
|
}
|
2011-04-27 01:44:26 -04:00
|
|
|
}
|