X-Git-Url: http://git.megacz.com/?a=blobdiff_plain;f=src%2Fedu%2Fberkeley%2Fslipway%2Fgui%2FGuiCell.java;h=ebd3044ae4566b853a9e590b697252fd297a19d3;hb=d04562880cfecf6fdaf5eab0e0da92cab8225e04;hp=027373f3801f6eaa0aa1fd09bbda0f410625c437;hpb=6a7c71b440b8ec920a95b26d9c7a60595c3f6bcf;p=slipway.git diff --git a/src/edu/berkeley/slipway/gui/GuiCell.java b/src/edu/berkeley/slipway/gui/GuiCell.java index 027373f..ebd3044 100644 --- a/src/edu/berkeley/slipway/gui/GuiCell.java +++ b/src/edu/berkeley/slipway/gui/GuiCell.java @@ -50,77 +50,60 @@ public class GuiCell { private void drawBody(G g, R r) { if (xgate == null && ygate == null) return; + + int N = 7; + int TSIZE = 10; + double TSQR = TSIZE / Math.sqrt(2.0); + R body = r; g.color(BODY_COLOR); R xgater = null; R ygater = null; - int N = 7; R gateArea = body.plus(12+N, 12+N, -(4+N), -(4+N)); if (xgate==null) ygater = gateArea; else if (ygate==null) xgater = gateArea; else { double factor = gateArea.width()/2; - xgater = gateArea.plus(0, 0, factor, factor); - ygater = gateArea.plus(factor, 0, 0, factor); + xgater = gateArea.plus(0, 0, -factor, -factor); + ygater = gateArea.plus(factor, 0, 0, -factor); } - R xring = gateArea.plus(4, 4, -4, -4); - R yring = gateArea.plus(6, 6, -6, -6); - - int rot = 0; - switch (fpslicCell.yi()) { - case NORTH: rot = 2; break; - case SOUTH: rot = 0; break; - case WEST: rot = 3; break; - case EAST: rot = 1; break; - default: rot = 0; - } + R xring = gateArea.plus(-4, -4, 4, 4); + R yring = gateArea.plus(-6, -6, 6, 6); if (xgate != null) { - xgate.rotation = rot; + xgate.rotation(fpslicCell.yi()); xgate.gateArea = gateArea; + xgate.r = xgater; } if (ygate != null) { - ygate.rotation = rot; + ygate.rotation(fpslicCell.yi()); ygate.gateArea = gateArea; + ygate.r = ygater; } - int TSIZE = 10; - double TSQR = TSIZE / Math.sqrt(2.0); g.color(XGATE_COLOR); - P p = null; - switch (fpslicCell.xi()) { - case SW: p = new P(r.minx(), r.miny()); break; - case SE: p = new P(r.maxx(), r.miny()); break; - case NW: p = new P(r.minx(), r.maxy()); break; - case NE: p = new P(r.maxx(), r.maxy()); break; - } + P p = r.corner(fpslicCell.xi()); if (p!=null) { if (ygate != null) { - g.route(p, xring, ygate.getInput(1, ygater)); - g.line(ygate.getInput(1, ygater), ygate.getInputDest(1, ygater)); + g.route(p, xring, ygate.getInput(1)); + g.line(ygate.getInput(1), ygate.getInputDest(1)); } if (xgate != null) { - g.route(p, xring, xgate.getInput(0, xgater)); - g.line(xgate.getInput(0, xgater), xgate.getInputDest(0, xgater)); + g.route(p, xring, xgate.getInput(0)); + g.line(xgate.getInput(0), xgate.getInputDest(0)); } } - p = null; + p = r.corner(fpslicCell.yi()); g.color(YGATE_COLOR); - switch (fpslicCell.yi()) { - case NORTH: p = new P(r.cx(), r.maxy()); break; - case SOUTH: p = new P(r.cx(), r.miny()); break; - case WEST: p = new P(r.minx(), r.cy()); break; - case EAST: p = new P(r.maxx(), r.cy()); break; - } if (p!=null) { if (ygate != null) { - g.route(p, yring, ygate.getInput(0, ygater)); - g.line(ygate.getInput(0, ygater), ygate.getInputDest(0, ygater)); + g.route(p, yring, ygate.getInput(0)); + g.line(ygate.getInput(0), ygate.getInputDest(0)); } if (xgate != null) { - g.route(p, yring, xgate.getInput(1, xgater)); - g.line(xgate.getInput(1, xgater), xgate.getInputDest(1, xgater)); + g.route(p, yring, xgate.getInput(1)); + g.line(xgate.getInput(1), xgate.getInputDest(1)); } } @@ -132,7 +115,7 @@ public class GuiCell { P p2 = new P(r.minx()+2*(layer+1), r.miny()+2*(layer+1)); R r2 = new R(r.minx()+2*(layer+1), r.miny()+2*(layer+1), r.maxx()-2*(layer+1), r.maxy()-2*(layer+1)); - g.route(p2, r2, xgate.getInput(3, xgater)); + g.route(p2, r2, xgate.getInput(3)); } */ if (fpslicCell.wi() != NONE) { @@ -141,10 +124,10 @@ public class GuiCell { P p2 = new P(r.minx()+2*(layer+1), r.miny()+2*(layer+1)); R r2 = new R(r.minx()+2*(layer+1), r.miny()+2*(layer+1), r.maxx()-2*(layer+1), r.maxy()-2*(layer+1)); - g.route(p2, r2, xgate.getInput(2, xgater)); - g.line(xgate.getInput(2, xgater), xgate.getInputDest(2, xgater)); + g.route(p2, r2, xgate.getInput(2)); + g.line(xgate.getInput(2), xgate.getInputDest(2)); } - xgate.draw(g, xgater, XGATE_COLOR); + xgate.draw(g, XGATE_COLOR); } if (ygater != null) { /* @@ -154,7 +137,7 @@ public class GuiCell { P p2 = new P(r.minx()+2*(layer+1), r.miny()+2*(layer+1)); R r2 = new R(r.minx()+2*(layer+1), r.miny()+2*(layer+1), r.maxx()-2*(layer+1), r.maxy()-2*(layer+1)); - g.route(p2, r2, ygate.getInput(3, ygater)); + g.route(p2, r2, ygate.getInput(3)); } */ if (fpslicCell.wi() != NONE) { @@ -163,10 +146,10 @@ public class GuiCell { P p2 = new P(r.minx()+2*(layer+1), r.miny()+2*(layer+1)); R r2 = new R(r.minx()+2*(layer+1), r.miny()+2*(layer+1), r.maxx()-2*(layer+1), r.maxy()-2*(layer+1)); - g.route(p2, r2, ygate.getInput(2, ygater)); - g.line(ygate.getInput(2, ygater), ygate.getInputDest(2, ygater)); + g.route(p2, r2, ygate.getInput(2)); + g.line(ygate.getInput(2), ygate.getInputDest(2)); } - ygate.draw(g, ygater, YGATE_COLOR); + ygate.draw(g, YGATE_COLOR); } } } \ No newline at end of file