package jp.ac.aiit.jointry.services.lang.ast; import java.util.List; import javafx.geometry.Bounds; import javafx.scene.layout.AnchorPane; import javafx.scene.layout.Pane; import jp.ac.aiit.jointry.services.lang.parser.Environment; import jp.ac.aiit.jointry.models.Sprite; public class ReboundStmnt extends ASTList { public ReboundStmnt(List<ASTree> list) { super(list); } public ASTree condition() { return child(0); } @Override public String toString() { return "(rebound " + condition() + ")"; } @Override public Object eval(Environment env) { Sprite sprite = env.getSprite(); Bounds spriteBounds = sprite.getBoundsInLocal(); Pane parent = (AnchorPane) sprite.getParent(); //x軸への動きしか想定しない double rCollision = parent.getWidth() - sprite.getTranslateX() - env.getX() - spriteBounds.getWidth(); double lCollision = sprite.getTranslateX() + env.getX(); if (rCollision < 0 || lCollision < 0) { return TRUE; } return FALSE; } }