mirror of
https://github.com/OMGeeky/ATCS.git
synced 2025-12-30 00:03:29 +01:00
Compare commits
47 Commits
git_integr
...
spawnchanc
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
0ef703d82e | ||
|
|
2339a9307c | ||
|
|
7dcdb90750 | ||
|
|
b638c31ebe | ||
|
|
862f4b7366 | ||
|
|
693de98212 | ||
|
|
3f4bf58375 | ||
|
|
7ae4d9d3f6 | ||
|
|
0f20f0cd6d | ||
|
|
481956cfa5 | ||
|
|
7c282aae53 | ||
|
|
1fd3e6253e | ||
|
|
70f61f0281 | ||
|
|
2f82fd13a6 | ||
|
|
f7e5785970 | ||
|
|
084b23f641 | ||
|
|
ff4d8a6b6c | ||
|
|
45aff3d25b | ||
|
|
28a1d0b09e | ||
|
|
b96568049f | ||
|
|
e125b0339c | ||
|
|
65456a110b | ||
|
|
a9bd84b9f2 | ||
|
|
1bab8dc42f | ||
|
|
7863b73eda | ||
|
|
32e1b87e09 | ||
|
|
4b6be99d98 | ||
|
|
13847bb8cd | ||
|
|
2d92a97689 | ||
|
|
9c21c7cd02 | ||
|
|
f4fd8ad5bb | ||
|
|
63acc5bf2c | ||
|
|
4c51353e93 | ||
|
|
7bf6bbfcd1 | ||
|
|
7d40d56430 | ||
|
|
d7e83575e3 | ||
|
|
811870184b | ||
|
|
7297f47b67 | ||
|
|
20877f7850 | ||
|
|
b3c8879be1 | ||
|
|
ac68006a69 | ||
|
|
92e07e76d2 | ||
|
|
5a3315da1a | ||
|
|
e12c6bcc25 | ||
|
|
44c4e1f998 | ||
|
|
450b0de02a | ||
|
|
57702a3a4a |
51
.classpath
51
.classpath
@@ -1,32 +1,19 @@
|
|||||||
<?xml version="1.0" encoding="UTF-8"?>
|
<?xml version="1.0" encoding="UTF-8"?>
|
||||||
<classpath>
|
<classpath>
|
||||||
<classpathentry kind="src" path="src"/>
|
<classpathentry kind="src" path="src"/>
|
||||||
<classpathentry kind="src" path="res"/>
|
<classpathentry kind="src" path="res"/>
|
||||||
<classpathentry kind="src" path="hacked-libtiled"/>
|
<classpathentry kind="src" path="hacked-libtiled"/>
|
||||||
<classpathentry kind="src" path="siphash-zackehh/src/main/java"/>
|
<classpathentry kind="src" path="siphash-zackehh/src/main/java"/>
|
||||||
<classpathentry kind="src" path="minify"/>
|
<classpathentry kind="src" path="minify"/>
|
||||||
<classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType/jdk1.8.0_152"/>
|
<classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER"/>
|
||||||
<classpathentry kind="lib" path="lib/jide-oss.jar"/>
|
<classpathentry kind="lib" path="lib/jide-oss.jar"/>
|
||||||
<classpathentry kind="lib" path="lib/json_simple-1.1.jar"/>
|
<classpathentry kind="lib" path="lib/json_simple-1.1.jar"/>
|
||||||
<classpathentry kind="lib" path="lib/junit-4.10.jar"/>
|
<classpathentry kind="lib" path="lib/junit-4.10.jar"/>
|
||||||
<classpathentry kind="lib" path="lib/prefuse.jar"/>
|
<classpathentry kind="lib" path="lib/prefuse.jar"/>
|
||||||
<classpathentry kind="lib" path="lib/rsyntaxtextarea.jar"/>
|
<classpathentry kind="lib" path="lib/rsyntaxtextarea.jar"/>
|
||||||
<classpathentry kind="lib" path="lib/ui.jar"/>
|
<classpathentry kind="lib" path="lib/ui.jar"/>
|
||||||
<classpathentry kind="lib" path="lib/bsh-2.0b4.jar"/>
|
<classpathentry kind="lib" path="lib/bsh-2.0b4.jar"/>
|
||||||
<classpathentry kind="lib" path="lib/jsoup-1.10.2.jar" sourcepath="lib/jsoup-1.10.2-sources.jar"/>
|
<classpathentry kind="lib" path="lib/jsoup-1.10.2.jar" sourcepath="lib/jsoup-1.10.2-sources.jar"/>
|
||||||
<classpathentry kind="lib" path="lib/AndorsTrainer_v0.1.4.jar"/>
|
<classpathentry kind="lib" path="lib/AndorsTrainer_v0.1.5.jar"/>
|
||||||
<classpathentry kind="lib" path="lib/JGit/commons-codec-1.6.jar"/>
|
<classpathentry kind="output" path="bin"/>
|
||||||
<classpathentry kind="lib" path="lib/JGit/commons-logging-1.1.3.jar"/>
|
</classpath>
|
||||||
<classpathentry kind="lib" path="lib/JGit/httpclient-4.3.6.jar"/>
|
|
||||||
<classpathentry kind="lib" path="lib/JGit/httpcore-4.3.3.jar"/>
|
|
||||||
<classpathentry kind="lib" path="lib/JGit/JavaEWAH-1.1.6.jar"/>
|
|
||||||
<classpathentry kind="lib" path="lib/JGit/jsch-0.1.54.jar"/>
|
|
||||||
<classpathentry kind="lib" path="lib/JGit/jzlib-1.0.7.jar"/>
|
|
||||||
<classpathentry kind="lib" path="lib/JGit/org.eclipse.jgit-4.9.0.201710071750-r.jar">
|
|
||||||
<attributes>
|
|
||||||
<attribute name="javadoc_location" value="jar:platform:/resource/ATContentStudio/lib/JGit/org.eclipse.jgit-4.9.0.201710071750-r-javadoc.jar!/"/>
|
|
||||||
</attributes>
|
|
||||||
</classpathentry>
|
|
||||||
<classpathentry kind="lib" path="lib/JGit/slf4j-api-1.7.2.jar"/>
|
|
||||||
<classpathentry kind="output" path="bin"/>
|
|
||||||
</classpath>
|
|
||||||
|
|||||||
@@ -1,12 +1,11 @@
|
|||||||
eclipse.preferences.version=1
|
eclipse.preferences.version=1
|
||||||
org.eclipse.jdt.core.compiler.codegen.inlineJsrBytecode=enabled
|
org.eclipse.jdt.core.compiler.codegen.inlineJsrBytecode=enabled
|
||||||
org.eclipse.jdt.core.compiler.codegen.methodParameters=do not generate
|
org.eclipse.jdt.core.compiler.codegen.targetPlatform=1.6
|
||||||
org.eclipse.jdt.core.compiler.codegen.targetPlatform=1.8
|
|
||||||
org.eclipse.jdt.core.compiler.codegen.unusedLocal=preserve
|
org.eclipse.jdt.core.compiler.codegen.unusedLocal=preserve
|
||||||
org.eclipse.jdt.core.compiler.compliance=1.8
|
org.eclipse.jdt.core.compiler.compliance=1.6
|
||||||
org.eclipse.jdt.core.compiler.debug.lineNumber=generate
|
org.eclipse.jdt.core.compiler.debug.lineNumber=generate
|
||||||
org.eclipse.jdt.core.compiler.debug.localVariable=generate
|
org.eclipse.jdt.core.compiler.debug.localVariable=generate
|
||||||
org.eclipse.jdt.core.compiler.debug.sourceFile=generate
|
org.eclipse.jdt.core.compiler.debug.sourceFile=generate
|
||||||
org.eclipse.jdt.core.compiler.problem.assertIdentifier=error
|
org.eclipse.jdt.core.compiler.problem.assertIdentifier=error
|
||||||
org.eclipse.jdt.core.compiler.problem.enumIdentifier=error
|
org.eclipse.jdt.core.compiler.problem.enumIdentifier=error
|
||||||
org.eclipse.jdt.core.compiler.source=1.8
|
org.eclipse.jdt.core.compiler.source=1.6
|
||||||
|
|||||||
@@ -1,6 +1,6 @@
|
|||||||
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
|
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
|
||||||
<jardesc>
|
<jardesc>
|
||||||
<jar path="ATContentStudio/ATCS_v0.6.14.jar"/>
|
<jar path="ATContentStudio/ATCS_v0.6.19.jar"/>
|
||||||
<options buildIfNeeded="true" compress="true" descriptionLocation="/ATContentStudio/ATCS_JAR.jardesc" exportErrors="true" exportWarnings="true" includeDirectoryEntries="false" overwrite="false" saveDescription="true" storeRefactorings="false" useSourceFolders="false"/>
|
<options buildIfNeeded="true" compress="true" descriptionLocation="/ATContentStudio/ATCS_JAR.jardesc" exportErrors="true" exportWarnings="true" includeDirectoryEntries="false" overwrite="false" saveDescription="true" storeRefactorings="false" useSourceFolders="false"/>
|
||||||
<storedRefactorings deprecationInfo="true" structuralOnly="false"/>
|
<storedRefactorings deprecationInfo="true" structuralOnly="false"/>
|
||||||
<selectedProjects/>
|
<selectedProjects/>
|
||||||
|
|||||||
@@ -913,7 +913,8 @@ public class TMXMapReader
|
|||||||
private class MapEntityResolver implements EntityResolver
|
private class MapEntityResolver implements EntityResolver
|
||||||
{
|
{
|
||||||
public InputSource resolveEntity(String publicId, String systemId) {
|
public InputSource resolveEntity(String publicId, String systemId) {
|
||||||
if (systemId.equals("http://mapeditor.org/dtd/1.0/map.dtd")) {
|
if (systemId.equals("http://mapeditor.org/dtd/1.0/map.dtd") ||
|
||||||
|
systemId.equals("https://mapeditor.org/dtd/1.0/map.dtd")) {
|
||||||
return new InputSource(TMXMapReader.class.getResourceAsStream(
|
return new InputSource(TMXMapReader.class.getResourceAsStream(
|
||||||
"resources/map.dtd"));
|
"resources/map.dtd"));
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -47,6 +47,9 @@ import java.util.Vector;
|
|||||||
import java.util.zip.DeflaterOutputStream;
|
import java.util.zip.DeflaterOutputStream;
|
||||||
import java.util.zip.GZIPOutputStream;
|
import java.util.zip.GZIPOutputStream;
|
||||||
|
|
||||||
|
import com.gpl.rpg.atcontentstudio.model.GameSource.Type;
|
||||||
|
import com.gpl.rpg.atcontentstudio.model.maps.TMXMapSet;
|
||||||
|
|
||||||
import tiled.core.AnimatedTile;
|
import tiled.core.AnimatedTile;
|
||||||
import tiled.core.Map;
|
import tiled.core.Map;
|
||||||
import tiled.core.MapLayer;
|
import tiled.core.MapLayer;
|
||||||
@@ -150,7 +153,7 @@ public class TMXMapWriter
|
|||||||
}
|
}
|
||||||
|
|
||||||
private void writeMap(Map map, XMLWriter w, String wp) throws IOException {
|
private void writeMap(Map map, XMLWriter w, String wp) throws IOException {
|
||||||
w.writeDocType("map", null, "http://mapeditor.org/dtd/1.0/map.dtd");
|
w.writeDocType("map", null, "https://mapeditor.org/dtd/1.0/map.dtd");
|
||||||
w.startElement("map");
|
w.startElement("map");
|
||||||
|
|
||||||
w.writeAttribute("version", "1.0");
|
w.writeAttribute("version", "1.0");
|
||||||
@@ -238,7 +241,15 @@ public class TMXMapWriter
|
|||||||
} else {
|
} else {
|
||||||
w.startElement("tileset");
|
w.startElement("tileset");
|
||||||
w.writeAttribute("firstgid", getFirstGidForTileset(set));
|
w.writeAttribute("firstgid", getFirstGidForTileset(set));
|
||||||
w.writeAttribute("source", getRelativePath(wp, source));
|
if (set.sheet != null && set.sheet.parent.getDataType() == Type.source) {
|
||||||
|
String fileName = set.getName();
|
||||||
|
if (fileName.length() > 3 && !(fileName.substring(fileName.length() - 4).equalsIgnoreCase(".png"))) {
|
||||||
|
fileName += ".png";
|
||||||
|
}
|
||||||
|
w.writeAttribute("source", (TMXMapSet.DEFAULT_REL_PATH_TO_DRAWABLE + fileName).replace("\\", "/"));
|
||||||
|
} else {
|
||||||
|
w.writeAttribute("source", getRelativePath(wp, source));
|
||||||
|
}
|
||||||
if (set.getBaseDir() != null) {
|
if (set.getBaseDir() != null) {
|
||||||
w.writeAttribute("basedir", set.getBaseDir());
|
w.writeAttribute("basedir", set.getBaseDir());
|
||||||
}
|
}
|
||||||
@@ -279,7 +290,15 @@ public class TMXMapWriter
|
|||||||
|
|
||||||
if (tileBitmapFile != null) {
|
if (tileBitmapFile != null) {
|
||||||
w.startElement("image");
|
w.startElement("image");
|
||||||
w.writeAttribute("source", getRelativePath(wp, tileBitmapFile));
|
if (set.sheet != null && set.sheet.parent.getDataType() == Type.source) {
|
||||||
|
String fileName = set.getName();
|
||||||
|
if (fileName.length() > 3 && !(fileName.substring(fileName.length() - 4).equalsIgnoreCase(".png"))) {
|
||||||
|
fileName += ".png";
|
||||||
|
}
|
||||||
|
w.writeAttribute("source", (TMXMapSet.DEFAULT_REL_PATH_TO_DRAWABLE + fileName).replace("\\", "/"));
|
||||||
|
} else {
|
||||||
|
w.writeAttribute("source", getRelativePath(wp, tileBitmapFile));
|
||||||
|
}
|
||||||
if (set.sheetDimensions != null) {
|
if (set.sheetDimensions != null) {
|
||||||
w.writeAttribute("width", set.sheetDimensions.width);
|
w.writeAttribute("width", set.sheetDimensions.width);
|
||||||
w.writeAttribute("height", set.sheetDimensions.height);
|
w.writeAttribute("height", set.sheetDimensions.height);
|
||||||
|
|||||||
Binary file not shown.
BIN
lib/AndorsTrainer_v0.1.5.jar
Normal file
BIN
lib/AndorsTrainer_v0.1.5.jar
Normal file
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
@@ -1 +1 @@
|
|||||||
v0.6.14
|
v0.6.19
|
||||||
@@ -1,7 +1,7 @@
|
|||||||
!include MUI2.nsh
|
!include MUI2.nsh
|
||||||
|
|
||||||
!define VERSION "0.6.14"
|
!define VERSION "0.6.19"
|
||||||
!define TRAINER_VERSION "0.1.4"
|
!define TRAINER_VERSION "0.1.5"
|
||||||
!define JAVA_BIN "javaw"
|
!define JAVA_BIN "javaw"
|
||||||
|
|
||||||
Name "Andor's Trail Content Studio v${VERSION}"
|
Name "Andor's Trail Content Studio v${VERSION}"
|
||||||
@@ -83,16 +83,16 @@ Section install
|
|||||||
FileClose $9
|
FileClose $9
|
||||||
|
|
||||||
SetOutPath "$INSTDIR\lib\"
|
SetOutPath "$INSTDIR\lib\"
|
||||||
file "jide-oss.jar"
|
file "C:\AT\ATCS_source\lib\jide-oss.jar"
|
||||||
file "ui.jar"
|
file "C:\AT\ATCS_source\lib\ui.jar"
|
||||||
file "AndorsTrainer_v${TRAINER_VERSION}.jar"
|
file "C:\AT\ATCS_source\lib\AndorsTrainer_v${TRAINER_VERSION}.jar"
|
||||||
file "junit-4.10.jar"
|
file "C:\AT\ATCS_source\lib\junit-4.10.jar"
|
||||||
file "json_simple-1.1.jar"
|
file "C:\AT\ATCS_source\lib\json_simple-1.1.jar"
|
||||||
file "ATCS_v${VERSION}.jar"
|
file "C:\AT\temp\ATCS_v0.6.19\ATCS_v${VERSION}.jar"
|
||||||
file "rsyntaxtextarea.jar"
|
file "C:\AT\ATCS_source\lib\rsyntaxtextarea.jar"
|
||||||
file "prefuse.jar"
|
file "C:\AT\ATCS_source\lib\prefuse.jar"
|
||||||
file "bsh-2.0b4.jar"
|
file "C:\AT\ATCS_source\lib\bsh-2.0b4.jar"
|
||||||
file "jsoup-1.10.2.jar"
|
file "C:\AT\ATCS_source\lib\jsoup-1.10.2.jar"
|
||||||
|
|
||||||
SetOutPath $INSTDIR
|
SetOutPath $INSTDIR
|
||||||
|
|
||||||
@@ -172,4 +172,4 @@ Function GetJRE
|
|||||||
JreFound:
|
JreFound:
|
||||||
Pop $R1
|
Pop $R1
|
||||||
Exch $R0
|
Exch $R0
|
||||||
FunctionEnd
|
FunctionEnd
|
||||||
|
|||||||
@@ -1,65 +1,85 @@
|
|||||||
atcs.spritesheet.actorconditions_1.category=actorcondition
|
atcs.spritesheet.actorconditions_1.category=actorcondition
|
||||||
atcs.spritesheet.actorconditions_2.category=actorcondition
|
atcs.spritesheet.actorconditions_2.category=actorcondition
|
||||||
atcs.spritesheet.actorconditions_japozero.category=actorcondition
|
atcs.spritesheet.actorconditions_japozero.category=actorcondition
|
||||||
|
atcs.spritesheet.actorconditions_omi1.category=actorcondition
|
||||||
|
atcs.spritesheet.actorconditions_omi2.category=actorcondition
|
||||||
|
|
||||||
|
atcs.spritesheet.effect_blood3.animate=true
|
||||||
|
atcs.spritesheet.effect_blood4.animate=true
|
||||||
|
atcs.spritesheet.effect_bluetentacle.animate=true
|
||||||
|
atcs.spritesheet.effect_heal2.animate=true
|
||||||
|
atcs.spritesheet.effect_miss1.animate=true
|
||||||
|
atcs.spritesheet.effect_poison1.animate=true
|
||||||
|
atcs.spritesheet.effect_tometik1.animate=true
|
||||||
|
atcs.spritesheet.effect_tometik2.animate=true
|
||||||
|
|
||||||
atcs.spritesheet.items_armours.category=item
|
atcs.spritesheet.items_armours.category=item
|
||||||
atcs.spritesheet.items_armours_2.category=item
|
atcs.spritesheet.items_armours_2.category=item
|
||||||
atcs.spritesheet.items_armours_3.category=item
|
atcs.spritesheet.items_armours_3.category=item
|
||||||
atcs.spritesheet.items_weapons.category=item
|
|
||||||
atcs.spritesheet.items_weapons_2.category=item
|
|
||||||
atcs.spritesheet.items_weapons_3.category=item
|
|
||||||
atcs.spritesheet.items_jewelry.category=item
|
|
||||||
atcs.spritesheet.items_rings_1.category=item
|
|
||||||
atcs.spritesheet.items_necklaces_1.category=item
|
|
||||||
atcs.spritesheet.items_consumables.category=item
|
|
||||||
atcs.spritesheet.items_japozero.category=item
|
|
||||||
atcs.spritesheet.items_books.category=item
|
atcs.spritesheet.items_books.category=item
|
||||||
|
atcs.spritesheet.items_consumables.category=item
|
||||||
|
atcs.spritesheet.items_consumables_omi1.category=item
|
||||||
|
atcs.spritesheet.items_feygard1.category=item
|
||||||
|
atcs.spritesheet.items_g03_package_omi1.category=item
|
||||||
|
atcs.spritesheet.items_japozero.category=item
|
||||||
|
atcs.spritesheet.items_jewelry.category=item
|
||||||
atcs.spritesheet.items_misc.category=item
|
atcs.spritesheet.items_misc.category=item
|
||||||
atcs.spritesheet.items_misc_2.category=item
|
atcs.spritesheet.items_misc_2.category=item
|
||||||
atcs.spritesheet.items_misc_3.category=item
|
atcs.spritesheet.items_misc_3.category=item
|
||||||
atcs.spritesheet.items_misc_4.category=item
|
atcs.spritesheet.items_misc_4.category=item
|
||||||
atcs.spritesheet.items_misc_5.category=item
|
atcs.spritesheet.items_misc_5.category=item
|
||||||
atcs.spritesheet.items_misc_6.category=item
|
atcs.spritesheet.items_misc_6.category=item
|
||||||
|
atcs.spritesheet.items_necklaces_1.category=item
|
||||||
|
atcs.spritesheet.items_omi2.category=item
|
||||||
atcs.spritesheet.items_reterski_1.category=item
|
atcs.spritesheet.items_reterski_1.category=item
|
||||||
|
atcs.spritesheet.items_rijackson_1.category=item
|
||||||
|
atcs.spritesheet.items_rings_1.category=item
|
||||||
atcs.spritesheet.items_tometik1.category=item
|
atcs.spritesheet.items_tometik1.category=item
|
||||||
atcs.spritesheet.items_tometik2.category=item
|
atcs.spritesheet.items_tometik2.category=item
|
||||||
atcs.spritesheet.items_tometik3.category=item
|
atcs.spritesheet.items_tometik3.category=item
|
||||||
|
atcs.spritesheet.items_weapons.category=item
|
||||||
|
atcs.spritesheet.items_weapons_2.category=item
|
||||||
|
atcs.spritesheet.items_weapons_3.category=item
|
||||||
|
|
||||||
atcs.spritesheet.monsters_armor1.category=monster
|
atcs.spritesheet.monsters_armor1.category=monster
|
||||||
|
|
||||||
atcs.spritesheet.monsters_dogs.category=monster
|
atcs.spritesheet.monsters_dogs.category=monster
|
||||||
atcs.spritesheet.monsters_eye1.category=monster
|
atcs.spritesheet.monsters_eye1.category=monster
|
||||||
atcs.spritesheet.monsters_eye2.category=monster
|
atcs.spritesheet.monsters_eye2.category=monster
|
||||||
atcs.spritesheet.monsters_eye3.category=monster
|
atcs.spritesheet.monsters_eye3.category=monster
|
||||||
atcs.spritesheet.monsters_eye4.category=monster
|
atcs.spritesheet.monsters_eye4.category=monster
|
||||||
|
|
||||||
atcs.spritesheet.monsters_ghost1.category=monster
|
atcs.spritesheet.monsters_ghost1.category=monster
|
||||||
atcs.spritesheet.monsters_hydra1.category=monster
|
atcs.spritesheet.monsters_gisons.category=monster
|
||||||
atcs.spritesheet.monsters_hydra1.sizex=64
|
atcs.spritesheet.monsters_guynmart.category=monster
|
||||||
atcs.spritesheet.monsters_hydra1.sizey=64
|
|
||||||
atcs.spritesheet.monsters_insects.category=monster
|
atcs.spritesheet.monsters_insects.category=monster
|
||||||
|
atcs.spritesheet.monsters_karvis1.category=monster
|
||||||
|
atcs.spritesheet.monsters_karvis2.category=monster
|
||||||
|
atcs.spritesheet.monsters_ld1.category=monster
|
||||||
|
atcs.spritesheet.monsters_ld2.category=monster
|
||||||
atcs.spritesheet.monsters_liches.category=monster
|
atcs.spritesheet.monsters_liches.category=monster
|
||||||
atcs.spritesheet.monsters_mage.category=monster
|
atcs.spritesheet.monsters_mage.category=monster
|
||||||
atcs.spritesheet.monsters_mage2.category=monster
|
atcs.spritesheet.monsters_mage2.category=monster
|
||||||
|
atcs.spritesheet.monsters_maksiu1.category=monster
|
||||||
atcs.spritesheet.monsters_man1.category=monster
|
atcs.spritesheet.monsters_man1.category=monster
|
||||||
atcs.spritesheet.monsters_men.category=monster
|
atcs.spritesheet.monsters_men.category=monster
|
||||||
atcs.spritesheet.monsters_men2.category=monster
|
atcs.spritesheet.monsters_men2.category=monster
|
||||||
atcs.spritesheet.monsters_misc.category=monster
|
atcs.spritesheet.monsters_misc.category=monster
|
||||||
|
atcs.spritesheet.monsters_omi1.category=monster
|
||||||
|
atcs.spritesheet.monsters_omi1_b.category=monster
|
||||||
|
atcs.spritesheet.monsters_omi2.category=monster
|
||||||
atcs.spritesheet.monsters_rats.category=monster
|
atcs.spritesheet.monsters_rats.category=monster
|
||||||
atcs.spritesheet.monsters_rogue1.category=monster
|
atcs.spritesheet.monsters_redshrike1.category=monster
|
||||||
atcs.spritesheet.monsters_skeleton1.category=monster
|
|
||||||
atcs.spritesheet.monsters_skeleton2.category=monster
|
|
||||||
atcs.spritesheet.monsters_snakes.category=monster
|
|
||||||
atcs.spritesheet.monsters_warrior1.category=monster
|
|
||||||
atcs.spritesheet.monsters_wraiths.category=monster
|
|
||||||
atcs.spritesheet.monsters_zombie1.category=monster
|
|
||||||
atcs.spritesheet.monsters_zombie2.category=monster
|
|
||||||
atcs.spritesheet.monsters_karvis1.category=monster
|
|
||||||
atcs.spritesheet.monsters_karvis2.category=monster
|
|
||||||
atcs.spritesheet.monsters_rltiles1.category=monster
|
atcs.spritesheet.monsters_rltiles1.category=monster
|
||||||
atcs.spritesheet.monsters_rltiles2.category=monster
|
atcs.spritesheet.monsters_rltiles2.category=monster
|
||||||
atcs.spritesheet.monsters_rltiles3.category=monster
|
atcs.spritesheet.monsters_rltiles3.category=monster
|
||||||
atcs.spritesheet.monsters_rltiles4.category=monster
|
atcs.spritesheet.monsters_rltiles4.category=monster
|
||||||
atcs.spritesheet.monsters_redshrike1.category=monster
|
atcs.spritesheet.monsters_rogue1.category=monster
|
||||||
atcs.spritesheet.monsters_ld1.category=monster
|
atcs.spritesheet.monsters_skeleton1.category=monster
|
||||||
atcs.spritesheet.monsters_ld2.category=monster
|
atcs.spritesheet.monsters_skeleton2.category=monster
|
||||||
|
atcs.spritesheet.monsters_snakes.category=monster
|
||||||
atcs.spritesheet.monsters_tometik1.category=monster
|
atcs.spritesheet.monsters_tometik1.category=monster
|
||||||
|
atcs.spritesheet.monsters_tometik10.category=monster
|
||||||
atcs.spritesheet.monsters_tometik2.category=monster
|
atcs.spritesheet.monsters_tometik2.category=monster
|
||||||
atcs.spritesheet.monsters_tometik3.category=monster
|
atcs.spritesheet.monsters_tometik3.category=monster
|
||||||
atcs.spritesheet.monsters_tometik4.category=monster
|
atcs.spritesheet.monsters_tometik4.category=monster
|
||||||
@@ -68,21 +88,27 @@ atcs.spritesheet.monsters_tometik6.category=monster
|
|||||||
atcs.spritesheet.monsters_tometik7.category=monster
|
atcs.spritesheet.monsters_tometik7.category=monster
|
||||||
atcs.spritesheet.monsters_tometik8.category=monster
|
atcs.spritesheet.monsters_tometik8.category=monster
|
||||||
atcs.spritesheet.monsters_tometik9.category=monster
|
atcs.spritesheet.monsters_tometik9.category=monster
|
||||||
atcs.spritesheet.monsters_tometik10.category=monster
|
atcs.spritesheet.monsters_warrior1.category=monster
|
||||||
|
atcs.spritesheet.monsters_unknown.category=monster
|
||||||
|
atcs.spritesheet.monsters_wraiths.category=monster
|
||||||
|
atcs.spritesheet.monsters_zombie1.category=monster
|
||||||
|
atcs.spritesheet.monsters_zombie2.category=monster
|
||||||
|
|
||||||
|
atcs.spritesheet.monsters_bosses_2x2.category=monster
|
||||||
|
atcs.spritesheet.monsters_bosses_2x2.sizex=64
|
||||||
|
atcs.spritesheet.monsters_bosses_2x2.sizey=64
|
||||||
|
atcs.spritesheet.monsters_cyclops.category=monster
|
||||||
|
atcs.spritesheet.monsters_cyclops.sizex=64
|
||||||
|
atcs.spritesheet.monsters_cyclops.sizey=96
|
||||||
atcs.spritesheet.monsters_demon1.category=monster
|
atcs.spritesheet.monsters_demon1.category=monster
|
||||||
atcs.spritesheet.monsters_demon1.sizex=64
|
atcs.spritesheet.monsters_demon1.sizex=64
|
||||||
atcs.spritesheet.monsters_demon1.sizey=64
|
atcs.spritesheet.monsters_demon1.sizey=64
|
||||||
atcs.spritesheet.monsters_demon2.category=monster
|
atcs.spritesheet.monsters_demon2.category=monster
|
||||||
atcs.spritesheet.monsters_demon2.sizex=64
|
atcs.spritesheet.monsters_demon2.sizex=64
|
||||||
atcs.spritesheet.monsters_demon2.sizey=64
|
atcs.spritesheet.monsters_demon2.sizey=64
|
||||||
atcs.spritesheet.monsters_cyclops.category=monster
|
atcs.spritesheet.monsters_giantbasilisk.category=monster
|
||||||
atcs.spritesheet.monsters_cyclops.sizex=64
|
atcs.spritesheet.monsters_giantbasilisk.sizex=64
|
||||||
atcs.spritesheet.monsters_cyclops.sizey=96
|
atcs.spritesheet.monsters_giantbasilisk.sizey=64
|
||||||
atcs.spritesheet.effect_blood3.animate=true
|
atcs.spritesheet.monsters_hydra1.category=monster
|
||||||
atcs.spritesheet.effect_blood4.animate=true
|
atcs.spritesheet.monsters_hydra1.sizex=64
|
||||||
atcs.spritesheet.effect_bluetentacle.animate=true
|
atcs.spritesheet.monsters_hydra1.sizey=64
|
||||||
atcs.spritesheet.effect_heal2.animate=true
|
|
||||||
atcs.spritesheet.effect_poison1.animate=true
|
|
||||||
atcs.spritesheet.effect_tometik1.animate=true
|
|
||||||
atcs.spritesheet.effect_tometik2.animate=true
|
|
||||||
atcs.spritesheet.monsters_guynmart.category=monster
|
|
||||||
|
|||||||
@@ -1,251 +1,227 @@
|
|||||||
package com.gpl.rpg.atcontentstudio;
|
package com.gpl.rpg.atcontentstudio;
|
||||||
|
|
||||||
import java.awt.Color;
|
import java.awt.Color;
|
||||||
import java.awt.Desktop;
|
import java.awt.Desktop;
|
||||||
import java.awt.Dimension;
|
import java.awt.Dimension;
|
||||||
import java.awt.Font;
|
import java.awt.Font;
|
||||||
import java.awt.Toolkit;
|
import java.awt.Toolkit;
|
||||||
import java.awt.event.WindowAdapter;
|
import java.awt.event.WindowAdapter;
|
||||||
import java.awt.event.WindowEvent;
|
import java.awt.event.WindowEvent;
|
||||||
import java.io.BufferedReader;
|
import java.io.BufferedReader;
|
||||||
import java.io.File;
|
import java.io.File;
|
||||||
import java.io.IOException;
|
import java.io.IOException;
|
||||||
import java.io.InputStreamReader;
|
import java.io.InputStreamReader;
|
||||||
import java.net.MalformedURLException;
|
import java.net.MalformedURLException;
|
||||||
import java.net.URISyntaxException;
|
import java.net.URISyntaxException;
|
||||||
import java.net.URL;
|
import java.net.URL;
|
||||||
import java.util.Enumeration;
|
import java.util.Enumeration;
|
||||||
import java.util.HashMap;
|
import java.util.HashMap;
|
||||||
import java.util.LinkedList;
|
import java.util.LinkedList;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
import java.util.Map;
|
import java.util.Map;
|
||||||
import java.util.logging.Level;
|
import java.util.logging.Level;
|
||||||
import java.util.logging.Logger;
|
import java.util.logging.Logger;
|
||||||
|
|
||||||
import javax.swing.JEditorPane;
|
import javax.swing.JEditorPane;
|
||||||
import javax.swing.JLabel;
|
import javax.swing.JLabel;
|
||||||
import javax.swing.JOptionPane;
|
import javax.swing.JOptionPane;
|
||||||
import javax.swing.UIDefaults;
|
import javax.swing.UIDefaults;
|
||||||
import javax.swing.UIManager;
|
import javax.swing.UIManager;
|
||||||
import javax.swing.UnsupportedLookAndFeelException;
|
import javax.swing.UnsupportedLookAndFeelException;
|
||||||
import javax.swing.event.HyperlinkEvent;
|
import javax.swing.event.HyperlinkEvent;
|
||||||
import javax.swing.event.HyperlinkListener;
|
import javax.swing.event.HyperlinkListener;
|
||||||
import javax.swing.plaf.FontUIResource;
|
import javax.swing.plaf.FontUIResource;
|
||||||
|
|
||||||
import org.eclipse.jgit.api.Git;
|
import prefuse.data.expression.parser.ExpressionParser;
|
||||||
import org.eclipse.jgit.api.errors.GitAPIException;
|
|
||||||
import org.eclipse.jgit.attributes.AttributesNodeProvider;
|
import com.gpl.rpg.atcontentstudio.model.Workspace;
|
||||||
import org.eclipse.jgit.internal.storage.file.FileRepository;
|
import com.gpl.rpg.atcontentstudio.ui.StudioFrame;
|
||||||
import org.eclipse.jgit.lib.ObjectDatabase;
|
import com.gpl.rpg.atcontentstudio.ui.WorkerDialog;
|
||||||
import org.eclipse.jgit.lib.Ref;
|
import com.gpl.rpg.atcontentstudio.ui.WorkspaceSelector;
|
||||||
import org.eclipse.jgit.lib.RefDatabase;
|
|
||||||
import org.eclipse.jgit.lib.ReflogReader;
|
|
||||||
import org.eclipse.jgit.lib.Repository;
|
public class ATContentStudio {
|
||||||
import org.eclipse.jgit.lib.StoredConfig;
|
|
||||||
|
public static final String APP_NAME = "Andor's Trail Content Studio";
|
||||||
import prefuse.data.expression.parser.ExpressionParser;
|
public static final String APP_VERSION = "v0.6.19";
|
||||||
|
|
||||||
import com.gpl.rpg.atcontentstudio.model.Workspace;
|
public static final String CHECK_UPDATE_URL = "https://andorstrail.com/static/ATCS_latest";
|
||||||
import com.gpl.rpg.atcontentstudio.ui.StudioFrame;
|
public static final String DOWNLOAD_URL = "https://andorstrail.com/viewtopic.php?f=6&t=4806";
|
||||||
import com.gpl.rpg.atcontentstudio.ui.WorkerDialog;
|
|
||||||
import com.gpl.rpg.atcontentstudio.ui.WorkspaceSelector;
|
public static final String FONT_SCALE_ENV_VAR_NAME = "FONT_SCALE";
|
||||||
|
|
||||||
|
public static boolean STARTED = false;
|
||||||
public class ATContentStudio {
|
public static float SCALING=1.0f;
|
||||||
|
public static StudioFrame frame = null;
|
||||||
public static final String APP_NAME = "Andor's Trail Content Studio";
|
|
||||||
public static final String APP_VERSION = "v0.6.14";
|
//Need to keep a strong reference to it, to avoid garbage collection that'll reset these loggers.
|
||||||
|
public static final List<Logger> configuredLoggers = new LinkedList<Logger>();
|
||||||
public static final String CHECK_UPDATE_URL = "https://andorstrail.com/static/ATCS_latest";
|
|
||||||
public static final String DOWNLOAD_URL = "https://andorstrail.com/viewtopic.php?f=6&t=4806";
|
/**
|
||||||
|
* @param args
|
||||||
public static final String FONT_SCALE_ENV_VAR_NAME = "FONT_SCALE";
|
*/
|
||||||
|
public static void main(String[] args) {
|
||||||
public static boolean STARTED = false;
|
String fontScaling = System.getProperty(FONT_SCALE_ENV_VAR_NAME);
|
||||||
public static float SCALING=1.0f;
|
Float fontScale = null;
|
||||||
public static StudioFrame frame = null;
|
if (fontScaling != null) {
|
||||||
|
try {
|
||||||
//Need to keep a strong reference to it, to avoid garbage collection that'll reset these loggers.
|
fontScale = Float.parseFloat(fontScaling);
|
||||||
public static final List<Logger> configuredLoggers = new LinkedList<Logger>();
|
SCALING=fontScale;
|
||||||
|
} catch (NumberFormatException e) {
|
||||||
/**
|
System.err.println("Failed to parse font scaling parameter. Using default.");
|
||||||
* @param args
|
e.printStackTrace();
|
||||||
*/
|
}
|
||||||
public static void main(String[] args) {
|
}
|
||||||
String fontScaling = System.getProperty(FONT_SCALE_ENV_VAR_NAME);
|
|
||||||
Float fontScale = null;
|
ConfigCache.init();
|
||||||
if (fontScaling != null) {
|
|
||||||
try {
|
try {
|
||||||
fontScale = Float.parseFloat(fontScaling);
|
String laf = ConfigCache.getFavoriteLaFClassName();
|
||||||
SCALING=fontScale;
|
if (laf == null) laf = UIManager.getSystemLookAndFeelClassName();
|
||||||
} catch (NumberFormatException e) {
|
UIManager.setLookAndFeel(laf);
|
||||||
System.err.println("Failed to parse font scaling parameter. Using default.");
|
} catch (ClassNotFoundException e) {
|
||||||
e.printStackTrace();
|
e.printStackTrace();
|
||||||
}
|
} catch (InstantiationException e) {
|
||||||
}
|
e.printStackTrace();
|
||||||
|
} catch (IllegalAccessException e) {
|
||||||
// try {
|
e.printStackTrace();
|
||||||
// Git git = new Git(new FileRepository("/home/xxx/git_repos/andors-trail/.git/"));
|
} catch (UnsupportedLookAndFeelException e) {
|
||||||
// List<Ref> branches = git.branchList().call();
|
e.printStackTrace();
|
||||||
// for (Ref branch : branches) {
|
}
|
||||||
// System.out.println(branch.getName());
|
|
||||||
// }
|
|
||||||
// } catch (IOException e1) {
|
scaleUIFont();
|
||||||
// e1.printStackTrace();
|
|
||||||
// } catch (GitAPIException e1) {
|
//Need to keep a strong reference to it, to avoid garbage collection that'll reset this setting.
|
||||||
// e1.printStackTrace();
|
Logger l = Logger.getLogger(ExpressionParser.class.getName());
|
||||||
// }
|
l.setLevel(Level.OFF);
|
||||||
|
configuredLoggers.add(l);
|
||||||
|
|
||||||
ConfigCache.init();
|
final WorkspaceSelector wsSelect = new WorkspaceSelector();
|
||||||
|
wsSelect.pack();
|
||||||
try {
|
Dimension sdim = Toolkit.getDefaultToolkit().getScreenSize();
|
||||||
String laf = ConfigCache.getFavoriteLaFClassName();
|
Dimension wdim = wsSelect.getSize();
|
||||||
if (laf == null) laf = UIManager.getSystemLookAndFeelClassName();
|
wsSelect.setLocation((sdim.width - wdim.width)/2, (sdim.height - wdim.height)/2);
|
||||||
UIManager.setLookAndFeel(laf);
|
wsSelect.setVisible(true);
|
||||||
} catch (ClassNotFoundException e) {
|
|
||||||
e.printStackTrace();
|
wsSelect.addWindowListener(new WindowAdapter() {
|
||||||
} catch (InstantiationException e) {
|
@Override
|
||||||
e.printStackTrace();
|
public synchronized void windowClosed(WindowEvent e) {
|
||||||
} catch (IllegalAccessException e) {
|
if (wsSelect.selected != null && !STARTED) {
|
||||||
e.printStackTrace();
|
ATContentStudio.STARTED = true;
|
||||||
} catch (UnsupportedLookAndFeelException e) {
|
final File workspaceRoot = new File(wsSelect.selected);
|
||||||
e.printStackTrace();
|
WorkerDialog.showTaskMessage("Loading your workspace...", null, new Runnable(){
|
||||||
}
|
public void run() {
|
||||||
|
Workspace.setActive(workspaceRoot);
|
||||||
|
if (Workspace.activeWorkspace.settings.useInternet.getCurrentValue() && Workspace.activeWorkspace.settings.checkUpdates.getCurrentValue()) {
|
||||||
scaleUIFont();
|
new Thread() {
|
||||||
|
public void run() {checkUpdate();}
|
||||||
//Need to keep a strong reference to it, to avoid garbage collection that'll reset this setting.
|
}.start();
|
||||||
Logger l = Logger.getLogger(ExpressionParser.class.getName());
|
}
|
||||||
l.setLevel(Level.OFF);
|
frame = new StudioFrame(APP_NAME+" "+APP_VERSION);
|
||||||
configuredLoggers.add(l);
|
frame.setVisible(true);
|
||||||
|
frame.setDefaultCloseOperation(StudioFrame.DO_NOTHING_ON_CLOSE);
|
||||||
final WorkspaceSelector wsSelect = new WorkspaceSelector();
|
};
|
||||||
wsSelect.pack();
|
});
|
||||||
Dimension sdim = Toolkit.getDefaultToolkit().getScreenSize();
|
for (File f : ConfigCache.getKnownWorkspaces()) {
|
||||||
Dimension wdim = wsSelect.getSize();
|
if (workspaceRoot.equals(f)) {
|
||||||
wsSelect.setLocation((sdim.width - wdim.width)/2, (sdim.height - wdim.height)/2);
|
if (!workspaceRoot.equals(ConfigCache.getLatestWorkspace())) {
|
||||||
wsSelect.setVisible(true);
|
ConfigCache.setLatestWorkspace(f);
|
||||||
|
}
|
||||||
wsSelect.addWindowListener(new WindowAdapter() {
|
return;
|
||||||
@Override
|
}
|
||||||
public synchronized void windowClosed(WindowEvent e) {
|
}
|
||||||
if (wsSelect.selected != null && !STARTED) {
|
ConfigCache.addWorkspace(workspaceRoot);
|
||||||
ATContentStudio.STARTED = true;
|
ConfigCache.setLatestWorkspace(workspaceRoot);
|
||||||
final File workspaceRoot = new File(wsSelect.selected);
|
|
||||||
WorkerDialog.showTaskMessage("Loading your workspace...", null, new Runnable(){
|
}
|
||||||
public void run() {
|
}
|
||||||
Workspace.setActive(workspaceRoot);
|
});
|
||||||
if (Workspace.activeWorkspace.settings.useInternet.getCurrentValue() && Workspace.activeWorkspace.settings.checkUpdates.getCurrentValue()) {
|
}
|
||||||
new Thread() {
|
|
||||||
public void run() {checkUpdate();}
|
private static void checkUpdate() {
|
||||||
}.start();
|
BufferedReader in = null;
|
||||||
}
|
try {
|
||||||
frame = new StudioFrame(APP_NAME+" "+APP_VERSION);
|
URL url = new URL(CHECK_UPDATE_URL);
|
||||||
frame.setVisible(true);
|
in = new BufferedReader(new InputStreamReader(url.openStream()));
|
||||||
frame.setDefaultCloseOperation(StudioFrame.DO_NOTHING_ON_CLOSE);
|
|
||||||
};
|
String inputLine, lastLine = null;
|
||||||
});
|
while ((inputLine = in.readLine()) != null) {lastLine = inputLine;}
|
||||||
for (File f : ConfigCache.getKnownWorkspaces()) {
|
if (lastLine != null && !lastLine.equals(APP_VERSION)) {
|
||||||
if (workspaceRoot.equals(f)) {
|
|
||||||
if (!workspaceRoot.equals(ConfigCache.getLatestWorkspace())) {
|
// for copying style
|
||||||
ConfigCache.setLatestWorkspace(f);
|
JLabel label = new JLabel();
|
||||||
}
|
Font font = label.getFont();
|
||||||
return;
|
Color color = label.getBackground();
|
||||||
}
|
|
||||||
}
|
// create some css from the label's font
|
||||||
ConfigCache.addWorkspace(workspaceRoot);
|
StringBuffer style = new StringBuffer("font-family:" + font.getFamily() + ";");
|
||||||
ConfigCache.setLatestWorkspace(workspaceRoot);
|
style.append("font-weight:" + (font.isBold() ? "bold" : "normal") + ";");
|
||||||
|
style.append("font-size:" + font.getSize() + "pt;");
|
||||||
}
|
style.append("background-color: rgb("+color.getRed()+","+color.getGreen()+","+color.getBlue()+");");
|
||||||
}
|
|
||||||
});
|
JEditorPane ep = new JEditorPane("text/html", "<html><body style=\"" + style + "\">"
|
||||||
}
|
+ "You are not running the latest ATCS version.<br/>"
|
||||||
|
+ "You can get the latest version ("+lastLine+") by clicking the link below.<br/>"
|
||||||
private static void checkUpdate() {
|
+ "<a href=\""+DOWNLOAD_URL+"\">"+DOWNLOAD_URL+"</a><br/>"
|
||||||
BufferedReader in = null;
|
+ "<br/>"
|
||||||
try {
|
+ "</body></html>");
|
||||||
URL url = new URL(CHECK_UPDATE_URL);
|
|
||||||
in = new BufferedReader(new InputStreamReader(url.openStream()));
|
ep.setEditable(false);
|
||||||
|
ep.setBorder(null);
|
||||||
String inputLine, lastLine = null;
|
|
||||||
while ((inputLine = in.readLine()) != null) {lastLine = inputLine;}
|
ep.addHyperlinkListener(new HyperlinkListener() {
|
||||||
if (lastLine != null && !lastLine.equals(APP_VERSION)) {
|
|
||||||
|
@Override
|
||||||
// for copying style
|
public void hyperlinkUpdate(HyperlinkEvent e) {
|
||||||
JLabel label = new JLabel();
|
try {
|
||||||
Font font = label.getFont();
|
if (e.getEventType().equals(HyperlinkEvent.EventType.ACTIVATED)) {
|
||||||
Color color = label.getBackground();
|
Desktop.getDesktop().browse(e.getURL().toURI());
|
||||||
|
}
|
||||||
// create some css from the label's font
|
} catch (IOException e1) {
|
||||||
StringBuffer style = new StringBuffer("font-family:" + font.getFamily() + ";");
|
e1.printStackTrace();
|
||||||
style.append("font-weight:" + (font.isBold() ? "bold" : "normal") + ";");
|
} catch (URISyntaxException e1) {
|
||||||
style.append("font-size:" + font.getSize() + "pt;");
|
e1.printStackTrace();
|
||||||
style.append("background-color: rgb("+color.getRed()+","+color.getGreen()+","+color.getBlue()+");");
|
}
|
||||||
|
}
|
||||||
JEditorPane ep = new JEditorPane("text/html", "<html><body style=\"" + style + "\">"
|
});
|
||||||
+ "You are not running the latest ATCS version.<br/>"
|
|
||||||
+ "You can get the latest version ("+lastLine+") by clicking the link below.<br/>"
|
JOptionPane.showMessageDialog(null, ep, "Update available", JOptionPane.INFORMATION_MESSAGE);
|
||||||
+ "<a href=\""+DOWNLOAD_URL+"\">"+DOWNLOAD_URL+"</a><br/>"
|
}
|
||||||
+ "<br/>"
|
} catch (MalformedURLException e) {
|
||||||
+ "</body></html>");
|
e.printStackTrace();
|
||||||
|
} catch (IOException e) {
|
||||||
ep.setEditable(false);
|
e.printStackTrace();
|
||||||
ep.setBorder(null);
|
} finally {
|
||||||
|
try {
|
||||||
ep.addHyperlinkListener(new HyperlinkListener() {
|
if (in != null) in.close();
|
||||||
|
} catch (IOException e) {
|
||||||
@Override
|
e.printStackTrace();
|
||||||
public void hyperlinkUpdate(HyperlinkEvent e) {
|
}
|
||||||
try {
|
}
|
||||||
if (e.getEventType().equals(HyperlinkEvent.EventType.ACTIVATED)) {
|
}
|
||||||
Desktop.getDesktop().browse(e.getURL().toURI());
|
|
||||||
}
|
public static void scaleUIFont() {
|
||||||
} catch (IOException e1) {
|
if (SCALING != 1.0f) {
|
||||||
e1.printStackTrace();
|
System.out.println("Scaling fonts to "+SCALING);
|
||||||
} catch (URISyntaxException e1) {
|
UIDefaults defaults = UIManager.getLookAndFeelDefaults();
|
||||||
e1.printStackTrace();
|
Map<Object, Object> newDefaults = new HashMap<Object, Object>();
|
||||||
}
|
for (Enumeration<Object> e = defaults.keys(); e.hasMoreElements();) {
|
||||||
}
|
Object key = e.nextElement();
|
||||||
});
|
Object value = defaults.get(key);
|
||||||
|
if (value instanceof Font) {
|
||||||
JOptionPane.showMessageDialog(null, ep, "Update available", JOptionPane.INFORMATION_MESSAGE);
|
Font font = (Font) value;
|
||||||
}
|
int newSize = (int)(font.getSize() * SCALING);
|
||||||
} catch (MalformedURLException e) {
|
if (value instanceof FontUIResource) {
|
||||||
e.printStackTrace();
|
newDefaults.put(key, new FontUIResource(font.getName(), font.getStyle(), newSize));
|
||||||
} catch (IOException e) {
|
} else {
|
||||||
e.printStackTrace();
|
newDefaults.put(key, new Font(font.getName(), font.getStyle(), newSize));
|
||||||
} finally {
|
}
|
||||||
try {
|
}
|
||||||
if (in != null) in.close();
|
}
|
||||||
} catch (IOException e) {
|
for (Object key : newDefaults.keySet()) {
|
||||||
e.printStackTrace();
|
defaults.put(key, newDefaults.get(key));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
}
|
||||||
public static void scaleUIFont() {
|
|
||||||
if (SCALING != 1.0f) {
|
|
||||||
System.out.println("Scaling fonts to "+SCALING);
|
|
||||||
UIDefaults defaults = UIManager.getLookAndFeelDefaults();
|
|
||||||
Map<Object, Object> newDefaults = new HashMap<Object, Object>();
|
|
||||||
for (Enumeration<Object> e = defaults.keys(); e.hasMoreElements();) {
|
|
||||||
Object key = e.nextElement();
|
|
||||||
Object value = defaults.get(key);
|
|
||||||
if (value instanceof Font) {
|
|
||||||
Font font = (Font) value;
|
|
||||||
int newSize = (int)(font.getSize() * SCALING);
|
|
||||||
if (value instanceof FontUIResource) {
|
|
||||||
newDefaults.put(key, new FontUIResource(font.getName(), font.getStyle(), newSize));
|
|
||||||
} else {
|
|
||||||
newDefaults.put(key, new Font(font.getName(), font.getStyle(), newSize));
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
for (Object key : newDefaults.keySet()) {
|
|
||||||
defaults.put(key, newDefaults.get(key));
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|||||||
@@ -11,6 +11,10 @@ import java.io.IOException;
|
|||||||
import java.io.Serializable;
|
import java.io.Serializable;
|
||||||
import java.io.StringReader;
|
import java.io.StringReader;
|
||||||
import java.io.StringWriter;
|
import java.io.StringWriter;
|
||||||
|
import java.nio.charset.StandardCharsets;
|
||||||
|
import java.nio.file.Files;
|
||||||
|
import java.nio.file.Path;
|
||||||
|
import java.nio.file.Paths;
|
||||||
import java.util.ArrayList;
|
import java.util.ArrayList;
|
||||||
import java.util.Collections;
|
import java.util.Collections;
|
||||||
import java.util.Enumeration;
|
import java.util.Enumeration;
|
||||||
@@ -74,7 +78,9 @@ import com.gpl.rpg.atcontentstudio.utils.FileUtils;
|
|||||||
public class Project implements ProjectTreeNode, Serializable {
|
public class Project implements ProjectTreeNode, Serializable {
|
||||||
|
|
||||||
private static final long serialVersionUID = 4807454973303366758L;
|
private static final long serialVersionUID = 4807454973303366758L;
|
||||||
|
private static final String drawablePath = TMXMapSet.DEFAULT_REL_PATH_TO_DRAWABLE.replace("\\", "/");
|
||||||
|
|
||||||
|
|
||||||
//Every instance field that is not transient will be saved in this file.
|
//Every instance field that is not transient will be saved in this file.
|
||||||
public static final String SETTINGS_FILE = ".project";
|
public static final String SETTINGS_FILE = ".project";
|
||||||
|
|
||||||
@@ -1079,10 +1085,16 @@ public class Project implements ProjectTreeNode, Serializable {
|
|||||||
public void run() {
|
public void run() {
|
||||||
Notification.addInfo("Exporting project \""+name+"\" as "+target.getAbsolutePath());
|
Notification.addInfo("Exporting project \""+name+"\" as "+target.getAbsolutePath());
|
||||||
|
|
||||||
File tmpDir = exportProjectToTmpDir();
|
File tmpDir;
|
||||||
|
try {
|
||||||
|
tmpDir = exportProjectToTmpDir();
|
||||||
|
FileUtils.writeToZip(tmpDir, target);
|
||||||
|
FileUtils.deleteDir(tmpDir);
|
||||||
|
} catch (IOException e) {
|
||||||
|
// TODO Auto-generated catch block
|
||||||
|
e.printStackTrace();
|
||||||
|
}
|
||||||
|
|
||||||
FileUtils.writeToZip(tmpDir, target);
|
|
||||||
FileUtils.deleteDir(tmpDir);
|
|
||||||
Notification.addSuccess("Project \""+name+"\" exported as "+target.getAbsolutePath());
|
Notification.addSuccess("Project \""+name+"\" exported as "+target.getAbsolutePath());
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -1096,10 +1108,16 @@ public class Project implements ProjectTreeNode, Serializable {
|
|||||||
public void run() {
|
public void run() {
|
||||||
Notification.addInfo("Exporting project \""+name+"\" into "+target.getAbsolutePath());
|
Notification.addInfo("Exporting project \""+name+"\" into "+target.getAbsolutePath());
|
||||||
|
|
||||||
File tmpDir = exportProjectToTmpDir();
|
File tmpDir;
|
||||||
|
try {
|
||||||
|
tmpDir = exportProjectToTmpDir();
|
||||||
|
FileUtils.copyOver(tmpDir, target);
|
||||||
|
FileUtils.deleteDir(tmpDir);
|
||||||
|
} catch (IOException e) {
|
||||||
|
// TODO Auto-generated catch block
|
||||||
|
e.printStackTrace();
|
||||||
|
}
|
||||||
|
|
||||||
FileUtils.copyOver(tmpDir, target);
|
|
||||||
FileUtils.deleteDir(tmpDir);
|
|
||||||
Notification.addSuccess("Project \""+name+"\" exported into "+target.getAbsolutePath());
|
Notification.addSuccess("Project \""+name+"\" exported into "+target.getAbsolutePath());
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -1107,7 +1125,7 @@ public class Project implements ProjectTreeNode, Serializable {
|
|||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
public File exportProjectToTmpDir() {
|
public File exportProjectToTmpDir() throws IOException {
|
||||||
File tmpDir = new File(baseFolder, "tmp");
|
File tmpDir = new File(baseFolder, "tmp");
|
||||||
FileUtils.deleteDir(tmpDir);
|
FileUtils.deleteDir(tmpDir);
|
||||||
tmpDir.mkdir();
|
tmpDir.mkdir();
|
||||||
@@ -1139,12 +1157,12 @@ public class Project implements ProjectTreeNode, Serializable {
|
|||||||
writtenFiles = new LinkedList<String>();
|
writtenFiles = new LinkedList<String>();
|
||||||
for (File createdMapFile : createdContent.gameMaps.mapFolder.listFiles()) {
|
for (File createdMapFile : createdContent.gameMaps.mapFolder.listFiles()) {
|
||||||
if (createdMapFile.getName().equalsIgnoreCase("worldmap.xml")) continue;
|
if (createdMapFile.getName().equalsIgnoreCase("worldmap.xml")) continue;
|
||||||
FileUtils.copyFile(createdMapFile, new File(tmpMapDir, createdMapFile.getName()));
|
copyTmxConverted(createdMapFile.toPath(), Paths.get(tmpMapDir.getAbsolutePath(), createdMapFile.getName()));
|
||||||
writtenFiles.add(createdMapFile.getName());
|
writtenFiles.add(createdMapFile.getName());
|
||||||
}
|
}
|
||||||
for (File alteredMapFile : alteredContent.gameMaps.mapFolder.listFiles()) {
|
for (File alteredMapFile : alteredContent.gameMaps.mapFolder.listFiles()) {
|
||||||
if (alteredMapFile.getName().equalsIgnoreCase("worldmap.xml")) continue;
|
if (alteredMapFile.getName().equalsIgnoreCase("worldmap.xml")) continue;
|
||||||
FileUtils.copyFile(alteredMapFile, new File(tmpMapDir, alteredMapFile.getName()));
|
copyTmxConverted(alteredMapFile.toPath(), Paths.get(tmpMapDir.getAbsolutePath(), alteredMapFile.getName()));
|
||||||
writtenFiles.add(alteredMapFile.getName());
|
writtenFiles.add(alteredMapFile.getName());
|
||||||
}
|
}
|
||||||
writtenFilesPerDataType.put(TMXMap.class, writtenFiles);
|
writtenFilesPerDataType.put(TMXMap.class, writtenFiles);
|
||||||
@@ -1177,6 +1195,16 @@ public class Project implements ProjectTreeNode, Serializable {
|
|||||||
return tmpDir;
|
return tmpDir;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private void copyTmxConverted(Path from, Path to) throws IOException {
|
||||||
|
String xml = new String(Files.readAllBytes(from), StandardCharsets.UTF_8);
|
||||||
|
xml = xml.replace("../../altered/spritesheets/", drawablePath);
|
||||||
|
xml = xml.replace("../../created/spritesheets/", drawablePath);
|
||||||
|
xml = xml.replace("../spritesheets/", drawablePath);
|
||||||
|
xml = xml.replace("../spritesheets/", drawablePath);
|
||||||
|
Files.write(to, xml.getBytes(StandardCharsets.UTF_8));
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
@SuppressWarnings("rawtypes")
|
@SuppressWarnings("rawtypes")
|
||||||
public List<String> writeDataDeltaForDataType(GameDataCategory<? extends JSONElement> created, GameDataCategory<? extends JSONElement> altered, GameDataCategory<? extends JSONElement> source, Class<? extends JSONElement> gdeClass, File targetFolder) {
|
public List<String> writeDataDeltaForDataType(GameDataCategory<? extends JSONElement> created, GameDataCategory<? extends JSONElement> altered, GameDataCategory<? extends JSONElement> source, Class<? extends JSONElement> gdeClass, File targetFolder) {
|
||||||
List<String> filenamesToWrite = new LinkedList<String>();
|
List<String> filenamesToWrite = new LinkedList<String>();
|
||||||
|
|||||||
@@ -36,7 +36,7 @@ public class Droplist extends JSONElement {
|
|||||||
public static class DroppedItem {
|
public static class DroppedItem {
|
||||||
//Available from parsed state;
|
//Available from parsed state;
|
||||||
public String item_id = null;
|
public String item_id = null;
|
||||||
public Double chance = null;
|
public String chance = null;
|
||||||
public Integer quantity_min = null;
|
public Integer quantity_min = null;
|
||||||
public Integer quantity_max = null;
|
public Integer quantity_max = null;
|
||||||
|
|
||||||
@@ -114,7 +114,8 @@ public class Droplist extends JSONElement {
|
|||||||
Map droppedItemJson = (Map)droppedItemJsonObj;
|
Map droppedItemJson = (Map)droppedItemJsonObj;
|
||||||
DroppedItem droppedItem = new DroppedItem();
|
DroppedItem droppedItem = new DroppedItem();
|
||||||
droppedItem.item_id = (String) droppedItemJson.get("itemID");
|
droppedItem.item_id = (String) droppedItemJson.get("itemID");
|
||||||
if (droppedItemJson.get("chance") != null) droppedItem.chance = JSONElement.parseChance(droppedItemJson.get("chance").toString());
|
//if (droppedItemJson.get("chance") != null) droppedItem.chance = JSONElement.parseChance(droppedItemJson.get("chance").toString());
|
||||||
|
droppedItem.chance = (String) droppedItemJson.get("chance");
|
||||||
Map droppedItemQtyJson = (Map) droppedItemJson.get("quantity");
|
Map droppedItemQtyJson = (Map) droppedItemJson.get("quantity");
|
||||||
if (droppedItemQtyJson != null) {
|
if (droppedItemQtyJson != null) {
|
||||||
droppedItem.quantity_min = JSONElement.getInteger((Number) droppedItemQtyJson.get("min"));
|
droppedItem.quantity_min = JSONElement.getInteger((Number) droppedItemQtyJson.get("min"));
|
||||||
@@ -217,7 +218,8 @@ public class Droplist extends JSONElement {
|
|||||||
} else if (droppedItem.item_id != null) {
|
} else if (droppedItem.item_id != null) {
|
||||||
droppedItemJson.put("itemID", droppedItem.item_id);
|
droppedItemJson.put("itemID", droppedItem.item_id);
|
||||||
}
|
}
|
||||||
if (droppedItem.chance != null) droppedItemJson.put("chance", JSONElement.printJsonChance(droppedItem.chance));
|
//if (droppedItem.chance != null) droppedItemJson.put("chance", JSONElement.printJsonChance(droppedItem.chance));
|
||||||
|
if (droppedItem.chance != null) droppedItemJson.put("chance", droppedItem.chance);
|
||||||
if (droppedItem.quantity_min != null || droppedItem.quantity_max != null) {
|
if (droppedItem.quantity_min != null || droppedItem.quantity_max != null) {
|
||||||
Map quantityJson = new LinkedHashMap();
|
Map quantityJson = new LinkedHashMap();
|
||||||
droppedItemJson.put("quantity", quantityJson);
|
droppedItemJson.put("quantity", quantityJson);
|
||||||
|
|||||||
@@ -83,6 +83,7 @@ public class Item extends JSONElement {
|
|||||||
public Integer increase_block_chance = null;
|
public Integer increase_block_chance = null;
|
||||||
public Integer increase_damage_resistance = null;
|
public Integer increase_damage_resistance = null;
|
||||||
public Double critical_multiplier = null;
|
public Double critical_multiplier = null;
|
||||||
|
public Integer damage_modifier = null;
|
||||||
}
|
}
|
||||||
|
|
||||||
public static class ConditionEffect {
|
public static class ConditionEffect {
|
||||||
@@ -202,7 +203,8 @@ public class Item extends JSONElement {
|
|||||||
//TODO correct game data, to unify format.
|
//TODO correct game data, to unify format.
|
||||||
// this.equip_effect.critical_multiplier = JSONElement.getDouble((Number) equipEffect.get("setCriticalMultiplier"));
|
// this.equip_effect.critical_multiplier = JSONElement.getDouble((Number) equipEffect.get("setCriticalMultiplier"));
|
||||||
if (equipEffect.get("setCriticalMultiplier") != null) this.equip_effect.critical_multiplier = JSONElement.getDouble(Double.parseDouble(equipEffect.get("setCriticalMultiplier").toString()));
|
if (equipEffect.get("setCriticalMultiplier") != null) this.equip_effect.critical_multiplier = JSONElement.getDouble(Double.parseDouble(equipEffect.get("setCriticalMultiplier").toString()));
|
||||||
|
this.equip_effect.damage_modifier = JSONElement.getInteger((Number) equipEffect.get("setNonWeaponDamageModifier"));
|
||||||
|
|
||||||
List conditionsJson = (List) equipEffect.get("addedConditions");
|
List conditionsJson = (List) equipEffect.get("addedConditions");
|
||||||
if (conditionsJson != null && !conditionsJson.isEmpty()) {
|
if (conditionsJson != null && !conditionsJson.isEmpty()) {
|
||||||
this.equip_effect.conditions = new ArrayList<Item.ConditionEffect>();
|
this.equip_effect.conditions = new ArrayList<Item.ConditionEffect>();
|
||||||
@@ -216,6 +218,7 @@ public class Item extends JSONElement {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
Map hitEffect = (Map) itemJson.get("hitEffect");
|
Map hitEffect = (Map) itemJson.get("hitEffect");
|
||||||
if (hitEffect != null) {
|
if (hitEffect != null) {
|
||||||
this.hit_effect = new HitEffect();
|
this.hit_effect = new HitEffect();
|
||||||
@@ -426,6 +429,7 @@ public class Item extends JSONElement {
|
|||||||
clone.has_manual_price = this.has_manual_price;
|
clone.has_manual_price = this.has_manual_price;
|
||||||
if (this.equip_effect != null) {
|
if (this.equip_effect != null) {
|
||||||
clone.equip_effect = new EquipEffect();
|
clone.equip_effect = new EquipEffect();
|
||||||
|
clone.equip_effect.damage_modifier = this.equip_effect.damage_modifier;
|
||||||
clone.equip_effect.critical_multiplier = this.equip_effect.critical_multiplier;
|
clone.equip_effect.critical_multiplier = this.equip_effect.critical_multiplier;
|
||||||
clone.equip_effect.damage_boost_max = this.equip_effect.damage_boost_max;
|
clone.equip_effect.damage_boost_max = this.equip_effect.damage_boost_max;
|
||||||
clone.equip_effect.damage_boost_min = this.equip_effect.damage_boost_min;
|
clone.equip_effect.damage_boost_min = this.equip_effect.damage_boost_min;
|
||||||
@@ -642,6 +646,7 @@ public class Item extends JSONElement {
|
|||||||
if (this.equip_effect.increase_block_chance != null) equipEffectJson.put("increaseBlockChance", this.equip_effect.increase_block_chance);
|
if (this.equip_effect.increase_block_chance != null) equipEffectJson.put("increaseBlockChance", this.equip_effect.increase_block_chance);
|
||||||
if (this.equip_effect.increase_damage_resistance != null) equipEffectJson.put("increaseDamageResistance", this.equip_effect.increase_damage_resistance);
|
if (this.equip_effect.increase_damage_resistance != null) equipEffectJson.put("increaseDamageResistance", this.equip_effect.increase_damage_resistance);
|
||||||
if (this.equip_effect.critical_multiplier != null) equipEffectJson.put("setCriticalMultiplier", this.equip_effect.critical_multiplier);
|
if (this.equip_effect.critical_multiplier != null) equipEffectJson.put("setCriticalMultiplier", this.equip_effect.critical_multiplier);
|
||||||
|
if (this.equip_effect.damage_modifier != null) equipEffectJson.put("setNonWeaponDamageModifier", this.equip_effect.damage_modifier);
|
||||||
if (this.equip_effect.conditions != null) {
|
if (this.equip_effect.conditions != null) {
|
||||||
List conditionsJson = new ArrayList();
|
List conditionsJson = new ArrayList();
|
||||||
equipEffectJson.put("addedConditions", conditionsJson);
|
equipEffectJson.put("addedConditions", conditionsJson);
|
||||||
|
|||||||
@@ -38,11 +38,16 @@ public abstract class JSONElement extends GameDataElement {
|
|||||||
for (Object obj : gameDataElements) {
|
for (Object obj : gameDataElements) {
|
||||||
Map jsonObj = (Map)obj;
|
Map jsonObj = (Map)obj;
|
||||||
String id = (String) jsonObj.get("id");
|
String id = (String) jsonObj.get("id");
|
||||||
|
try {
|
||||||
if (id != null && id.equals(this.id )) {
|
if (id != null && id.equals(this.id )) {
|
||||||
this.parse(jsonObj);
|
this.parse(jsonObj);
|
||||||
this.state = State.parsed;
|
this.state = State.parsed;
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
catch(Exception e){
|
||||||
|
System.out.println("Error in ID: " + id);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
} catch (FileNotFoundException e) {
|
} catch (FileNotFoundException e) {
|
||||||
Notification.addError("Error while parsing JSON file "+jsonFile.getAbsolutePath()+": "+e.getMessage());
|
Notification.addError("Error while parsing JSON file "+jsonFile.getAbsolutePath()+": "+e.getMessage());
|
||||||
@@ -53,6 +58,10 @@ public abstract class JSONElement extends GameDataElement {
|
|||||||
} catch (ParseException e) {
|
} catch (ParseException e) {
|
||||||
Notification.addError("Error while parsing JSON file "+jsonFile.getAbsolutePath()+": "+e.getMessage());
|
Notification.addError("Error while parsing JSON file "+jsonFile.getAbsolutePath()+": "+e.getMessage());
|
||||||
e.printStackTrace();
|
e.printStackTrace();
|
||||||
|
} catch (IllegalArgumentException e) {
|
||||||
|
System.out.println(id);
|
||||||
|
Notification.addError("Error while parsing JSON file "+jsonFile.getAbsolutePath()+": "+e.getMessage());
|
||||||
|
e.printStackTrace();
|
||||||
} finally {
|
} finally {
|
||||||
if (reader != null)
|
if (reader != null)
|
||||||
try {
|
try {
|
||||||
|
|||||||
@@ -26,10 +26,13 @@ public class Requirement extends JSONElement {
|
|||||||
countedItemTypes.add(RequirementType.inventoryRemove);
|
countedItemTypes.add(RequirementType.inventoryRemove);
|
||||||
countedItemTypes.add(RequirementType.inventoryKeep);
|
countedItemTypes.add(RequirementType.inventoryKeep);
|
||||||
countedItemTypes.add(RequirementType.usedItem);
|
countedItemTypes.add(RequirementType.usedItem);
|
||||||
|
countedItemTypes.add(RequirementType.wear);
|
||||||
|
countedItemTypes.add(RequirementType.wearRemove);
|
||||||
COMPATIBLE_TYPES.put(RequirementType.inventoryRemove, countedItemTypes);
|
COMPATIBLE_TYPES.put(RequirementType.inventoryRemove, countedItemTypes);
|
||||||
COMPATIBLE_TYPES.put(RequirementType.inventoryKeep, countedItemTypes);
|
COMPATIBLE_TYPES.put(RequirementType.inventoryKeep, countedItemTypes);
|
||||||
COMPATIBLE_TYPES.put(RequirementType.usedItem, countedItemTypes);
|
COMPATIBLE_TYPES.put(RequirementType.usedItem, countedItemTypes);
|
||||||
|
COMPATIBLE_TYPES.put(RequirementType.wear, countedItemTypes);
|
||||||
|
COMPATIBLE_TYPES.put(RequirementType.wearRemove, countedItemTypes);
|
||||||
}
|
}
|
||||||
|
|
||||||
//Available from parsed state
|
//Available from parsed state
|
||||||
@@ -54,7 +57,10 @@ public class Requirement extends JSONElement {
|
|||||||
spentGold,
|
spentGold,
|
||||||
consumedBonemeals,
|
consumedBonemeals,
|
||||||
hasActorCondition,
|
hasActorCondition,
|
||||||
factionScore
|
factionScore,
|
||||||
|
random,
|
||||||
|
factionScoreEquals,
|
||||||
|
wearRemove
|
||||||
}
|
}
|
||||||
|
|
||||||
public enum SkillID {
|
public enum SkillID {
|
||||||
@@ -79,6 +85,7 @@ public class Requirement extends JSONElement {
|
|||||||
,resistancePhysical // lowers chance to get negative active conditions by monsters (Physical Capacity like Minor fatigue)
|
,resistancePhysical // lowers chance to get negative active conditions by monsters (Physical Capacity like Minor fatigue)
|
||||||
,resistanceBlood // lowers chance to get negative active conditions by monsters (Blood Disorder like Weak Poison)
|
,resistanceBlood // lowers chance to get negative active conditions by monsters (Blood Disorder like Weak Poison)
|
||||||
,shadowBless
|
,shadowBless
|
||||||
|
,sporeImmunity
|
||||||
,crit1 // lowers atk ability
|
,crit1 // lowers atk ability
|
||||||
,crit2 // lowers def ability ,rejuvenation // Reduces magnitudes of conditions
|
,crit2 // lowers def ability ,rejuvenation // Reduces magnitudes of conditions
|
||||||
,rejuvenation // Reduces magnitudes of conditions
|
,rejuvenation // Reduces magnitudes of conditions
|
||||||
@@ -90,6 +97,7 @@ public class Requirement extends JSONElement {
|
|||||||
,weaponProficiencyAxe
|
,weaponProficiencyAxe
|
||||||
,weaponProficiencyBlunt
|
,weaponProficiencyBlunt
|
||||||
,weaponProficiencyUnarmed
|
,weaponProficiencyUnarmed
|
||||||
|
,weaponProficiencyPole
|
||||||
,armorProficiencyShield
|
,armorProficiencyShield
|
||||||
,armorProficiencyUnarmored
|
,armorProficiencyUnarmored
|
||||||
,armorProficiencyLight
|
,armorProficiencyLight
|
||||||
@@ -104,9 +112,21 @@ public class Requirement extends JSONElement {
|
|||||||
|
|
||||||
@Override
|
@Override
|
||||||
public String getDesc() {
|
public String getDesc() {
|
||||||
|
String obj_id = "";
|
||||||
|
if (required_obj_id != null)
|
||||||
|
{
|
||||||
|
obj_id = required_obj_id;
|
||||||
|
if (type != null && type == RequirementType.random){
|
||||||
|
obj_id = " Chance " + obj_id + (required_obj_id.contains("/") ? "" : "%");
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
obj_id += ":";
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
return ((negated != null && negated) ? "NOT " : "")
|
return ((negated != null && negated) ? "NOT " : "")
|
||||||
+(type == null ? "" : type.toString()+":")
|
+(type == null ? "" : type.toString()+":")
|
||||||
+(required_obj_id == null ? "" : required_obj_id+":")
|
+obj_id
|
||||||
+(required_value == null ? "" : required_value.toString());
|
+(required_value == null ? "" : required_value.toString());
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -153,6 +173,7 @@ public class Requirement extends JSONElement {
|
|||||||
case inventoryRemove:
|
case inventoryRemove:
|
||||||
case usedItem:
|
case usedItem:
|
||||||
case wear:
|
case wear:
|
||||||
|
case wearRemove:
|
||||||
this.required_obj = proj.getItem(required_obj_id);
|
this.required_obj = proj.getItem(required_obj_id);
|
||||||
break;
|
break;
|
||||||
case killedMonster:
|
case killedMonster:
|
||||||
@@ -173,6 +194,8 @@ public class Requirement extends JSONElement {
|
|||||||
case spentGold:
|
case spentGold:
|
||||||
case timerElapsed:
|
case timerElapsed:
|
||||||
case factionScore:
|
case factionScore:
|
||||||
|
case factionScoreEquals:
|
||||||
|
case random:
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
if (this.required_obj != null) this.required_obj.addBacklink((GameDataElement) this.parent);
|
if (this.required_obj != null) this.required_obj.addBacklink((GameDataElement) this.parent);
|
||||||
@@ -225,6 +248,12 @@ public class Requirement extends JSONElement {
|
|||||||
required_obj_id = null;
|
required_obj_id = null;
|
||||||
required_value = null;
|
required_value = null;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if(destType==RequirementType.random)
|
||||||
|
{
|
||||||
|
required_obj_id = "50/100";
|
||||||
|
}
|
||||||
|
|
||||||
type = destType;
|
type = destType;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -95,7 +95,9 @@ public class ReplaceArea extends MapObject {
|
|||||||
if (oldSchoolRequirement && Requirement.RequirementType.questProgress.equals(requirement.type) && (requirement.negated == null || !requirement.negated)) {
|
if (oldSchoolRequirement && Requirement.RequirementType.questProgress.equals(requirement.type) && (requirement.negated == null || !requirement.negated)) {
|
||||||
tmxObject.setName(requirement.required_obj_id+":"+((requirement.required_value == null) ? "" : Integer.toString(requirement.required_value)));
|
tmxObject.setName(requirement.required_obj_id+":"+((requirement.required_value == null) ? "" : Integer.toString(requirement.required_value)));
|
||||||
} else {
|
} else {
|
||||||
tmxObject.getProperties().setProperty("requireType", requirement.type.toString());
|
if (requirement.type != null) {
|
||||||
|
tmxObject.getProperties().setProperty("requireType", requirement.type.toString());
|
||||||
|
}
|
||||||
if (requirement.required_obj != null) {
|
if (requirement.required_obj != null) {
|
||||||
tmxObject.getProperties().setProperty("requireId", requirement.required_obj.id);
|
tmxObject.getProperties().setProperty("requireId", requirement.required_obj.id);
|
||||||
} else if (requirement.required_obj_id != null) {
|
} else if (requirement.required_obj_id != null) {
|
||||||
|
|||||||
@@ -11,7 +11,7 @@ import com.gpl.rpg.atcontentstudio.ui.DefaultIcons;
|
|||||||
public class SpawnArea extends MapObject {
|
public class SpawnArea extends MapObject {
|
||||||
|
|
||||||
public int quantity = 1;
|
public int quantity = 1;
|
||||||
public int spawnchance = 10;
|
public int respawnSpeed = 10;
|
||||||
public boolean active = true;
|
public boolean active = true;
|
||||||
public boolean ignoreAreas = false;
|
public boolean ignoreAreas = false;
|
||||||
public String spawngroup_id;
|
public String spawngroup_id;
|
||||||
@@ -21,8 +21,8 @@ public class SpawnArea extends MapObject {
|
|||||||
if (obj.getProperties().getProperty("quantity") != null) {
|
if (obj.getProperties().getProperty("quantity") != null) {
|
||||||
this.quantity = Integer.parseInt(obj.getProperties().getProperty("quantity"));
|
this.quantity = Integer.parseInt(obj.getProperties().getProperty("quantity"));
|
||||||
}
|
}
|
||||||
if (obj.getProperties().getProperty("spawnchance") != null) {
|
if (obj.getProperties().getProperty("respawnspeed") != null) {
|
||||||
this.spawnchance = Integer.parseInt(obj.getProperties().getProperty("spawnchance"));
|
this.respawnSpeed = Integer.parseInt(obj.getProperties().getProperty("respawnspeed"));
|
||||||
}
|
}
|
||||||
if (obj.getProperties().getProperty("active") != null) {
|
if (obj.getProperties().getProperty("active") != null) {
|
||||||
this.active = Boolean.parseBoolean(obj.getProperties().getProperty("active"));
|
this.active = Boolean.parseBoolean(obj.getProperties().getProperty("active"));
|
||||||
@@ -82,8 +82,8 @@ public class SpawnArea extends MapObject {
|
|||||||
if (quantity != 1) {
|
if (quantity != 1) {
|
||||||
tmxObject.getProperties().setProperty("quantity", Integer.toString(quantity));
|
tmxObject.getProperties().setProperty("quantity", Integer.toString(quantity));
|
||||||
}
|
}
|
||||||
if (spawnchance != 10) {
|
if (respawnSpeed != 10) {
|
||||||
tmxObject.getProperties().setProperty("spawnchance", Integer.toString(spawnchance));
|
tmxObject.getProperties().setProperty("respawnspeed", Integer.toString(respawnSpeed));
|
||||||
}
|
}
|
||||||
if (!this.active) {
|
if (!this.active) {
|
||||||
tmxObject.getProperties().setProperty("active", Boolean.toString(active));
|
tmxObject.getProperties().setProperty("active", Boolean.toString(active));
|
||||||
@@ -92,5 +92,4 @@ public class SpawnArea extends MapObject {
|
|||||||
tmxObject.getProperties().setProperty("ignoreAreas", Boolean.toString(ignoreAreas));
|
tmxObject.getProperties().setProperty("ignoreAreas", Boolean.toString(ignoreAreas));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -258,7 +258,7 @@ public class TMXMap extends GameDataElement {
|
|||||||
if (getDataType() == GameSource.Type.source) {
|
if (getDataType() == GameSource.Type.source) {
|
||||||
writer.writeMap(tmxMap, baos, tmxFile.getAbsolutePath());
|
writer.writeMap(tmxMap, baos, tmxFile.getAbsolutePath());
|
||||||
} else {
|
} else {
|
||||||
writer.writeMap(tmxMap, baos, getProject().baseContent.gameMaps.mapFolder.getAbsolutePath()+File.separator+"placeholder.tmx");
|
writer.writeMap(tmxMap, baos, ((TMXMapSet)this.parent).mapFolder.getAbsolutePath()+File.separator+"placeholder.tmx");
|
||||||
}
|
}
|
||||||
} catch (Exception e) {
|
} catch (Exception e) {
|
||||||
Notification.addError("Error while converting map "+getDesc()+" to XML: "+e.getMessage());
|
Notification.addError("Error while converting map "+getDesc()+" to XML: "+e.getMessage());
|
||||||
|
|||||||
@@ -100,7 +100,7 @@ public class TMXMapSet implements ProjectTreeNode {
|
|||||||
while(getProject().open) {
|
while(getProject().open) {
|
||||||
try {
|
try {
|
||||||
watchService = FileSystems.getDefault().newWatchService();
|
watchService = FileSystems.getDefault().newWatchService();
|
||||||
/*WatchKey watchKey = */folderPath.register(watchService, StandardWatchEventKinds.ENTRY_MODIFY);
|
/*WatchKey watchKey = */folderPath.register(watchService, StandardWatchEventKinds.ENTRY_MODIFY, StandardWatchEventKinds.ENTRY_CREATE);
|
||||||
WatchKey wk;
|
WatchKey wk;
|
||||||
validService: while(getProject().open) {
|
validService: while(getProject().open) {
|
||||||
wk = watchService.poll(10, TimeUnit.SECONDS);
|
wk = watchService.poll(10, TimeUnit.SECONDS);
|
||||||
|
|||||||
@@ -1,9 +1,12 @@
|
|||||||
package com.gpl.rpg.atcontentstudio.model.tools.i18n;
|
package com.gpl.rpg.atcontentstudio.model.tools.i18n;
|
||||||
|
|
||||||
import java.io.File;
|
import java.io.File;
|
||||||
|
import java.io.FileOutputStream;
|
||||||
import java.io.FileWriter;
|
import java.io.FileWriter;
|
||||||
import java.io.IOException;
|
import java.io.IOException;
|
||||||
|
import java.io.OutputStreamWriter;
|
||||||
import java.io.Writer;
|
import java.io.Writer;
|
||||||
|
import java.nio.charset.StandardCharsets;
|
||||||
import java.util.LinkedHashMap;
|
import java.util.LinkedHashMap;
|
||||||
import java.util.LinkedList;
|
import java.util.LinkedList;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
@@ -17,7 +20,7 @@ public class PoPotWriter {
|
|||||||
|
|
||||||
public static void writePoFile(Map<String, List<String>> stringsResources, Map<String, String> translations, File destination) {
|
public static void writePoFile(Map<String, List<String>> stringsResources, Map<String, String> translations, File destination) {
|
||||||
try {
|
try {
|
||||||
FileWriter fw = new FileWriter(destination);
|
Writer fw = new OutputStreamWriter(new FileOutputStream(destination), StandardCharsets.UTF_8);
|
||||||
if (translations.get("") != null) {
|
if (translations.get("") != null) {
|
||||||
fw.write(translations.get(""));
|
fw.write(translations.get(""));
|
||||||
writeEndOfEntry(fw);
|
writeEndOfEntry(fw);
|
||||||
|
|||||||
@@ -26,7 +26,9 @@ public class AboutEditor extends Editor {
|
|||||||
private static final long serialVersionUID = 6230549148222457139L;
|
private static final long serialVersionUID = 6230549148222457139L;
|
||||||
|
|
||||||
public static final String WELCOME_STRING =
|
public static final String WELCOME_STRING =
|
||||||
"<html><body>" +
|
"<html><head>" +
|
||||||
|
"<meta http-equiv=\\\"Content-Type\\\" content=\\\"text/html; charset=UTF-8\\\" />" +
|
||||||
|
"</head><body>" +
|
||||||
"<table><tr valign=\"top\">" +
|
"<table><tr valign=\"top\">" +
|
||||||
"<td><img src=\""+ATContentStudio.class.getResource("/com/gpl/rpg/atcontentstudio/img/atcs_border_banner.png")+"\"/></td>" +
|
"<td><img src=\""+ATContentStudio.class.getResource("/com/gpl/rpg/atcontentstudio/img/atcs_border_banner.png")+"\"/></td>" +
|
||||||
"<td><font size=+1>Welcome to "+ATContentStudio.APP_NAME+" "+ATContentStudio.APP_VERSION+"</font><br/>" +
|
"<td><font size=+1>Welcome to "+ATContentStudio.APP_NAME+" "+ATContentStudio.APP_VERSION+"</font><br/>" +
|
||||||
@@ -35,23 +37,24 @@ public class AboutEditor extends Editor {
|
|||||||
"<b>Right click on the left area or use the \"File\" menu to create a project.</b><br/>" +
|
"<b>Right click on the left area or use the \"File\" menu to create a project.</b><br/>" +
|
||||||
"<br/>" +
|
"<br/>" +
|
||||||
"Play <a href=\"https://play.google.com/store/apps/details?id=com.gpl.rpg.AndorsTrail\">Andor's Trail</a> for free on your Android device.<br/>" +
|
"Play <a href=\"https://play.google.com/store/apps/details?id=com.gpl.rpg.AndorsTrail\">Andor's Trail</a> for free on your Android device.<br/>" +
|
||||||
"Visit <a href=\"http://andorstrail.com/\">the official forum</a> to give or receive help.<br/>" +
|
"Visit <a href=\"https://andorstrail.com/\">the official forum</a> to give or receive help.<br/>" +
|
||||||
"Open the project's <a href=\"https://github.com/Zukero/andors-trail/\">GitHub project page</a> to check out the game's source code.<br/>" +
|
"Open the project's <a href=\"https://github.com/Zukero/andors-trail/\">GitHub project page</a> to check out the game's source code.<br/>" +
|
||||||
"<br/>" +
|
"<br/>" +
|
||||||
"For content creation help, make sure to use the following resources:<br/>" +
|
"For content creation help, make sure to use the following resources:<br/>" +
|
||||||
"<a href=\"http://andorstrail.com/viewtopic.php?f=6&t=4560\">The contribution guide on the forums</a><br/>" +
|
"<a href=\"https://andorstrail.com/viewtopic.php?f=6&t=4560\">The contribution guide on the forums</a><br/>" +
|
||||||
"<a href=\"http://andorstrail.com/wiki/doku.php?id=andors_trail_wiki:developer_section\">The developer section of the Andor's Trail wiki</a><br/>" +
|
"<a href=\"https://andorstrail.com/wiki/doku.php?id=andors_trail_wiki:developer_section\">The developer section of the Andor's Trail wiki</a><br/>" +
|
||||||
"<a href=\"https://docs.google.com/document/d/1BwWD1tLgPcmA2bwudrVnOc6f2dkPLFCjWdn7tXlIp5g\">The design outline document on Google Drive/Docs</a><br/>" +
|
"<a href=\"https://docs.google.com/document/d/1BwWD1tLgPcmA2bwudrVnOc6f2dkPLFCjWdn7tXlIp5g\">The design outline document on Google Drive/Docs</a><br/>" +
|
||||||
"<br/>" +
|
"<br/>" +
|
||||||
"<font size=+1>Credits:</font><br/>" +
|
"<font size=+1>Credits:</font><br/>" +
|
||||||
"<br/>" +
|
"<br/>" +
|
||||||
"Author: <a href=\"http://andorstrail.com/memberlist.php?mode=viewprofile&u=2875\">Zukero</a><br/>" +
|
"Author: <a href=\"https://andorstrail.com/memberlist.php?mode=viewprofile&u=2875\">Zukero</a><br/>" +
|
||||||
"Licence: <a href=\"http://www.gnu.org/licenses/gpl-3.0.html\">GPL v3</a><br/>" +
|
"Licence: <a href=\"http://www.gnu.org/licenses/gpl-3.0.html\">GPL v3</a><br/>" +
|
||||||
"Sources are included in this package and on <a href=\"https://github.com/Zukero/ATCS\">GitHub</a>.<br/>" +
|
"Sources are included in this package and on <a href=\"https://github.com/Zukero/ATCS\">GitHub</a>.<br/>" +
|
||||||
"<br/>" +
|
"<br/>" +
|
||||||
"Contributors: <br/>" +
|
"Contributors: <br/>" +
|
||||||
"Quentin Delvallet<br/>" +
|
"Quentin Delvallet<br/>" +
|
||||||
"<EFBFBD>i<EFBFBD>kin<br/>" +
|
"Žižkin<br/>" +
|
||||||
|
"Gonk<br/>" +
|
||||||
"<br/>" +
|
"<br/>" +
|
||||||
"This project uses the following libraries:<br/>" +
|
"This project uses the following libraries:<br/>" +
|
||||||
"<a href=\"http://code.google.com/p/json-simple/\">JSON.simple</a> by Yidong Fang & Chris Nokleberg.<br/>" +
|
"<a href=\"http://code.google.com/p/json-simple/\">JSON.simple</a> by Yidong Fang & Chris Nokleberg.<br/>" +
|
||||||
@@ -79,7 +82,7 @@ public class AboutEditor extends Editor {
|
|||||||
"<a href=\"https://jsoup.org/\">jsoup</a> by Jonathan Hedley<br/>" +
|
"<a href=\"https://jsoup.org/\">jsoup</a> by Jonathan Hedley<br/>" +
|
||||||
"License: <a href=\"https://jsoup.org/license\">MIT License</a><br/>" +
|
"License: <a href=\"https://jsoup.org/license\">MIT License</a><br/>" +
|
||||||
"<br/>" +
|
"<br/>" +
|
||||||
"A slightly modified version of <a href=\"https://launchpad.net/po-parser\">General PO Parser</a> by Bal<61>zs T<>th<br/>" +
|
"A slightly modified version of <a href=\"https://launchpad.net/po-parser\">General PO Parser</a> by Bal<61>zs T<>th<br/>" +
|
||||||
"License: <a href=\"http://www.gnu.org/licenses/gpl-3.0.html\">GPL v3</a><br/>" +
|
"License: <a href=\"http://www.gnu.org/licenses/gpl-3.0.html\">GPL v3</a><br/>" +
|
||||||
"<br/>" +
|
"<br/>" +
|
||||||
"A slightly modified version of <a href=\"www.whoischarles.com\">Minify.java</a> by Charles Bihis<br/>" +
|
"A slightly modified version of <a href=\"www.whoischarles.com\">Minify.java</a> by Charles Bihis<br/>" +
|
||||||
|
|||||||
@@ -348,6 +348,138 @@ public abstract class Editor extends JPanel implements ProjectElementListener {
|
|||||||
return spinner;
|
return spinner;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
private static final String percent = "%";
|
||||||
|
private static final String ratio = "x/y";
|
||||||
|
public static JComponent addChanceField(JPanel pane, String label, String initialValue, String defaultValue, boolean editable, final FieldUpdateListener listener) {
|
||||||
|
int defaultChance = 1;
|
||||||
|
int defaultMaxChance = 100;
|
||||||
|
if (defaultValue != null) {
|
||||||
|
if (defaultValue.contains("/")) {
|
||||||
|
int c = defaultValue.indexOf('/');
|
||||||
|
try { defaultChance = Integer.parseInt(defaultValue.substring(0, c)); } catch (NumberFormatException nfe) {};
|
||||||
|
try { defaultMaxChance = Integer.parseInt(defaultValue.substring(c+1)); } catch (NumberFormatException nfe) {};
|
||||||
|
} else {
|
||||||
|
try { defaultChance = Integer.parseInt(defaultValue); } catch (NumberFormatException nfe) {};
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
boolean currentFormIsRatio = true;
|
||||||
|
int chance = defaultChance;
|
||||||
|
int maxChance = defaultMaxChance;
|
||||||
|
if (initialValue != null) {
|
||||||
|
if (initialValue.contains("/")) {
|
||||||
|
int c = initialValue.indexOf('/');
|
||||||
|
try { chance = Integer.parseInt(initialValue.substring(0, c)); } catch (NumberFormatException nfe) {};
|
||||||
|
try { maxChance = Integer.parseInt(initialValue.substring(c+1)); } catch (NumberFormatException nfe) {};
|
||||||
|
} else {
|
||||||
|
try {
|
||||||
|
chance = Integer.parseInt(initialValue);
|
||||||
|
currentFormIsRatio = false;
|
||||||
|
} catch (NumberFormatException nfe) {};
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
final JPanel tfPane = new JPanel();
|
||||||
|
tfPane.setLayout(new JideBoxLayout(tfPane, JideBoxLayout.LINE_AXIS, 6));
|
||||||
|
JLabel tfLabel = new JLabel(label);
|
||||||
|
tfPane.add(tfLabel, JideBoxLayout.FIX);
|
||||||
|
|
||||||
|
final JComboBox<String> entryTypeBox = new JComboBox<String>(new String[] {percent, ratio});
|
||||||
|
if (currentFormIsRatio) {
|
||||||
|
entryTypeBox.setSelectedItem(ratio);
|
||||||
|
} else {
|
||||||
|
entryTypeBox.setSelectedItem(percent);
|
||||||
|
}
|
||||||
|
entryTypeBox.setEnabled(editable);
|
||||||
|
tfPane.add(entryTypeBox, JideBoxLayout.FIX);
|
||||||
|
/////////////////////////////////////////////////////////////////////////////////////////////////// make sure "chance" is between 1 and 100. If lower than 1 get 1. If higher than 100, get chance/maxChance * 100... Then do the same with defaultChance, in case no value exist.
|
||||||
|
final SpinnerNumberModel percentModel = new SpinnerNumberModel(initialValue != null ? ((chance > 1 ? chance : 1) < 100 ? chance : (chance * 100 / maxChance)) : ((defaultChance > 1 ? defaultChance : 1) < 100 ? defaultChance : (defaultChance * 100 / defaultMaxChance)) , 1, 100, 1);
|
||||||
|
final SpinnerNumberModel ratioChanceModel = new SpinnerNumberModel(initialValue != null ? chance : defaultChance, 1, Integer.MAX_VALUE, 1);
|
||||||
|
|
||||||
|
final JSpinner chanceSpinner = new JSpinner(currentFormIsRatio ? ratioChanceModel : percentModel);
|
||||||
|
if (!currentFormIsRatio) ((JSpinner.DefaultEditor)chanceSpinner.getEditor()).getTextField().setHorizontalAlignment(JTextField.LEFT);
|
||||||
|
chanceSpinner.setEnabled(editable);
|
||||||
|
((DefaultFormatter)((NumberEditor)chanceSpinner.getEditor()).getTextField().getFormatter()).setCommitsOnValidEdit(true);
|
||||||
|
tfPane.add(chanceSpinner, JideBoxLayout.FLEXIBLE);
|
||||||
|
|
||||||
|
final JLabel ratioLabel = new JLabel("/");
|
||||||
|
tfPane.add(ratioLabel, JideBoxLayout.FIX);
|
||||||
|
|
||||||
|
final JSpinner maxChanceSpinner = new JSpinner(new SpinnerNumberModel(initialValue != null ? maxChance : defaultMaxChance, 1, Integer.MAX_VALUE, 1));
|
||||||
|
((JSpinner.DefaultEditor)maxChanceSpinner.getEditor()).getTextField().setHorizontalAlignment(JTextField.LEFT);
|
||||||
|
maxChanceSpinner.setEnabled(editable);
|
||||||
|
((DefaultFormatter)((NumberEditor)maxChanceSpinner.getEditor()).getTextField().getFormatter()).setCommitsOnValidEdit(true);
|
||||||
|
tfPane.add(maxChanceSpinner, JideBoxLayout.FLEXIBLE);
|
||||||
|
|
||||||
|
if (!currentFormIsRatio) {
|
||||||
|
ratioLabel.setVisible(false);
|
||||||
|
maxChanceSpinner.setVisible(false);
|
||||||
|
tfPane.revalidate();
|
||||||
|
tfPane.repaint();
|
||||||
|
}
|
||||||
|
|
||||||
|
final JButton nullify = new JButton(new ImageIcon(DefaultIcons.getNullifyIcon()));
|
||||||
|
tfPane.add(nullify, JideBoxLayout.FIX);
|
||||||
|
nullify.setEnabled(editable);
|
||||||
|
pane.add(tfPane, JideBoxLayout.FIX);
|
||||||
|
|
||||||
|
entryTypeBox.addActionListener(new ActionListener() {
|
||||||
|
@Override
|
||||||
|
public void actionPerformed(ActionEvent e) {
|
||||||
|
if (entryTypeBox.getSelectedItem() == percent) {
|
||||||
|
int chance = ((Integer)chanceSpinner.getValue());
|
||||||
|
int maxChance = ((Integer)maxChanceSpinner.getValue());
|
||||||
|
chance *= 100;
|
||||||
|
chance /= maxChance;
|
||||||
|
chance = Math.max(0, Math.min(100, chance));
|
||||||
|
chanceSpinner.setModel(percentModel);
|
||||||
|
chanceSpinner.setValue(chance);
|
||||||
|
((JSpinner.DefaultEditor)chanceSpinner.getEditor()).getTextField().setHorizontalAlignment(JTextField.LEFT);
|
||||||
|
ratioLabel.setVisible(false);
|
||||||
|
maxChanceSpinner.setVisible(false);
|
||||||
|
tfPane.revalidate();
|
||||||
|
tfPane.repaint();
|
||||||
|
listener.valueChanged(chanceSpinner, chanceSpinner.getValue().toString());
|
||||||
|
} else if (entryTypeBox.getSelectedItem() == ratio) {
|
||||||
|
int chance = ((Integer)chanceSpinner.getValue());
|
||||||
|
chanceSpinner.setModel(ratioChanceModel);
|
||||||
|
chanceSpinner.setValue(chance);
|
||||||
|
maxChanceSpinner.setValue(100);
|
||||||
|
ratioLabel.setVisible(true);
|
||||||
|
maxChanceSpinner.setVisible(true);
|
||||||
|
tfPane.revalidate();
|
||||||
|
tfPane.repaint();
|
||||||
|
listener.valueChanged(chanceSpinner, chanceSpinner.getValue().toString() + "/" + maxChanceSpinner.getValue().toString());
|
||||||
|
}
|
||||||
|
}
|
||||||
|
});
|
||||||
|
chanceSpinner.addChangeListener(new ChangeListener() {
|
||||||
|
@Override
|
||||||
|
public void stateChanged(ChangeEvent e) {
|
||||||
|
if (entryTypeBox.getSelectedItem() == percent) {
|
||||||
|
listener.valueChanged(chanceSpinner, chanceSpinner.getValue().toString());
|
||||||
|
} else if (entryTypeBox.getSelectedItem() == ratio) {
|
||||||
|
listener.valueChanged(chanceSpinner, chanceSpinner.getValue().toString() + "/" + maxChanceSpinner.getValue().toString());
|
||||||
|
}
|
||||||
|
}
|
||||||
|
});
|
||||||
|
maxChanceSpinner.addChangeListener(new ChangeListener() {
|
||||||
|
@Override
|
||||||
|
public void stateChanged(ChangeEvent e) {
|
||||||
|
listener.valueChanged(chanceSpinner, chanceSpinner.getValue().toString() + "/" + maxChanceSpinner.getValue().toString());
|
||||||
|
}
|
||||||
|
});
|
||||||
|
nullify.addActionListener(new ActionListener() {
|
||||||
|
@Override
|
||||||
|
public void actionPerformed(ActionEvent e) {
|
||||||
|
chanceSpinner.setValue(1);
|
||||||
|
listener.valueChanged(chanceSpinner, null);
|
||||||
|
}
|
||||||
|
});
|
||||||
|
return chanceSpinner;
|
||||||
|
}
|
||||||
|
|
||||||
// public static JSpinner addDoubleField(JPanel pane, String label, Double initialValue, boolean editable) {
|
// public static JSpinner addDoubleField(JPanel pane, String label, Double initialValue, boolean editable) {
|
||||||
// return addDoubleField(pane, label, initialValue, editable, nullListener);
|
// return addDoubleField(pane, label, initialValue, editable, nullListener);
|
||||||
// }
|
// }
|
||||||
|
|||||||
@@ -123,7 +123,7 @@ public class DialogueEditor extends JSONElementEditor {
|
|||||||
private MyComboBox requirementObj;
|
private MyComboBox requirementObj;
|
||||||
@SuppressWarnings("rawtypes")
|
@SuppressWarnings("rawtypes")
|
||||||
private JComboBox requirementSkill;
|
private JComboBox requirementSkill;
|
||||||
private JTextField requirementObjId;
|
private JComponent requirementObjId;
|
||||||
private JComponent requirementValue;
|
private JComponent requirementValue;
|
||||||
private BooleanBasedCheckBox requirementNegated;
|
private BooleanBasedCheckBox requirementNegated;
|
||||||
|
|
||||||
@@ -722,6 +722,11 @@ public class DialogueEditor extends JSONElementEditor {
|
|||||||
requirementObjId = null;
|
requirementObjId = null;
|
||||||
requirementValue = addIntegerField(pane, "Quantity: ", requirement.required_value, false, writable, listener);
|
requirementValue = addIntegerField(pane, "Quantity: ", requirement.required_value, false, writable, listener);
|
||||||
break;
|
break;
|
||||||
|
case random:
|
||||||
|
requirementObj = null;
|
||||||
|
requirementObjId = addChanceField(pane, "Chance: ", requirement.required_obj_id, "50/100", writable, listener);
|
||||||
|
requirementValue = null;
|
||||||
|
break;
|
||||||
case hasActorCondition:
|
case hasActorCondition:
|
||||||
requirementObj = addActorConditionBox(pane, project, "Actor Condition: ", (ActorCondition) requirement.required_obj, writable, listener);
|
requirementObj = addActorConditionBox(pane, project, "Actor Condition: ", (ActorCondition) requirement.required_obj, writable, listener);
|
||||||
requirementObjId = null;
|
requirementObjId = null;
|
||||||
@@ -730,6 +735,8 @@ public class DialogueEditor extends JSONElementEditor {
|
|||||||
case inventoryKeep:
|
case inventoryKeep:
|
||||||
case inventoryRemove:
|
case inventoryRemove:
|
||||||
case usedItem:
|
case usedItem:
|
||||||
|
case wear:
|
||||||
|
case wearRemove:
|
||||||
requirementObj = addItemBox(pane, project, "Item: ", (Item) requirement.required_obj, writable, listener);
|
requirementObj = addItemBox(pane, project, "Item: ", (Item) requirement.required_obj, writable, listener);
|
||||||
requirementObjId = null;
|
requirementObjId = null;
|
||||||
requirementValue = addIntegerField(pane, "Quantity: ", requirement.required_value, false, writable, listener);
|
requirementValue = addIntegerField(pane, "Quantity: ", requirement.required_value, false, writable, listener);
|
||||||
@@ -765,10 +772,10 @@ public class DialogueEditor extends JSONElementEditor {
|
|||||||
requirementObjId = addTextField(pane, "Faction ID:", requirement.required_obj_id, writable, listener);
|
requirementObjId = addTextField(pane, "Faction ID:", requirement.required_obj_id, writable, listener);
|
||||||
requirementValue = addIntegerField(pane, "Minimum score: ", requirement.required_value, true, writable, listener);
|
requirementValue = addIntegerField(pane, "Minimum score: ", requirement.required_value, true, writable, listener);
|
||||||
break;
|
break;
|
||||||
case wear:
|
case factionScoreEquals:
|
||||||
requirementObj = addItemBox(pane, project, "Item: ", (Item) requirement.required_obj, writable, listener);
|
requirementObj = null;
|
||||||
requirementObjId = null;
|
requirementObjId = addTextField(pane, "Faction ID:", requirement.required_obj_id, writable, listener);
|
||||||
requirementValue = null;
|
requirementValue = addIntegerField(pane, "Exact value: ", requirement.required_value, true, writable, listener);
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
requirementNegated = addBooleanBasedCheckBox(pane, "Negate this requirement.", requirement.negated, writable, listener);
|
requirementNegated = addBooleanBasedCheckBox(pane, "Negate this requirement.", requirement.negated, writable, listener);
|
||||||
@@ -1169,7 +1176,7 @@ public class DialogueEditor extends JSONElementEditor {
|
|||||||
label.setIcon(new ImageIcon(DefaultIcons.getBonemealIcon()));
|
label.setIcon(new ImageIcon(DefaultIcons.getBonemealIcon()));
|
||||||
} else if (req.type == Requirement.RequirementType.timerElapsed) {
|
} else if (req.type == Requirement.RequirementType.timerElapsed) {
|
||||||
label.setIcon(new ImageIcon(DefaultIcons.getTimerIcon()));
|
label.setIcon(new ImageIcon(DefaultIcons.getTimerIcon()));
|
||||||
} else if (req.type == Requirement.RequirementType.factionScore) {
|
} else if (req.type == Requirement.RequirementType.factionScore || req.type == Requirement.RequirementType.factionScoreEquals) {
|
||||||
label.setIcon(new ImageIcon(DefaultIcons.getAlignmentIcon()));
|
label.setIcon(new ImageIcon(DefaultIcons.getAlignmentIcon()));
|
||||||
}
|
}
|
||||||
if (req.type == null) {
|
if (req.type == null) {
|
||||||
|
|||||||
@@ -50,7 +50,7 @@ public class DroplistEditor extends JSONElementEditor {
|
|||||||
private DroppedItemsListModel droppedItemsListModel;
|
private DroppedItemsListModel droppedItemsListModel;
|
||||||
private JSpinner qtyMinField;
|
private JSpinner qtyMinField;
|
||||||
private JSpinner qtyMaxField;
|
private JSpinner qtyMaxField;
|
||||||
private JSpinner chanceField;
|
private JComponent chanceField;
|
||||||
|
|
||||||
public DroplistEditor(Droplist droplist) {
|
public DroplistEditor(Droplist droplist) {
|
||||||
super(droplist, droplist.getDesc(), droplist.getIcon());
|
super(droplist, droplist.getDesc(), droplist.getIcon());
|
||||||
@@ -142,7 +142,7 @@ public class DroplistEditor extends JSONElementEditor {
|
|||||||
itemCombo = addItemBox(pane, proj, "Item: ", di.item, writable, listener);
|
itemCombo = addItemBox(pane, proj, "Item: ", di.item, writable, listener);
|
||||||
qtyMinField = addIntegerField(pane, "Quantity min: ", di.quantity_min, false, writable, listener);
|
qtyMinField = addIntegerField(pane, "Quantity min: ", di.quantity_min, false, writable, listener);
|
||||||
qtyMaxField = addIntegerField(pane, "Quantity max: ", di.quantity_max, false, writable, listener);
|
qtyMaxField = addIntegerField(pane, "Quantity max: ", di.quantity_max, false, writable, listener);
|
||||||
chanceField = addDoubleField(pane, "Chance: ", di.chance, writable, listener);
|
chanceField = addChanceField(pane, "Chance: ", di.chance, "100", writable, listener);//addDoubleField(pane, "Chance: ", di.chance, writable, listener);
|
||||||
}
|
}
|
||||||
pane.revalidate();
|
pane.revalidate();
|
||||||
pane.repaint();
|
pane.repaint();
|
||||||
@@ -221,9 +221,9 @@ public class DroplistEditor extends JSONElementEditor {
|
|||||||
Droplist.DroppedItem di = (Droplist.DroppedItem)value;
|
Droplist.DroppedItem di = (Droplist.DroppedItem)value;
|
||||||
if (di.item != null) {
|
if (di.item != null) {
|
||||||
label.setIcon(new ImageIcon(di.item.getIcon()));
|
label.setIcon(new ImageIcon(di.item.getIcon()));
|
||||||
label.setText(di.chance+"% to get "+di.quantity_min+"-"+di.quantity_max+" "+di.item.getDesc());
|
label.setText(di.chance+(di.chance != null && di.chance.contains("/") ? "" : "%")+" to get "+di.quantity_min+"-"+di.quantity_max+" "+di.item.getDesc());
|
||||||
} else if (!isNull(di)) {
|
} else if (!isNull(di)) {
|
||||||
label.setText(di.chance+"% to get "+di.quantity_min+"-"+di.quantity_max+" "+di.item_id);
|
label.setText(di.chance+(di.chance != null && di.chance.contains("/") ? "" : "%")+" to get "+di.quantity_min+"-"+di.quantity_max+" "+di.item_id);
|
||||||
} else {
|
} else {
|
||||||
label.setText("New, undefined, dropped item.");
|
label.setText("New, undefined, dropped item.");
|
||||||
}
|
}
|
||||||
@@ -283,7 +283,7 @@ public class DroplistEditor extends JSONElementEditor {
|
|||||||
selectedItem.quantity_max = (Integer) value;
|
selectedItem.quantity_max = (Integer) value;
|
||||||
droppedItemsListModel.itemChanged(selectedItem);
|
droppedItemsListModel.itemChanged(selectedItem);
|
||||||
} else if (source == chanceField) {
|
} else if (source == chanceField) {
|
||||||
selectedItem.chance = (Double) value;
|
selectedItem.chance = (String) value;
|
||||||
droppedItemsListModel.itemChanged(selectedItem);
|
droppedItemsListModel.itemChanged(selectedItem);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -82,6 +82,7 @@ public class ItemEditor extends JSONElementEditor {
|
|||||||
private JSpinner equipBoostBC;
|
private JSpinner equipBoostBC;
|
||||||
private JSpinner equipBoostCS;
|
private JSpinner equipBoostCS;
|
||||||
private JSpinner equipSetCM;
|
private JSpinner equipSetCM;
|
||||||
|
private JSpinner equipSetDM;
|
||||||
private JSpinner equipBoostDR;
|
private JSpinner equipBoostDR;
|
||||||
private JSpinner equipIncMoveCost;
|
private JSpinner equipIncMoveCost;
|
||||||
private JSpinner equipIncUseCost;
|
private JSpinner equipIncUseCost;
|
||||||
@@ -217,6 +218,7 @@ public class ItemEditor extends JSONElementEditor {
|
|||||||
}
|
}
|
||||||
equipDmgMin = addIntegerField(equipEffectPane, "Attack Damage min: ", equipEffect.damage_boost_min, true, item.writable, listener);
|
equipDmgMin = addIntegerField(equipEffectPane, "Attack Damage min: ", equipEffect.damage_boost_min, true, item.writable, listener);
|
||||||
equipDmgMax = addIntegerField(equipEffectPane, "Attack Damage max: ", equipEffect.damage_boost_max, true, item.writable, listener);
|
equipDmgMax = addIntegerField(equipEffectPane, "Attack Damage max: ", equipEffect.damage_boost_max, true, item.writable, listener);
|
||||||
|
equipSetDM = addIntegerField(equipEffectPane, "Damage modifier %: ", equipEffect.damage_modifier, 100, false, item.writable, listener);
|
||||||
equipBoostHP = addIntegerField(equipEffectPane, "Boost max HP: ", equipEffect.max_hp_boost, true, item.writable, listener);
|
equipBoostHP = addIntegerField(equipEffectPane, "Boost max HP: ", equipEffect.max_hp_boost, true, item.writable, listener);
|
||||||
equipBoostAP = addIntegerField(equipEffectPane, "Boost max AP: ", equipEffect.max_ap_boost, true, item.writable, listener);
|
equipBoostAP = addIntegerField(equipEffectPane, "Boost max AP: ", equipEffect.max_ap_boost, true, item.writable, listener);
|
||||||
equipBoostAC = addIntegerField(equipEffectPane, "Boost attack chance: ", equipEffect.increase_attack_chance, true, item.writable, listener);
|
equipBoostAC = addIntegerField(equipEffectPane, "Boost attack chance: ", equipEffect.increase_attack_chance, true, item.writable, listener);
|
||||||
@@ -1431,6 +1433,7 @@ public class ItemEditor extends JSONElementEditor {
|
|||||||
public static boolean isNull(Item.EquipEffect effect) {
|
public static boolean isNull(Item.EquipEffect effect) {
|
||||||
if (effect.conditions != null) return false;
|
if (effect.conditions != null) return false;
|
||||||
if (effect.critical_multiplier != null) return false;
|
if (effect.critical_multiplier != null) return false;
|
||||||
|
if (effect.damage_modifier != null) return false;
|
||||||
if (effect.damage_boost_max != null) return false;
|
if (effect.damage_boost_max != null) return false;
|
||||||
if (effect.damage_boost_min != null) return false;
|
if (effect.damage_boost_min != null) return false;
|
||||||
if (effect.increase_attack_chance != null) return false;
|
if (effect.increase_attack_chance != null) return false;
|
||||||
@@ -1619,6 +1622,10 @@ public class ItemEditor extends JSONElementEditor {
|
|||||||
equipEffect.critical_multiplier = (Double) value;
|
equipEffect.critical_multiplier = (Double) value;
|
||||||
updatePrice = true;
|
updatePrice = true;
|
||||||
updateEquip = true;
|
updateEquip = true;
|
||||||
|
} else if (source == equipSetDM) {
|
||||||
|
equipEffect.damage_modifier = (Integer) value;
|
||||||
|
updatePrice = true;
|
||||||
|
updateEquip = true;
|
||||||
} else if (source == equipBoostDR) {
|
} else if (source == equipBoostDR) {
|
||||||
equipEffect.increase_damage_resistance = (Integer) value;
|
equipEffect.increase_damage_resistance = (Integer) value;
|
||||||
updatePrice = true;
|
updatePrice = true;
|
||||||
|
|||||||
File diff suppressed because it is too large
Load Diff
@@ -521,16 +521,6 @@ public class WorldMapView extends JComponent implements Scrollable {
|
|||||||
}
|
}
|
||||||
worldmap.getProject().getMap(id).addBacklink(worldmap);
|
worldmap.getProject().getMap(id).addBacklink(worldmap);
|
||||||
}
|
}
|
||||||
|
|
||||||
List<String> toRemove = new ArrayList<String>();
|
|
||||||
for (String s : worldmap.labels.keySet()) {
|
|
||||||
if (!mapLocations.containsKey(s)) {
|
|
||||||
toRemove.add(s);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
for (String s : toRemove) {
|
|
||||||
worldmap.labels.remove(s);
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -37,7 +37,7 @@ public class ItemsTableView extends ElementTableView {
|
|||||||
|
|
||||||
@Override
|
@Override
|
||||||
public int getColumnCount() {
|
public int getColumnCount() {
|
||||||
return 33;
|
return 43;
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
@@ -62,20 +62,30 @@ public class ItemsTableView extends ElementTableView {
|
|||||||
case 16: return "On kill - AP min";
|
case 16: return "On kill - AP min";
|
||||||
case 17: return "On kill - AP max";
|
case 17: return "On kill - AP max";
|
||||||
case 18: return "On kill - # conditions";
|
case 18: return "On kill - # conditions";
|
||||||
case 19: return "AD min";
|
case 19: return "On hit recv - HP min";
|
||||||
case 20: return "AD max";
|
case 20: return "On hit recv - HP max";
|
||||||
case 21: return "Max HP";
|
case 21: return "On hit recv - AP min";
|
||||||
case 22: return "Max AP";
|
case 22: return "On hit recv - AP max";
|
||||||
case 23: return "Attack cost";
|
case 23: return "On hit recv - # conditions";
|
||||||
case 24: return "AC";
|
case 24: return "On hit recv - Tgt HP min";
|
||||||
case 25: return "BC";
|
case 25: return "On hit recv - Tgt HP max";
|
||||||
case 26: return "DR";
|
case 26: return "On hit recv - Tgt AP min";
|
||||||
case 27: return "CS";
|
case 27: return "On hit recv - Tgt AP max";
|
||||||
case 28: return "CM";
|
case 28: return "AD min";
|
||||||
case 29: return "Move cost";
|
case 29: return "AD max";
|
||||||
case 30: return "Use cost";
|
case 30: return "Damage modifier %";
|
||||||
case 31: return "Reequip cost";
|
case 31: return "Max HP";
|
||||||
case 32: return "# conditions";
|
case 32: return "Max AP";
|
||||||
|
case 33: return "Attack cost";
|
||||||
|
case 34: return "AC";
|
||||||
|
case 35: return "BC";
|
||||||
|
case 36: return "DR";
|
||||||
|
case 37: return "CS";
|
||||||
|
case 38: return "CM";
|
||||||
|
case 39: return "Move cost";
|
||||||
|
case 40: return "Use cost";
|
||||||
|
case 41: return "Reequip cost";
|
||||||
|
case 42: return "# conditions";
|
||||||
}
|
}
|
||||||
return null;
|
return null;
|
||||||
}
|
}
|
||||||
@@ -103,20 +113,30 @@ public class ItemsTableView extends ElementTableView {
|
|||||||
case 16: return Integer.class;//"On kill - AP min";
|
case 16: return Integer.class;//"On kill - AP min";
|
||||||
case 17: return Integer.class;//"On kill - AP max";
|
case 17: return Integer.class;//"On kill - AP max";
|
||||||
case 18: return Integer.class;//"On kill - # conditions";
|
case 18: return Integer.class;//"On kill - # conditions";
|
||||||
case 19: return Integer.class;//"AD min";
|
case 19: return Integer.class;//"On hit recv - HP min";
|
||||||
case 20: return Integer.class;//"AD max";
|
case 20: return Integer.class;//"On hit recv - HP max";
|
||||||
case 21: return Integer.class;//"Max HP";
|
case 21: return Integer.class;//"On hit recv - AP min";
|
||||||
case 22: return Integer.class;//"Max AP";
|
case 22: return Integer.class;//"On hit recv - AP max";
|
||||||
case 23: return Integer.class;//"Attack cost";
|
case 23: return Integer.class;//"On hit recv - # conditions";
|
||||||
case 24: return Integer.class;//"AC";
|
case 24: return Integer.class;//"On hit recv - Tgt HP min";
|
||||||
case 25: return Integer.class;//"BC";
|
case 25: return Integer.class;//"On hit recv - Tgt HP max";
|
||||||
case 26: return Integer.class;//"DR";
|
case 26: return Integer.class;//"On hit recv - Tgt AP min";
|
||||||
case 27: return Integer.class;//"CS";
|
case 27: return Integer.class;//"On hit recv - Tgt AP max";
|
||||||
case 28: return Double.class;//"CM";
|
case 28: return Integer.class;//"AD min";
|
||||||
case 29: return Integer.class;//"Move cost";
|
case 29: return Integer.class;//"AD max";
|
||||||
case 30: return Integer.class;//"Use cost";
|
case 30: return Integer.class;//"Damage modifier";
|
||||||
case 31: return Integer.class;//"Reequip cost";
|
case 31: return Integer.class;//"Max HP";
|
||||||
case 32: return Integer.class;//"# conditions";
|
case 32: return Integer.class;//"Max AP";
|
||||||
|
case 33: return Integer.class;//"Attack cost";
|
||||||
|
case 34: return Integer.class;//"AC";
|
||||||
|
case 35: return Integer.class;//"BC";
|
||||||
|
case 36: return Integer.class;//"DR";
|
||||||
|
case 37: return Integer.class;//"CS";
|
||||||
|
case 38: return Double.class;//"CM";
|
||||||
|
case 39: return Integer.class;//"Move cost";
|
||||||
|
case 40: return Integer.class;//"Use cost";
|
||||||
|
case 41: return Integer.class;//"Reequip cost";
|
||||||
|
case 42: return Integer.class;//"# conditions";
|
||||||
}
|
}
|
||||||
return null;
|
return null;
|
||||||
}
|
}
|
||||||
@@ -177,20 +197,30 @@ public class ItemsTableView extends ElementTableView {
|
|||||||
case 16: return (!canUse && item.kill_effect != null) ? item.kill_effect.ap_boost_min : null;//"On kill - AP min";
|
case 16: return (!canUse && item.kill_effect != null) ? item.kill_effect.ap_boost_min : null;//"On kill - AP min";
|
||||||
case 17: return (!canUse && item.kill_effect != null) ? item.kill_effect.ap_boost_max : null;//"On kill - AP max";
|
case 17: return (!canUse && item.kill_effect != null) ? item.kill_effect.ap_boost_max : null;//"On kill - AP max";
|
||||||
case 18: return (!canUse && item.kill_effect != null && item.kill_effect.conditions_source != null) ? item.kill_effect.conditions_source.size() : null;//"On kill - # conditions";
|
case 18: return (!canUse && item.kill_effect != null && item.kill_effect.conditions_source != null) ? item.kill_effect.conditions_source.size() : null;//"On kill - # conditions";
|
||||||
case 19: return (canEquip && item.equip_effect != null) ? item.equip_effect.damage_boost_min : null;//"AD min";
|
case 19: return (!canUse && item.hit_received_effect != null) ? item.hit_received_effect.hp_boost_min : null;//"On hit recv - HP min";
|
||||||
case 20: return (canEquip && item.equip_effect != null) ? item.equip_effect.damage_boost_max : null;//"AD max";
|
case 20: return (!canUse && item.hit_received_effect != null) ? item.hit_received_effect.hp_boost_max : null;//"On hit recv - HP max";
|
||||||
case 21: return (canEquip && item.equip_effect != null) ? item.equip_effect.max_hp_boost : null;//"Max HP";
|
case 21: return (!canUse && item.hit_received_effect != null) ? item.hit_received_effect.ap_boost_min : null;//"On hit recv - AP min";
|
||||||
case 22: return (canEquip && item.equip_effect != null) ? item.equip_effect.max_ap_boost : null;//"Max AP";
|
case 22: return (!canUse && item.hit_received_effect != null) ? item.hit_received_effect.ap_boost_max : null;//"On hit recv - AP max";
|
||||||
case 23: return (canEquip && item.equip_effect != null) ? item.equip_effect.increase_attack_cost : null;//"Attack cost";
|
case 23: return (!canUse && item.hit_received_effect != null && item.hit_received_effect.conditions_source != null) ? item.hit_received_effect.conditions_source.size() : null;//"On hit recv - # conditions";
|
||||||
case 24: return (canEquip && item.equip_effect != null) ? item.equip_effect.increase_attack_chance : null;//"AC";
|
case 24: return (!canUse && item.hit_received_effect != null) ? item.hit_received_effect.hp_boost_min : null;//"On hit recv - Tgt HP min";
|
||||||
case 25: return (canEquip && item.equip_effect != null) ? item.equip_effect.increase_block_chance : null;//"BC";
|
case 25: return (!canUse && item.hit_received_effect != null) ? item.hit_received_effect.hp_boost_max : null;//"On hit recv - Tgt HP max";
|
||||||
case 26: return (canEquip && item.equip_effect != null) ? item.equip_effect.increase_damage_resistance : null;//"DR";
|
case 26: return (!canUse && item.hit_received_effect != null) ? item.hit_received_effect.ap_boost_min : null;//"On hit recv - Tgt AP min";
|
||||||
case 27: return (canEquip && item.equip_effect != null) ? item.equip_effect.increase_critical_skill : null;//"CS";
|
case 27: return (!canUse && item.hit_received_effect != null) ? item.hit_received_effect.ap_boost_max : null;//"On hit recv - Tgt AP max";
|
||||||
case 28: return (canEquip && item.equip_effect != null) ? item.equip_effect.critical_multiplier : null;//"CM";
|
case 28: return (canEquip && item.equip_effect != null) ? item.equip_effect.damage_boost_min : null;//"AD min";
|
||||||
case 29: return (canEquip && item.equip_effect != null) ? item.equip_effect.increase_move_cost : null;//"Move cost";
|
case 29: return (canEquip && item.equip_effect != null) ? item.equip_effect.damage_boost_max : null;//"AD max";
|
||||||
case 30: return (canEquip && item.equip_effect != null) ? item.equip_effect.increase_use_item_cost : null;//"Use cost";
|
case 30: return (canEquip && item.equip_effect != null) ? item.equip_effect.damage_modifier : null;//"Damage modifier";
|
||||||
case 31: return (canEquip && item.equip_effect != null) ? item.equip_effect.increase_reequip_cost : null;//"Reequip cost";
|
case 31: return (canEquip && item.equip_effect != null) ? item.equip_effect.max_hp_boost : null;//"Max HP";
|
||||||
case 32: return (canEquip && item.equip_effect != null && item.equip_effect.conditions != null) ? item.equip_effect.conditions.size() : null;//"# conditions";
|
case 32: return (canEquip && item.equip_effect != null) ? item.equip_effect.max_ap_boost : null;//"Max AP";
|
||||||
|
case 33: return (canEquip && item.equip_effect != null) ? item.equip_effect.increase_attack_cost : null;//"Attack cost";
|
||||||
|
case 34: return (canEquip && item.equip_effect != null) ? item.equip_effect.increase_attack_chance : null;//"AC";
|
||||||
|
case 35: return (canEquip && item.equip_effect != null) ? item.equip_effect.increase_block_chance : null;//"BC";
|
||||||
|
case 36: return (canEquip && item.equip_effect != null) ? item.equip_effect.increase_damage_resistance : null;//"DR";
|
||||||
|
case 37: return (canEquip && item.equip_effect != null) ? item.equip_effect.increase_critical_skill : null;//"CS";
|
||||||
|
case 38: return (canEquip && item.equip_effect != null) ? item.equip_effect.critical_multiplier : null;//"CM";
|
||||||
|
case 39: return (canEquip && item.equip_effect != null) ? item.equip_effect.increase_move_cost : null;//"Move cost";
|
||||||
|
case 40: return (canEquip && item.equip_effect != null) ? item.equip_effect.increase_use_item_cost : null;//"Use cost";
|
||||||
|
case 41: return (canEquip && item.equip_effect != null) ? item.equip_effect.increase_reequip_cost : null;//"Reequip cost";
|
||||||
|
case 42: return (canEquip && item.equip_effect != null && item.equip_effect.conditions != null) ? item.equip_effect.conditions.size() : null;//"# conditions";
|
||||||
}
|
}
|
||||||
return null;
|
return null;
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -12,6 +12,8 @@ import java.io.BufferedReader;
|
|||||||
import java.io.File;
|
import java.io.File;
|
||||||
import java.io.FileReader;
|
import java.io.FileReader;
|
||||||
import java.io.IOException;
|
import java.io.IOException;
|
||||||
|
import java.nio.charset.StandardCharsets;
|
||||||
|
import java.nio.file.Files;
|
||||||
import java.util.Vector;
|
import java.util.Vector;
|
||||||
|
|
||||||
public class POParser
|
public class POParser
|
||||||
@@ -60,11 +62,9 @@ public class POParser
|
|||||||
POFile result = null;
|
POFile result = null;
|
||||||
try
|
try
|
||||||
{
|
{
|
||||||
FileReader fr = new FileReader(file);
|
BufferedReader br = Files.newBufferedReader(file.toPath(), StandardCharsets.UTF_8);
|
||||||
BufferedReader br = new BufferedReader(fr);
|
|
||||||
result = parse(br);
|
result = parse(br);
|
||||||
br.close();
|
br.close();
|
||||||
fr.close();
|
|
||||||
}
|
}
|
||||||
catch (java.io.FileNotFoundException e)
|
catch (java.io.FileNotFoundException e)
|
||||||
{
|
{
|
||||||
|
|||||||
Reference in New Issue
Block a user