diff --git a/OutlawEditor/src/main/java/org/badvision/outlaweditor/TileRenderer.java b/OutlawEditor/src/main/java/org/badvision/outlaweditor/TileRenderer.java index a54c6c3f..e9007607 100644 --- a/OutlawEditor/src/main/java/org/badvision/outlaweditor/TileRenderer.java +++ b/OutlawEditor/src/main/java/org/badvision/outlaweditor/TileRenderer.java @@ -8,7 +8,7 @@ import javafx.scene.image.WritableImage; */ public abstract class TileRenderer { - public abstract WritableImage redrawSprite(byte[] spriteData, WritableImage image); + public abstract WritableImage redrawSprite(byte[] spriteData, WritableImage image, boolean useBleedOver); public abstract int getWidth(); diff --git a/OutlawEditor/src/main/java/org/badvision/outlaweditor/apple/AppleTileRenderer.java b/OutlawEditor/src/main/java/org/badvision/outlaweditor/apple/AppleTileRenderer.java index 6e309b87..516d1aec 100644 --- a/OutlawEditor/src/main/java/org/badvision/outlaweditor/apple/AppleTileRenderer.java +++ b/OutlawEditor/src/main/java/org/badvision/outlaweditor/apple/AppleTileRenderer.java @@ -14,7 +14,7 @@ public class AppleTileRenderer extends TileRenderer { public static boolean useSolidPalette = true; @Override - public WritableImage redrawSprite(byte[] spriteData, WritableImage img) { + public WritableImage redrawSprite(byte[] spriteData, WritableImage img, boolean useBleedOver) { if (img == null) { img = new WritableImage(28, 32); } @@ -23,12 +23,14 @@ public class AppleTileRenderer extends TileRenderer { } int[][] palette = useSolidPalette ? solidPalette : textPalette; for (int y = 0; y < 16; y++) { - int bleedOver = (spriteData[y * 2 + 1] & 192) == 192 ? 256 : 0; + int bleedOver = useBleedOver ? (spriteData[y * 2 + 1] & 192) == 192 ? 256 : 0 : 0; int scan = hgrToDhgr[bleedOver | (spriteData[y * 2] & 255)][spriteData[y * 2 + 1] & 255]; int last = (scan >> 26) & 3; int keep = scan & 0xff; scan <<= 2; - scan |= last; + if (useBleedOver) { + scan |= last; + } for (int x = 0; x < 14; x++) { boolean isHiBit = ((spriteData[y * 2 + x / 7] & 128) != 0); diff --git a/OutlawEditor/src/main/java/org/badvision/outlaweditor/apple/dhgr/AppleDHGRTileRenderer.java b/OutlawEditor/src/main/java/org/badvision/outlaweditor/apple/dhgr/AppleDHGRTileRenderer.java index 878f5a4e..d22ef4ee 100644 --- a/OutlawEditor/src/main/java/org/badvision/outlaweditor/apple/dhgr/AppleDHGRTileRenderer.java +++ b/OutlawEditor/src/main/java/org/badvision/outlaweditor/apple/dhgr/AppleDHGRTileRenderer.java @@ -3,7 +3,6 @@ package org.badvision.outlaweditor.apple.dhgr; import org.badvision.outlaweditor.apple.*; import javafx.scene.image.WritableImage; import javafx.scene.paint.Color; -import org.badvision.outlaweditor.TileRenderer; import static org.badvision.outlaweditor.apple.AppleNTSCGraphics.*; /** @@ -12,7 +11,7 @@ import static org.badvision.outlaweditor.apple.AppleNTSCGraphics.*; */ public class AppleDHGRTileRenderer extends AppleTileRenderer { @Override - public WritableImage redrawSprite(byte[] spriteData, WritableImage img) { + public WritableImage redrawSprite(byte[] spriteData, WritableImage img, boolean useBleedOver) { if (img == null) { img = new WritableImage(28, 32); } @@ -30,7 +29,9 @@ public class AppleDHGRTileRenderer extends AppleTileRenderer { int last = (scan >> 26) & 3; int keep = scan & 0xff; scan <<= 2; - scan |= last; + if (useBleedOver) { + scan |= last; + } for (int x = 0; x < 14; x++) { boolean isHiBit = ((spriteData[y * 2 + x / 7] & 128) != 0); diff --git a/OutlawEditor/src/main/java/org/badvision/outlaweditor/apple/dhgr/FillPattern.java b/OutlawEditor/src/main/java/org/badvision/outlaweditor/apple/dhgr/FillPattern.java index 9d78be48..51850f73 100644 --- a/OutlawEditor/src/main/java/org/badvision/outlaweditor/apple/dhgr/FillPattern.java +++ b/OutlawEditor/src/main/java/org/badvision/outlaweditor/apple/dhgr/FillPattern.java @@ -168,6 +168,6 @@ public enum FillPattern { for (int i=0; i < pattern.length; i++) { b[i]=(byte) pattern[i]; } - return Platform.AppleII_DHGR.tileRenderer.redrawSprite(b, null); + return Platform.AppleII_DHGR.tileRenderer.redrawSprite(b, null, true); } } diff --git a/OutlawEditor/src/main/java/org/badvision/outlaweditor/data/DataUtilities.java b/OutlawEditor/src/main/java/org/badvision/outlaweditor/data/DataUtilities.java index 6c3b8495..b9aa5299 100644 --- a/OutlawEditor/src/main/java/org/badvision/outlaweditor/data/DataUtilities.java +++ b/OutlawEditor/src/main/java/org/badvision/outlaweditor/data/DataUtilities.java @@ -4,10 +4,10 @@ import java.util.List; import org.badvision.outlaweditor.Application; import org.badvision.outlaweditor.data.xml.Field; import org.badvision.outlaweditor.data.xml.Global; +import org.badvision.outlaweditor.data.xml.Map; import org.badvision.outlaweditor.data.xml.NamedEntity; import org.badvision.outlaweditor.data.xml.Scope; import org.badvision.outlaweditor.data.xml.Script; -import org.badvision.outlaweditor.data.xml.Scripts; public class DataUtilities { @@ -17,6 +17,23 @@ public class DataUtilities { } } + public static void sortMaps(List entities) { + if (entities == null) { + return; + } + entities.sort((a, b) -> { + String nameA = a == null ? "" : nullSafe(a.getName()); + String nameB = b == null ? "" : nullSafe(b.getName()); + if (nameA.equalsIgnoreCase("init")) { + return -1; + } + if (nameB.equalsIgnoreCase("init")) { + return 1; + } + return nameA.compareTo(nameB); + }); + } + public static void sortNamedEntities(List entities) { if (entities == null) { return; diff --git a/OutlawEditor/src/main/java/org/badvision/outlaweditor/data/TileUtils.java b/OutlawEditor/src/main/java/org/badvision/outlaweditor/data/TileUtils.java index d2905db3..46d19f51 100644 --- a/OutlawEditor/src/main/java/org/badvision/outlaweditor/data/TileUtils.java +++ b/OutlawEditor/src/main/java/org/badvision/outlaweditor/data/TileUtils.java @@ -60,7 +60,7 @@ public class TileUtils { System.err.println("Unable to find any platform support for '" + d.getPlatform() + "'"); continue; } - displays.put(p, p.tileRenderer.redrawSprite(d.getValue(), displays.get(p))); + displays.put(p, p.tileRenderer.redrawSprite(d.getValue(), displays.get(p), false)); } DataProducer.notifyObservers(t); } @@ -79,7 +79,7 @@ public class TileUtils { public static WritableImage getImage(Tile t, Platform p) { Map displays = getDisplay(t); byte[] data = getPlatformData(t, p); - return displays.put(p, p.tileRenderer.redrawSprite(data, displays.get(p))); + return displays.put(p, p.tileRenderer.redrawSprite(data, displays.get(p), false)); } public static void setImage(Tile t, Platform p, WritableImage img) { diff --git a/OutlawEditor/src/main/java/org/badvision/outlaweditor/ui/impl/GlobalEditorTabControllerImpl.java b/OutlawEditor/src/main/java/org/badvision/outlaweditor/ui/impl/GlobalEditorTabControllerImpl.java index 1dbef10c..9285f6a2 100644 --- a/OutlawEditor/src/main/java/org/badvision/outlaweditor/ui/impl/GlobalEditorTabControllerImpl.java +++ b/OutlawEditor/src/main/java/org/badvision/outlaweditor/ui/impl/GlobalEditorTabControllerImpl.java @@ -6,11 +6,9 @@ import java.util.logging.Level; import java.util.logging.Logger; import javafx.event.ActionEvent; import javafx.scene.control.ListCell; -import javafx.scene.control.ListView; import javafx.scene.control.Tooltip; import javafx.scene.text.Font; import javafx.scene.text.FontWeight; -import javafx.util.Callback; import javax.xml.bind.JAXBException; import org.badvision.outlaweditor.Application; import org.badvision.outlaweditor.TransferHelper; @@ -27,57 +25,46 @@ public class GlobalEditorTabControllerImpl extends GlobalEditorTabController { @Override public void initialize() { super.initialize(); - variableList.setOnEditStart((ListView.EditEvent event) -> { - UIAction.editVariable(event.getSource().getItems().get(event.getIndex()), Application.gameData.getGlobal()); - variableList.getSelectionModel().clearSelection(); - }); - variableList.setCellFactory(new Callback, ListCell>() { + variableList.setCellFactory((listView) -> new ListCell() { @Override - public ListCell call(ListView param) { - final ListCell cell = new ListCell() { - @Override - protected void updateItem(Variable item, boolean empty) { - super.updateItem(item, empty); - if (empty || item == null) { - setText(""); - } else { - setText(item.getName()); - if (item.getComment() != null && !(item.getComment().isEmpty())) { - setTooltip(new Tooltip(item.getComment())); - } - setFont(Font.font(null, FontWeight.BOLD, 12.0)); - } + protected void updateItem(Variable item, boolean empty) { + super.updateItem(item, empty); + if (empty || item == null) { + setText(""); + } else { + setText(item.getName()); + if (item.getComment() != null && !(item.getComment().isEmpty())) { + setTooltip(new Tooltip(item.getComment())); } - }; - return cell; + setFont(Font.font(null, FontWeight.BOLD, 12.0)); + } } - }); - globalScriptList.setOnEditStart((ListView.EditEvent