Release v2.3
eat() method
This commit is contained in:
@@ -427,6 +427,10 @@ public interface IFacade {
|
|||||||
World getWorld(Food food) throws ModelException;
|
World getWorld(Food food) throws ModelException;
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Make the given worm eat a portion of food.
|
||||||
|
*/
|
||||||
|
public void eat(Worm worm);
|
||||||
|
|
||||||
/********
|
/********
|
||||||
* TEAM
|
* TEAM
|
||||||
@@ -519,5 +523,4 @@ public interface IFacade {
|
|||||||
throw new MustNotImplementException();
|
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.AddNewTeam;
|
||||||
import worms.internal.gui.game.commands.AddNewWorm;
|
import worms.internal.gui.game.commands.AddNewWorm;
|
||||||
import worms.internal.gui.game.commands.Command;
|
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.Jump;
|
||||||
import worms.internal.gui.game.commands.Move;
|
import worms.internal.gui.game.commands.Move;
|
||||||
import worms.internal.gui.game.commands.Rename;
|
import worms.internal.gui.game.commands.Rename;
|
||||||
@@ -87,6 +88,10 @@ class DefaultActionHandler implements IActionHandler {
|
|||||||
executeCommand(new Rename(getFacade(), worm, newName, getScreen()));
|
executeCommand(new Rename(getFacade(), worm, newName, getScreen()));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public void eat(Worm worm) {
|
||||||
|
executeCommand(new Eat(getFacade(), worm, getScreen()));
|
||||||
|
}
|
||||||
|
|
||||||
public void selectNextWorm() {
|
public void selectNextWorm() {
|
||||||
executeCommand(new SelectNextWorm(getFacade(), getScreen()));
|
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) {
|
public void turn(double angle) {
|
||||||
Worm worm = getSelectedWorm();
|
Worm worm = getSelectedWorm();
|
||||||
angle = GUIUtils.restrictAngle(angle, -Math.PI);
|
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':
|
case 'N':
|
||||||
getScreen().renameWorm();
|
getScreen().renameWorm();
|
||||||
break;
|
break;
|
||||||
|
case 'e':
|
||||||
|
case 'E':
|
||||||
|
getScreen().eat();
|
||||||
|
break;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Reference in New Issue
Block a user