Skip to content

Commit

Permalink
refactor and reorganize for readability
Browse files Browse the repository at this point in the history
  • Loading branch information
AlurienFlame committed Dec 21, 2024
1 parent 5ff9e9c commit 091854d
Show file tree
Hide file tree
Showing 3 changed files with 110 additions and 62 deletions.
2 changes: 2 additions & 0 deletions src/main/java/net/balancedrecall/BalancedRecall.java
Original file line number Diff line number Diff line change
Expand Up @@ -15,6 +15,8 @@

public class BalancedRecall implements ModInitializer {
public static final String MODID = "balancedrecall";

public static final BalancedRecallConfig config = new BalancedRecallConfig();

// Items
private static final RegistryKey<Item> magic_mirror_key = RegistryKey.of(RegistryKeys.ITEM, Identifier.of(MODID, "magic_mirror"));
Expand Down
56 changes: 37 additions & 19 deletions src/main/java/net/balancedrecall/BalancedRecallConfig.java
Original file line number Diff line number Diff line change
Expand Up @@ -15,33 +15,51 @@

public class BalancedRecallConfig {
// File stuff
static String configFilename = "balancedrecall.json";
static Path configDir = FabricLoader.getInstance().getConfigDir();
static Path configPath = configDir.resolve(configFilename);
static File configFile = configPath.toFile();
private static String configFilename = "balancedrecall.json";
private static Path configDir = FabricLoader.getInstance().getConfigDir();
private static Path configPath = configDir.resolve(configFilename);
private static File configFile = configPath.toFile();

// Configs
public static JsonObject config;
public JsonObject jsonObject;

// Constructor creates the config file if it doesn't exist
public BalancedRecallConfig() {
if (!Files.exists(configPath)) {
create();
// Set default values
config = new JsonObject();
config.addProperty("take_damage_interrupts_recall", true);
config.addProperty("take_damage_puts_mirror_on_cooldown", true);
config.addProperty("recall_impossible_when_monsters_nearby", true);
config.addProperty("magic_mirror_use_time_ticks", 20);
config.addProperty("magic_mirror_cooldown_time_seconds", 1);
config.addProperty("dimensional_mirror_use_time_ticks", 20);
config.addProperty("dimensional_mirror_cooldown_time_seconds", 1);
config.addProperty("sleeping_mat_resets_phantom_timer", true);
setToDefaults();
write();
}
read();
}

public void setToDefaults() {
jsonObject = new JsonObject();
jsonObject.addProperty("take_damage_interrupts_recall", true);
jsonObject.addProperty("take_damage_puts_mirror_on_cooldown", true);
jsonObject.addProperty("recall_impossible_when_monsters_nearby", true);
jsonObject.addProperty("magic_mirror_use_time_ticks", 20);
jsonObject.addProperty("magic_mirror_cooldown_time_seconds", 1);
jsonObject.addProperty("dimensional_mirror_use_time_ticks", 20);
jsonObject.addProperty("dimensional_mirror_cooldown_time_seconds", 1);
jsonObject.addProperty("sleeping_mat_resets_phantom_timer", true);
}

// Setters and getters
// TODO: validate
public void set(String key, Boolean value) {
jsonObject.addProperty(key, value);
}
public void set(String key, String value) {
jsonObject.addProperty(key, Integer.parseInt(value));
}
public Boolean getBoolean(String key) {
return jsonObject.get(key).getAsBoolean();
}
public String getInteger(String key) {
return jsonObject.get(key).toString();
}

// Create the config file with default values.
private void create() {
try {
Expand All @@ -53,21 +71,21 @@ private void create() {
}

// Update the current config with the values from the file.
private void read() {
public void read() {
try {
FileReader reader = new FileReader(configFile);
config = new Gson().fromJson(reader, JsonObject.class);
jsonObject = new Gson().fromJson(reader, JsonObject.class);
reader.close();
} catch (Exception e) {
System.out.println(String.format("[Balanced Recall] Error reading config file: %s", e.toString()));
}
}

// Write the current config to the file.
public static void write() {
public void write() {
try {
FileWriter writer = new FileWriter(configFile);
new GsonBuilder().setPrettyPrinting().create().toJson(config, writer);
new GsonBuilder().setPrettyPrinting().create().toJson(jsonObject, writer);
writer.close();
} catch (IOException e) {
System.out.println(String.format("[Balanced Recall] Error saving config file: %s", e.toString()));
Expand Down
114 changes: 71 additions & 43 deletions src/main/java/net/balancedrecall/ConfigScreen.java
Original file line number Diff line number Diff line change
Expand Up @@ -15,16 +15,12 @@
public class ConfigScreen extends Screen {
private Screen parent;
private final ThreePartsLayoutWidget layout = new ThreePartsLayoutWidget(this);
private final BalancedRecallConfig config;

public ConfigScreen(@Nullable Screen parent) {
super(Text.translatable("balancedrecall.menu.title"));

this.parent = parent;

// TODO: Load config

// TODO: Reset button

this.config = BalancedRecall.config;
}

@Override
Expand All @@ -37,67 +33,95 @@ protected void init() {
layout.addHeader(new TextWidget(Text.of("Balanced Recall Configuration"), this.textRenderer));

// Mirror settings
// TODO: Save booleans
column.add(CheckboxWidget.builder(Text.of("Taking damage interrupts recall"), this.textRenderer).checked(BalancedRecallConfig.config.get("take_damage_interrupts_recall").getAsBoolean()).callback((checkbox, checked)->{
BalancedRecallConfig.config.addProperty("take_damage_interrupts_recall", checked);
}).build());
column.add(CheckboxWidget.builder(Text.of("Taking damage puts mirror on cooldown"), this.textRenderer).checked(BalancedRecallConfig.config.get("take_damage_puts_mirror_on_cooldown").getAsBoolean()).callback((checkbox, checked)->{
BalancedRecallConfig.config.addProperty("take_damage_puts_mirror_on_cooldown", checked);
}).build());
column.add(CheckboxWidget.builder(Text.of("Recalling is impossible when mosters are nearby"), this.textRenderer).checked(BalancedRecallConfig.config.get("recall_impossible_when_monsters_nearby").getAsBoolean()).callback((checkbox, checked)->{
BalancedRecallConfig.config.addProperty("recall_impossible_when_monsters_nearby", checked);
}).build());
column.add(
CheckboxWidget
.builder(Text.of("Taking damage interrupts recall"), this.textRenderer)
.checked(config.getBoolean("take_damage_interrupts_recall"))
.callback((checkbox, checked)->config.set("take_damage_interrupts_recall", checked))
.build()
);
column.add(
CheckboxWidget
.builder(Text.of("Taking damage puts mirror on cooldown"), this.textRenderer)
.checked(config.getBoolean("take_damage_puts_mirror_on_cooldown"))
.callback((checkbox, checked)->config.set("take_damage_puts_mirror_on_cooldown", checked))
.build()
);
column.add(
CheckboxWidget
.builder(Text.of("Recalling is impossible when mosters are nearby"), this.textRenderer)
.checked(config.getBoolean("recall_impossible_when_monsters_nearby"))
.callback((checkbox, checked)->config.set("recall_impossible_when_monsters_nearby", checked))
.build()
);

GridWidget grid = new GridWidget();
grid.getMainPositioner().margin(4).alignHorizontalCenter();
GridWidget.Adder adder = grid.createAdder(2);
adder.getMainPositioner().alignLeft().alignVerticalCenter();

adder.add(new TextWidget(Text.of("Magic Mirror Use Time"), this.textRenderer));
TextFieldWidget magicMirrorUseTime = new TextFieldWidget(this.textRenderer, 100, 20, Text.of("Magic Mirror Use Time"));
magicMirrorUseTime.setChangedListener((value)->{
// TODO: validate
BalancedRecallConfig.config.addProperty("magic_mirror_use_time_ticks", Integer.parseInt(value));
});
magicMirrorUseTime.setText(BalancedRecallConfig.config.get("magic_mirror_use_time_ticks").getAsString());
TextFieldWidget magicMirrorUseTime = new TextFieldWidget(
this.textRenderer,
100,
20,
Text.of("Magic Mirror Use Time")
);
magicMirrorUseTime.setChangedListener((value)->config.set("magic_mirror_use_time_ticks", value));
magicMirrorUseTime.setText(config.getInteger("magic_mirror_use_time_ticks"));
adder.add(magicMirrorUseTime);

adder.add(new TextWidget(Text.of("Magic Mirror Cooldown Time"), this.textRenderer));
TextFieldWidget magicMirrorCooldownTime = new TextFieldWidget(this.textRenderer, 100, 20, Text.of("Magic Mirror Cooldown Time"));
magicMirrorCooldownTime.setChangedListener((value)->{
BalancedRecallConfig.config.addProperty("magic_mirror_cooldown_time_seconds", Integer.parseInt(value));
});
magicMirrorCooldownTime.setText(BalancedRecallConfig.config.get("magic_mirror_cooldown_time_seconds").getAsString());
TextFieldWidget magicMirrorCooldownTime = new TextFieldWidget(
this.textRenderer,
100,
20,
Text.of("Magic Mirror Cooldown Time")
);
magicMirrorCooldownTime.setChangedListener((value)->config.set("magic_mirror_cooldown_time_seconds", value));
magicMirrorCooldownTime.setText(config.getInteger("magic_mirror_cooldown_time_seconds"));
adder.add(magicMirrorCooldownTime);

adder.add(new TextWidget(Text.of("Dimensional Mirror Use Time"), this.textRenderer));
TextFieldWidget dimensionalMirrorUseTime = new TextFieldWidget(this.textRenderer, 100, 20, Text.of("Dimensional Mirror Use Time"));
dimensionalMirrorUseTime.setChangedListener((value)->{
BalancedRecallConfig.config.addProperty("dimensional_mirror_use_time_ticks", Integer.parseInt(value));
});
dimensionalMirrorUseTime.setText(BalancedRecallConfig.config.get("dimensional_mirror_use_time_ticks").getAsString());
TextFieldWidget dimensionalMirrorUseTime = new TextFieldWidget(
this.textRenderer,
100,
20,
Text.of("Dimensional Mirror Use Time")
);
dimensionalMirrorUseTime.setChangedListener((value)->config.set("dimensional_mirror_use_time_ticks", value));
dimensionalMirrorUseTime.setText(config.getInteger("dimensional_mirror_use_time_ticks"));
adder.add(dimensionalMirrorUseTime);

adder.add(new TextWidget(Text.of("Dimensional Mirror Cooldown Time"), this.textRenderer));
TextFieldWidget dimensionalMirrorCooldownTime = new TextFieldWidget(this.textRenderer, 100, 20, Text.of("Dimensional Mirror Cooldown Time"));
dimensionalMirrorCooldownTime.setChangedListener((value)->{
BalancedRecallConfig.config.addProperty("dimensional_mirror_cooldown_time_seconds", Integer.parseInt(value));
});
dimensionalMirrorCooldownTime.setText(BalancedRecallConfig.config.get("dimensional_mirror_cooldown_time_seconds").getAsString());
TextFieldWidget dimensionalMirrorCooldownTime = new TextFieldWidget(
this.textRenderer,
100,
20,
Text.of("Dimensional Mirror Cooldown Time")
);
dimensionalMirrorCooldownTime.setChangedListener((value)->config.set("dimensional_mirror_cooldown_time_seconds", value));
dimensionalMirrorCooldownTime.setText(config.getInteger("dimensional_mirror_cooldown_time_seconds"));
adder.add(dimensionalMirrorCooldownTime);

column.add(grid);

// Mat settings
column.add(CheckboxWidget.builder(Text.of("Sleeping mat resets phantom timer"), this.textRenderer).checked(BalancedRecallConfig.config.get("sleeping_mat_resets_phantom_timer").getAsBoolean()).callback((checkbox, checked)->{
BalancedRecallConfig.config.addProperty("sleeping_mat_resets_phantom_timer", checked);
}).build());
column.add(
CheckboxWidget
.builder(Text.of("Sleeping mat resets phantom timer"), this.textRenderer)
.checked(config.getBoolean("sleeping_mat_resets_phantom_timer"))
.callback((checkbox, checked)->config.set("sleeping_mat_resets_phantom_timer", checked))
.build()
);

this.layout.addBody(column);

// Config screen buttons
// TODO: Reset to defaults button
this.layout.addFooter(ButtonWidget.builder(Text.of("Done"), (btn) -> this.close()).dimensions(40, 40, 120, 20).build());
DirectionalLayoutWidget footer = DirectionalLayoutWidget.horizontal().spacing(8);
footer.add(ButtonWidget.builder(Text.of("Reset"), (btn) -> this.reset()).dimensions(40, 40, 120, 20).build());
footer.add(ButtonWidget.builder(Text.of("Done"), (btn) -> this.close()).dimensions(40, 40, 120, 20).build());
this.layout.addFooter(footer);

this.layout.forEachChild(child -> {
this.addDrawableChild(child);
Expand All @@ -110,9 +134,13 @@ protected void refreshWidgetPositions() {
this.layout.refreshPositions();
}

private void reset() {
config.setToDefaults();
}

@Override
public void close() {
BalancedRecallConfig.write();
config.write();
this.client.setScreen(this.parent);
}
}

0 comments on commit 091854d

Please sign in to comment.