Skip to content

Commit

Permalink
[easyNPC] Changed generated script to work without module
Browse files Browse the repository at this point in the history
  • Loading branch information
mkaring committed Sep 21, 2014
1 parent f5f4515 commit 98e48c4
Show file tree
Hide file tree
Showing 60 changed files with 375 additions and 256 deletions.
18 changes: 11 additions & 7 deletions illacompiler/src/main/java/illarion/compile/Compiler.java
Original file line number Diff line number Diff line change
Expand Up @@ -96,7 +96,10 @@ public static void main(String[] args) {
}
}

private static int returnCode = 3;

private static void processFileMode(@Nonnull CommandLine cmd) throws IOException {
returnCode = 3;
storagePaths = new EnumMap<>(CompilerType.class);
String npcPath = cmd.getOptionValue('n');
if (npcPath != null) {
Expand All @@ -115,16 +118,18 @@ private static void processFileMode(@Nonnull CommandLine cmd) throws IOException
public FileVisitResult visitFile(Path file, BasicFileAttributes attrs) throws IOException {
FileVisitResult result = super.visitFile(file, attrs);
if (result == FileVisitResult.CONTINUE) {
processPath(file);
returnCode = Math.min(processPath(file), returnCode);
return FileVisitResult.CONTINUE;
}
return result;
}
});
} else {
processPath(path);
returnCode = Math.min(processPath(path), returnCode);
}
}

System.exit(returnCode);
}

