aboutsummaryrefslogtreecommitdiff
path: root/src/main/java/gregtech
diff options
context:
space:
mode:
authorGlease <4586901+Glease@users.noreply.github.com>2021-04-24 19:14:22 +0800
committerLéa Gris <lea.gris@noiraude.net>2021-04-24 13:23:25 +0200
commit915d64b1d0b202b07956f3ec6ffc3a2a5c317dff (patch)
tree94f06d3414049dc5a74a418990ab0a0be6825785 /src/main/java/gregtech
parent8ed4dd90d52b1d1697807a4abbddcf1338a52337 (diff)
downloadGT5-Unofficial-915d64b1d0b202b07956f3ec6ffc3a2a5c317dff.tar.gz
GT5-Unofficial-915d64b1d0b202b07956f3ec6ffc3a2a5c317dff.tar.bz2
GT5-Unofficial-915d64b1d0b202b07956f3ec6ffc3a2a5c317dff.zip
Optimize config code
1. Reuse same config across all solar boilers of the same class 2. Remove shading of config field in subclass Signed-off-by: Glease <4586901+Glease@users.noreply.github.com>
Diffstat (limited to 'src/main/java/gregtech')
-rw-r--r--src/main/java/gregtech/common/tileentities/boilers/GT_MetaTileEntity_Boiler_Solar.java92
-rw-r--r--src/main/java/gregtech/common/tileentities/boilers/GT_MetaTileEntity_Boiler_Solar_Steel.java42
2 files changed, 61 insertions, 73 deletions
diff --git a/src/main/java/gregtech/common/tileentities/boilers/GT_MetaTileEntity_Boiler_Solar.java b/src/main/java/gregtech/common/tileentities/boilers/GT_MetaTileEntity_Boiler_Solar.java
index 631f7eed7a..566209401b 100644
--- a/src/main/java/gregtech/common/tileentities/boilers/GT_MetaTileEntity_Boiler_Solar.java
+++ b/src/main/java/gregtech/common/tileentities/boilers/GT_MetaTileEntity_Boiler_Solar.java
@@ -27,27 +27,32 @@ public class GT_MetaTileEntity_Boiler_Solar extends GT_MetaTileEntity_Boiler {
"Produces %sL of Steam per second%n" +
"Calcifies over time, reducing Steam output to %sL/s%n" +
"Break and replace to descale");
- private final Config config = new Config();
- protected int calcificationTicks;
- protected int minOutputPerSecond;
- protected int maxOutputPerSecond;
+ protected final Config mConfig;
protected int basicTemperatureMod = 5; // Base Celsius gain or loss
- protected int coolDownTicks;
private int mRunTimeTicks = 0;
public GT_MetaTileEntity_Boiler_Solar(int aID, String aName, String aNameRegional) {
super(aID, aName, aNameRegional, new String[0]);
- config.onConfigLoad();
+ mConfig = createConfig();
}
public GT_MetaTileEntity_Boiler_Solar(String aName, int aTier, String aDescription, ITexture[][][] aTextures) {
super(aName, aTier, aDescription, aTextures);
- config.onConfigLoad();
+ mConfig = createConfig();
}
public GT_MetaTileEntity_Boiler_Solar(String aName, int aTier, String[] aDescription, ITexture[][][] aTextures) {
super(aName, aTier, aDescription, aTextures);
- config.onConfigLoad();
+ mConfig = createConfig();
+ }
+
+ protected GT_MetaTileEntity_Boiler_Solar(String aName, int aTier, String[] aDescription, ITexture[][][] aTextures, Config aConfig) {
+ super(aName, aTier, aDescription, aTextures);
+ mConfig = aConfig;
+ }
+
+ protected Config createConfig() {
+ return new Config(machineconfig + ".boiler.solar.bronze",1080000,40,120,45);
}
/**
@@ -62,7 +67,7 @@ public class GT_MetaTileEntity_Boiler_Solar extends GT_MetaTileEntity_Boiler {
}
public int getMaxOutputPerSecond() {
- return maxOutputPerSecond;
+ return mConfig.getMaxOutputPerSecond();
}
/**
@@ -86,7 +91,7 @@ public class GT_MetaTileEntity_Boiler_Solar extends GT_MetaTileEntity_Boiler {
}
public int getMinOutputPerSecond() {
- return minOutputPerSecond;
+ return mConfig.getMinOutputPerSecond();
}
@Override
@@ -170,15 +175,15 @@ public class GT_MetaTileEntity_Boiler_Solar extends GT_MetaTileEntity_Boiler {
if (mTemperature < 100) {
return 0;
}
- if (mRunTimeTicks > calcificationTicks) {
+ if (mRunTimeTicks > mConfig.getCalcificationTicks()) {
/* When reaching calcification ticks; discount the proportion of run-time spent on calcification
* from the maximum output per second, and return this or the minimum output per second
*/
- return Math.max(minOutputPerSecond,
- maxOutputPerSecond
- - maxOutputPerSecond * (mRunTimeTicks - calcificationTicks) / calcificationTicks);
+ return Math.max(mConfig.getMinOutputPerSecond(),
+ mConfig.getMaxOutputPerSecond()
+ - mConfig.getMaxOutputPerSecond() * (mRunTimeTicks - mConfig.getCalcificationTicks()) / mConfig.getCalcificationTicks());
} else {
- return maxOutputPerSecond;
+ return mConfig.getMaxOutputPerSecond();
}
}
@@ -194,7 +199,7 @@ public class GT_MetaTileEntity_Boiler_Solar extends GT_MetaTileEntity_Boiler {
@Override
protected int getCooldownInterval() {
- return coolDownTicks / basicTemperatureMod;
+ return mConfig.getCoolDownTicks() / basicTemperatureMod;
}
@Override
@@ -257,45 +262,50 @@ public class GT_MetaTileEntity_Boiler_Solar extends GT_MetaTileEntity_Boiler {
@Override
public MetaTileEntity newMetaEntity(IGregTechTileEntity aTileEntity) {
- return new GT_MetaTileEntity_Boiler_Solar(mName, mTier, mDescriptionArray, mTextures);
+ return new GT_MetaTileEntity_Boiler_Solar(mName, mTier, mDescriptionArray, mTextures, mConfig);
}
- protected class Config {
-
- protected int get(final String key, final int defaultValue, final String... comments) {
- final StringBuilder comment = new StringBuilder();
- if (comments.length > 0) comment.append(String.join("\n", comments)).append("\n");
- comment.append("Default: ").append(defaultValue);
- return sMachineFile.mConfig.get(getConfigCategory(), key, defaultValue, comment.toString()).getInt();
- }
-
- protected int getCalcificationTicks() {
- return get("CalcificationTicks", 1080000,
+ protected static class Config {
+ private final int calcificationTicks;
+ private final int minOutputPerSecond;
+ private final int maxOutputPerSecond;
+ private final int coolDownTicks;
+
+ public Config(String aCategory,
+ int aDefaultCalcificationTicks,
+ int aDefaultMinOutputPerSecond,
+ int aDefaultMaxOutputPerSecond,
+ int aDefaultCoolDownTicks) {
+ calcificationTicks = get(aCategory,"CalcificationTicks", aDefaultCalcificationTicks,
"Number of run-time ticks before boiler starts calcification.",
"100% calcification and minimal output will be reached at 2 times this.");
+ minOutputPerSecond = get(aCategory,"MinOutputPerSecond", aDefaultMinOutputPerSecond);
+ maxOutputPerSecond = get(aCategory,"MaxOutputPerSecond", aDefaultMaxOutputPerSecond);
+ coolDownTicks = get(aCategory,"CoolDownTicks", aDefaultCoolDownTicks, "Number of ticks it takes to lose 1°C.");
}
- protected String getConfigCategory() {
- return machineconfig + ".boiler.solar.bronze";
+ protected int get(final String aCategory, final String aKey, final int aDefaultValue, final String... aComments) {
+ final StringBuilder tCommentBuilder = new StringBuilder();
+ for (String tComment: aComments)
+ tCommentBuilder.append(tComment).append('\n');
+ tCommentBuilder.append("Default: ").append(aDefaultValue);
+ return sMachineFile.mConfig.get(aCategory, aKey, aDefaultValue, tCommentBuilder.toString()).getInt();
}
- protected int getCoolDownTicks() {
- return get("CoolDownTicks", 45, "Number of ticks it takes to lose 1°C.");
+ public int getCalcificationTicks() {
+ return calcificationTicks;
}
- protected int getMaxOutputPerSecond() {
- return get("MaxOutputPerSecond", 120);
+ public int getMinOutputPerSecond() {
+ return minOutputPerSecond;
}
- protected int getMinOutputPerSecond() {
- return get("MinOutputPerSecond", 40);
+ public int getMaxOutputPerSecond() {
+ return maxOutputPerSecond;
}
- protected void onConfigLoad() {
- calcificationTicks = getCalcificationTicks();
- minOutputPerSecond = getMinOutputPerSecond();
- maxOutputPerSecond = getMaxOutputPerSecond();
- coolDownTicks = getCoolDownTicks();
+ public int getCoolDownTicks() {
+ return coolDownTicks;
}
}
}
diff --git a/src/main/java/gregtech/common/tileentities/boilers/GT_MetaTileEntity_Boiler_Solar_Steel.java b/src/main/java/gregtech/common/tileentities/boilers/GT_MetaTileEntity_Boiler_Solar_Steel.java
index aebc1fae0a..feaaa7fa32 100644
--- a/src/main/java/gregtech/common/tileentities/boilers/GT_MetaTileEntity_Boiler_Solar_Steel.java
+++ b/src/main/java/gregtech/common/tileentities/boilers/GT_MetaTileEntity_Boiler_Solar_Steel.java
@@ -12,21 +12,25 @@ import net.minecraft.entity.player.InventoryPlayer;
import static gregtech.api.enums.ConfigCategories.machineconfig;
public class GT_MetaTileEntity_Boiler_Solar_Steel extends GT_MetaTileEntity_Boiler_Solar {
- private final GT_MetaTileEntity_Boiler_Solar_Steel.Config config = new GT_MetaTileEntity_Boiler_Solar_Steel.Config();
-
public GT_MetaTileEntity_Boiler_Solar_Steel(int aID, String aName, String aNameRegional) {
super(aID, aName, aNameRegional);
- config.onConfigLoad();
}
public GT_MetaTileEntity_Boiler_Solar_Steel(String aName, int aTier, String aDescription, ITexture[][][] aTextures) {
super(aName, aTier, aDescription, aTextures);
- config.onConfigLoad();
}
public GT_MetaTileEntity_Boiler_Solar_Steel(String aName, int aTier, String[] aDescription, ITexture[][][] aTextures) {
super(aName, aTier, aDescription, aTextures);
- config.onConfigLoad();
+ }
+
+ public GT_MetaTileEntity_Boiler_Solar_Steel(String aName, int aTier, String[] aDescription, ITexture[][][] aTextures, Config aConfig) {
+ super(aName, aTier, aDescription, aTextures, aConfig);
+ }
+
+ @Override
+ protected Config createConfig() {
+ return new Config(machineconfig + ".boiler.solar.steel",108000, 120, 360, 75);
}
@Override
@@ -62,32 +66,6 @@ public class GT_MetaTileEntity_Boiler_Solar_Steel extends GT_MetaTileEntity_Boil
@Override
public MetaTileEntity newMetaEntity(IGregTechTileEntity aTileEntity) {
- return new GT_MetaTileEntity_Boiler_Solar_Steel(this.mName, this.mTier, this.mDescriptionArray, this.mTextures);
- }
-
- protected class Config extends GT_MetaTileEntity_Boiler_Solar.Config {
-
- @Override
- protected String getConfigCategory() {
- return machineconfig + ".boiler.solar.steel";
- }
-
- @Override
- protected int getCoolDownTicks() {
- return get("CoolDownTicks", 75,
- "Number of ticks it takes to loose 1°C (Cools down slower than a normal boiler).");
- }
-
- @Override
- protected int getMaxOutputPerSecond() {
- return get("MaxOutputPerSecond", 360);
- }
-
- @Override
- protected int getMinOutputPerSecond() {
- return get("MinOutputPerSecond", 120);
- }
-
+ return new GT_MetaTileEntity_Boiler_Solar_Steel(this.mName, this.mTier, this.mDescriptionArray, this.mTextures, this.mConfig);
}
-
}