From 8e5546d7729a2a041fb9c6ac671610774341ee49 Mon Sep 17 00:00:00 2001 From: austin Date: Mon, 6 Jan 2025 15:34:30 -0500 Subject: [PATCH] expanding look command --- .../sim/character/Character.java | 20 ++++++++++++++++ .../sim/eval/command/LookCommand.java | 23 ++++++++++++++++++- .../org/studiorailgun/sim/space/Location.java | 9 +++++--- 3 files changed, 48 insertions(+), 4 deletions(-) diff --git a/src/main/java/org/studiorailgun/sim/character/Character.java b/src/main/java/org/studiorailgun/sim/character/Character.java index d4f8e67..01b6911 100644 --- a/src/main/java/org/studiorailgun/sim/character/Character.java +++ b/src/main/java/org/studiorailgun/sim/character/Character.java @@ -20,6 +20,11 @@ public class Character { * The id of the character */ int id; + + /** + * The name of the character + */ + String name; /** * The physical appearance of the character @@ -126,6 +131,21 @@ public class Character { this.needs = needs; } + public String getName() { + return name; + } + + public void setName(String name) { + this.name = name; + } + + /** + * Describes the character + */ + public void describe(){ + System.out.println("A " + this.getAppearance().getRace() + "."); + } + diff --git a/src/main/java/org/studiorailgun/sim/eval/command/LookCommand.java b/src/main/java/org/studiorailgun/sim/eval/command/LookCommand.java index 4908292..e09fd50 100644 --- a/src/main/java/org/studiorailgun/sim/eval/command/LookCommand.java +++ b/src/main/java/org/studiorailgun/sim/eval/command/LookCommand.java @@ -1,6 +1,7 @@ package org.studiorailgun.sim.eval.command; import org.studiorailgun.Globals; +import org.studiorailgun.sim.character.Character; import org.studiorailgun.sim.space.Location; /** @@ -13,7 +14,27 @@ public class LookCommand { */ public static void handle(String input){ Location playerLoc = Globals.playerCharacter.getLocation(); - playerLoc.describe(); + if(LookCommand.scanForNames(input, playerLoc) != null){ + Character character = LookCommand.scanForNames(input, playerLoc); + character.describe(); + } else { + playerLoc.describe(); + } + } + + /** + * Scans the input for character names and returns the character that is found. + * @param input The input string + * @param loc The location to scan within + * @return The character if one is found, false otherwise + */ + private static Character scanForNames(String input, Location loc){ + for(Character character : loc.getChars()){ + if(input.contains(character.getName())){ + return character; + } + } + return null; } } diff --git a/src/main/java/org/studiorailgun/sim/space/Location.java b/src/main/java/org/studiorailgun/sim/space/Location.java index 85c8d43..e010d6c 100644 --- a/src/main/java/org/studiorailgun/sim/space/Location.java +++ b/src/main/java/org/studiorailgun/sim/space/Location.java @@ -2,7 +2,9 @@ package org.studiorailgun.sim.space; import java.util.LinkedList; import java.util.List; +import java.util.stream.Collectors; +import org.studiorailgun.Globals; import org.studiorailgun.sim.character.Character; import org.studiorailgun.sim.item.Item; import org.studiorailgun.sim.writing.GroupDescriber; @@ -38,12 +40,13 @@ public class Location { * Describes the location */ public void describe(){ - System.out.println("You are in a " + this.type); + System.out.println("You are in a " + this.type + "."); if(chars.size() > 1){ - GroupDescriber.summarize(chars); + List filtered = chars.stream().filter(chara -> chara != Globals.playerCharacter).collect(Collectors.toList()); + GroupDescriber.summarize(filtered); } if(items.size() > 0){ - System.out.println("There are " + items.size() + " items in the " + this.type); + System.out.println("There are " + items.size() + " items in the " + this.type + "."); } }