private static void processStdIn(@Nonnull CommandLine cmd) throws IOException {
Expand All @@ -150,9 +155,9 @@ private static void processStdIn(@Nonnull CommandLine cmd) throws IOException {
System.exit(compile.compileStream(System.in, System.out));
}

private static void processPath(@Nonnull Path path) throws IOException {
private static int processPath(@Nonnull Path path) throws IOException {
if (Files.isDirectory(path)) {
return;
return 0;
}

int compileResult = 1;
Expand Down Expand Up @@ -193,10 +198,9 @@ private static void processPath(@Nonnull Path path) throws IOException {
case 1:
LOGGER.info("Skipped file: {}", path.getFileName());
break;
case 0:
return;
default:
System.exit(compileResult);
return compileResult;
}
return -2;
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -71,8 +71,6 @@ public int compileFile(@Nonnull Path file) {

@Override
public int compileStream(@Nonnull InputStream in, @Nonnull OutputStream out) {
Objects.requireNonNull(in);
Objects.requireNonNull(out);
try {
ensureTargetDir();
ParsedNpc npc = Parser.getInstance().parse(new InputStreamReader(in, DEFAULT_CHARSET));
Expand Down
9 changes: 8 additions & 1 deletion illaeasynpc/src/main/java/illarion/easynpc/ParsedNpc.java
Original file line number Diff line number Diff line change
Expand Up @@ -26,6 +26,7 @@
import java.text.Normalizer;
import java.util.Collection;
import java.util.Collections;
import java.util.Iterator;
import java.util.List;

/**
Expand All @@ -34,7 +35,8 @@
*
* @author Martin Karing &lt;nitram@illarion.org&gt;
*/
public final class ParsedNpc {
public final class ParsedNpc implements Iterable<ParsedData> {

/**
* This support class is used to store all information regarding a error that was found in the script. It stores
* the position where it was found as well as the description of the error.
Expand Down Expand Up @@ -784,4 +786,9 @@ public void setNpcRace(CharacterRace newNpcRace) {
public void setNpcSex(CharacterSex newNpcSex) {
npcSex = newNpcSex;
}

@Override
public Iterator<ParsedData> iterator() {
return npcData.iterator();
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -48,11 +48,6 @@ public enum TradeMode {
selling,
}

/**
* The modules required for the trader NPC implementation.
*/
private static final List<String> MODULES = Arrays.asList("npc_base_basic", "npc_base_trade");

/**
* The mode of this trading operation.
*/
Expand Down Expand Up @@ -84,6 +79,6 @@ public boolean effectsLuaWritingStage(@Nonnull LuaWriter.WritingStage stage) {
@Nonnull
@Override
public Collection<String> getRequiredModules() {
return MODULES;
return Arrays.asList("npc.base.basic", "npc.base.trade");
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -16,6 +16,7 @@
package illarion.easynpc.parsed;

import illarion.easynpc.data.Color;
import illarion.easynpc.writer.LuaRequireTable;
import illarion.easynpc.writer.LuaWriter;
import illarion.easynpc.writer.SQLBuilder;

Expand Down Expand Up @@ -110,7 +111,8 @@ public Collection<String> getRequiredModules() {
*/
@Override
public void writeLua(
@Nonnull Writer target, @Nonnull LuaWriter.WritingStage stage) throws IOException {
@Nonnull Writer target, @Nonnull LuaRequireTable requires, @Nonnull LuaWriter.WritingStage stage) throws
IOException {
// nothing to do
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -15,6 +15,7 @@
*/
package illarion.easynpc.parsed;

import illarion.easynpc.writer.LuaRequireTable;
import illarion.easynpc.writer.LuaWriter;
import illarion.easynpc.writer.SQLBuilder;

Expand Down Expand Up @@ -74,21 +75,21 @@ public boolean effectsLuaWritingStage(@Nonnull LuaWriter.WritingStage stage) {
@Nonnull
@Override
public Collection<String> getRequiredModules() {
return Collections.singleton("npc_base_talk");
return Collections.singleton("npc.base.talk");
}

/**
* Write the LUA code required to ensure this cycle text is working.
*/
@Override
public void writeLua(
@Nonnull Writer target, @Nonnull LuaWriter.WritingStage stage) throws IOException {
@Nonnull Writer target, @Nonnull LuaRequireTable requires, @Nonnull LuaWriter.WritingStage stage) throws IOException {
if (stage == LuaWriter.WritingStage.Talking) {
target.write("talkingNPC:addCycleText(\""); //$NON-NLS-1$
target.write(german);
target.write("\", \""); //$NON-NLS-1$
target.write(english);
target.write("\");"); //$NON-NLS-1$
target.write("\")"); //$NON-NLS-1$
target.write(LuaWriter.NL);
}
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -15,6 +15,7 @@
*/
package illarion.easynpc.parsed;

import illarion.easynpc.writer.LuaRequireTable;
import illarion.easynpc.writer.LuaWriter;
import illarion.easynpc.writer.SQLBuilder;

Expand Down Expand Up @@ -66,7 +67,7 @@ public Collection<String> getRequiredModules() {
*/
@Override
public void writeLua(
@Nonnull Writer target, @Nonnull LuaWriter.WritingStage stage) throws IOException {
@Nonnull Writer target, @Nonnull LuaRequireTable requires, @Nonnull LuaWriter.WritingStage stage) throws IOException {
// nothing to do
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -17,6 +17,7 @@

import illarion.easynpc.data.EquipmentSlots;
import illarion.easynpc.data.Items;
import illarion.easynpc.writer.LuaRequireTable;
import illarion.easynpc.writer.LuaWriter;
import illarion.easynpc.writer.SQLBuilder;

Expand All @@ -35,7 +36,7 @@ public final class ParsedEquipment implements ParsedData {
/**
* The format string for the LUA version of this data type.
*/
private static final String LUA_FORMAT = "mainNPC:setEquipment(%1$s, %2$s);";
private static final String LUA_FORMAT = "mainNPC:setEquipment(%1$s, %2$s)";

/**
* The item that is supposed to be placed in this slot.
Expand Down Expand Up @@ -90,7 +91,7 @@ public Collection<String> getRequiredModules() {
*/
@Override
public void writeLua(
@Nonnull Writer target, @Nonnull LuaWriter.WritingStage stage) throws IOException {
@Nonnull Writer target, @Nonnull LuaRequireTable requires, @Nonnull LuaWriter.WritingStage stage) throws IOException {
if (!effectsLuaWritingStage(stage)) {
return;
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -15,6 +15,7 @@
*/
package illarion.easynpc.parsed;

import illarion.easynpc.writer.LuaRequireTable;
import illarion.easynpc.writer.LuaWriter;
import illarion.easynpc.writer.SQLBuilder;

Expand Down Expand Up @@ -69,11 +70,11 @@ public boolean effectsLuaWritingStage(@Nonnull LuaWriter.WritingStage stage) {
@Nonnull
@Override
public Collection<String> getRequiredModules() {
return Collections.singleton("npc_base_guard");
return Collections.singleton("npc.base.guard");
}

@Override
public void writeLua(@Nonnull Writer target, @Nonnull LuaWriter.WritingStage stage) throws IOException {
public void writeLua(@Nonnull Writer target, @Nonnull LuaRequireTable requires, @Nonnull LuaWriter.WritingStage stage) throws IOException {
if (stage != LuaWriter.WritingStage.Guarding) {
throw new IllegalArgumentException("This function did not request a call for a stage but guarding.");
}
Expand All @@ -85,7 +86,7 @@ public void writeLua(@Nonnull Writer target, @Nonnull LuaWriter.WritingStage sta
target.write(Integer.toString(rangeWest));
target.write(',');
target.write(Integer.toString(rangeEast));
target.write(");");
target.write(")");
target.write(LuaWriter.NL);
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -15,6 +15,7 @@
*/
package illarion.easynpc.parsed;

import illarion.easynpc.writer.LuaRequireTable;
import illarion.easynpc.writer.LuaWriter;
import illarion.easynpc.writer.SQLBuilder;

Expand Down Expand Up @@ -93,11 +94,11 @@ public boolean effectsLuaWritingStage(@Nonnull LuaWriter.WritingStage stage) {
@Nonnull
@Override
public Collection<String> getRequiredModules() {
return Collections.singleton("npc_base_guard");
return Collections.singleton("npc.base.guard");
}

@Override
public void writeLua(@Nonnull Writer target, @Nonnull LuaWriter.WritingStage stage) throws IOException {
public void writeLua(@Nonnull Writer target, @Nonnull LuaRequireTable requires, @Nonnull LuaWriter.WritingStage stage) throws IOException {
if (stage != LuaWriter.WritingStage.Guarding) {
throw new IllegalArgumentException("This function did not request a call for a stage but guarding.");
}
Expand All @@ -119,7 +120,7 @@ public void writeLua(@Nonnull Writer target, @Nonnull LuaWriter.WritingStage sta
target.write(german);
target.write("\", \"");
target.write(english);
target.write("\");");
target.write("\")");
target.write(LuaWriter.NL);
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -16,6 +16,7 @@
package illarion.easynpc.parsed;

import illarion.common.types.Location;
import illarion.easynpc.writer.LuaRequireTable;
import illarion.easynpc.writer.LuaWriter;
import illarion.easynpc.writer.SQLBuilder;

Expand Down Expand Up @@ -56,11 +57,11 @@ public boolean effectsLuaWritingStage(@Nonnull LuaWriter.WritingStage stage) {
@Nonnull
@Override
public Collection<String> getRequiredModules() {
return Collections.singleton("npc_base_guard");
return Collections.singleton("npc.base.guard");
}

@Override
public void writeLua(@Nonnull Writer target, @Nonnull LuaWriter.WritingStage stage) throws IOException {
public void writeLua(@Nonnull Writer target, @Nonnull LuaRequireTable requires, @Nonnull LuaWriter.WritingStage stage) throws IOException {
if (stage != LuaWriter.WritingStage.Guarding) {
throw new IllegalArgumentException("This function did not request a call for a stage but guarding.");
}
Expand All @@ -70,7 +71,7 @@ public void writeLua(@Nonnull Writer target, @Nonnull LuaWriter.WritingStage sta
target.write(Integer.toString(this.target.getScY()));
target.write(',');
target.write(Integer.toString(this.target.getScZ()));
target.write(");");
target.write(")");
target.write(LuaWriter.NL);
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -15,6 +15,7 @@
*/
package illarion.easynpc.parsed;

import illarion.easynpc.writer.LuaRequireTable;
import illarion.easynpc.writer.LuaWriter;
import illarion.easynpc.writer.SQLBuilder;

Expand Down Expand Up @@ -103,7 +104,7 @@ public Collection<String> getRequiredModules() {
*/
@Override
public void writeLua(
@Nonnull Writer target, @Nonnull LuaWriter.WritingStage stage) throws IOException {
@Nonnull Writer target, @Nonnull LuaRequireTable requires, @Nonnull LuaWriter.WritingStage stage) throws IOException {
// nothing
}
}
21 changes: 10 additions & 11 deletions illaeasynpc/src/main/java/illarion/easynpc/parsed/ParsedTalk.java
Original file line number Diff line number Diff line change
Expand Up @@ -17,6 +17,7 @@

import illarion.easynpc.parsed.talk.TalkCondition;
import illarion.easynpc.parsed.talk.TalkConsequence;
import illarion.easynpc.writer.LuaRequireTable;
import illarion.easynpc.writer.LuaWriter;
import illarion.easynpc.writer.SQLBuilder;

Expand Down Expand Up @@ -111,34 +112,32 @@ public Collection<String> getRequiredModules() {
}
}

moduleList.add("npc_base_talk");
moduleList.add("npc_base_basic");
moduleList.add("npc.base.talk");
moduleList.add("npc.base.basic");
return moduleList;
}

/**
* Write the LUA code needed for this talking line.
*/
@Override
public void writeLua(
@Nonnull Writer target, @Nonnull LuaWriter.WritingStage stage) throws IOException {

public void writeLua(@Nonnull Writer target, @Nonnull LuaRequireTable requires, @Nonnull LuaWriter.WritingStage stage) throws IOException {
if (stage == LuaWriter.WritingStage.Talking) {
target.write("if (true) then"); //$NON-NLS-1$
target.write("do"); //$NON-NLS-1$
target.write(LuaWriter.NL);
target.write("local talkEntry = npc_base_talk.talkNPCEntry();"); //$NON-NLS-1$
target.write("local talkEntry = " + requires.getStorage("npc.base.talk") + ".talkNPCEntry()");
target.write(LuaWriter.NL);

for (TalkCondition condition : conditions) {
condition.writeLua(target);
condition.writeLua(target, requires);
}
for (TalkConsequence consequence : consequences) {
consequence.writeLua(target);
consequence.writeLua(target, requires);
}

target.write("talkingNPC:addTalkingEntry(talkEntry);"); //$NON-NLS-1$
target.write("talkingNPC:addTalkingEntry(talkEntry)"); //$NON-NLS-1$
target.write(LuaWriter.NL);
target.write("end;"); //$NON-NLS-1$
target.write("end"); //$NON-NLS-1$
target.write(LuaWriter.NL);
}
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -16,6 +16,7 @@
package illarion.easynpc.parsed;

import illarion.easynpc.parsed.shared.ParsedItemData;
import illarion.easynpc.writer.LuaRequireTable;
import illarion.easynpc.writer.LuaWriter;
import illarion.easynpc.writer.SQLBuilder;

Expand Down Expand Up @@ -66,9 +67,9 @@ public void buildSQL(@Nonnull SQLBuilder builder) {
}

@Override
public void writeLua(@Nonnull Writer target, @Nonnull LuaWriter.WritingStage stage) throws IOException {
public void writeLua(@Nonnull Writer target, @Nonnull LuaRequireTable requires, @Nonnull LuaWriter.WritingStage stage) throws IOException {
if (stage == LuaWriter.WritingStage.Trading) {
target.write("tradingNPC:addItem(npc_base_trade.tradeNPCItem(");
target.write("tradingNPC:addItem(" + requires.getStorage("npc.base.trade") + ".tradeNPCItem(");
target.write(Integer.toString(itemId));
target.write(",");
switch (getMode()) {
Expand Down Expand Up @@ -114,7 +115,7 @@ public void writeLua(@Nonnull Writer target, @Nonnull LuaWriter.WritingStage sta
} else {
target.write("nil");
}
target.write("));");
target.write("))");
target.write(LuaWriter.NL);
}
}
Expand Down
Loading

0 comments on commit 98e48c4

Please sign in to comment.