From b8a0d839f55537a8000483bc707656b586f378a1 Mon Sep 17 00:00:00 2001 From: NotEvil Date: Tue, 14 Apr 2026 01:33:37 +0200 Subject: [PATCH] feat(D-01): add ComponentType enum with stub component classes --- .../v2/bondage/component/ComponentType.java | 38 +++++++++++++++++++ .../bondage/component/GaggingComponent.java | 12 ++++++ .../bondage/component/LockableComponent.java | 12 ++++++ .../component/ResistanceComponent.java | 12 ++++++ 4 files changed, 74 insertions(+) create mode 100644 src/main/java/com/tiedup/remake/v2/bondage/component/ComponentType.java create mode 100644 src/main/java/com/tiedup/remake/v2/bondage/component/GaggingComponent.java create mode 100644 src/main/java/com/tiedup/remake/v2/bondage/component/LockableComponent.java create mode 100644 src/main/java/com/tiedup/remake/v2/bondage/component/ResistanceComponent.java diff --git a/src/main/java/com/tiedup/remake/v2/bondage/component/ComponentType.java b/src/main/java/com/tiedup/remake/v2/bondage/component/ComponentType.java new file mode 100644 index 0000000..7a26186 --- /dev/null +++ b/src/main/java/com/tiedup/remake/v2/bondage/component/ComponentType.java @@ -0,0 +1,38 @@ +package com.tiedup.remake.v2.bondage.component; + +import com.google.gson.JsonObject; +import java.util.function.Function; +import org.jetbrains.annotations.Nullable; + +public enum ComponentType { + LOCKABLE("lockable", LockableComponent::fromJson), + RESISTANCE("resistance", ResistanceComponent::fromJson), + GAGGING("gagging", GaggingComponent::fromJson); + + private final String jsonKey; + private final Function factory; + + ComponentType( + String jsonKey, + Function factory + ) { + this.jsonKey = jsonKey; + this.factory = factory; + } + + public String getJsonKey() { + return jsonKey; + } + + public IItemComponent create(JsonObject config) { + return factory.apply(config); + } + + @Nullable + public static ComponentType fromKey(String key) { + for (ComponentType type : values()) { + if (type.jsonKey.equals(key)) return type; + } + return null; + } +} 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 new file mode 100644 index 0000000..cb434f1 --- /dev/null +++ b/src/main/java/com/tiedup/remake/v2/bondage/component/GaggingComponent.java @@ -0,0 +1,12 @@ +package com.tiedup.remake.v2.bondage.component; + +import com.google.gson.JsonObject; + +public class GaggingComponent implements IItemComponent { + + private GaggingComponent() {} + + public static IItemComponent fromJson(JsonObject config) { + return new GaggingComponent(); + } +} diff --git a/src/main/java/com/tiedup/remake/v2/bondage/component/LockableComponent.java b/src/main/java/com/tiedup/remake/v2/bondage/component/LockableComponent.java new file mode 100644 index 0000000..4c383d3 --- /dev/null +++ b/src/main/java/com/tiedup/remake/v2/bondage/component/LockableComponent.java @@ -0,0 +1,12 @@ +package com.tiedup.remake.v2.bondage.component; + +import com.google.gson.JsonObject; + +public class LockableComponent implements IItemComponent { + + private LockableComponent() {} + + public static IItemComponent fromJson(JsonObject config) { + return new LockableComponent(); + } +} diff --git a/src/main/java/com/tiedup/remake/v2/bondage/component/ResistanceComponent.java b/src/main/java/com/tiedup/remake/v2/bondage/component/ResistanceComponent.java new file mode 100644 index 0000000..ab8f741 --- /dev/null +++ b/src/main/java/com/tiedup/remake/v2/bondage/component/ResistanceComponent.java @@ -0,0 +1,12 @@ +package com.tiedup.remake.v2.bondage.component; + +import com.google.gson.JsonObject; + +public class ResistanceComponent implements IItemComponent { + + private ResistanceComponent() {} + + public static IItemComponent fromJson(JsonObject config) { + return new ResistanceComponent(); + } +}