I have a zone extension here zone extension code:
Code: Select all
public class LobbyExtension extends SFSExtension{
private ScheduledFuture _timer;
@Override
public void init() {
trace("init zone " + getParentZone().getName());
_timer = SmartFoxServer.getInstance().getTaskScheduler().scheduleAtFixedRate(new ZoneTimer(), 0, 1, TimeUnit.SECONDS);
addEventHandler(SFSEventType.SERVER_READY, SystemEvents.class);
}
private void CreateRoom() {
CreateRoomSettings settings = new CreateRoomSettings();
settings.setName("TestRoom");
settings.setMaxUsers(5);
settings.setMaxSpectators(10);
settings.setExtension(new CreateRoomSettings.RoomExtensionSettings("Games", "ol.sfs.games.lobby.RoomExtension"));
settings.setAutoRemoveMode(SFSRoomRemoveMode.DEFAULT);
try {
getParentZone().createRoom(settings);
} catch (SFSCreateRoomException e) {
e.printStackTrace();
}
}
class ZoneTimer implements Runnable {
int ticks = 0;
@Override
public void run() {
if(ticks == 15)
CreateRoom();
else if(ticks == 30)
getParentZone().removeRoom(getParentZone().getRoomByName("TestRoom"));
ticks++;
}
}
}
i fire timer in my zone extension and after 15 seconds create room and after 30 seconds i remove my room.
This is my room extension code:
Code: Select all
public class RoomExtension extends SFSExtension {
ScheduledFuture timer;
@Override
public void init() {
timer = SmartFoxServer.getInstance().getTaskScheduler().scheduleAtFixedRate(new RoomTimer(), 0, 1, TimeUnit.SECONDS);
}
class RoomTimer implements Runnable {
int ticks = 0;
@Override
public void run() {
trace("TICKS: " + ticks);
ticks++;
}
}
}
in room extension i create timer and trace ticks thats all.
I have a problem when after 30 seconds my room removed, but ticks from my removed room not removed. Whats wrong with my code?
How in removed room can go ticks?
Thanks for help!