1 /* $Id: Route.java 26 2013-04-14 15:22:02Z mihlon $ */ 2 3 ////////////////////////////////////////////////////////////////////////////// 4 // // 5 // This program is free software: you can redistribute it and/or modify // 6 // it under the terms of the GNU General Public License as published by // 7 // the Free Software Foundation, either version 3 of the License, or // 8 // at your option any later version. // 9 // // 10 // This program is distributed in the hope that it will be useful, // 11 // but WITHOUT ANY WARRANTY; without even the implied warranty of // 12 // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the // 13 // GNU General Public License for more details. // 14 // // 15 // You should have received a copy of the GNU General Public License // 16 // along with this program. If not, see <http://www.gnu.org/licenses/>. // 17 // // 18 ////////////////////////////////////////////////////////////////////////////// 19 20 package cs.pancava.caltha.worlds; 21 22 import java.awt.Color; 23 import java.awt.Graphics2D; 24 import java.awt.geom.Line2D; 25 26 /** 27 * <p><b>Tato trida definuje vlastnosti spojů (cest) mezi jednotlivymi mistnosti 28 * ve vytvorenem svete.</b></p> 29 * 30 * @author Milan Vaclavik<br /> 31 * @version $Revision: 26 $<br /> 32 * $LastChangedBy: mihlon $<br /> 33 */ 34 public class Route extends GameEntity 35 { 36 /** 37 * Graficka reprezentace mistnosti v editoru. 38 */ 39 private Line2D graphicsObject; 40 41 /** 42 * Barva spoje. 43 */ 44 private final Color ROUTE_COLOR = Color.MAGENTA; 45 46 /** 47 * Herni objekt (prvni), ktery spojujeme. 48 */ 49 private GameEntity prvniGE; 50 51 /** 52 * Herni objekt (druhy), ktery spojujeme. 53 */ 54 private GameEntity druhyGE; 55 56 /** 57 * Konstruktor vytvarejici spoj (cestu) mezi dvema objekty (mistnostmi). 58 * @param ge1 : Herni objekt (prvni), ktery spojujeme. 59 * @param ge2 : Herni objekt (druhy), ktery spojujeme. 60 */ 61 public Route(final GameEntity ge1, final GameEntity ge2) 62 { 63 super(World.WORLD_ROUTE); 64 65 this.prvniGE = ge1; 66 this.druhyGE = ge2; 67 68 this.graphicsObject = new Line2D.Double(this.prvniGE.getCenterX(), this.prvniGE.getCenterY(), 69 this.druhyGE.getCenterX(), this.druhyGE.getCenterY()); 70 } 71 72 /** 73 * Vraci stred objektu v ose X. 74 * @return int : Stred objektu v ose X. 75 */ 76 @Override 77 public final int getCenterX() 78 { 79 final int x1 = this.prvniGE.getCenterX(); 80 final int x2 = this.druhyGE.getCenterX(); 81 82 final int x = Math.abs(x1 - x2) / 2; 83 84 if (x1 < x2) 85 { 86 return x1 + x; 87 } 88 else 89 { 90 return x2 + x; 91 } 92 } 93 94 /** 95 * Vraci stred objektu v ose Y. 96 * @return int : Stred objektu v ose Y. 97 */ 98 @Override 99 public final int getCenterY() 100 { 101 final int y1 = this.prvniGE.getCenterY(); 102 final int y2 = this.druhyGE.getCenterY(); 103 104 final int y = Math.abs(y1 - y2) / 2; 105 106 if (y1 < y2) 107 { 108 return y1 + y; 109 } 110 else 111 { 112 return y2 + y; 113 } 114 } 115 116 /** 117 * Vrati prvni mistnost, ktera je spojena s druhou mistnosti. 118 * @return gameEntity : Prvni mistnost, ktera je spojena s druhou mistnosti. 119 */ 120 @Override 121 public final GameEntity getFirstRoom() 122 { 123 return this.prvniGE; 124 } 125 126 /** 127 * Vraci grafickou reprezentaci spoje (cesty) v editoru. 128 * @return Line2D : Graficka reprezentace spoje (cesty) v editoru. 129 */ 130 @Override 131 public final Object getGraphicsObject() 132 { 133 return this.graphicsObject; 134 } 135 136 /** 137 * Vrati druhou mistnost, ktera je spojena s prvni mistnosti. 138 * @return gameEntity : Druha mistnost, ktera je spojena s prvni mistnosti. 139 */ 140 @Override 141 public final GameEntity getSecondRoom() 142 { 143 return this.druhyGE; 144 } 145 146 /** 147 * Zobrazi dany spoj (cestu) v editoru. 148 * @param g2 Graphics2D : Graficky kontext, do ktereho se bude kreslit. 149 */ 150 @Override 151 public final void showGraphicsObject(final Graphics2D g2) 152 { 153 // Nastaveni grafickeho objektu na novou (aktualni) pozici. 154 this.graphicsObject.setLine(this.prvniGE.getCenterX(), this.prvniGE.getCenterY(), 155 this.druhyGE.getCenterX(), this.druhyGE.getCenterY()); 156 157 g2.setColor(this.ROUTE_COLOR); 158 159 g2.draw(this.graphicsObject); 160 } 161 }