package org.skfiy.typhon.spi.role;
import java.util.Calendar;
import java.util.List;
import java.util.Timer;
import java.util.TimerTask;
import javax.inject.Inject;
import org.skfiy.typhon.domain.Player;
import org.skfiy.typhon.domain.RoleData;
import org.skfiy.typhon.session.Session;
import org.skfiy.typhon.session.SessionContext;
import org.skfiy.typhon.spi.task.TaskProvider;
public class TaskgGetVigorDatable implements RoleDatable {
private static final String SESSION_SRT_KEY = "__refresh_task_getvigor";
protected static final Timer REFRESH_STORE_TIMER = new Timer("Refresh-store-timer", true);
@Inject
private TaskProvider taskProvider;
@Override
public void initialize(Player player) {
TaskGetVigorRefresh srt = new TaskGetVigorRefresh(player);
srt.run();
SessionContext.getSession().setAttribute(SESSION_SRT_KEY, srt);
}
@Override
public void serialize(Player player, RoleData roleData) {
Session session = player.getSession();
if (session != null) {
TaskGetVigorRefresh srt = (TaskGetVigorRefresh) session.getAttribute(SESSION_SRT_KEY);
if (srt != null) {
srt.cancel();
}
}
}
@Override
public void deserialize(RoleData roleData, Player player) {
initialize(player);
}
private class TaskGetVigorRefresh extends TimerTask {
private final Player player;
TaskGetVigorRefresh(Player player) {
this.player = player;
}
@Override
public void run() {
List<Integer> refreshTime = taskProvider.refreshVigorTime();
Calendar calendar = Calendar.getInstance();
Calendar beCalendar = Calendar.getInstance();
for (int i = 0; i < refreshTime.size(); i++) {
if (calendar.get(Calendar.HOUR_OF_DAY) - 2 >= refreshTime.get(i)) {
player.getNormal().getDailyTask().setTaskAccessVigor(i);
}
}
}
}
}