-
Notifications
You must be signed in to change notification settings - Fork 0
Home
Daniel Grace edited this page Feb 11, 2018
·
2 revisions
Truth be told, I haven't fully used this yet, either. Here are my in-progress implementations of some of these Interfaces. There may be bugs, but it might help you figure out what I'm intending:
public class QuenchThirstGoal implements Goal<CharacterState> {
@Override
public String getName() {
return "Quench Thirst";
}
@Override
public boolean isSatisfied(CharacterState state) {
if (state.isThirsty) return false;
return true;
}
@Override
public int distance(CharacterState state) {
if (state.isThirsty) return 1;
return 0;
}
}
public class DrinkBehavior implements Behavior<CharacterState, Character> {
private ComponentMapper<InventoryComponent> inventoryComponentMapper;
public DrinkBehavior() {
this.inventoryComponentMapper = ComponentMapper.getFor(InventoryComponent.class);
}
@Override
public int getCost(Character c) {
return 1;
}
@Override
public boolean canRun(CharacterState state, Character character) {
InventoryComponent inventory = this.inventoryComponentMapper.get(character);
if (inventory == null)
return false;
if (inventory.hasItem(WaterFlask.class))
return true;
return false;
}
@Override
public CharacterState ifRan(CharacterState state, Character character) {
CharacterState tmp = state.clone();
tmp.isThirsty = false;
return tmp;
}
@Override
public String getName() {
return "Drink Water";
}
}
public class CharacterState implements WorldState {
public boolean isThirsty = true;
public CharacterState clone() {
CharacterState tmp = new CharacterState();
tmp.isThirsty = this.isThirsty;
return tmp;
}
}