Release v2.3
eat() method
This commit is contained in:
@@ -427,6 +427,10 @@ public interface IFacade {
|
||||
World getWorld(Food food) throws ModelException;
|
||||
|
||||
|
||||
/**
|
||||
* Make the given worm eat a portion of food.
|
||||
*/
|
||||
public void eat(Worm worm);
|
||||
|
||||
/********
|
||||
* TEAM
|
||||
@@ -519,5 +523,4 @@ public interface IFacade {
|
||||
throw new MustNotImplementException();
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
|
@@ -9,6 +9,7 @@ import worms.internal.gui.game.commands.AddNewFood;
|
||||
import worms.internal.gui.game.commands.AddNewTeam;
|
||||
import worms.internal.gui.game.commands.AddNewWorm;
|
||||
import worms.internal.gui.game.commands.Command;
|
||||
import worms.internal.gui.game.commands.Eat;
|
||||
import worms.internal.gui.game.commands.Jump;
|
||||
import worms.internal.gui.game.commands.Move;
|
||||
import worms.internal.gui.game.commands.Rename;
|
||||
@@ -87,6 +88,10 @@ class DefaultActionHandler implements IActionHandler {
|
||||
executeCommand(new Rename(getFacade(), worm, newName, getScreen()));
|
||||
}
|
||||
|
||||
public void eat(Worm worm) {
|
||||
executeCommand(new Eat(getFacade(), worm, getScreen()));
|
||||
}
|
||||
|
||||
public void selectNextWorm() {
|
||||
executeCommand(new SelectNextWorm(getFacade(), getScreen()));
|
||||
}
|
||||
|
@@ -217,6 +217,14 @@ public class PlayGameScreen extends Screen {
|
||||
|
||||
}
|
||||
|
||||
public void eat() {
|
||||
Worm worm = getSelectedWorm();
|
||||
if (worm != null) {
|
||||
userActionHandler.eat(worm);
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
public void turn(double angle) {
|
||||
Worm worm = getSelectedWorm();
|
||||
angle = GUIUtils.restrictAngle(angle, -Math.PI);
|
||||
|
@@ -0,0 +1,37 @@
|
||||
package worms.internal.gui.game.commands;
|
||||
|
||||
import worms.facade.IFacade;
|
||||
import worms.internal.gui.game.PlayGameScreen;
|
||||
import worms.internal.gui.messages.MessageType;
|
||||
import worms.model.Food;
|
||||
import worms.model.Worm;
|
||||
import worms.util.ModelException;
|
||||
|
||||
public class Eat extends InstantaneousCommand {
|
||||
private final Worm worm;
|
||||
|
||||
public Eat(IFacade facade, Worm worm,
|
||||
PlayGameScreen screen) {
|
||||
super(facade, screen);
|
||||
this.worm = worm;
|
||||
}
|
||||
|
||||
@Override
|
||||
protected boolean canStart() {
|
||||
return worm != null;
|
||||
}
|
||||
|
||||
@Override
|
||||
protected void doStartExecution() {
|
||||
try {
|
||||
long nbFoodBefore = getFacade().getAllItems(getWorld()).stream().filter(Food.class::isInstance).count();
|
||||
getFacade().eat(worm);
|
||||
long nbFoodAfter = getFacade().getAllItems(getWorld()).stream().filter(Food.class::isInstance).count();
|
||||
if (nbFoodAfter < nbFoodBefore) {
|
||||
getScreen().addMessage("Yummie!", MessageType.INFO);
|
||||
}
|
||||
} catch (ModelException e) {
|
||||
getScreen().addMessage("This worm cannot eat.", MessageType.ERROR);
|
||||
}
|
||||
}
|
||||
}
|
@@ -51,6 +51,10 @@ public class DefaultInputMode extends InputMode<PlayGameScreen> {
|
||||
case 'N':
|
||||
getScreen().renameWorm();
|
||||
break;
|
||||
case 'e':
|
||||
case 'E':
|
||||
getScreen().eat();
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
|
Reference in New Issue
Block a user