forked from MagicBane/Server
lastChanged is unused as cannot omit mines from map.
This commit is contained in:
@@ -23,46 +23,44 @@ import engine.workthreads.HourlyJobThread;
|
|||||||
*/
|
*/
|
||||||
public class MineActiveCmd extends AbstractDevCmd {
|
public class MineActiveCmd extends AbstractDevCmd {
|
||||||
|
|
||||||
public MineActiveCmd() {
|
public MineActiveCmd() {
|
||||||
super("mineactive");
|
super("mineactive");
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
protected void _doCmd(PlayerCharacter pcSender, String[] args,
|
protected void _doCmd(PlayerCharacter pcSender, String[] args,
|
||||||
AbstractGameObject target) {
|
AbstractGameObject target) {
|
||||||
Building mineBuilding = BuildingManager.getBuilding(target.getObjectUUID());
|
Building mineBuilding = BuildingManager.getBuilding(target.getObjectUUID());
|
||||||
if (mineBuilding == null)
|
if (mineBuilding == null)
|
||||||
return;
|
return;
|
||||||
|
|
||||||
Mine mine = Mine.getMineFromTower(mineBuilding.getObjectUUID());
|
Mine mine = Mine.getMineFromTower(mineBuilding.getObjectUUID());
|
||||||
if (mine == null)
|
if (mine == null)
|
||||||
return;
|
return;
|
||||||
|
|
||||||
String trigger = args[0];
|
String trigger = args[0];
|
||||||
switch (trigger){
|
switch (trigger) {
|
||||||
case "true":
|
case "true":
|
||||||
HourlyJobThread.mineWindowOpen(mine);
|
HourlyJobThread.mineWindowOpen(mine);
|
||||||
Mine.setLastChange(System.currentTimeMillis());
|
break;
|
||||||
break;
|
case "false":
|
||||||
case "false":
|
HourlyJobThread.mineWindowClose(mine);
|
||||||
HourlyJobThread.mineWindowClose(mine);
|
break;
|
||||||
Mine.setLastChange(System.currentTimeMillis());
|
default:
|
||||||
break;
|
this.sendUsage(pcSender);
|
||||||
default:
|
break;
|
||||||
this.sendUsage(pcSender);
|
|
||||||
break;
|
|
||||||
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
protected String _getUsageString() {
|
protected String _getUsageString() {
|
||||||
return "' /mineactive true|false";
|
return "' /mineactive true|false";
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
protected String _getHelpString() {
|
protected String _getHelpString() {
|
||||||
return "Temporarily add visual effects to Character";
|
return "Temporarily add visual effects to Character";
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -21,67 +21,60 @@ import engine.objects.Mine;
|
|||||||
import engine.objects.PlayerCharacter;
|
import engine.objects.PlayerCharacter;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
*
|
|
||||||
* @author Eighty
|
* @author Eighty
|
||||||
*
|
|
||||||
*/
|
*/
|
||||||
public class SetMineExpansion extends AbstractDevCmd {
|
public class SetMineExpansion extends AbstractDevCmd {
|
||||||
|
|
||||||
public SetMineExpansion() {
|
public SetMineExpansion() {
|
||||||
super("setexpansion");
|
super("setexpansion");
|
||||||
this.addCmdString("setexpansion");
|
this.addCmdString("setexpansion");
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
protected void _doCmd(PlayerCharacter pcSender, String[] args,
|
protected void _doCmd(PlayerCharacter pcSender, String[] args,
|
||||||
AbstractGameObject target) {
|
AbstractGameObject target) {
|
||||||
|
|
||||||
|
|
||||||
if (target.getObjectType() != GameObjectType.Building)
|
|
||||||
return;
|
|
||||||
Building mineBuilding = BuildingManager.getBuilding(target.getObjectUUID());
|
|
||||||
if (mineBuilding == null)
|
|
||||||
return;
|
|
||||||
Mine mine = Mine.getMineFromTower(mineBuilding.getObjectUUID());
|
|
||||||
if (mine == null)
|
|
||||||
return;
|
|
||||||
int bit = 2;
|
|
||||||
switch (args[0].toUpperCase()) {
|
|
||||||
case "ON":
|
|
||||||
|
|
||||||
bit |= mine.getFlags();
|
|
||||||
if (!DbManager.MineQueries.SET_FLAGS(mine, bit))
|
|
||||||
return;
|
|
||||||
mine.setFlags(bit);
|
|
||||||
ChatManager.chatSystemInfo(pcSender, mine.getZoneName() + "'s " + mine.getMineType().name + " is now an expansion mine.");
|
|
||||||
Mine.setLastChange(System.currentTimeMillis());
|
|
||||||
break;
|
|
||||||
|
|
||||||
case "OFF":
|
|
||||||
bit &= ~mine.getFlags();
|
|
||||||
if (!DbManager.MineQueries.SET_FLAGS(mine, bit))
|
|
||||||
return;
|
|
||||||
mine.setFlags(bit);
|
|
||||||
ChatManager.chatSystemInfo(pcSender, mine.getZoneName() + "'s " + mine.getMineType().name + " is no longer an expansion mine.");
|
|
||||||
Mine.setLastChange(System.currentTimeMillis());
|
|
||||||
break;
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
|
if (target.getObjectType() != GameObjectType.Building)
|
||||||
|
return;
|
||||||
|
Building mineBuilding = BuildingManager.getBuilding(target.getObjectUUID());
|
||||||
|
if (mineBuilding == null)
|
||||||
|
return;
|
||||||
|
Mine mine = Mine.getMineFromTower(mineBuilding.getObjectUUID());
|
||||||
|
if (mine == null)
|
||||||
|
return;
|
||||||
|
int bit = 2;
|
||||||
|
switch (args[0].toUpperCase()) {
|
||||||
|
case "ON":
|
||||||
|
|
||||||
}
|
bit |= mine.getFlags();
|
||||||
|
if (!DbManager.MineQueries.SET_FLAGS(mine, bit))
|
||||||
|
return;
|
||||||
|
mine.setFlags(bit);
|
||||||
|
ChatManager.chatSystemInfo(pcSender, mine.getZoneName() + "'s " + mine.getMineType().name + " is now an expansion mine.");
|
||||||
|
break;
|
||||||
|
|
||||||
@Override
|
case "OFF":
|
||||||
protected String _getUsageString() {
|
bit &= ~mine.getFlags();
|
||||||
|
if (!DbManager.MineQueries.SET_FLAGS(mine, bit))
|
||||||
|
return;
|
||||||
|
mine.setFlags(bit);
|
||||||
|
ChatManager.chatSystemInfo(pcSender, mine.getZoneName() + "'s " + mine.getMineType().name + " is no longer an expansion mine.");
|
||||||
|
break;
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
protected String _getUsageString() {
|
||||||
return "' /setmineexpansion on|off";
|
return "' /setmineexpansion on|off";
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
protected String _getHelpString() {
|
protected String _getHelpString() {
|
||||||
return "enables or disables an expansion type for a mine.";
|
return "enables or disables an expansion type for a mine.";
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -18,48 +18,45 @@ import engine.gameManager.DbManager;
|
|||||||
import engine.objects.*;
|
import engine.objects.*;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
*
|
|
||||||
* @author Eighty
|
* @author Eighty
|
||||||
*
|
|
||||||
*/
|
*/
|
||||||
public class SetMineTypeCmd extends AbstractDevCmd {
|
public class SetMineTypeCmd extends AbstractDevCmd {
|
||||||
|
|
||||||
public SetMineTypeCmd() {
|
public SetMineTypeCmd() {
|
||||||
super("setminetype");
|
super("setminetype");
|
||||||
this.addCmdString("setminetype");
|
this.addCmdString("setminetype");
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
protected void _doCmd(PlayerCharacter pcSender, String[] args,
|
protected void _doCmd(PlayerCharacter pcSender, String[] args,
|
||||||
AbstractGameObject target) {
|
AbstractGameObject target) {
|
||||||
|
|
||||||
MineProduction mineType = MineProduction.valueOf(args[0].toUpperCase());
|
|
||||||
if (mineType == null)
|
|
||||||
return;
|
|
||||||
|
|
||||||
if (target.getObjectType() != GameObjectType.Building)
|
|
||||||
return;
|
|
||||||
Building mineBuilding = BuildingManager.getBuilding(target.getObjectUUID());
|
|
||||||
if (mineBuilding == null)
|
|
||||||
return;
|
|
||||||
Mine mine = Mine.getMineFromTower(mineBuilding.getObjectUUID());
|
|
||||||
if (mine == null)
|
|
||||||
return;
|
|
||||||
if (!DbManager.MineQueries.CHANGE_TYPE(mine, mineType))
|
|
||||||
return;
|
|
||||||
mine.setMineType(mineType.name());
|
|
||||||
ChatManager.chatSystemInfo(pcSender, "The mine in " + mine.getZoneName() + " is now a(n) " + mine.getMineType().name);
|
|
||||||
Mine.setLastChange(System.currentTimeMillis());
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
MineProduction mineType = MineProduction.valueOf(args[0].toUpperCase());
|
||||||
protected String _getUsageString() {
|
if (mineType == null)
|
||||||
|
return;
|
||||||
|
|
||||||
|
if (target.getObjectType() != GameObjectType.Building)
|
||||||
|
return;
|
||||||
|
Building mineBuilding = BuildingManager.getBuilding(target.getObjectUUID());
|
||||||
|
if (mineBuilding == null)
|
||||||
|
return;
|
||||||
|
Mine mine = Mine.getMineFromTower(mineBuilding.getObjectUUID());
|
||||||
|
if (mine == null)
|
||||||
|
return;
|
||||||
|
if (!DbManager.MineQueries.CHANGE_TYPE(mine, mineType))
|
||||||
|
return;
|
||||||
|
mine.setMineType(mineType.name());
|
||||||
|
ChatManager.chatSystemInfo(pcSender, "The mine in " + mine.getZoneName() + " is now a(n) " + mine.getMineType().name);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
protected String _getUsageString() {
|
||||||
return "' /setminetype gold|ore|magic|lumber";
|
return "' /setminetype gold|ore|magic|lumber";
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
protected String _getHelpString() {
|
protected String _getHelpString() {
|
||||||
return "Changes the mine type of the current mine.";
|
return "Changes the mine type of the current mine.";
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -7,7 +7,6 @@ import engine.net.DispatchMessage;
|
|||||||
import engine.net.client.ClientConnection;
|
import engine.net.client.ClientConnection;
|
||||||
import engine.net.client.msg.ArcMineChangeProductionMsg;
|
import engine.net.client.msg.ArcMineChangeProductionMsg;
|
||||||
import engine.net.client.msg.ClientNetMsg;
|
import engine.net.client.msg.ClientNetMsg;
|
||||||
import engine.net.client.msg.KeepAliveServerClientMsg;
|
|
||||||
import engine.objects.GuildStatusController;
|
import engine.objects.GuildStatusController;
|
||||||
import engine.objects.Mine;
|
import engine.objects.Mine;
|
||||||
import engine.objects.PlayerCharacter;
|
import engine.objects.PlayerCharacter;
|
||||||
@@ -21,49 +20,48 @@ import engine.objects.Resource;
|
|||||||
|
|
||||||
public class ArcMineChangeProductionMsgHandler extends AbstractClientMsgHandler {
|
public class ArcMineChangeProductionMsgHandler extends AbstractClientMsgHandler {
|
||||||
|
|
||||||
public ArcMineChangeProductionMsgHandler() {
|
public ArcMineChangeProductionMsgHandler() {
|
||||||
super(ArcMineChangeProductionMsg.class);
|
super(ArcMineChangeProductionMsg.class);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
protected boolean _handleNetMsg(ClientNetMsg baseMsg, ClientConnection origin) throws MsgSendException {
|
protected boolean _handleNetMsg(ClientNetMsg baseMsg, ClientConnection origin) throws MsgSendException {
|
||||||
|
|
||||||
PlayerCharacter playerCharacter = origin.getPlayerCharacter();
|
|
||||||
ArcMineChangeProductionMsg changeProductionMsg = (ArcMineChangeProductionMsg) baseMsg;
|
|
||||||
|
|
||||||
if (playerCharacter == null)
|
PlayerCharacter playerCharacter = origin.getPlayerCharacter();
|
||||||
return true;
|
ArcMineChangeProductionMsg changeProductionMsg = (ArcMineChangeProductionMsg) baseMsg;
|
||||||
|
|
||||||
//TODO verify this against the warehouse?
|
if (playerCharacter == null)
|
||||||
|
return true;
|
||||||
|
|
||||||
if (GuildStatusController.isInnerCouncil(playerCharacter.getGuildStatus()) == false) // is this only GL?
|
//TODO verify this against the warehouse?
|
||||||
return true;
|
|
||||||
|
|
||||||
Mine mine = Mine.getMine(changeProductionMsg.getMineID());
|
if (GuildStatusController.isInnerCouncil(playerCharacter.getGuildStatus()) == false) // is this only GL?
|
||||||
|
return true;
|
||||||
|
|
||||||
if (mine == null)
|
Mine mine = Mine.getMine(changeProductionMsg.getMineID());
|
||||||
return true;
|
|
||||||
|
|
||||||
//make sure mine belongs to guild
|
if (mine == null)
|
||||||
|
return true;
|
||||||
|
|
||||||
if (mine.getOwningGuild().isEmptyGuild() ||
|
//make sure mine belongs to guild
|
||||||
mine.getOwningGuild().getObjectUUID() != playerCharacter.getGuild().getObjectUUID())
|
|
||||||
return true;
|
|
||||||
|
|
||||||
//make sure valid resource
|
if (mine.getOwningGuild().isEmptyGuild() ||
|
||||||
|
mine.getOwningGuild().getObjectUUID() != playerCharacter.getGuild().getObjectUUID())
|
||||||
|
return true;
|
||||||
|
|
||||||
Resource resource = Resource.resourceByHash.get(changeProductionMsg.getResourceHash());
|
//make sure valid resource
|
||||||
|
|
||||||
if (resource == null)
|
Resource resource = Resource.resourceByHash.get(changeProductionMsg.getResourceHash());
|
||||||
return true;
|
|
||||||
|
|
||||||
//update resource
|
if (resource == null)
|
||||||
|
return true;
|
||||||
|
|
||||||
mine.changeProductionType(resource);
|
//update resource
|
||||||
Mine.setLastChange(System.currentTimeMillis());
|
|
||||||
Dispatch dispatch = Dispatch.borrow(playerCharacter, changeProductionMsg);
|
mine.changeProductionType(resource);
|
||||||
DispatchMessage.dispatchMsgDispatch(dispatch, DispatchChannel.SECONDARY);
|
Dispatch dispatch = Dispatch.borrow(playerCharacter, changeProductionMsg);
|
||||||
return true;
|
DispatchMessage.dispatchMsgDispatch(dispatch, DispatchChannel.SECONDARY);
|
||||||
}
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
+134
-144
@@ -20,7 +20,10 @@ package engine.objects;
|
|||||||
|
|
||||||
import engine.Enum;
|
import engine.Enum;
|
||||||
import engine.InterestManagement.WorldGrid;
|
import engine.InterestManagement.WorldGrid;
|
||||||
import engine.gameManager.*;
|
import engine.gameManager.BuildingManager;
|
||||||
|
import engine.gameManager.ChatManager;
|
||||||
|
import engine.gameManager.DbManager;
|
||||||
|
import engine.gameManager.ZoneManager;
|
||||||
import engine.net.ByteBufferWriter;
|
import engine.net.ByteBufferWriter;
|
||||||
import engine.net.client.msg.ErrorPopupMsg;
|
import engine.net.client.msg.ErrorPopupMsg;
|
||||||
import engine.server.MBServerStatics;
|
import engine.server.MBServerStatics;
|
||||||
@@ -33,38 +36,34 @@ import java.time.LocalDateTime;
|
|||||||
import java.util.ArrayList;
|
import java.util.ArrayList;
|
||||||
import java.util.concurrent.ConcurrentHashMap;
|
import java.util.concurrent.ConcurrentHashMap;
|
||||||
|
|
||||||
import static engine.gameManager.DbManager.*;
|
import static engine.gameManager.DbManager.MineQueries;
|
||||||
|
import static engine.gameManager.DbManager.getObject;
|
||||||
import static engine.math.FastMath.sqr;
|
import static engine.math.FastMath.sqr;
|
||||||
|
|
||||||
public class Mine extends AbstractGameObject {
|
public class Mine extends AbstractGameObject {
|
||||||
|
|
||||||
private String zoneName;
|
public static ConcurrentHashMap<Mine, Integer> mineMap = new ConcurrentHashMap<>(MBServerStatics.CHM_INIT_CAP, MBServerStatics.CHM_LOAD, MBServerStatics.CHM_THREAD_LOW);
|
||||||
private Resource production;
|
public static ConcurrentHashMap<Integer, Mine> towerMap = new ConcurrentHashMap<>(MBServerStatics.CHM_INIT_CAP, MBServerStatics.CHM_LOAD, MBServerStatics.CHM_THREAD_LOW);
|
||||||
public boolean isActive = false;
|
public boolean isActive = false;
|
||||||
|
|
||||||
private float latitude;
|
|
||||||
private float longitude;
|
|
||||||
private float altitude;
|
|
||||||
private Guild owningGuild;
|
|
||||||
public PlayerCharacter lastClaimer;
|
public PlayerCharacter lastClaimer;
|
||||||
public boolean wasClaimed = false;
|
public boolean wasClaimed = false;
|
||||||
private int flags;
|
|
||||||
private int buildingID;
|
|
||||||
private Zone parentZone;
|
|
||||||
private MineProduction mineType;
|
|
||||||
|
|
||||||
//flags 1: never been claimed (make active).
|
|
||||||
|
|
||||||
|
|
||||||
// Not persisted to DB
|
// Not persisted to DB
|
||||||
public String guildName;
|
public String guildName;
|
||||||
public GuildTag guildTag;
|
public GuildTag guildTag;
|
||||||
public String nationName;
|
public String nationName;
|
||||||
public GuildTag nationTag;
|
public GuildTag nationTag;
|
||||||
public static ConcurrentHashMap<Mine, Integer> mineMap = new ConcurrentHashMap<>(MBServerStatics.CHM_INIT_CAP, MBServerStatics.CHM_LOAD, MBServerStatics.CHM_THREAD_LOW);
|
private final String zoneName;
|
||||||
public static ConcurrentHashMap<Integer, Mine> towerMap = new ConcurrentHashMap<>(MBServerStatics.CHM_INIT_CAP, MBServerStatics.CHM_LOAD, MBServerStatics.CHM_THREAD_LOW);
|
private Resource production;
|
||||||
|
private final float latitude;
|
||||||
|
private final float longitude;
|
||||||
|
|
||||||
private static long lastChange = System.currentTimeMillis();
|
//flags 1: never been claimed (make active).
|
||||||
|
private final float altitude;
|
||||||
|
private Guild owningGuild;
|
||||||
|
private int flags;
|
||||||
|
private int buildingID;
|
||||||
|
private final Zone parentZone;
|
||||||
|
private MineProduction mineType;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* ResultSet Constructor
|
* ResultSet Constructor
|
||||||
@@ -139,6 +138,7 @@ public class Mine extends AbstractGameObject {
|
|||||||
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
public static void SendMineAttackMessage(Building mine) {
|
public static void SendMineAttackMessage(Building mine) {
|
||||||
|
|
||||||
if (mine.getBlueprint() == null)
|
if (mine.getBlueprint() == null)
|
||||||
@@ -186,90 +186,10 @@ public class Mine extends AbstractGameObject {
|
|||||||
* Getters
|
* Getters
|
||||||
*/
|
*/
|
||||||
|
|
||||||
public boolean changeProductionType(Resource resource) {
|
|
||||||
if (!this.validForMine(resource))
|
|
||||||
return false;
|
|
||||||
//update resource in database;
|
|
||||||
if (!MineQueries.CHANGE_RESOURCE(this, resource))
|
|
||||||
return false;
|
|
||||||
|
|
||||||
this.production = resource;
|
|
||||||
return true;
|
|
||||||
}
|
|
||||||
|
|
||||||
public MineProduction getMineType() {
|
|
||||||
return this.mineType;
|
|
||||||
}
|
|
||||||
|
|
||||||
public String getZoneName() {
|
|
||||||
return this.zoneName;
|
|
||||||
}
|
|
||||||
|
|
||||||
public Resource getProduction() {
|
|
||||||
return this.production;
|
|
||||||
}
|
|
||||||
|
|
||||||
public boolean getIsActive() {
|
|
||||||
return this.isActive;
|
|
||||||
}
|
|
||||||
|
|
||||||
public float getAltitude() {
|
|
||||||
return this.altitude;
|
|
||||||
}
|
|
||||||
|
|
||||||
public Guild getOwningGuild() {
|
|
||||||
if (this.owningGuild == null)
|
|
||||||
return Guild.getErrantGuild();
|
|
||||||
else
|
|
||||||
return this.owningGuild;
|
|
||||||
}
|
|
||||||
|
|
||||||
public int getFlags() {
|
|
||||||
return flags;
|
|
||||||
}
|
|
||||||
|
|
||||||
public void setFlags(int flags) {
|
|
||||||
this.flags = flags;
|
|
||||||
}
|
|
||||||
|
|
||||||
public Zone getParentZone() {
|
|
||||||
return parentZone;
|
|
||||||
}
|
|
||||||
|
|
||||||
public GuildTag getGuildTag() {
|
|
||||||
return guildTag;
|
|
||||||
}
|
|
||||||
|
|
||||||
public void setMineType(String type) {
|
|
||||||
this.mineType = MineProduction.getByName(type);
|
|
||||||
}
|
|
||||||
|
|
||||||
public void setActive(boolean isAc) {
|
|
||||||
|
|
||||||
this.isActive = isAc;
|
|
||||||
Building building = BuildingManager.getBuildingFromCache(this.buildingID);
|
|
||||||
if (building != null && !this.isActive)
|
|
||||||
building.isDeranking.compareAndSet(true, false);
|
|
||||||
}
|
|
||||||
|
|
||||||
public void setOwningGuild(Guild owningGuild) {
|
|
||||||
this.owningGuild = owningGuild;
|
|
||||||
}
|
|
||||||
|
|
||||||
public static Mine getMineFromTower(int towerID) {
|
public static Mine getMineFromTower(int towerID) {
|
||||||
return Mine.towerMap.get(towerID);
|
return Mine.towerMap.get(towerID);
|
||||||
}
|
}
|
||||||
|
|
||||||
public boolean validForMine(Resource r) {
|
|
||||||
if (this.mineType == null)
|
|
||||||
return false;
|
|
||||||
return this.mineType.validForMine(r, this.isExpansion());
|
|
||||||
}
|
|
||||||
|
|
||||||
/*
|
|
||||||
* Serialization
|
|
||||||
*/
|
|
||||||
|
|
||||||
public static void serializeForClientMsg(Mine mine, ByteBufferWriter writer) {
|
public static void serializeForClientMsg(Mine mine, ByteBufferWriter writer) {
|
||||||
writer.putInt(mine.getObjectType().ordinal());
|
writer.putInt(mine.getObjectType().ordinal());
|
||||||
writer.putInt(mine.getObjectUUID());
|
writer.putInt(mine.getObjectUUID());
|
||||||
@@ -284,15 +204,15 @@ public class Mine extends AbstractGameObject {
|
|||||||
// Errant mines are currently open. Set time to now.
|
// Errant mines are currently open. Set time to now.
|
||||||
|
|
||||||
LocalDateTime mineOpenTime = LocalDateTime.now().withMinute(0).withSecond(0).withNano(0);
|
LocalDateTime mineOpenTime = LocalDateTime.now().withMinute(0).withSecond(0).withNano(0);
|
||||||
|
|
||||||
// Mine times are those of the nation not individual guild.
|
// Mine times are those of the nation not individual guild.
|
||||||
|
|
||||||
Guild mineNatonGuild = mine.getOwningGuild().getNation();
|
Guild mineNatonGuild = mine.getOwningGuild().getNation();
|
||||||
|
|
||||||
// Adjust the serialized mine time based upon whether
|
// Adjust the serialized mine time based upon whether
|
||||||
// the Guild's mine window has passed or not and if it was claimed.
|
// the Guild's mine window has passed or not and if it was claimed.
|
||||||
// If a mine is active serialize current datetime irrespective
|
// If a mine is active serialize current datetime irrespective
|
||||||
// of any claim.
|
// of any claim.
|
||||||
|
|
||||||
if (mineNatonGuild.isEmptyGuild() == false && mine.isActive == false) {
|
if (mineNatonGuild.isEmptyGuild() == false && mine.isActive == false) {
|
||||||
|
|
||||||
@@ -321,20 +241,6 @@ public class Mine extends AbstractGameObject {
|
|||||||
GuildTag._serializeForDisplay(mine.nationTag, writer);
|
GuildTag._serializeForDisplay(mine.nationTag, writer);
|
||||||
}
|
}
|
||||||
|
|
||||||
public void serializeForMineProduction(ByteBufferWriter writer) {
|
|
||||||
writer.putInt(this.getObjectType().ordinal());
|
|
||||||
writer.putInt(this.getObjectUUID());
|
|
||||||
writer.putInt(this.getObjectUUID()); //actually a hash of mine
|
|
||||||
// writer.putInt(0x215C92BB); //this.unknown1);
|
|
||||||
writer.putString(this.mineType.name);
|
|
||||||
writer.putString(this.zoneName);
|
|
||||||
writer.putInt(this.production.hash);
|
|
||||||
writer.putInt(this.production.baseProduction);
|
|
||||||
writer.putInt(this.getModifiedProductionAmount()); //TODO calculate range penalty here
|
|
||||||
writer.putInt(3600); //window in seconds
|
|
||||||
writer.putInt(this.isExpansion() ? this.mineType.xpacHash : this.mineType.hash);
|
|
||||||
}
|
|
||||||
|
|
||||||
public static ArrayList<Mine> getMinesForGuild(int guildID) {
|
public static ArrayList<Mine> getMinesForGuild(int guildID) {
|
||||||
|
|
||||||
ArrayList<Mine> mineList = new ArrayList<>();
|
ArrayList<Mine> mineList = new ArrayList<>();
|
||||||
@@ -343,20 +249,12 @@ public class Mine extends AbstractGameObject {
|
|||||||
|
|
||||||
for (Mine mine : Mine.mineMap.keySet()) {
|
for (Mine mine : Mine.mineMap.keySet()) {
|
||||||
if (mine.owningGuild.getObjectUUID() == guildID &&
|
if (mine.owningGuild.getObjectUUID() == guildID &&
|
||||||
mine.isActive == false)
|
mine.isActive == false)
|
||||||
mineList.add(mine);
|
mineList.add(mine);
|
||||||
}
|
}
|
||||||
return mineList;
|
return mineList;
|
||||||
}
|
}
|
||||||
|
|
||||||
public static long getLastChange() {
|
|
||||||
return lastChange;
|
|
||||||
}
|
|
||||||
|
|
||||||
public static void setLastChange(long lastChange) {
|
|
||||||
Mine.lastChange = lastChange;
|
|
||||||
}
|
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Database
|
* Database
|
||||||
*/
|
*/
|
||||||
@@ -369,19 +267,6 @@ public class Mine extends AbstractGameObject {
|
|||||||
return new ArrayList<>(mineMap.keySet());
|
return new ArrayList<>(mineMap.keySet());
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
|
||||||
public void updateDatabase() {
|
|
||||||
// TODO Create update logic.
|
|
||||||
}
|
|
||||||
|
|
||||||
public int getBuildingID() {
|
|
||||||
return buildingID;
|
|
||||||
}
|
|
||||||
|
|
||||||
public void setBuildingID(int buildingID) {
|
|
||||||
this.buildingID = buildingID;
|
|
||||||
}
|
|
||||||
|
|
||||||
public static boolean validateClaimer(PlayerCharacter playerCharacter) {
|
public static boolean validateClaimer(PlayerCharacter playerCharacter) {
|
||||||
|
|
||||||
// Method validates that the claimer meets
|
// Method validates that the claimer meets
|
||||||
@@ -407,7 +292,7 @@ public class Mine extends AbstractGameObject {
|
|||||||
if (playerGuild.getNation().isEmptyGuild())
|
if (playerGuild.getNation().isEmptyGuild())
|
||||||
return false;
|
return false;
|
||||||
|
|
||||||
// Guild must own a city to hold a mine.
|
// Guild must own a city to hold a mine.
|
||||||
|
|
||||||
City guildCity = playerGuild.getOwnedCity();
|
City guildCity = playerGuild.getOwnedCity();
|
||||||
|
|
||||||
@@ -433,7 +318,7 @@ public class Mine extends AbstractGameObject {
|
|||||||
if (treeRank < 1)
|
if (treeRank < 1)
|
||||||
return false;
|
return false;
|
||||||
|
|
||||||
if (guildUnderMineLimit(playerGuild.getNation(), treeRank) == false){
|
if (guildUnderMineLimit(playerGuild.getNation(), treeRank) == false) {
|
||||||
ErrorPopupMsg.sendErrorMsg(playerCharacter, "Your nation cannot support another mine.");
|
ErrorPopupMsg.sendErrorMsg(playerCharacter, "Your nation cannot support another mine.");
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
@@ -450,11 +335,116 @@ public class Mine extends AbstractGameObject {
|
|||||||
for (Guild guild : playerGuild.getSubGuildList())
|
for (Guild guild : playerGuild.getSubGuildList())
|
||||||
mineCnt += Mine.getMinesForGuild(guild.getObjectUUID()).size();
|
mineCnt += Mine.getMinesForGuild(guild.getObjectUUID()).size();
|
||||||
|
|
||||||
if (mineCnt > tolRank)
|
return mineCnt <= tolRank;
|
||||||
|
}
|
||||||
|
|
||||||
|
public boolean changeProductionType(Resource resource) {
|
||||||
|
if (!this.validForMine(resource))
|
||||||
|
return false;
|
||||||
|
//update resource in database;
|
||||||
|
if (!MineQueries.CHANGE_RESOURCE(this, resource))
|
||||||
return false;
|
return false;
|
||||||
|
|
||||||
|
this.production = resource;
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public MineProduction getMineType() {
|
||||||
|
return this.mineType;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setMineType(String type) {
|
||||||
|
this.mineType = MineProduction.getByName(type);
|
||||||
|
}
|
||||||
|
|
||||||
|
public String getZoneName() {
|
||||||
|
return this.zoneName;
|
||||||
|
}
|
||||||
|
|
||||||
|
public Resource getProduction() {
|
||||||
|
return this.production;
|
||||||
|
}
|
||||||
|
|
||||||
|
public boolean getIsActive() {
|
||||||
|
return this.isActive;
|
||||||
|
}
|
||||||
|
|
||||||
|
public float getAltitude() {
|
||||||
|
return this.altitude;
|
||||||
|
}
|
||||||
|
|
||||||
|
public Guild getOwningGuild() {
|
||||||
|
if (this.owningGuild == null)
|
||||||
|
return Guild.getErrantGuild();
|
||||||
|
else
|
||||||
|
return this.owningGuild;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setOwningGuild(Guild owningGuild) {
|
||||||
|
this.owningGuild = owningGuild;
|
||||||
|
}
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Serialization
|
||||||
|
*/
|
||||||
|
|
||||||
|
public int getFlags() {
|
||||||
|
return flags;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setFlags(int flags) {
|
||||||
|
this.flags = flags;
|
||||||
|
}
|
||||||
|
|
||||||
|
public Zone getParentZone() {
|
||||||
|
return parentZone;
|
||||||
|
}
|
||||||
|
|
||||||
|
public GuildTag getGuildTag() {
|
||||||
|
return guildTag;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setActive(boolean isAc) {
|
||||||
|
|
||||||
|
this.isActive = isAc;
|
||||||
|
Building building = BuildingManager.getBuildingFromCache(this.buildingID);
|
||||||
|
if (building != null && !this.isActive)
|
||||||
|
building.isDeranking.compareAndSet(true, false);
|
||||||
|
}
|
||||||
|
|
||||||
|
public boolean validForMine(Resource r) {
|
||||||
|
if (this.mineType == null)
|
||||||
|
return false;
|
||||||
|
return this.mineType.validForMine(r, this.isExpansion());
|
||||||
|
}
|
||||||
|
|
||||||
|
public void serializeForMineProduction(ByteBufferWriter writer) {
|
||||||
|
writer.putInt(this.getObjectType().ordinal());
|
||||||
|
writer.putInt(this.getObjectUUID());
|
||||||
|
writer.putInt(this.getObjectUUID()); //actually a hash of mine
|
||||||
|
// writer.putInt(0x215C92BB); //this.unknown1);
|
||||||
|
writer.putString(this.mineType.name);
|
||||||
|
writer.putString(this.zoneName);
|
||||||
|
writer.putInt(this.production.hash);
|
||||||
|
writer.putInt(this.production.baseProduction);
|
||||||
|
writer.putInt(this.getModifiedProductionAmount()); //TODO calculate range penalty here
|
||||||
|
writer.putInt(3600); //window in seconds
|
||||||
|
writer.putInt(this.isExpansion() ? this.mineType.xpacHash : this.mineType.hash);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void updateDatabase() {
|
||||||
|
// TODO Create update logic.
|
||||||
|
}
|
||||||
|
|
||||||
|
public int getBuildingID() {
|
||||||
|
return buildingID;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setBuildingID(int buildingID) {
|
||||||
|
this.buildingID = buildingID;
|
||||||
|
}
|
||||||
|
|
||||||
public void handleDestroyMine() {
|
public void handleDestroyMine() {
|
||||||
|
|
||||||
if (!this.isActive)
|
if (!this.isActive)
|
||||||
@@ -465,7 +455,6 @@ public class Mine extends AbstractGameObject {
|
|||||||
this.guildName = "";
|
this.guildName = "";
|
||||||
this.nationName = "";
|
this.nationName = "";
|
||||||
this.owningGuild = Guild.getErrantGuild();
|
this.owningGuild = Guild.getErrantGuild();
|
||||||
Mine.setLastChange(System.currentTimeMillis());
|
|
||||||
this.lastClaimer = null;
|
this.lastClaimer = null;
|
||||||
this.wasClaimed = false;
|
this.wasClaimed = false;
|
||||||
|
|
||||||
@@ -513,6 +502,7 @@ public class Mine extends AbstractGameObject {
|
|||||||
|
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
public boolean depositMineResources() {
|
public boolean depositMineResources() {
|
||||||
|
|
||||||
if (this.owningGuild.isEmptyGuild())
|
if (this.owningGuild.isEmptyGuild())
|
||||||
|
|||||||
@@ -33,6 +33,156 @@ public class HourlyJobThread implements Runnable {
|
|||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public static void decayShrines() {
|
||||||
|
ArrayList<Shrine> shrineList = new ArrayList<>();
|
||||||
|
|
||||||
|
for (Shrine shrine : Shrine.shrinesByBuildingUUID.values()) {
|
||||||
|
try {
|
||||||
|
Building shrineBuilding = (Building) DbManager.getObject(Enum.GameObjectType.Building, shrine.getBuildingID());
|
||||||
|
|
||||||
|
if (shrineBuilding == null)
|
||||||
|
continue;
|
||||||
|
|
||||||
|
|
||||||
|
if (shrineBuilding.getOwner().equals(shrineBuilding.getCity().getOwner()) == false)
|
||||||
|
shrineBuilding.claim(shrineBuilding.getCity().getOwner());
|
||||||
|
} catch (Exception e) {
|
||||||
|
Logger.info("Shrine " + shrine.getBuildingID() + " Error " + e);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// Grab list of top two shrines of each type
|
||||||
|
|
||||||
|
for (Shrine shrine : Shrine.shrinesByBuildingUUID.values()) {
|
||||||
|
|
||||||
|
if (shrine.getRank() == 0 || shrine.getRank() == 1)
|
||||||
|
shrineList.add(shrine);
|
||||||
|
}
|
||||||
|
|
||||||
|
Logger.info("Decaying " + shrineList.size() + " shrines...");
|
||||||
|
|
||||||
|
// Top 2 shrines decay by 10% a day
|
||||||
|
|
||||||
|
for (Shrine shrine : shrineList) {
|
||||||
|
|
||||||
|
try {
|
||||||
|
shrine.decay();
|
||||||
|
} catch (Exception e) {
|
||||||
|
Logger.info("Shrine " + shrine.getBuildingID() + " Error " + e);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
public static void processMineWindow() {
|
||||||
|
|
||||||
|
try {
|
||||||
|
|
||||||
|
ArrayList<Mine> mines = Mine.getMines();
|
||||||
|
|
||||||
|
for (Mine mine : mines) {
|
||||||
|
if (LocalDateTime.now().getHour() == 1400) {
|
||||||
|
mine.wasClaimed = false;
|
||||||
|
}
|
||||||
|
try {
|
||||||
|
|
||||||
|
// Open Errant Mines
|
||||||
|
|
||||||
|
if (mine.getOwningGuild().isEmptyGuild()) {
|
||||||
|
HourlyJobThread.mineWindowOpen(mine);
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
|
||||||
|
// Open Mines owned by nations having their WOO
|
||||||
|
// set to the current mine window.
|
||||||
|
|
||||||
|
if (mine.getOwningGuild().getNation().getMineTime() ==
|
||||||
|
LocalDateTime.now().getHour() && mine.wasClaimed == false) {
|
||||||
|
HourlyJobThread.mineWindowOpen(mine);
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
|
||||||
|
// Close the mine if it reaches this far
|
||||||
|
|
||||||
|
mineWindowClose(mine);
|
||||||
|
|
||||||
|
} catch (Exception e) {
|
||||||
|
Logger.error("mineID: " + mine.getObjectUUID(), e.toString());
|
||||||
|
}
|
||||||
|
}
|
||||||
|
} catch (Exception e) {
|
||||||
|
Logger.error(e.toString());
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
public static void mineWindowOpen(Mine mine) {
|
||||||
|
|
||||||
|
mine.setActive(true);
|
||||||
|
ChatManager.chatSystemChannel(mine.getZoneName() + "'s Mine is now Active!");
|
||||||
|
Logger.info(mine.getZoneName() + "'s Mine is now Active!");
|
||||||
|
}
|
||||||
|
|
||||||
|
public static boolean mineWindowClose(Mine mine) {
|
||||||
|
|
||||||
|
// No need to end the window of a mine which never opened.
|
||||||
|
|
||||||
|
if (mine.isActive == false)
|
||||||
|
return false;
|
||||||
|
|
||||||
|
Building mineBuilding = BuildingManager.getBuildingFromCache(mine.getBuildingID());
|
||||||
|
|
||||||
|
if (mineBuilding == null) {
|
||||||
|
Logger.debug("Null mine building for Mine " + mine.getObjectUUID() + " Building " + mine.getBuildingID());
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
// Mine building still stands; nothing to do.
|
||||||
|
// We can early exit here.
|
||||||
|
|
||||||
|
if (mineBuilding.getRank() > 0) {
|
||||||
|
mine.setActive(false);
|
||||||
|
mine.lastClaimer = null;
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
|
// This mine does not have a valid claimer
|
||||||
|
// we will therefore set it to errant
|
||||||
|
// and keep the window open.
|
||||||
|
|
||||||
|
if (!Mine.validateClaimer(mine.lastClaimer)) {
|
||||||
|
mine.lastClaimer = null;
|
||||||
|
mine.updateGuildOwner(null);
|
||||||
|
mine.setActive(true);
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
//Update ownership to map
|
||||||
|
|
||||||
|
mine.guildName = mine.getOwningGuild().getName();
|
||||||
|
mine.guildTag = mine.getOwningGuild().getGuildTag();
|
||||||
|
Guild nation = mine.getOwningGuild().getNation();
|
||||||
|
mine.nationName = nation.getName();
|
||||||
|
mine.nationTag = nation.getGuildTag();
|
||||||
|
|
||||||
|
mineBuilding.rebuildMine();
|
||||||
|
WorldGrid.updateObject(mineBuilding);
|
||||||
|
|
||||||
|
ChatSystemMsg chatMsg = new ChatSystemMsg(null, mine.lastClaimer.getName() + " has claimed the mine in " + mine.getParentZone().getParent().getName() + " for " + mine.getOwningGuild().getName() + ". The mine is no longer active.");
|
||||||
|
chatMsg.setMessageType(10);
|
||||||
|
chatMsg.setChannel(Enum.ChatChannelType.SYSTEM.getChannelID());
|
||||||
|
DispatchMessage.dispatchMsgToAll(chatMsg);
|
||||||
|
|
||||||
|
// Warehouse this claim event
|
||||||
|
|
||||||
|
MineRecord mineRecord = MineRecord.borrow(mine, mine.lastClaimer, Enum.RecordEventType.CAPTURE);
|
||||||
|
DataWarehouse.pushToWarehouse(mineRecord);
|
||||||
|
|
||||||
|
mineBuilding.setRank(mineBuilding.getRank());
|
||||||
|
mine.lastClaimer = null;
|
||||||
|
mine.setActive(false);
|
||||||
|
mine.wasClaimed = true;
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
public void run() {
|
public void run() {
|
||||||
|
|
||||||
// *** REFACTOR: TRY TRY TRY TRY {{{{{{{{{{{ OMG
|
// *** REFACTOR: TRY TRY TRY TRY {{{{{{{{{{{ OMG
|
||||||
@@ -136,160 +286,4 @@ public class HourlyJobThread implements Runnable {
|
|||||||
Logger.info(MessageDispatcher.getNetstatString());
|
Logger.info(MessageDispatcher.getNetstatString());
|
||||||
Logger.info(PurgeOprhans.recordsDeleted.toString() + "orphaned items deleted");
|
Logger.info(PurgeOprhans.recordsDeleted.toString() + "orphaned items deleted");
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
public static void decayShrines() {
|
|
||||||
ArrayList<Shrine> shrineList = new ArrayList<>();
|
|
||||||
|
|
||||||
for (Shrine shrine : Shrine.shrinesByBuildingUUID.values()) {
|
|
||||||
try {
|
|
||||||
Building shrineBuilding = (Building) DbManager.getObject(Enum.GameObjectType.Building, shrine.getBuildingID());
|
|
||||||
|
|
||||||
if (shrineBuilding == null)
|
|
||||||
continue;
|
|
||||||
|
|
||||||
|
|
||||||
if (shrineBuilding.getOwner().equals(shrineBuilding.getCity().getOwner()) == false)
|
|
||||||
shrineBuilding.claim(shrineBuilding.getCity().getOwner());
|
|
||||||
} catch (Exception e) {
|
|
||||||
Logger.info("Shrine " + shrine.getBuildingID() + " Error " + e);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
// Grab list of top two shrines of each type
|
|
||||||
|
|
||||||
for (Shrine shrine : Shrine.shrinesByBuildingUUID.values()) {
|
|
||||||
|
|
||||||
if (shrine.getRank() == 0 || shrine.getRank() == 1)
|
|
||||||
shrineList.add(shrine);
|
|
||||||
}
|
|
||||||
|
|
||||||
Logger.info("Decaying " + shrineList.size() + " shrines...");
|
|
||||||
|
|
||||||
// Top 2 shrines decay by 10% a day
|
|
||||||
|
|
||||||
for (Shrine shrine : shrineList) {
|
|
||||||
|
|
||||||
try {
|
|
||||||
shrine.decay();
|
|
||||||
} catch (Exception e) {
|
|
||||||
Logger.info("Shrine " + shrine.getBuildingID() + " Error " + e);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
public static void processMineWindow() {
|
|
||||||
|
|
||||||
try {
|
|
||||||
|
|
||||||
ArrayList<Mine> mines = Mine.getMines();
|
|
||||||
|
|
||||||
for (Mine mine : mines) {
|
|
||||||
if (LocalDateTime.now().getHour() == 1400) {
|
|
||||||
mine.wasClaimed = false;
|
|
||||||
}
|
|
||||||
try {
|
|
||||||
|
|
||||||
// Open Errant Mines
|
|
||||||
|
|
||||||
if (mine.getOwningGuild().isEmptyGuild()) {
|
|
||||||
HourlyJobThread.mineWindowOpen(mine);
|
|
||||||
Mine.setLastChange(System.currentTimeMillis());
|
|
||||||
continue;
|
|
||||||
}
|
|
||||||
|
|
||||||
// Open Mines owned by nations having their WOO
|
|
||||||
// set to the current mine window.
|
|
||||||
|
|
||||||
if (mine.getOwningGuild().getNation().getMineTime() ==
|
|
||||||
LocalDateTime.now().getHour() && mine.wasClaimed == false) {
|
|
||||||
HourlyJobThread.mineWindowOpen(mine);
|
|
||||||
Mine.setLastChange(System.currentTimeMillis());
|
|
||||||
continue;
|
|
||||||
}
|
|
||||||
|
|
||||||
// Close all the remaining mines
|
|
||||||
|
|
||||||
if (mineWindowClose(mine))
|
|
||||||
Mine.setLastChange(System.currentTimeMillis());
|
|
||||||
|
|
||||||
} catch (Exception e) {
|
|
||||||
Logger.error("mineID: " + mine.getObjectUUID(), e.toString());
|
|
||||||
}
|
|
||||||
}
|
|
||||||
} catch (Exception e) {
|
|
||||||
Logger.error(e.toString());
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
public static void mineWindowOpen(Mine mine) {
|
|
||||||
|
|
||||||
mine.setActive(true);
|
|
||||||
ChatManager.chatSystemChannel(mine.getZoneName() + "'s Mine is now Active!");
|
|
||||||
Logger.info(mine.getZoneName() + "'s Mine is now Active!");
|
|
||||||
}
|
|
||||||
|
|
||||||
public static boolean mineWindowClose(Mine mine) {
|
|
||||||
|
|
||||||
// No need to end the window of a mine which never opened.
|
|
||||||
|
|
||||||
if (mine.isActive == false)
|
|
||||||
return false;
|
|
||||||
|
|
||||||
Building mineBuilding = BuildingManager.getBuildingFromCache(mine.getBuildingID());
|
|
||||||
|
|
||||||
if (mineBuilding == null) {
|
|
||||||
Logger.debug("Null mine building for Mine " + mine.getObjectUUID() + " Building " + mine.getBuildingID());
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
|
|
||||||
// Mine building still stands; nothing to do.
|
|
||||||
// We can early exit here.
|
|
||||||
|
|
||||||
if (mineBuilding.getRank() > 0) {
|
|
||||||
mine.setActive(false);
|
|
||||||
mine.lastClaimer = null;
|
|
||||||
return true;
|
|
||||||
}
|
|
||||||
|
|
||||||
// This mine does not have a valid claimer
|
|
||||||
// we will therefore set it to errant
|
|
||||||
// and keep the window open.
|
|
||||||
|
|
||||||
if (!Mine.validateClaimer(mine.lastClaimer)) {
|
|
||||||
mine.lastClaimer = null;
|
|
||||||
mine.updateGuildOwner(null);
|
|
||||||
mine.setActive(true);
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
|
|
||||||
//Update ownership to map
|
|
||||||
|
|
||||||
mine.guildName = mine.getOwningGuild().getName();
|
|
||||||
mine.guildTag = mine.getOwningGuild().getGuildTag();
|
|
||||||
Guild nation = mine.getOwningGuild().getNation();
|
|
||||||
mine.nationName = nation.getName();
|
|
||||||
mine.nationTag = nation.getGuildTag();
|
|
||||||
|
|
||||||
Mine.setLastChange(System.currentTimeMillis());
|
|
||||||
|
|
||||||
mineBuilding.rebuildMine();
|
|
||||||
WorldGrid.updateObject(mineBuilding);
|
|
||||||
|
|
||||||
ChatSystemMsg chatMsg = new ChatSystemMsg(null, mine.lastClaimer.getName() + " has claimed the mine in " + mine.getParentZone().getParent().getName() + " for " + mine.getOwningGuild().getName() + ". The mine is no longer active.");
|
|
||||||
chatMsg.setMessageType(10);
|
|
||||||
chatMsg.setChannel(Enum.ChatChannelType.SYSTEM.getChannelID());
|
|
||||||
DispatchMessage.dispatchMsgToAll(chatMsg);
|
|
||||||
|
|
||||||
// Warehouse this claim event
|
|
||||||
|
|
||||||
MineRecord mineRecord = MineRecord.borrow(mine, mine.lastClaimer, Enum.RecordEventType.CAPTURE);
|
|
||||||
DataWarehouse.pushToWarehouse(mineRecord);
|
|
||||||
|
|
||||||
mineBuilding.setRank(mineBuilding.getRank());
|
|
||||||
mine.lastClaimer = null;
|
|
||||||
mine.setActive(false);
|
|
||||||
mine.wasClaimed = true;
|
|
||||||
return true;
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user