Coverage Report - cs.pancava.caltha.worlds.Route
 
Classes in this File Line Coverage Branch Coverage Complexity
Route
0%
0/25
0%
0/4
1.571
 
 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  0
     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  0
         super(World.WORLD_ROUTE);
 64  
 
 65  0
         this.prvniGE = ge1;
 66  0
         this.druhyGE = ge2;
 67  
 
 68  0
         this.graphicsObject = new Line2D.Double(this.prvniGE.getCenterX(), this.prvniGE.getCenterY(),
 69  
                                                 this.druhyGE.getCenterX(), this.druhyGE.getCenterY());
 70  0
     }
 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  0
         final int x1 = this.prvniGE.getCenterX();
 80  0
         final int x2 = this.druhyGE.getCenterX();
 81  
 
 82  0
         final int x = Math.abs(x1 - x2) / 2;
 83  
 
 84  0
         if (x1 < x2)
 85  
         {
 86  0
             return x1 + x;
 87  
         }
 88  
         else
 89  
         {
 90  0
             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  0
         final int y1 = this.prvniGE.getCenterY();
 102  0
         final int y2 = this.druhyGE.getCenterY();
 103  
 
 104  0
         final int y = Math.abs(y1 - y2) / 2;
 105  
 
 106  0
         if (y1 < y2)
 107  
         {
 108  0
             return y1 + y;
 109  
         }
 110  
         else
 111  
         {
 112  0
             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  0
         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  0
         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  0
         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  0
         this.graphicsObject.setLine(this.prvniGE.getCenterX(), this.prvniGE.getCenterY(),
 155  
                                     this.druhyGE.getCenterX(), this.druhyGE.getCenterY());
 156  
 
 157  0
         g2.setColor(this.ROUTE_COLOR);
 158  
 
 159  0
         g2.draw(this.graphicsObject);
 160  0
     }
 161  
 }