Coverage Report - cs.pancava.caltha.worlds.World
 
Classes in this File Line Coverage Branch Coverage Complexity
World
0%
0/30
0%
0/24
3.125
 
 1  
 /* $Id: World.java 22 2008-12-30 17:33:44Z 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.util.ArrayList;
 23  
 
 24  
 /**
 25  
  * <p><b>Tato trida obsahuje jednotlive elementy prave vytvoreneho sveta.</b></p>
 26  
  *
 27  
  * @author Milan Vaclavik<br />
 28  
  * @version $Revision: 22 $<br />
 29  
  * $LastChangedBy: mihlon $
 30  
  */
 31  
 public class World
 32  
 {
 33  
     /**
 34  
      * Identifikuje objekt jako mistnost.
 35  
      */
 36  
     public static final int WORLD_ROOM = 1;
 37  
 
 38  
     /**
 39  
      * Identifikuje objekt jako trasu mezi dvema objekty (mistnostmi).
 40  
      */
 41  
     public static final int WORLD_ROUTE = 2;
 42  
 
 43  
     /**
 44  
      * Seznam vsech mistnosti ve vytvorenem svete.
 45  
      */
 46  0
     private ArrayList<GameEntity>roomsAL = new ArrayList<GameEntity>();
 47  
 
 48  
     /**
 49  
      * Seznam vsech tras mezi dvema objekty (mistnostmi) ve vytvorenem svete.
 50  
      */
 51  0
     private ArrayList<GameEntity>routesAL = new ArrayList<GameEntity>();
 52  
 
 53  
     /**
 54  
      * Nazev vytvoreneho sveta.
 55  
      */
 56  
     private String worldNameS;
 57  
 
 58  
     /**
 59  
      * Konstruktor.
 60  
      * @param n String : Nazev vytvareneho sveta.
 61  
      */
 62  
     public World(final String n)
 63  0
     {
 64  0
         this.worldNameS = n;
 65  
 
 66  
         // Vynulovani citace -> zacali jsme tvorit novy svet.
 67  0
         GameEntity.resetCounter();
 68  0
     }
 69  
 
 70  
     /**
 71  
      * Vlozi vytvorenou herni instanci sveta do daneho seznamu, obsahuji jednotlive
 72  
      * elementy vytvoreneho sveta.
 73  
      * @param ge GameEntity : Vkladana instance herniho sveta.
 74  
      */
 75  
     public final void addGameEntity(final GameEntity ge)
 76  
     {
 77  0
         switch (ge.getType())
 78  
         {
 79  
             case World.WORLD_ROOM:
 80  0
                                     this.roomsAL.add(ge);
 81  0
                                     break;
 82  
             case World.WORLD_ROUTE:
 83  0
                                     this.routesAL.add(ge);
 84  0
                                     break;
 85  
             default:
 86  
                      // TODO: Neznamy objekt, proto ho nevlozime do zadneho seznamu, vadi to, kdyz se pouze takto osetri tato udalost ?
 87  
                      break;
 88  
         }
 89  0
     }
 90  
 
 91  
     /**
 92  
      * Vrati pole vsech mistnosti (objektu) ve vytvorenem svete.
 93  
      * @return ArratList : Pole vsech obektu ve vytvorenem svete.
 94  
      */
 95  
     public final ArrayList<GameEntity> getWorldRoomsAL()
 96  
     {
 97  0
         return this.roomsAL;
 98  
     }
 99  
 
 100  
     /**
 101  
      * Vrati pole vsech spoju (cest) ve vytvorenem svete.
 102  
      * @return ArratList : Pole vsech obektu ve vytvorenem svete.
 103  
      */
 104  
     public final ArrayList<GameEntity> getWorldRoutesAL()
 105  
     {
 106  0
         return this.routesAL;
 107  
     }
 108  
 
 109  
     /**
 110  
      * Vrati objekt ze seznamu urceny indexem.
 111  
      * @param indexObektu int : Index objektu ze seznamu, ktery budeme vracet.
 112  
      * @return GameEntity : Prvek ze seznamu, ktery vracime
 113  
      */
 114  
     public final GameEntity getWorldRoomsAL(final int indexObektu)
 115  
     {
 116  0
         if (!this.roomsAL.isEmpty() && indexObektu > -1 && indexObektu < this.roomsAL.size())
 117  
         {
 118  0
             return this.roomsAL.get(indexObektu);
 119  
         }
 120  
 
 121  
         // Seznam je prazdny a nebo jsme zadali spatny rozsah indexu.
 122  0
         return null;
 123  
     }
 124  
 
 125  
     /**
 126  
      * Vrati objekt ze seznamu urceny indexem.
 127  
      * @param indexObektu int : Index objektu ze seznamu, ktery budeme vracet.
 128  
      * @return GameEntity : Prvek ze seznamu, ktery vracime
 129  
      */
 130  
     public final GameEntity getWorldRoutesAL(final int indexObektu)
 131  
     {
 132  0
         if (!this.routesAL.isEmpty() && indexObektu > -1 && indexObektu < this.routesAL.size())
 133  
         {
 134  0
             return this.routesAL.get(indexObektu);
 135  
         }
 136  
 
 137  
         // Seznam je prazdny a nebo jsme zadali spatny rozsah indexu.
 138  0
         return null;
 139  
     }
 140  
 
 141  
     /**
 142  
      * Aktualizuje lokaci konkretniho objektu.
 143  
      * @param ge GameEntity: Herni objekt, ktery budeme aktualizovat.
 144  
      * @param index : Index obektu, u ktereho provadime aktualizaci lokace.
 145  
      * @param x     : X-ova souradnice nove pozice.
 146  
      * @param y     : Y-ova souradnice nove pozice.
 147  
      */
 148  
     public final void updateGameEntityLocation(final GameEntity ge, final int index, final int x, final int y)
 149  
     {
 150  0
         switch (ge.getType())
 151  
         {
 152  
             case World.WORLD_ROOM:
 153  0
                                     if (!this.roomsAL.isEmpty() && index > -1 && index < this.roomsAL.size())
 154  
                                     {
 155  0
                                         this.roomsAL.get(index).setLocationX(x);
 156  0
                                         this.roomsAL.get(index).setLocationY(y);
 157  
                                     }
 158  
                                     break;
 159  
             default:
 160  
                      // TODO: Neznamy objekt, proto ho nevlozime do zadneho seznamu, vadi to, kdyz se pouze takto osetri tato udalost ?
 161  
                      break;
 162  
         }
 163  0
     }
 164  
 
 165  
     /**
 166  
      * Pokud smazeme nejakou mistnost, tak ztratime i index do seznamu mistnost -> do seznamu se take pristupuje primo
 167  
      * s pomoci indexu. Proto posuneme indexy u zbyvajicich mistnosti.
 168  
      * @param odstranenyIndex int : Od jake pozice budeme posouvat indexy.
 169  
      */
 170  
     public void updateRooms(final int odstranenyIndex)
 171  
     {
 172  0
         final int pocet = roomsAL.size();
 173  
 
 174  
         // Indexy se nebudou posouvat, pokud odstranujeme posledni prvek a nebo kdyz je zadany index mimo interval
 175  0
         if (odstranenyIndex < pocet && odstranenyIndex > -1)
 176  
         {
 177  0
             for (int i = odstranenyIndex; i < pocet; i = i + 1)
 178  
             {
 179  0
                 this.getWorldRoomsAL(i).downID();
 180  
             }
 181  
         }
 182  0
     }
 183  
 }