diff --git a/AndorsTrail/src/com/gpl/rpg/AndorsTrail/Dialogs.java b/AndorsTrail/src/com/gpl/rpg/AndorsTrail/Dialogs.java index ffe0168db..5e781febb 100644 --- a/AndorsTrail/src/com/gpl/rpg/AndorsTrail/Dialogs.java +++ b/AndorsTrail/src/com/gpl/rpg/AndorsTrail/Dialogs.java @@ -66,11 +66,11 @@ public final class Dialogs { showConversation(currentActivity, context, phraseID, npc, true); } - private static void showConversation(final MainActivity currentActivity, final ControllerContext context, final String phraseID, final Monster npc, boolean giveRewardsForFirstPhrase) { + private static void showConversation(final MainActivity currentActivity, final ControllerContext context, final String phraseID, final Monster npc, boolean applyScriptEffectsForFirstPhrase) { context.gameRoundController.pause(); Intent intent = new Intent(currentActivity, ConversationActivity.class); intent.setData(Uri.parse("content://com.gpl.rpg.AndorsTrail/conversation/" + phraseID)); - intent.putExtra("giveRewardsForFirstPhrase", giveRewardsForFirstPhrase); + intent.putExtra("applyScriptEffectsForFirstPhrase", applyScriptEffectsForFirstPhrase); addMonsterIdentifiers(intent, npc); currentActivity.startActivityForResult(intent, MainActivity.INTENTREQUEST_CONVERSATION); } diff --git a/AndorsTrail/src/com/gpl/rpg/AndorsTrail/activity/ConversationActivity.java b/AndorsTrail/src/com/gpl/rpg/AndorsTrail/activity/ConversationActivity.java index 8571d7a28..401239b02 100644 --- a/AndorsTrail/src/com/gpl/rpg/AndorsTrail/activity/ConversationActivity.java +++ b/AndorsTrail/src/com/gpl/rpg/AndorsTrail/activity/ConversationActivity.java @@ -108,21 +108,21 @@ public final class ConversationActivity statementList.setFocusableInTouchMode(false); String phraseID; - boolean giveRewardsForFirstPhrase; + boolean applyScriptEffectsForFirstPhrase; boolean displayLastMessage = true; if (savedInstanceState != null) { conversationState.setCurrentNPC(Dialogs.getMonsterFromBundle(savedInstanceState, world)); ArrayList savedConversationHistory = savedInstanceState.getParcelableArrayList("conversationHistory"); if (savedConversationHistory != null) conversationHistory.addAll(savedConversationHistory); phraseID = savedInstanceState.getString("phraseID"); - giveRewardsForFirstPhrase = false; + applyScriptEffectsForFirstPhrase = false; displayLastMessage = false; } else { conversationState.setCurrentNPC(Dialogs.getMonsterFromIntent(getIntent(), world)); phraseID = getIntent().getData().getLastPathSegment(); - giveRewardsForFirstPhrase = getIntent().getBooleanExtra("giveRewardsForFirstPhrase", true); + applyScriptEffectsForFirstPhrase = getIntent().getBooleanExtra("applyScriptEffectsForFirstPhrase", true); } - conversationState.proceedToPhrase(getResources(), phraseID, giveRewardsForFirstPhrase, displayLastMessage); + conversationState.proceedToPhrase(getResources(), phraseID, applyScriptEffectsForFirstPhrase, displayLastMessage); } @Override @@ -351,10 +351,10 @@ public final class ConversationActivity } @Override - public void onPlayerReceivedRewards(ConversationController.PhraseRewards phraseRewards) { - Loot loot = phraseRewards.loot; + public void onScriptEffectsApplied(ConversationController.ScriptEffectResult scriptEffectResult) { + Loot loot = scriptEffectResult.loot; - for (QuestProgress reward : phraseRewards.questProgress) { + for (QuestProgress reward : scriptEffectResult.questProgress) { Quest q = world.quests.getQuest(reward.questID); if (!q.showInLog) continue; QuestLogEntry logEntry = q.getQuestLogEntry(reward.progress); diff --git a/AndorsTrail/src/com/gpl/rpg/AndorsTrail/controller/ConversationController.java b/AndorsTrail/src/com/gpl/rpg/AndorsTrail/controller/ConversationController.java index 80753c12e..b27b9812a 100644 --- a/AndorsTrail/src/com/gpl/rpg/AndorsTrail/controller/ConversationController.java +++ b/AndorsTrail/src/com/gpl/rpg/AndorsTrail/controller/ConversationController.java @@ -15,6 +15,7 @@ import com.gpl.rpg.AndorsTrail.model.item.Loot; 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.util.ConstRange; import com.gpl.rpg.AndorsTrail.util.L; @@ -32,7 +33,7 @@ public final class ConversationController { private static final ConstRange always = new ConstRange(1, 1); - public static final class PhraseRewards { + public static final class ScriptEffectResult { public final Loot loot = new Loot(); public final ArrayList actorConditions = new ArrayList(); public final ArrayList skillIncrease = new ArrayList(); @@ -47,32 +48,32 @@ public final class ConversationController { } } - private PhraseRewards applyPhraseRewards(final Player player, final Phrase phrase) { - if (phrase.rewards == null || phrase.rewards.length == 0) return null; + private ScriptEffectResult applyScriptEffectsForPhrase(final Player player, final Phrase phrase) { + if (phrase.scriptEffects == null || phrase.scriptEffects.length == 0) return null; - final PhraseRewards result = new PhraseRewards(); - for (Reward reward : phrase.rewards) { - switch (reward.rewardType) { + final ScriptEffectResult result = new ScriptEffectResult(); + for (ScriptEffect effect : phrase.scriptEffects) { + switch (effect.type) { case actorCondition: - addActorConditionReward(player, reward.rewardID, reward.value, result); + addActorConditionReward(player, effect.effectID, effect.value, result); break; case skillIncrease: - addSkillReward(player, SkillCollection.SkillID.valueOf(reward.rewardID), result); + addSkillReward(player, SkillCollection.SkillID.valueOf(effect.effectID), result); break; case dropList: - addDropListReward(player, reward.rewardID, result); + addDropListReward(player, effect.effectID, result); break; case questProgress: - addQuestProgressReward(player, reward.rewardID, reward.value, result); + addQuestProgressReward(player, effect.effectID, effect.value, result); break; case alignmentChange: - addAlignmentReward(player, reward.rewardID, reward.value); + addAlignmentReward(player, effect.effectID, effect.value); break; case giveItem: - addItemReward(reward.rewardID, reward.value, result); + addItemReward(effect.effectID, effect.value, result); break; case createTimer: - world.model.worldData.createTimer(reward.rewardID); + world.model.worldData.createTimer(effect.effectID); break; } } @@ -90,7 +91,7 @@ public final class ConversationController { MovementController.refreshMonsterAggressiveness(world.model.currentMap, world.model.player); } - private void addQuestProgressReward(Player player, String questID, int questProgress, PhraseRewards result) { + private void addQuestProgressReward(Player player, String questID, int questProgress, ScriptEffectResult result) { QuestProgress progress = new QuestProgress(questID, questProgress); boolean added = player.addQuestProgress(progress); if (!added) return; // Only apply exp reward if the quest stage was reached just now (and not re-reached) @@ -101,15 +102,15 @@ public final class ConversationController { result.questProgress.add(progress); } - private void addDropListReward(Player player, String droplistID, PhraseRewards result) { + private void addDropListReward(Player player, String droplistID, ScriptEffectResult result) { world.dropLists.getDropList(droplistID).createRandomLoot(result.loot, player); } - private void addItemReward(String itemTypeID, int quantity, PhraseRewards result) { + private void addItemReward(String itemTypeID, int quantity, ScriptEffectResult result) { result.loot.add(world.itemTypes.getItemType(itemTypeID), quantity); } - private void addSkillReward(Player player, SkillCollection.SkillID skillID, PhraseRewards result) { + private void addSkillReward(Player player, SkillCollection.SkillID skillID, ScriptEffectResult result) { SkillInfo skill = world.skills.getSkill(skillID); boolean addedSkill = controllers.skillController.levelUpSkillByQuest(player, skill); if (addedSkill) { @@ -117,7 +118,7 @@ public final class ConversationController { } } - private void addActorConditionReward(Player player, String conditionTypeID, int value, PhraseRewards result) { + private void addActorConditionReward(Player player, String conditionTypeID, int value, ScriptEffectResult result) { int magnitude = 1; int duration = value; if (value == ActorCondition.DURATION_FOREVER) duration = ActorCondition.DURATION_FOREVER; @@ -149,7 +150,7 @@ public final class ConversationController { public static boolean canFulfillRequirement(WorldContext world, Requirement requirement) { Player player = world.model.player; GameStatistics stats = world.model.statistics; - boolean result = false; + boolean result; switch (requirement.requireType) { case questProgress: result = player.hasExactQuestProgress(requirement.requireID, requirement.value); @@ -247,7 +248,7 @@ public final class ConversationController { void onConversationEndedWithShop(Monster npc); void onConversationEndedWithCombat(Monster npc); void onConversationEndedWithRemoval(Monster npc); - void onPlayerReceivedRewards(ConversationController.PhraseRewards phraseRewards); + void onScriptEffectsApplied(ScriptEffectResult scriptEffectResult); void onConversationCanProceedWithNext(); void onConversationHasReply(Reply r, String message); } @@ -263,7 +264,7 @@ public final class ConversationController { } } - public void proceedToPhrase(final Resources res, String phraseID, boolean giveRewards, boolean displayPhraseMessage) { + public void proceedToPhrase(final Resources res, String phraseID, boolean applyScriptEffects, boolean displayPhraseMessage) { if (phraseID.equalsIgnoreCase(ConversationCollection.PHRASE_CLOSE)) { listener.onConversationEnded(); return; @@ -280,10 +281,10 @@ public final class ConversationController { setCurrentPhrase(res, phraseID); - if (giveRewards) { - ConversationController.PhraseRewards phraseRewards = controllers.conversationController.applyPhraseRewards(player, currentPhrase); - if (phraseRewards != null) { - listener.onPlayerReceivedRewards(phraseRewards); + if (applyScriptEffects) { + ScriptEffectResult scriptEffectResult = controllers.conversationController.applyScriptEffectsForPhrase(player, currentPhrase); + if (scriptEffectResult != null) { + listener.onScriptEffectsApplied(scriptEffectResult); } } @@ -291,7 +292,7 @@ public final class ConversationController { for (Reply r : currentPhrase.replies) { if (!canSelectReply(world, r)) continue; applyReplyEffect(world, r); - proceedToPhrase(res, r.nextPhrase, giveRewards, displayPhraseMessage); + proceedToPhrase(res, r.nextPhrase, applyScriptEffects, displayPhraseMessage); return; } } else if (displayPhraseMessage) { diff --git a/AndorsTrail/src/com/gpl/rpg/AndorsTrail/controller/MapController.java b/AndorsTrail/src/com/gpl/rpg/AndorsTrail/controller/MapController.java index 4ad1d9abb..d075b6e0b 100644 --- a/AndorsTrail/src/com/gpl/rpg/AndorsTrail/controller/MapController.java +++ b/AndorsTrail/src/com/gpl/rpg/AndorsTrail/controller/MapController.java @@ -201,7 +201,7 @@ public final class MapController { public void onTextPhraseReached(String message, Actor actor, String phraseID) { worldEventListeners.onScriptAreaStartedConversation(phraseID); } - @Override public void onPlayerReceivedRewards(ConversationController.PhraseRewards phraseRewards) { } + @Override public void onScriptEffectsApplied(ConversationController.ScriptEffectResult scriptEffectResult) { } @Override public void onConversationEnded() { } @Override public void onConversationEndedWithShop(Monster npc) { } @Override public void onConversationEndedWithCombat(Monster npc) { } diff --git a/AndorsTrail/src/com/gpl/rpg/AndorsTrail/model/conversation/Phrase.java b/AndorsTrail/src/com/gpl/rpg/AndorsTrail/model/conversation/Phrase.java index 7308582c6..fafce7e1d 100644 --- a/AndorsTrail/src/com/gpl/rpg/AndorsTrail/model/conversation/Phrase.java +++ b/AndorsTrail/src/com/gpl/rpg/AndorsTrail/model/conversation/Phrase.java @@ -1,23 +1,25 @@ package com.gpl.rpg.AndorsTrail.model.conversation; +import com.gpl.rpg.AndorsTrail.model.script.ScriptEffect; + public final class Phrase { private static final Reply[] NO_REPLIES = new Reply[0]; public final String message; public final Reply[] replies; - public final Reward[] rewards; // If this phrase is reached, player will be awarded all these rewards + public final ScriptEffect[] scriptEffects; // If this phrase is reached, all these effects will run public final String switchToNPC; public Phrase( String message , Reply[] replies - , Reward[] rewards + , ScriptEffect[] scriptEffects , String switchToNPC ) { this.message = message; if (replies == null || replies.length == 0) replies = NO_REPLIES; this.replies = replies; - this.rewards = rewards; + this.scriptEffects = scriptEffects; this.switchToNPC = switchToNPC; } } diff --git a/AndorsTrail/src/com/gpl/rpg/AndorsTrail/model/script/ScriptEffect.java b/AndorsTrail/src/com/gpl/rpg/AndorsTrail/model/script/ScriptEffect.java index 37b1142d4..b05c9e17f 100644 --- a/AndorsTrail/src/com/gpl/rpg/AndorsTrail/model/script/ScriptEffect.java +++ b/AndorsTrail/src/com/gpl/rpg/AndorsTrail/model/script/ScriptEffect.java @@ -1,27 +1,27 @@ -package com.gpl.rpg.AndorsTrail.model.conversation; +package com.gpl.rpg.AndorsTrail.model.script; -public final class Reward { - public static enum RewardType { +public final class ScriptEffect { + public static enum ScriptEffectType { questProgress - ,dropList - ,skillIncrease - ,actorCondition - ,alignmentChange - ,giveItem - ,createTimer + , dropList + , skillIncrease + , actorCondition + , alignmentChange + , giveItem + , createTimer } - public final RewardType rewardType; - public final String rewardID; + public final ScriptEffectType type; + public final String effectID; public final int value; - public Reward( - RewardType rewardType - , String rewardID + public ScriptEffect( + ScriptEffectType type + , String effectID , int value ) { - this.rewardType = rewardType; - this.rewardID = rewardID; + this.type = type; + this.effectID = effectID; this.value = value; } } 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 6a78b2f2f..a6d354b8f 100644 --- a/AndorsTrail/src/com/gpl/rpg/AndorsTrail/resource/parsers/ConversationListParser.java +++ b/AndorsTrail/src/com/gpl/rpg/AndorsTrail/resource/parsers/ConversationListParser.java @@ -3,7 +3,7 @@ package com.gpl.rpg.AndorsTrail.resource.parsers; import com.gpl.rpg.AndorsTrail.AndorsTrailApplication; import com.gpl.rpg.AndorsTrail.model.conversation.Phrase; import com.gpl.rpg.AndorsTrail.model.conversation.Reply; -import com.gpl.rpg.AndorsTrail.model.conversation.Reward; +import com.gpl.rpg.AndorsTrail.model.script.ScriptEffect; import com.gpl.rpg.AndorsTrail.model.script.Requirement; import com.gpl.rpg.AndorsTrail.resource.TranslationLoader; import com.gpl.rpg.AndorsTrail.resource.parsers.json.JsonArrayParserFor; @@ -41,11 +41,11 @@ public final class ConversationListParser extends JsonCollectionParserFor rewardParser = new JsonArrayParserFor(Reward.class) { + private final JsonArrayParserFor scriptEffectParser = new JsonArrayParserFor(ScriptEffect.class) { @Override - protected Reward parseObject(JSONObject o) throws JSONException { - return new Reward( - Reward.RewardType.valueOf(o.getString(JsonFieldNames.PhraseReward.rewardType)) + protected ScriptEffect parseObject(JSONObject o) throws JSONException { + return new ScriptEffect( + ScriptEffect.ScriptEffectType.valueOf(o.getString(JsonFieldNames.PhraseReward.rewardType)) ,o.getString(JsonFieldNames.PhraseReward.rewardID) ,o.optInt(JsonFieldNames.PhraseReward.value, 0) ); @@ -61,10 +61,10 @@ public final class ConversationListParser extends JsonCollectionParserFor(id, new Phrase( translationLoader.translateConversationPhrase(o.optString(JsonFieldNames.Phrase.message, null)) , _replies - , _rewards + , _scriptEffects , o.optString(JsonFieldNames.Phrase.switchToNPC, null) )); }