refactor: fix interfaces issues

This commit is contained in:
Ivan Zinchenko 2023-12-21 23:52:15 +03:00
parent b111e9bbee
commit 6c436f8f3d
Signed by: zinch
GPG Key ID: 6D45AA2C8FD6A37E
6 changed files with 31 additions and 20 deletions

View File

@ -5,7 +5,7 @@ import Items.Item;
import java.util.Objects;
public abstract class Character extends Entity {
public abstract class Character extends Entity implements IMovable, IFeelable {
private final Gender gender;
private Entity position;
private String currentState = "";
@ -44,8 +44,7 @@ public abstract class Character extends Entity {
this.position = obj;
}
@Override
public String toString() {
public String getState() {
return this.currentState;
}
@ -53,6 +52,12 @@ public abstract class Character extends Entity {
this.currentState = state;
}
@Override
public String toString() {
return this.getName();
}
@Override
public boolean equals(Object o) {
if (this == o) return true;

View File

@ -30,12 +30,12 @@ public class FrenBok extends Character {
public void grabCharacter(IGrabbableCharacter character) {
this.characterInHand = character;
this.setState(String.format("%s схватила %s за %s", this.getGender(), character.getName(), character.getGrabbablePart()));
this.setState(String.format("%s схватила %s за %s", this.getGender(), character, character.getGrabbablePart()));
}
public void pushCharacterBehindItem(Item item) {
this.characterInHand.moveTo(item);
this.setState(String.format("%s вытолкнула %s за %s", this.getGender(), this.characterInHand.getName(), item));
this.setState(String.format("%s вытолкнула %s за %s", this.getGender(), this.characterInHand, item));
this.characterInHand = null;
}
}

View File

@ -0,0 +1,5 @@
package Characters;
interface IFeelable {
void setFeel(Feels feel);
}

View File

@ -1,11 +1,5 @@
package Characters;
import Entity.Entity;
interface IGrabbableCharacter {
interface IGrabbableCharacter extends IMovable {
String getGrabbablePart();
void moveTo(Entity obj);
String getName();
}

View File

@ -0,0 +1,7 @@
package Characters;
import Entity.*;
public interface IMovable {
void moveTo(Entity obj);
}

View File

@ -19,23 +19,23 @@ public class StoryTeller {
public void play() {
karlson.setFeel(Feels.SCARY);
System.out.println(karlson);
System.out.println(karlson.getState());
karlson.setFeel(Feels.SAD);
System.out.println(karlson);
System.out.println(karlson.getState());
karlson.moveTo(kitchenHob);
System.out.println(karlson);
System.out.println(karlson.getState());
karlson.grabFrom(fryingPan);
System.out.println(karlson);
System.out.println(karlson.getState());
if (fryingPan.getOwner() == frenBok) {
System.out.println("Вот этого ему не следовало делать");
frenBok.setFeel(Feels.RAGE);
System.out.println(frenBok);
System.out.println(frenBok.getState());
frenBok.moveTo(karlson);
System.out.println(frenBok);
System.out.println(frenBok.getState());
frenBok.grabCharacter(karlson);
System.out.println(frenBok);
System.out.println(frenBok.getState());
frenBok.pushCharacterBehindItem(door);
System.out.println(frenBok);
System.out.println(frenBok.getState());
} else {
frenBok.setFeel(Feels.NORMAL);
System.out.println(frenBok);