mirror of
https://github.com/OMGeeky/andors-trail.git
synced 2026-01-23 03:39:10 +01:00
Combat log enhancements
Lists experience, gold, and item pickups from combat in the combat log.
This commit is contained in:
@@ -91,6 +91,8 @@
|
||||
<string name="combat_condition_monster_apply">%1$s is affected by %2$s.</string>
|
||||
<string name="combat_condition_monster_clear">%1$s is cleared of %2$s.</string>
|
||||
<string name="combat_condition_monster_immune">%1$s is now immunized against %2$s.</string>
|
||||
<string name="combat_log_item_single">You found an item: </string>
|
||||
<string name="combat_log_item_plural">You found %1$d items: </string>
|
||||
|
||||
|
||||
<string name="inventory_info">Info</string>
|
||||
|
||||
@@ -18,6 +18,7 @@ import com.gpl.rpg.AndorsTrail.model.actor.Actor;
|
||||
import com.gpl.rpg.AndorsTrail.model.actor.Monster;
|
||||
import com.gpl.rpg.AndorsTrail.model.actor.MonsterType;
|
||||
import com.gpl.rpg.AndorsTrail.model.actor.Player;
|
||||
import com.gpl.rpg.AndorsTrail.model.item.ItemContainer;
|
||||
import com.gpl.rpg.AndorsTrail.model.item.ItemTraits_OnHitReceived;
|
||||
import com.gpl.rpg.AndorsTrail.model.item.ItemTraits_OnUse;
|
||||
import com.gpl.rpg.AndorsTrail.model.item.Loot;
|
||||
@@ -58,6 +59,9 @@ public final class CombatController implements VisualEffectCompletedCallback {
|
||||
public void exitCombat(boolean pickupLootBags) {
|
||||
setCombatSelection(null, null);
|
||||
world.model.uiSelections.isInCombat = false;
|
||||
if (pickupLootBags) {
|
||||
recordLootInCombatLog();
|
||||
}
|
||||
combatTurnListeners.onCombatEnded();
|
||||
controllers.actorStatsController.setActorMaxAP(world.model.player);
|
||||
world.model.uiSelections.selectedPosition = null;
|
||||
@@ -75,6 +79,31 @@ public final class CombatController implements VisualEffectCompletedCallback {
|
||||
resetCombatState();
|
||||
}
|
||||
|
||||
private void recordLootInCombatLog() {
|
||||
Loot combinedLoot = Loot.combine(killedMonsterBags);
|
||||
if (combinedLoot.gold > 0) {
|
||||
world.model.combatLog.append(controllers.getResources().getString(R.string.dialog_loot_foundgold, combinedLoot.gold));
|
||||
}
|
||||
int itemCount = combinedLoot.items.countItems();
|
||||
if (itemCount > 0) {
|
||||
StringBuilder itemMessage = new StringBuilder();
|
||||
if (itemCount == 1) {
|
||||
itemMessage.append(controllers.getResources().getString(R.string.combat_log_item_single));
|
||||
} else {
|
||||
itemMessage.append(controllers.getResources().getString(R.string.combat_log_item_plural, itemCount));
|
||||
}
|
||||
boolean firstItem = true;
|
||||
for (ItemContainer.ItemEntry entry : combinedLoot.items.items) {
|
||||
if (!firstItem) {
|
||||
itemMessage.append(";");
|
||||
}
|
||||
itemMessage.append(" " + entry.itemType.getName(world.model.player) + " (" + entry.quantity + ")");
|
||||
firstItem = false;
|
||||
}
|
||||
world.model.combatLog.append(itemMessage.toString());
|
||||
}
|
||||
}
|
||||
|
||||
private void resetCombatState() {
|
||||
killedMonsterBags.clear();
|
||||
totalExpThisFight = 0;
|
||||
@@ -211,6 +240,7 @@ public final class CombatController implements VisualEffectCompletedCallback {
|
||||
|
||||
world.model.statistics.addMonsterKill(killedMonster.getMonsterTypeID());
|
||||
controllers.actorStatsController.addExperience(loot.exp);
|
||||
world.model.combatLog.append(controllers.getResources().getString(R.string.dialog_monsterloot_gainedexp, loot.exp));
|
||||
|
||||
totalExpThisFight += loot.exp;
|
||||
loot.exp = 0;
|
||||
|
||||
@@ -4,6 +4,7 @@ import java.util.ArrayList;
|
||||
import java.util.Collection;
|
||||
|
||||
import com.gpl.rpg.AndorsTrail.AndorsTrailPreferences;
|
||||
import com.gpl.rpg.AndorsTrail.R;
|
||||
import com.gpl.rpg.AndorsTrail.context.ControllerContext;
|
||||
import com.gpl.rpg.AndorsTrail.context.WorldContext;
|
||||
import com.gpl.rpg.AndorsTrail.controller.listeners.QuickSlotListeners;
|
||||
@@ -92,11 +93,9 @@ public final class ItemController {
|
||||
|
||||
if (!player.inventory.removeItem(type.id, 1)) return;
|
||||
|
||||
world.model.combatLog.append(controllers.getResources().getString(R.string.inventory_item_used, type.getName(player)));
|
||||
controllers.actorStatsController.applyUseEffect(player, null, type.effects_use);
|
||||
world.model.statistics.addItemUsage(type);
|
||||
|
||||
//TODO: provide feedback that the item has been used.
|
||||
//context.mainActivity.message(androidContext.getResources().getString(R.string.inventory_item_used, type.name));
|
||||
}
|
||||
|
||||
public void playerSteppedOnLootBag(Loot loot) {
|
||||
|
||||
Reference in New Issue
Block a user