2018-07-06 15:30:00 +02:00
|
|
|
package com.eu.habbo.threading.runnables;
|
|
|
|
|
|
|
|
import com.eu.habbo.Emulator;
|
|
|
|
import com.eu.habbo.habbohotel.achievements.Achievement;
|
|
|
|
import com.eu.habbo.habbohotel.achievements.AchievementManager;
|
|
|
|
import com.eu.habbo.habbohotel.users.Habbo;
|
|
|
|
|
|
|
|
import java.util.Map;
|
|
|
|
|
|
|
|
public class AchievementUpdater implements Runnable
|
|
|
|
{
|
2019-03-18 02:22:00 +01:00
|
|
|
public static final int INTERVAL = 5 * 60;
|
2018-07-06 15:30:00 +02:00
|
|
|
public int lastExecutionTimestamp = Emulator.getIntUnixTimestamp();
|
|
|
|
@Override
|
|
|
|
public void run()
|
|
|
|
{
|
|
|
|
if (!Emulator.isShuttingDown)
|
|
|
|
{
|
|
|
|
Emulator.getThreading().run(this, INTERVAL * 1000);
|
|
|
|
}
|
|
|
|
|
|
|
|
if (Emulator.isReady)
|
|
|
|
{
|
|
|
|
Achievement onlineTime = Emulator.getGameEnvironment().getAchievementManager().getAchievement("AllTimeHotelPresence");
|
|
|
|
|
|
|
|
int timestamp = Emulator.getIntUnixTimestamp();
|
|
|
|
for (Map.Entry<Integer, Habbo> set : Emulator.getGameEnvironment().getHabboManager().getOnlineHabbos().entrySet())
|
|
|
|
{
|
|
|
|
int timeOnlineSinceLastInterval = INTERVAL;
|
|
|
|
Habbo habbo = set.getValue();
|
|
|
|
if (habbo.getHabboInfo().getLastOnline() > this.lastExecutionTimestamp)
|
|
|
|
{
|
|
|
|
timeOnlineSinceLastInterval = timestamp - habbo.getHabboInfo().getLastOnline();
|
|
|
|
}
|
|
|
|
AchievementManager.progressAchievement(habbo, onlineTime, (int) Math.floor((timeOnlineSinceLastInterval) / 60));
|
|
|
|
}
|
|
|
|
|
|
|
|
this.lastExecutionTimestamp = timestamp;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|