Add possibility for new money system

This commit is contained in:
Magnus Ulf 2019-02-06 12:39:03 +01:00
parent 858343d121
commit 0a0cc047ae
6 changed files with 95 additions and 16 deletions

View File

@ -76,7 +76,7 @@ public class CmdFactionsTop extends FactionsCommand
{ {
switch(category) switch(category)
{ {
case MONEY: return Money.get(faction); case MONEY: return Econ.getMoney(faction);
case MEMBERS: return faction.getMPlayers().size(); case MEMBERS: return faction.getMPlayers().size();
case TERRITORY: return faction.getLandCount(); case TERRITORY: return faction.getLandCount();
case AGE: return faction.getAge(); case AGE: return faction.getAge();
@ -89,7 +89,7 @@ public class CmdFactionsTop extends FactionsCommand
String ret = Txt.parse("%s<i>: ", faction.getName(mplayer)); String ret = Txt.parse("%s<i>: ", faction.getName(mplayer));
switch(category) switch(category)
{ {
case MONEY: ret += Money.format(Money.get(faction), true); break; case MONEY: ret += Money.format(Econ.getMoney(faction), true); break;
case MEMBERS: ret += faction.getMPlayers().size() + " members"; break; case MEMBERS: ret += faction.getMPlayers().size() + " members"; break;
case TERRITORY: ret += faction.getLandCount() + " chunks"; break; case TERRITORY: ret += faction.getLandCount() + " chunks"; break;
case AGE: case AGE:

View File

@ -59,7 +59,7 @@ public class EngineEcon extends Engine
if (oldFaction.getMPlayers().size() > 1) return; if (oldFaction.getMPlayers().size() > 1) return;
// ... then transfer all money to the player. // ... then transfer all money to the player.
double money = Money.get(oldFaction); double money = Econ.getMoney(oldFaction);
if (money == 0) return; if (money == 0) return;
Econ.transferMoney(mplayer, oldFaction, mplayer, money); Econ.transferMoney(mplayer, oldFaction, mplayer, money);
} }
@ -81,7 +81,7 @@ public class EngineEcon extends Engine
// ... then transfer all the faction money to the sender. // ... then transfer all the faction money to the sender.
Faction faction = event.getFaction(); Faction faction = event.getFaction();
double amount = Money.get(faction); double amount = Econ.getMoney(faction);
// Check that there is an amount // Check that there is an amount
if (amount == 0) return; if (amount == 0) return;

View File

@ -153,7 +153,7 @@ public class EngineShow extends Engine
// BANK // BANK
if (MConf.get().bankEnabled) if (MConf.get().bankEnabled)
{ {
double bank = Money.get(faction); double bank = Econ.getMoney(faction);
String bankDesc = Txt.parse("<h>%s", Money.format(bank, true)); String bankDesc = Txt.parse("<h>%s", Money.format(bank, true));
show(idPriorityLiness, SHOW_ID_FACTION_BANK, SHOW_PRIORITY_FACTION_BANK, "Bank", bankDesc); show(idPriorityLiness, SHOW_ID_FACTION_BANK, SHOW_PRIORITY_FACTION_BANK, "Bank", bankDesc);
} }

View File

@ -135,12 +135,10 @@ public class Faction extends Entity<Faction> implements FactionsParticipator, MP
// The powerBoost is a custom increase/decrease to default and maximum power. // The powerBoost is a custom increase/decrease to default and maximum power.
// Null means the faction has powerBoost (0). // Null means the faction has powerBoost (0).
private Double powerBoost = null; private Double powerBoost = null;
// Can anyone join the Faction? // The money a Faction has
// If the faction is open they can. // null means 0.0
// If the faction is closed an invite is required. private Double money = null;
// Null means default.
// private Boolean open = null;
// This is the ids of the invited players. // This is the ids of the invited players.
// They are actually "senderIds" since you can invite "@console" to your faction. // They are actually "senderIds" since you can invite "@console" to your faction.
@ -425,6 +423,28 @@ public class Faction extends Entity<Faction> implements FactionsParticipator, MP
// Mark as changed // Mark as changed
this.changed(); this.changed();
} }
// -------------------------------------------- //
// FIELD: money
// -------------------------------------------- //
public double getMoney()
{
if (!MConf.get().econEnabled) throw new UnsupportedOperationException("econ not enabled");
if (!MConf.get().bankEnabled) throw new UnsupportedOperationException("bank not enabled");
if (!MConf.get().useNewMoneySystem) throw new UnsupportedOperationException("this server does not use the new econ system");
return this.convertGet(this.money, 0D);
}
public void setMoney(Double money)
{
if (!MConf.get().econEnabled) throw new UnsupportedOperationException("econ not enabled");
if (!MConf.get().bankEnabled) throw new UnsupportedOperationException("bank not enabled");
if (!MConf.get().useNewMoneySystem) throw new UnsupportedOperationException("this server does not use the new econ system");
this.money = this.convertSet(money, this.money, 0D);
}
// -------------------------------------------- // // -------------------------------------------- //
// FIELD: open // FIELD: open

View File

@ -625,4 +625,6 @@ public class MConf extends Entity<MConf>
// If you set this to false the player executing the command will pay instead. // If you set this to false the player executing the command will pay instead.
public boolean bankFactionPaysCosts = true; public boolean bankFactionPaysCosts = true;
public boolean useNewMoneySystem = false;
} }

