From 176cf1dd764b41064b2f830ef186d1640aeecf1d Mon Sep 17 00:00:00 2001 From: Gonk Date: Sat, 11 May 2019 21:27:11 +0200 Subject: [PATCH] Use chance member in Requirement for random requirements - it is based on the text in requireID - adjusted parsing --- .../controller/ConversationController.java | 3 +-- .../rpg/AndorsTrail/model/map/TMXMapTranslator.java | 11 ++++++++++- .../gpl/rpg/AndorsTrail/model/script/Requirement.java | 8 ++++++-- .../resource/parsers/ConversationListParser.java | 7 +++++-- 4 files changed, 22 insertions(+), 7 deletions(-) diff --git a/AndorsTrail/src/com/gpl/rpg/AndorsTrail/controller/ConversationController.java b/AndorsTrail/src/com/gpl/rpg/AndorsTrail/controller/ConversationController.java index dd956ff08..5834be335 100644 --- a/AndorsTrail/src/com/gpl/rpg/AndorsTrail/controller/ConversationController.java +++ b/AndorsTrail/src/com/gpl/rpg/AndorsTrail/controller/ConversationController.java @@ -28,7 +28,6 @@ import com.gpl.rpg.AndorsTrail.model.quest.QuestLogEntry; import com.gpl.rpg.AndorsTrail.model.quest.QuestProgress; import com.gpl.rpg.AndorsTrail.model.script.Requirement; import com.gpl.rpg.AndorsTrail.model.script.ScriptEffect; -import com.gpl.rpg.AndorsTrail.resource.parsers.ResourceParserUtils; import com.gpl.rpg.AndorsTrail.util.ConstRange; import com.gpl.rpg.AndorsTrail.util.L; @@ -297,7 +296,7 @@ public final class ConversationController { result = stats.getSpentGold() >= requirement.value; break; case random: - result = Constants.rollResult(ResourceParserUtils.parseChance(requirement.requireID)); + result = Constants.rollResult(requirement.chance); break; case consumedBonemeals: result = stats.getNumberOfUsedBonemealPotions() >= requirement.value; diff --git a/AndorsTrail/src/com/gpl/rpg/AndorsTrail/model/map/TMXMapTranslator.java b/AndorsTrail/src/com/gpl/rpg/AndorsTrail/model/map/TMXMapTranslator.java index 133ee1a61..1b9f50b1d 100644 --- a/AndorsTrail/src/com/gpl/rpg/AndorsTrail/model/map/TMXMapTranslator.java +++ b/AndorsTrail/src/com/gpl/rpg/AndorsTrail/model/map/TMXMapTranslator.java @@ -27,7 +27,9 @@ import com.gpl.rpg.AndorsTrail.model.map.TMXMapFileParser.TMXProperty; import com.gpl.rpg.AndorsTrail.model.map.TMXMapFileParser.TMXTileSet; import com.gpl.rpg.AndorsTrail.model.quest.QuestProgress; import com.gpl.rpg.AndorsTrail.model.script.Requirement; +import com.gpl.rpg.AndorsTrail.resource.parsers.ResourceParserUtils; import com.gpl.rpg.AndorsTrail.resource.tiles.TileCache; +import com.gpl.rpg.AndorsTrail.util.ConstRange; import com.gpl.rpg.AndorsTrail.util.Coord; import com.gpl.rpg.AndorsTrail.util.CoordRect; import com.gpl.rpg.AndorsTrail.util.L; @@ -227,6 +229,7 @@ public final class TMXMapTranslator { String requireId = null; int requireValue = 0; boolean requireNegation = false; + ConstRange requireChance = null; for (TMXProperty p : object.properties) { if (p.name.equalsIgnoreCase("requireType")) { try { @@ -246,7 +249,13 @@ public final class TMXMapTranslator { } } if (requireType == null) return null; - return new Requirement(requireType, requireId, requireValue, requireNegation); + if (requireType == Requirement.RequirementType.random) + { + requireChance = ResourceParserUtils.parseChance(requireId); + requireId = null; + } + + return new Requirement(requireType, requireId, requireValue, requireNegation, requireChance); } private static CoordRect getTMXObjectPosition(TMXObject object, TMXMap m) { diff --git a/AndorsTrail/src/com/gpl/rpg/AndorsTrail/model/script/Requirement.java b/AndorsTrail/src/com/gpl/rpg/AndorsTrail/model/script/Requirement.java index 7555e4fe0..d12f71ec1 100644 --- a/AndorsTrail/src/com/gpl/rpg/AndorsTrail/model/script/Requirement.java +++ b/AndorsTrail/src/com/gpl/rpg/AndorsTrail/model/script/Requirement.java @@ -1,6 +1,7 @@ package com.gpl.rpg.AndorsTrail.model.script; import com.gpl.rpg.AndorsTrail.model.quest.QuestProgress; +import com.gpl.rpg.AndorsTrail.util.ConstRange; public final class Requirement { public static enum RequirementType { @@ -24,18 +25,20 @@ public final class Requirement { public final String requireID; public final int value; public final boolean negate; + public final ConstRange chance; public Requirement( RequirementType requireType , String requireID , int value , boolean negate + , ConstRange chance ) { this.requireType = requireType; this.requireID = requireID; this.value = value; this.negate = negate; - + this.chance = chance; } public Requirement(QuestProgress qp) { @@ -43,6 +46,7 @@ public final class Requirement { this.requireID = qp.questID; this.value = qp.progress; this.negate = false; + this.chance = null; } public String toString() { @@ -75,7 +79,7 @@ public final class Requirement { case spentGold: return value >= 0; case random: - return requireID != null; + return chance != null; case timerElapsed: return requireID != null && value >= 0; case wear: diff --git a/AndorsTrail/src/com/gpl/rpg/AndorsTrail/resource/parsers/ConversationListParser.java b/AndorsTrail/src/com/gpl/rpg/AndorsTrail/resource/parsers/ConversationListParser.java index aef8b1c0f..215c984b2 100644 --- a/AndorsTrail/src/com/gpl/rpg/AndorsTrail/resource/parsers/ConversationListParser.java +++ b/AndorsTrail/src/com/gpl/rpg/AndorsTrail/resource/parsers/ConversationListParser.java @@ -22,11 +22,14 @@ public final class ConversationListParser extends JsonCollectionParserFor requirementParser = new JsonArrayParserFor(Requirement.class) { @Override protected Requirement parseObject(JSONObject o) throws JSONException { + Requirement.RequirementType type = Requirement.RequirementType.valueOf(o.getString(JsonFieldNames.ReplyRequires.requireType)); + String requireID = o.getString(JsonFieldNames.ReplyRequires.requireID); return new Requirement( - Requirement.RequirementType.valueOf(o.getString(JsonFieldNames.ReplyRequires.requireType)) - ,o.getString(JsonFieldNames.ReplyRequires.requireID) + type + ,type == Requirement.RequirementType.random ? null : requireID ,o.optInt(JsonFieldNames.ReplyRequires.value, 0) ,o.optBoolean(JsonFieldNames.ReplyRequires.negate, false) + ,type == Requirement.RequirementType.random ? ResourceParserUtils.parseChance(requireID) : null ); } };