forked from MagicBane/Server
Cleanup of logic.
This commit is contained in:
@@ -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))
|
||||||
|
|||||||
Reference in New Issue
Block a user