package rs09.game.ai.resource; import core.game.node.entity.player.Player; import rs09.game.ai.resource.task.ResourceTask; import rs09.game.ai.resource.task.ResourceTasks; import core.game.system.task.Pulse; import rs09.game.world.World; import java.sql.ResultSet; import java.sql.Statement; import java.util.HashMap; import java.util.Iterator; import java.util.Map; /** * Package -> org.keldagrim.game.node.entity.player.ai.resource * Created on -> 9/13/2016 @12:42 PM for 530 * * @author Ethan Kyle Millard */ public class ResourceAIPManager { private long time = 0; private Player player; private static Map TASKS = new HashMap<>(); public ResourceAIPManager init() { getTasks().put(ResourceTasks.WOODCUTTING.getResourceTask(), 0L); return this; } public ResourceAIPManager runTask(Player player, String taskName) { for (Map.Entry entry : getTasks().entrySet()) { if (entry.getKey().getTaskName().equalsIgnoreCase(taskName)) { if (entry.getValue() != 0) { message(player, "You have extended the task " + taskName + "."); } else { message(player, "You have activated the task " + taskName + "."); } } entry.getKey().setTaskName(taskName); entry.setValue(entry.getValue() + 70); this.player = player; } return this; } public void reActivate(String name, long time) { for (Map.Entry entry : TASKS.entrySet()) { if (entry.getKey().getTaskName().equalsIgnoreCase(name)) { entry.setValue(time); } } } public ResourceAIPManager load(Player player) { try { Statement statement = World.getDatabaseManager().connections().get("global").createStatement(); ResultSet result = statement.executeQuery("SELECT * FROM `members` WHERE username='" + player.getUsername() + "'"); // Results result = new Results(GameWorld.getDatabaseManager().query("global", "SELECT * FROM `members` WHERE username='" + player.getUsername() + "'")); while (result.next()) { String eventName = result.getString("taskName"); String eventTime = result.getString("taskTime"); reActivate(eventName, Long.valueOf(eventTime)); } } catch (Exception e) { e.printStackTrace(); } return this; } public ResourceAIPManager save(Player player) { /*if (GameWorld.getDatabaseManager().update("global", "DELETE FROM `members` WHERE worldid='" + GameWorld.getSettings().getWorldId() + "'") < 0) return this;*/ System.out.println("Saving..."); Iterator> iterator = getTasks().entrySet().iterator(); while (iterator.hasNext()) { Map.Entry entry = iterator.next(); if (entry.getValue() <= 0) continue; StringBuilder query = new StringBuilder(); query.append("UPDATE `members` SET `taskName`='" + entry.getKey().getTaskName() + "',`taskTime`='" + entry.getValue() + "' WHERE `username`='" + player.getUsername() + "'"); System.out.println("ResourceAIPManager: " + query.toString()); World.getDatabaseManager().update("global", query.toString()); } return this; } public void pulse(Player player) { World.getPulser().submit(new Pulse(1) { @Override public boolean pulse() { time++; Iterator> iterator = getTasks().entrySet().iterator(); while (iterator.hasNext()) { Map.Entry entry = iterator.next(); if (entry.getValue() > 0) { entry.setValue(entry.getValue() - 1); if (entry.getValue() == 50) message(player, "You have 30 minutes before " + entry.getKey().getTaskName() + " task ends."); if (entry.getValue() <= 0) { entry.getKey().setTime(0); entry.getKey().reward(player, entry.getKey().getTaskName()); message(player, "The task " + entry.getKey().getTaskName() + " has now ended."); save(player); } if (time == 50) { entry.getKey().setTime(0); save(player); } } } return false; } }); } public ResourceAIPManager message(Player player, String message) { return message(player, message, true, ""); } public ResourceAIPManager message(Player player, String message, boolean tag) { return message(player, message, tag, ""); } public ResourceAIPManager notify(Player player, String message) { return message(player, message, true, ""); } public ResourceAIPManager notify(Player player, String message, boolean tag) { return message(player, message, tag, ""); } public ResourceAIPManager message(Player player, String message, boolean tag, String color) { player.getPacketDispatch().sendMessage(color + (tag ? "[Resource Manager] - " : "") + message); return this; } public static Map getTasks() { return TASKS; } private static ResourceAIPManager INSTANCE = new ResourceAIPManager(); public static ResourceAIPManager get() { return INSTANCE; } public Player getPlayer() { return player; } public void setPlayer(Player player) { this.player = player; } }