/* * This file is a part of the SteamWar software. * * Copyright (C) 2025 SteamWar.de-Serverteam * * This program is free software: you can redistribute it and/or modify * it under the terms of the GNU Affero General Public License as published by * the Free Software Foundation, either version 3 of the License, or * (at your option) any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU Affero General Public License for more details. * * You should have received a copy of the GNU Affero General Public License * along with this program. If not, see . */ package de.steamwar.bausystem.region; import de.steamwar.sql.SchematicNode; import yapion.hierarchy.types.YAPIONObject; import java.util.Objects; public interface RegionData { void clear(); SchematicNode getTestblockSchematic(); void setTestblockSchematic(SchematicNode schematic); RegionData EMPTY = new RegionData() { @Override public void clear() { } @Override public SchematicNode getTestblockSchematic() { return null; } @Override public void setTestblockSchematic(SchematicNode schematic) { } }; class RegionDataImpl implements RegionData { private final YAPIONObject yapionObject; private final Runnable onChange; public RegionDataImpl(YAPIONObject yapionObject, Runnable onChange) { this.yapionObject = yapionObject; this.onChange = onChange; if (yapionObject.containsKey("testblockSchematic")) { testblockSchematic = SchematicNode.getSchematicNode(yapionObject.getInt("testblockSchematic")); } } @Override public void clear() { testblockSchematic = null; yapionObject.remove("testblockSchematic"); onChange.run(); } private SchematicNode testblockSchematic = null; @Override public SchematicNode getTestblockSchematic() { return testblockSchematic; } @Override public void setTestblockSchematic(SchematicNode schematic) { if (Objects.equals(this.testblockSchematic, schematic)) { return; } this.testblockSchematic = schematic; if (schematic == null) { yapionObject.remove("testblockSchematic"); } else { yapionObject.put("testblockSchematic", testblockSchematic.getId()); } onChange.run(); } } }