diff --git a/Makefile b/Makefile index 3ac9a5c8b8..35a2900fe2 100644 --- a/Makefile +++ b/Makefile @@ -227,6 +227,7 @@ life ?= 10 ai1 ?= MMABFast ai2 ?= MMABFast debug ?= false +parseMissing ?= false devMode ?= false selfMode ?= false flags ?= @@ -237,6 +238,7 @@ flags ?= $(RUN) ${flags} \ -Dmagarena.dir=`pwd`/release \ -Ddebug=${debug} \ + -DparseMissing=${parseMissing} \ -DdevMode=${devMode} \ -Dgame.log=$*.log \ -Djava.awt.headless=true \ @@ -813,26 +815,22 @@ missing_override: grep public -B1 -r release/Magarena/scripts | awk '/Override/ {skip = NR + 1} NR != skip {print $$0}' | grep -v Override | grep release > $@ parse_new.txt: cards/existing_master.txt - patch -p1 < parse_missing.patch cp `grep status=not -Lr release/Magarena/scripts_missing/` release/Magarena/scripts -rm 101.out - make debug + make parseMissing=true debug grep "ERROR " 101.out | sed 's/java.lang.RuntimeException: //' | sed 's/\(ERROR.*\) \(cause: .*\)/\2 \1/' | sort > parse_missing.txt grep OK 101.out | sed 's/OK card: //' | sort > parse_ok.txt git clean -qf release/Magarena/scripts - patch -p1 -R < parse_missing.patch join -v2 -t'_' $^ parse_ok.txt > $@ diff parse_new.ignore $@ parse_groovy.txt: cards/groovy.txt - patch -p1 < parse_missing.patch cp scripts-builder/OUTPUT/scripts_missing/* release/Magarena/scripts -rm 101.out - make debug + make parseMissing=true debug grep "ERROR " 101.out | sed 's/java.lang.RuntimeException: //' | sed 's/\(ERROR.*\) \(cause: .*\)/\2 \1/' | sort > parse_missing.txt grep OK 101.out | sed 's/OK card: //' | sort > parse_ok.txt git checkout -- release/Magarena/scripts - patch -p1 -R < parse_missing.patch join -t'_' <(sort $^) <(sort parse_ok.txt) > $@ diff parse_groovy.ignore $@ diff --git a/src/magic/data/CardDefinitions.java b/src/magic/data/CardDefinitions.java index 6cfbe1054a..ba7e9543c1 100644 --- a/src/magic/data/CardDefinitions.java +++ b/src/magic/data/CardDefinitions.java @@ -173,8 +173,11 @@ public class CardDefinitions { final MagicCardDefinition cdef = prop2carddef(file, false); addDefinition(cdef); } catch (final Throwable cause) { - //System.out.println("ERROR file: " + file + " cause: " + cause.getMessage()); - throw new RuntimeException("Error loading " + file, cause); + if (MagicSystem.isParseMissing()) { + System.out.println("ERROR file: " + file + " cause: " + cause.getMessage()); + } else { + throw new RuntimeException("Error loading " + file, cause); + } } } @@ -228,9 +231,15 @@ public class CardDefinitions { executor.execute(() -> { try { cdef.loadAbilities(); + if (MagicSystem.isParseMissing() && !cdef.isToken()) { + System.out.println("OK card: " + cdef); + } } catch (Throwable cause) { - //System.out.println("ERROR card: " + cdef + " cause: " + cause.getMessage()); - throw new RuntimeException("Unable to load " + cdef, cause); + if (MagicSystem.isParseMissing()) { + System.out.println("ERROR card: " + cdef + " cause: " + cause.getMessage()); + } else { + throw new RuntimeException("Unable to load " + cdef, cause); + } } }); });