diff --git a/src/main/java/com/tiedup/remake/v2/bondage/component/GaggingComponent.java b/src/main/java/com/tiedup/remake/v2/bondage/component/GaggingComponent.java index cb434f1..1f09123 100644 --- a/src/main/java/com/tiedup/remake/v2/bondage/component/GaggingComponent.java +++ b/src/main/java/com/tiedup/remake/v2/bondage/component/GaggingComponent.java @@ -2,11 +2,42 @@ package com.tiedup.remake.v2.bondage.component; import com.google.gson.JsonObject; +/** + * Component: gagging behavior for data-driven items. + * + * JSON config: {@code "gagging": {"comprehension": 0.2, "range": 10.0}} + */ public class GaggingComponent implements IItemComponent { - private GaggingComponent() {} + private final double comprehension; + private final double range; + + private GaggingComponent(double comprehension, double range) { + this.comprehension = comprehension; + this.range = range; + } public static IItemComponent fromJson(JsonObject config) { - return new GaggingComponent(); + double comprehension = 0.2; + double range = 10.0; + if (config != null) { + if (config.has("comprehension")) { + comprehension = config.get("comprehension").getAsDouble(); + } + if (config.has("range")) { + range = config.get("range").getAsDouble(); + } + } + return new GaggingComponent(comprehension, range); + } + + /** How much of the gagged speech is comprehensible (0.0 = nothing, 1.0 = full). */ + public double getComprehension() { + return comprehension; + } + + /** Maximum range in blocks where muffled speech can be heard. */ + public double getRange() { + return range; } }