Browse Source

Cleanup of logic.

master
MagicBot 2 years ago
parent
commit
0f2ca3e62e
  1. 90
      src/engine/objects/Mine.java

90
src/engine/objects/Mine.java

@ -7,9 +7,6 @@
// www.magicbane.com // www.magicbane.com
// • ▌ ▄ ·. ▄▄▄· ▄▄ • ▪ ▄▄· ▄▄▄▄· ▄▄▄· ▐▄▄▄ ▄▄▄ . // • ▌ ▄ ·. ▄▄▄· ▄▄ • ▪ ▄▄· ▄▄▄▄· ▄▄▄· ▐▄▄▄ ▄▄▄ .
// ·██ ▐███▪▐█ ▀█ ▐█ ▀ ▪██ ▐█ ▌▪▐█ ▀█▪▐█ ▀█ •█▌ ▐█▐▌· // ·██ ▐███▪▐█ ▀█ ▐█ ▀ ▪██ ▐█ ▌▪▐█ ▀█▪▐█ ▀█ •█▌ ▐█▐▌·
// ▐█ ▌▐▌▐█·▄█▀▀█ ▄█ ▀█▄▐█·██ ▄▄▐█▀▀█▄▄█▀▀█ ▐█▐ ▐▌▐▀▀▀ // ▐█ ▌▐▌▐█·▄█▀▀█ ▄█ ▀█▄▐█·██ ▄▄▐█▀▀█▄▄█▀▀█ ▐█▐ ▐▌▐▀▀▀
@ -29,19 +26,18 @@ import engine.gameManager.*;
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;
import engine.server.world.WorldServer;
import engine.session.SessionID; import engine.session.SessionID;
import org.pmw.tinylog.Logger; import org.pmw.tinylog.Logger;
import java.net.UnknownHostException; import java.net.UnknownHostException;
import java.sql.ResultSet; import java.sql.ResultSet;
import java.sql.SQLException; import java.sql.SQLException;
import java.sql.Timestamp;
import java.time.LocalDateTime; 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 {
@ -64,9 +60,6 @@ public class Mine extends AbstractGameObject {
//flags 1: never been claimed (make active). //flags 1: never been claimed (make active).
// Not persisted to DB // Not persisted to DB
private String guildName; private String guildName;
private GuildTag guildTag; private GuildTag guildTag;
@ -101,7 +94,7 @@ public class Mine extends AbstractGameObject {
else else
this.zoneName = this.parentZone.getName(); this.zoneName = this.parentZone.getName();
} else { } else {
Logger.error( "Missing parentZone of ID " + parent); Logger.error("Missing parentZone of ID " + parent);
this.latitude = -1000; this.latitude = -1000;
this.longitude = 1000; this.longitude = 1000;
this.altitude = 0; this.altitude = 0;
@ -121,7 +114,7 @@ public class Mine extends AbstractGameObject {
this.owningGuild = Guild.getErrantGuild(); this.owningGuild = Guild.getErrantGuild();
} }
if(!nation.isErrant()) { if (!nation.isErrant()) {
this.nationName = nation.getName(); this.nationName = nation.getName();
this.nationTag = nation.getGuildTag(); this.nationTag = nation.getGuildTag();
} else { } else {
@ -136,7 +129,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)
return; return;
@ -161,7 +154,7 @@ public class Mine extends AbstractGameObject {
public static void loadAllMines() { public static void loadAllMines() {
try{ try {
//Load mine resources //Load mine resources
MineProduction.addResources(); MineProduction.addResources();
@ -174,20 +167,20 @@ try{
Mine.towerMap.put(mine.buildingID, mine); Mine.towerMap.put(mine.buildingID, mine);
} }
}catch (Exception e){ } catch (Exception e) {
e.printStackTrace(); e.printStackTrace();
} }
} }
/* /*
* Getters * Getters
*/ */
public boolean changeProductionType(Resource resource){ public boolean changeProductionType(Resource resource) {
if (!this.validForMine(resource)) if (!this.validForMine(resource))
return false; return false;
//update resource in database; //update resource in database;
if(!MineQueries.CHANGE_RESOURCE(this, resource)) if (!MineQueries.CHANGE_RESOURCE(this, resource))
return false; return false;
this.production = resource; this.production = resource;
@ -264,7 +257,7 @@ try{
* Serialization * 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());
writer.putInt(mine.getObjectUUID()); //actually a hash of mine writer.putInt(mine.getObjectUUID()); //actually a hash of mine
@ -305,9 +298,9 @@ try{
writer.putInt(mine.isExpansion() ? mine.mineType.xpacHash : mine.mineType.hash); writer.putInt(mine.isExpansion() ? mine.mineType.xpacHash : mine.mineType.hash);
writer.putString(mine.guildName); writer.putString(mine.guildName);
GuildTag._serializeForDisplay(mine.guildTag,writer); GuildTag._serializeForDisplay(mine.guildTag, writer);
writer.putString(mine.nationName); writer.putString(mine.nationName);
GuildTag._serializeForDisplay(mine.nationTag,writer); GuildTag._serializeForDisplay(mine.nationTag, writer);
} }
public void serializeForMineProduction(ByteBufferWriter writer) { public void serializeForMineProduction(ByteBufferWriter writer) {
@ -344,7 +337,7 @@ try{
/* /*
* Database * Database
*/ */
public static Mine getMine(int UID){ public static Mine getMine(int UID) {
return MineQueries.GET_MINE(UID); return MineQueries.GET_MINE(UID);
} }
@ -419,7 +412,7 @@ try{
mineCnt += Mine.getMinesForGuild(playerGuild.getObjectUUID()).size(); mineCnt += Mine.getMinesForGuild(playerGuild.getObjectUUID()).size();
for (Guild guild: playerGuild.getSubGuildList()) for (Guild guild : playerGuild.getSubGuildList())
mineCnt += Mine.getMinesForGuild(guild.getObjectUUID()).size(); mineCnt += Mine.getMinesForGuild(guild.getObjectUUID()).size();
if (mineCnt > rank) if (mineCnt > rank)
@ -449,8 +442,8 @@ try{
Building mineBuilding = BuildingManager.getBuildingFromCache(this.buildingID); Building mineBuilding = BuildingManager.getBuildingFromCache(this.buildingID);
if (mineBuilding == null){ if (mineBuilding == null) {
Logger.debug( "Null mine building " + this.getObjectUUID() +". Unable to Load Building with UID " +this.buildingID); Logger.debug("Null mine building " + this.getObjectUUID() + ". Unable to Load Building with UID " + this.buildingID);
return; return;
} }
@ -463,7 +456,7 @@ try{
BuildingManager.cleanupHirelings(building); BuildingManager.cleanupHirelings(building);
} }
public boolean handleEndMineWindow(){ public boolean handleEndMineWindow() {
// No need to end the window of a mine which never opened. // No need to end the window of a mine which never opened.
@ -472,8 +465,8 @@ try{
Building mineBuilding = BuildingManager.getBuildingFromCache(this.buildingID); Building mineBuilding = BuildingManager.getBuildingFromCache(this.buildingID);
if (mineBuilding == null){ if (mineBuilding == null) {
Logger.debug( "Null mine building for Mine " + this.getObjectUUID() +" Building " +this.buildingID); Logger.debug("Null mine building for Mine " + this.getObjectUUID() + " Building " + this.buildingID);
return false; return false;
} }
@ -481,11 +474,19 @@ try{
//never knocked down, let's just move on. //never knocked down, let's just move on.
//hasn't been claimed since server start. //hasn't been claimed since server start.
this.setActive(false); this.setActive(false);
this.lastClaimerSessionID = null;
this.lastClaimer = null;
return true; return true;
} }
if (!validClaimer(this.lastClaimer)) // This mine does not have a valid claimer
// we will therefore set it to errant
if (!validClaimer(this.lastClaimer)) {
this.lastClaimerSessionID = null;
this.lastClaimer = null;
return false; return false;
}
if (this.owningGuild == null || this.owningGuild.isErrant() || this.owningGuild.getNation().isErrant()) if (this.owningGuild == null || this.owningGuild.isErrant() || this.owningGuild.getNation().isErrant())
return false; return false;
@ -500,14 +501,6 @@ try{
setLastChange(System.currentTimeMillis()); setLastChange(System.currentTimeMillis());
if (mineBuilding.getRank() < 1){
if (this.lastClaimer == null){
this.lastClaimerSessionID = null;
updateGuildOwner(null);
return false;
}
mineBuilding.rebuildMine(); mineBuilding.rebuildMine();
WorldGrid.updateObject(mineBuilding); WorldGrid.updateObject(mineBuilding);
ChatManager.chatSystemChannel(this.lastClaimer.getName() + " has claimed the mine in " + this.parentZone.getParent().getName() + " for " + this.owningGuild.getName() + ". The mine is no longer active."); ChatManager.chatSystemChannel(this.lastClaimer.getName() + " has claimed the mine in " + this.parentZone.getParent().getName() + " for " + this.owningGuild.getName() + ". The mine is no longer active.");
@ -517,10 +510,7 @@ try{
MineRecord mineRecord = MineRecord.borrow(this, this.lastClaimer, Enum.RecordEventType.CAPTURE); MineRecord mineRecord = MineRecord.borrow(this, this.lastClaimer, Enum.RecordEventType.CAPTURE);
DataWarehouse.pushToWarehouse(mineRecord); DataWarehouse.pushToWarehouse(mineRecord);
}else{
mineBuilding.setRank(mineBuilding.getRank()); mineBuilding.setRank(mineBuilding.getRank());
}
this.setActive(false); this.setActive(false);
return true; return true;
} }
@ -559,7 +549,7 @@ try{
return true; return true;
} }
public boolean depositMineResources(){ public boolean depositMineResources() {
if (this.owningGuild == null) if (this.owningGuild == null)
return false; return false;
@ -571,18 +561,18 @@ try{
return false; return false;
ItemBase resourceIB = ItemBase.getItemBase(this.production.UUID); ItemBase resourceIB = ItemBase.getItemBase(this.production.UUID);
return this.owningGuild.getOwnedCity().getWarehouse().depositFromMine(this,resourceIB, this.getModifiedProductionAmount()); return this.owningGuild.getOwnedCity().getWarehouse().depositFromMine(this, resourceIB, this.getModifiedProductionAmount());
} }
public boolean updateGuildOwner(PlayerCharacter pc){ public boolean updateGuildOwner(PlayerCharacter pc) {
Building mineBuilding = BuildingManager.getBuildingFromCache(this.buildingID); Building mineBuilding = BuildingManager.getBuildingFromCache(this.buildingID);
//should never return null, but let's check just in case. //should never return null, but let's check just in case.
if (mineBuilding == null){ if (mineBuilding == null) {
ChatManager.chatSystemError(pc, "Unable to find mine tower."); ChatManager.chatSystemError(pc, "Unable to find mine tower.");
Logger.debug("Failed to Update Mine with UID " + this.getObjectUUID() +". Unable to Load Building with UID " +this.buildingID ); Logger.debug("Failed to Update Mine with UID " + this.getObjectUUID() + ". Unable to Load Building with UID " + this.buildingID);
return false; return false;
} }
@ -638,11 +628,11 @@ try{
return true; return true;
} }
public boolean isExpansion(){ public boolean isExpansion() {
return (this.flags & 2) != 0; return (this.flags & 2) != 0;
} }
public int getModifiedProductionAmount(){ public int getModifiedProductionAmount() {
//TODO Calculate Distance modifications. //TODO Calculate Distance modifications.
//calculate base values. //calculate base values.
@ -655,7 +645,7 @@ try{
Building mineBuilding = BuildingManager.getBuilding(this.buildingID); Building mineBuilding = BuildingManager.getBuilding(this.buildingID);
if (mineBuilding == null) if (mineBuilding == null)
return this.production.baseProduction; return this.production.baseProduction;
for (AbstractCharacter harvester:mineBuilding.getHirelings().keySet()){ for (AbstractCharacter harvester : mineBuilding.getHirelings().keySet()) {
totalModded += baseModValue; totalModded += baseModValue;
totalModded += rankModValue * harvester.getRank(); totalModded += rankModValue * harvester.getRank();
} }
@ -665,12 +655,12 @@ try{
if (this.isExpansion()) if (this.isExpansion())
return (int) totalModded; return (int) totalModded;
if (this.owningGuild != null){ if (this.owningGuild != null) {
if(this.owningGuild.getOwnedCity() != null){ if (this.owningGuild.getOwnedCity() != null) {
float distanceSquared = this.owningGuild.getOwnedCity().getLoc().distanceSquared2D(mineBuilding.getLoc()); float distanceSquared = this.owningGuild.getOwnedCity().getLoc().distanceSquared2D(mineBuilding.getLoc());
if (distanceSquared > sqr(10000 * 3)) if (distanceSquared > sqr(10000 * 3))
totalModded *=.25f; totalModded *= .25f;
else if (distanceSquared > sqr(10000 * 2)) else if (distanceSquared > sqr(10000 * 2))
totalModded *= .50f; totalModded *= .50f;
else if (distanceSquared > sqr(10000)) else if (distanceSquared > sqr(10000))

Loading…
Cancel
Save