summaryrefslogtreecommitdiff
path: root/NET/worlds/scape/PropAdder.java
diff options
context:
space:
mode:
authorFuwn <[email protected]>2026-02-12 22:33:32 -0800
committerFuwn <[email protected]>2026-02-12 22:33:32 -0800
commitc7a9d4a6bd53ed7d61731770f2f10e8b9fd435f9 (patch)
treedf9f48bf128a6c0186a8e91857d6ff30fe0e9f18 /NET/worlds/scape/PropAdder.java
downloadworldsplayer-c7a9d4a6bd53ed7d61731770f2f10e8b9fd435f9.tar.xz
worldsplayer-c7a9d4a6bd53ed7d61731770f2f10e8b9fd435f9.zip
Initial commit
Diffstat (limited to 'NET/worlds/scape/PropAdder.java')
-rw-r--r--NET/worlds/scape/PropAdder.java48
1 files changed, 48 insertions, 0 deletions
diff --git a/NET/worlds/scape/PropAdder.java b/NET/worlds/scape/PropAdder.java
new file mode 100644
index 0000000..2ead54d
--- /dev/null
+++ b/NET/worlds/scape/PropAdder.java
@@ -0,0 +1,48 @@
+package NET.worlds.scape;
+
+import NET.worlds.console.PolledDialog;
+
+public class PropAdder implements LibraryDrop {
+ protected VectorProperty property;
+
+ protected PropAdder(VectorProperty property) {
+ this.property = property;
+ }
+
+ public static VectorProperty make(VectorProperty property) {
+ return property.setAdder(new PropAdder(property));
+ }
+
+ public PolledDialog add(EditTile parent, String title) {
+ assert false;
+
+ return null;
+ }
+
+ public boolean hasAddDialog() {
+ return false;
+ }
+
+ protected boolean checkObject(Object obj) {
+ return this.property.addTest(obj);
+ }
+
+ @Override
+ public boolean libraryDrop(EditTile target, Object obj, boolean isPaste, boolean doDrop) {
+ if (this.checkObject(obj)) {
+ if (doDrop) {
+ if (isPaste) {
+ target.addUndoablePaste(this.property, obj);
+ } else {
+ target.addUndoableAdd(this.property, obj, true);
+ }
+
+ return !(obj instanceof SuperRoot) || ((SuperRoot)obj).getOwner() != null;
+ } else {
+ return true;
+ }
+ } else {
+ return false;
+ }
+ }
+}