View File

@ -63,7 +63,7 @@ public class Econ
public static void sendBalanceInfo(MPlayer to, EconomyParticipator about) public static void sendBalanceInfo(MPlayer to, EconomyParticipator about)
{ {
to.msg("<a>%s's<i> balance is <h>%s<i>.", about.describeTo(to, true), Money.format(Money.get(about))); to.msg("<a>%s's<i> balance is <h>%s<i>.", about.describeTo(to, true), Money.format(getMoney(about)));
} }
public static boolean isMePermittedYou(EconomyParticipator me, EconomyParticipator you, MPerm mperm) public static boolean isMePermittedYou(EconomyParticipator me, EconomyParticipator you, MPerm mperm)
@ -128,7 +128,7 @@ public class Econ
} }
// Is there enough money for the transaction to happen? // Is there enough money for the transaction to happen?
if (Money.get(from) < amount) if (getMoney(from) < amount)
{ {
// There was not enough money to pay // There was not enough money to pay
if (by != null && notify) if (by != null && notify)
@ -139,7 +139,7 @@ public class Econ
} }
// Transfer money // Transfer money
if (Money.move(from, to, by, amount, "Factions")) if (moveMoney(from, to, by, amount))
{ {
if (notify) if (notify)
{ {
@ -219,7 +219,7 @@ public class Econ
{ {
if ( ! isEnabled()) return true; if ( ! isEnabled()) return true;
if (Money.get(ep) < delta) if (getMoney(ep) < delta)
{ {
if (toDoThis != null && !toDoThis.isEmpty()) if (toDoThis != null && !toDoThis.isEmpty())
{ {
@ -240,7 +240,7 @@ public class Econ
boolean hasActionDesctription = (actionDescription != null && !actionDescription.isEmpty()); boolean hasActionDesctription = (actionDescription != null && !actionDescription.isEmpty());
if (Money.spawn(ep, null, delta, "Factions")) if (moveMoney(null, ep, null, delta))
{ {
modifyUniverseMoney(ep, -delta); modifyUniverseMoney(ep, -delta);
@ -273,5 +273,62 @@ public class Econ
return false; return false;
} }
} }
public static double getMoney(EconomyParticipator ep)
{
if (ep instanceof Faction && MConf.get().useNewMoneySystem)
{
return ((Faction) ep).getMoney();
}
else
{
return Money.get(ep);
}
}
public static boolean moveMoney(EconomyParticipator from, EconomyParticipator to, EconomyParticipator by, double amount)
{
final boolean fromFaction = from instanceof Faction;
final boolean toFaction = to instanceof Faction;
// If the old money system is used just do that
if (!MConf.get().useNewMoneySystem)
{
return Money.move(from, to, by, amount, "Factions");
}
// Or if neither to or from is a faction
if (!fromFaction && !toFaction)
{
return Money.move(from, to, by, amount, "Factions");
}
// Handle from
if (fromFaction)
{
Faction faction = (Faction) from;
double money = faction.getMoney();
if (amount > money) return false;
faction.setMoney(money - amount);
}
else if (from != null)
{
Money.despawn(from, by, amount);
}
// Handle to
if (toFaction)
{
Faction faction = (Faction) to;
double money = faction.getMoney();
faction.setMoney(money + amount);
}
else if (to != null)
{
Money.spawn(to, by, amount);
}
return true;
}
} }