mirror of
https://github.com/badvision/lawless-legends.git
synced 2025-08-12 17:25:06 +00:00
Abstracted Map and Global to both be scopes and share common constructs.
This commit is contained in:
@@ -4,14 +4,12 @@ import java.io.ByteArrayInputStream;
|
||||
import java.io.IOException;
|
||||
import java.io.StringWriter;
|
||||
import java.util.ArrayList;
|
||||
import java.util.Collections;
|
||||
import java.util.HashMap;
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
import java.util.logging.Level;
|
||||
import java.util.logging.Logger;
|
||||
import java.util.stream.Collectors;
|
||||
import java.util.stream.Stream;
|
||||
import javafx.fxml.FXMLLoader;
|
||||
import javafx.scene.Scene;
|
||||
import javafx.scene.layout.AnchorPane;
|
||||
@@ -25,12 +23,12 @@ import javax.xml.namespace.QName;
|
||||
import javax.xml.parsers.DocumentBuilder;
|
||||
import javax.xml.parsers.DocumentBuilderFactory;
|
||||
import javax.xml.parsers.ParserConfigurationException;
|
||||
import org.badvision.outlaweditor.data.xml.Arg;
|
||||
import org.badvision.outlaweditor.data.xml.Block;
|
||||
import org.badvision.outlaweditor.data.xml.Global.UserTypes.UserType;
|
||||
import org.badvision.outlaweditor.data.xml.Global.Variables.Variable;
|
||||
import org.badvision.outlaweditor.data.xml.Mutation;
|
||||
import org.badvision.outlaweditor.data.xml.Scope;
|
||||
import org.badvision.outlaweditor.data.xml.Script;
|
||||
import org.badvision.outlaweditor.data.xml.UserType;
|
||||
import org.badvision.outlaweditor.data.xml.Variable;
|
||||
import org.badvision.outlaweditor.ui.ApplicationUIController;
|
||||
import org.badvision.outlaweditor.ui.MythosScriptEditorController;
|
||||
import org.w3c.dom.Document;
|
||||
@@ -43,13 +41,15 @@ import org.xml.sax.SAXException;
|
||||
*/
|
||||
public class MythosEditor {
|
||||
|
||||
Scope scope;
|
||||
Script script;
|
||||
Stage primaryStage;
|
||||
MythosScriptEditorController controller;
|
||||
public static final String XML_HEADER = "<?xml version=\"1.0\" encoding=\"UTF-8\" standalone=\"yes\"?>\n";
|
||||
|
||||
public MythosEditor(Script theScript) {
|
||||
public MythosEditor(Script theScript, Scope theScope) {
|
||||
script = theScript;
|
||||
scope = theScope;
|
||||
}
|
||||
|
||||
public void show() {
|
||||
|
@@ -56,6 +56,7 @@ import org.badvision.outlaweditor.data.DataUtilities;
|
||||
import org.badvision.outlaweditor.data.TileUtils;
|
||||
import org.badvision.outlaweditor.data.TilesetUtils;
|
||||
import org.badvision.outlaweditor.data.xml.GameData;
|
||||
import org.badvision.outlaweditor.data.xml.Scope;
|
||||
import org.badvision.outlaweditor.data.xml.Script;
|
||||
import org.badvision.outlaweditor.data.xml.Tile;
|
||||
import org.badvision.outlaweditor.ui.impl.ImageConversionWizardController;
|
||||
@@ -223,19 +224,19 @@ public class UIAction {
|
||||
dialogStage.show();
|
||||
}
|
||||
|
||||
public static Script createAndEditScript() {
|
||||
public static Script createAndEditScript(Scope scope) {
|
||||
Script script = new Script();
|
||||
script.setName("New Script");
|
||||
ApplicationUIController.getController().getVisibleEditor().addScript(script);
|
||||
return editScript(script);
|
||||
return editScript(script, scope);
|
||||
}
|
||||
|
||||
public static Script editScript(Script script) {
|
||||
public static Script editScript(Script script, Scope scope) {
|
||||
if (script == null) {
|
||||
System.err.println("Requested to edit a null script object, ignoring!");
|
||||
return null;
|
||||
}
|
||||
MythosEditor editor = new MythosEditor(script);
|
||||
MythosEditor editor = new MythosEditor(script, scope);
|
||||
editor.show();
|
||||
return script;
|
||||
}
|
||||
|
@@ -21,7 +21,7 @@ public class GlobalEditorTabControllerImpl extends GlobalEditorTabController {
|
||||
|
||||
@Override
|
||||
protected void onScriptAddPressed(ActionEvent event) {
|
||||
UIAction.createAndEditScript();
|
||||
UIAction.createAndEditScript(Application.gameData.getGlobal());
|
||||
}
|
||||
|
||||
@Override
|
||||
@@ -50,7 +50,7 @@ public class GlobalEditorTabControllerImpl extends GlobalEditorTabController {
|
||||
Script script = TransferHelper.cloneObject(source, Script.class, "script");
|
||||
script.setName(source.getName() + " CLONE");
|
||||
getCurrentEditor().addScript(script);
|
||||
editScript(script);
|
||||
editScript(script, Application.gameData.getGlobal());
|
||||
} catch (JAXBException ex) {
|
||||
Logger.getLogger(MapEditorTabControllerImpl.class.getName()).log(Level.SEVERE, null, ex);
|
||||
UIAction.alert("Error occured when attempting clone operation:\n" + ex.getMessage());
|
||||
@@ -86,7 +86,7 @@ public class GlobalEditorTabControllerImpl extends GlobalEditorTabController {
|
||||
public void redrawGlobalScripts() {
|
||||
DataUtilities.ensureGlobalExists();
|
||||
globalScriptList.setOnEditStart((ListView.EditEvent<Script> event) -> {
|
||||
UIAction.editScript(event.getSource().getItems().get(event.getIndex()));
|
||||
UIAction.editScript(event.getSource().getItems().get(event.getIndex()), Application.gameData.getGlobal());
|
||||
});
|
||||
globalScriptList.setCellFactory(new Callback<ListView<Script>, ListCell<Script>>() {
|
||||
@Override
|
||||
|
@@ -28,7 +28,6 @@ import static org.badvision.outlaweditor.data.PropertyHelper.stringProp;
|
||||
import org.badvision.outlaweditor.data.TileUtils;
|
||||
import org.badvision.outlaweditor.data.xml.Map;
|
||||
import org.badvision.outlaweditor.data.xml.Script;
|
||||
import org.badvision.outlaweditor.data.xml.Scripts;
|
||||
import org.badvision.outlaweditor.data.xml.Tile;
|
||||
import org.badvision.outlaweditor.ui.EntitySelectorCell;
|
||||
import org.badvision.outlaweditor.ui.MapEditorTabController;
|
||||
@@ -148,7 +147,7 @@ public class MapEditorTabControllerImpl extends MapEditorTabController {
|
||||
|
||||
@Override
|
||||
public void onMapScriptAddPressed(ActionEvent event) {
|
||||
createAndEditScript();
|
||||
createAndEditScript(getCurrentMap());
|
||||
}
|
||||
|
||||
int errorCount = 0;
|
||||
@@ -185,7 +184,7 @@ public class MapEditorTabControllerImpl extends MapEditorTabController {
|
||||
Script script = TransferHelper.cloneObject(source, Script.class, "script");
|
||||
script.setName(source.getName() + " CLONE");
|
||||
getCurrentEditor().addScript(script);
|
||||
editScript(script);
|
||||
editScript(script, getCurrentMap());
|
||||
} catch (JAXBException ex) {
|
||||
Logger.getLogger(MapEditorTabControllerImpl.class.getName()).log(Level.SEVERE, null, ex);
|
||||
UIAction.alert("Error occured when attempting clone operation:\n" + ex.getMessage());
|
||||
@@ -393,7 +392,7 @@ public class MapEditorTabControllerImpl extends MapEditorTabController {
|
||||
@Override
|
||||
public void redrawMapScripts() {
|
||||
mapScriptsList.setOnEditStart((ListView.EditEvent<Script> event) -> {
|
||||
UIAction.editScript(event.getSource().getItems().get(event.getIndex()));
|
||||
UIAction.editScript(event.getSource().getItems().get(event.getIndex()), getCurrentMap());
|
||||
});
|
||||
mapScriptsList.setCellFactory(new Callback<ListView<Script>, ListCell<Script>>() {
|
||||
@Override
|
||||
|
@@ -50,71 +50,79 @@
|
||||
</xs:element>
|
||||
</xs:sequence>
|
||||
</xs:complexType>
|
||||
<xs:complexType name="map">
|
||||
<xs:sequence>
|
||||
<xs:element name="chunk" maxOccurs="unbounded">
|
||||
<xs:complexType>
|
||||
<xs:sequence>
|
||||
<xs:element name="row" maxOccurs="unbounded" type="xs:NMTOKENS"/>
|
||||
</xs:sequence>
|
||||
<xs:attribute name="x" type="xs:int"/>
|
||||
<xs:attribute name="y" type="xs:int"/>
|
||||
</xs:complexType>
|
||||
</xs:element>
|
||||
<xs:element name="scripts" type="tns:scripts"/>
|
||||
</xs:sequence>
|
||||
<xs:attribute name="name" type="xs:string"/>
|
||||
<xs:attribute name="width" type="xs:int"/>
|
||||
<xs:attribute name="height" type="xs:int"/>
|
||||
<xs:attribute name="category" type="xs:string"/>
|
||||
<xs:attribute name="wrap" type="xs:boolean" default="false"/>
|
||||
<xs:attribute name="startX" type="xs:int" default="0"/>
|
||||
<xs:attribute name="startY" type="xs:int" default="0"/>
|
||||
</xs:complexType>
|
||||
<xs:complexType name="global">
|
||||
<xs:sequence>
|
||||
<xs:element name="scripts" type="tns:scripts"/>
|
||||
<xs:element name="userTypes" minOccurs="0" maxOccurs="1">
|
||||
<xs:complexType>
|
||||
<xs:sequence>
|
||||
<xs:element name="userType" minOccurs="0" maxOccurs="unbounded">
|
||||
<xs:complexType>
|
||||
<xs:sequence>
|
||||
<xs:element name="attribute" minOccurs="1" maxOccurs="unbounded">
|
||||
<xs:complexType>
|
||||
<xs:attribute name="name" use="required" type="xs:NCName"/>
|
||||
<xs:attribute name="type" use="required" type="xs:NMTOKEN"/>
|
||||
<xs:attribute name="comment" type="xs:string"/>
|
||||
</xs:complexType>
|
||||
</xs:element>
|
||||
</xs:sequence>
|
||||
<xs:attribute name="name" use="required" type="xs:NCName"/>
|
||||
<xs:attribute name="comment" use="required" type="xs:string"/>
|
||||
</xs:complexType>
|
||||
</xs:element>
|
||||
</xs:sequence>
|
||||
</xs:complexType>
|
||||
</xs:element>
|
||||
<xs:element name="variables">
|
||||
<xs:complexType>
|
||||
<xs:sequence>
|
||||
<xs:element name="variable" minOccurs="0" maxOccurs="unbounded">
|
||||
<xs:complexType>
|
||||
<xs:attribute name="name" use="required" type="xs:NCName"/>
|
||||
<xs:attribute name="type" use="required" type="xs:NMTOKEN"/>
|
||||
<xs:attribute name="comment" type="xs:string"/>
|
||||
</xs:complexType>
|
||||
</xs:element>
|
||||
</xs:sequence>
|
||||
</xs:complexType>
|
||||
</xs:element>
|
||||
</xs:sequence>
|
||||
</xs:complexType>
|
||||
<xs:complexType name="scripts">
|
||||
<xs:sequence>
|
||||
<xs:element name="script" type="tns:script" minOccurs="1" maxOccurs="unbounded"/>
|
||||
<xs:element name="script" type="tns:script" minOccurs="0" maxOccurs="unbounded"/>
|
||||
</xs:sequence>
|
||||
</xs:complexType>
|
||||
<xs:complexType name="variable">
|
||||
<xs:attribute name="name" use="required" type="xs:NCName"/>
|
||||
<xs:attribute name="type" use="required" type="xs:NMTOKEN"/>
|
||||
<xs:attribute name="comment" type="xs:string"/>
|
||||
</xs:complexType>
|
||||
<xs:complexType name="variables">
|
||||
<xs:sequence>
|
||||
<xs:element name="variable" minOccurs="0" maxOccurs="unbounded" type="tns:variable"/>
|
||||
</xs:sequence>
|
||||
</xs:complexType>
|
||||
<xs:complexType name="map">
|
||||
<xs:complexContent>
|
||||
<xs:extension base="tns:scope">
|
||||
<xs:sequence>
|
||||
<xs:element name="chunk" maxOccurs="unbounded">
|
||||
<xs:complexType>
|
||||
<xs:sequence>
|
||||
<xs:element name="row" maxOccurs="unbounded" type="xs:NMTOKENS"/>
|
||||
</xs:sequence>
|
||||
<xs:attribute name="x" type="xs:int"/>
|
||||
<xs:attribute name="y" type="xs:int"/>
|
||||
</xs:complexType>
|
||||
</xs:element>
|
||||
</xs:sequence>
|
||||
<xs:attribute name="name" type="xs:string"/>
|
||||
<xs:attribute name="width" type="xs:int"/>
|
||||
<xs:attribute name="height" type="xs:int"/>
|
||||
<xs:attribute name="category" type="xs:string"/>
|
||||
<xs:attribute name="wrap" type="xs:boolean" default="false"/>
|
||||
<xs:attribute name="startX" type="xs:int" default="0"/>
|
||||
<xs:attribute name="startY" type="xs:int" default="0"/>
|
||||
</xs:extension>
|
||||
</xs:complexContent>
|
||||
</xs:complexType>
|
||||
<xs:complexType name="global">
|
||||
<xs:complexContent>
|
||||
<xs:extension base="tns:scope">
|
||||
<xs:sequence>
|
||||
<xs:element name="userTypes" minOccurs="0" maxOccurs="1">
|
||||
<xs:complexType>
|
||||
<xs:sequence>
|
||||
<xs:element name="userType" minOccurs="0" maxOccurs="unbounded" type="tns:userType"/>
|
||||
</xs:sequence>
|
||||
</xs:complexType>
|
||||
</xs:element>
|
||||
</xs:sequence>
|
||||
</xs:extension>
|
||||
</xs:complexContent>
|
||||
</xs:complexType>
|
||||
<xs:complexType name="userType">
|
||||
<xs:sequence>
|
||||
<xs:element name="attribute" minOccurs="1" maxOccurs="unbounded">
|
||||
<xs:complexType>
|
||||
<xs:attribute name="name" use="required" type="xs:NCName"/>
|
||||
<xs:attribute name="type" use="required" type="xs:NMTOKEN"/>
|
||||
<xs:attribute name="comment" type="xs:string"/>
|
||||
</xs:complexType>
|
||||
</xs:element>
|
||||
</xs:sequence>
|
||||
<xs:attribute name="name" use="required" type="xs:NCName"/>
|
||||
<xs:attribute name="comment" use="required" type="xs:string"/>
|
||||
</xs:complexType>
|
||||
<xs:complexType name="scope">
|
||||
<xs:sequence>
|
||||
<xs:element name="scripts" type="tns:scripts"/>
|
||||
<xs:element name="variables" type="tns:variables"/>
|
||||
</xs:sequence>
|
||||
</xs:complexType>
|
||||
<xs:complexType name="block">
|
||||
<xs:sequence>
|
||||
<xs:element minOccurs="0" name="next" type="tns:next"/>
|
||||
|
Reference in New Issue
Block a user