View Javadoc

1   /* $Id: GameEntity.java 30 2013-04-27 18:40:17Z 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.Graphics2D;
23  
24  /**
25   * <p><b>Tato trida definuje zakladni vlastnosti instance herniho sveta v editoru.</b></p>
26   *
27   * @author Milan Vaclavik<br />
28   * @version $Revision: 30 $<br />
29   * $LastChangedBy: mihlon $<br />
30   */
31  public abstract class GameEntity
32  {
33      /**
34       * Poradove cislo.
35       */
36      private int id;
37  
38      /**
39       * X-ova souradnice vytvoreneho objektu.
40       */
41      private int locationX;
42  
43      /**
44       * Y-ova souradnice vytvoreneho objektu.
45       */
46      private int locationY;
47  
48      /**
49       * True  - dany objekt je vybran (oznacen).
50       * False - dany objekt neni vybran (oznacen).
51       */
52      private Boolean selected;
53  
54      /**
55       * Typ herniho objektu.
56       */
57      private int type;
58  
59      /**
60       * Konstruktor - nastavuje zakladni vlastnosti vytvoreneho objektu.
61       * @param x int: X-ova souradnice vytvareneho objektu.
62       * @param y int: y-ova souradnice vytvareneho objektu.
63       * @param t int: Typ vytvoreneho objektu.
64       * @param counter int : Citac vytvorenych objektu.
65       */
66      public GameEntity(final int x, final int y, final int t, final int counter)
67      {
68          this.id = counter;
69          this.locationX = x;
70          this.locationY = y;
71          this.selected = false;
72          this.type = t;
73      }
74  
75      /**
76       * Prazdny kontruktor pro takove objekty, ktere maji vzlastni vyznam.
77       * @param t int: Typ vytvoreneho objektu
78       */
79      public GameEntity(final int t)
80      {
81          this.type = t;
82      }
83  
84      /**
85       * Reset counteru -> zaciname tvorit novy svet.
86       */
87      public static void resetCounter()
88      {
89          // TODO: Proc je tento prikaz zakomentovany ?
90  //        GameEntity.counter = 0;
91      }
92  
93      /**
94       * Abstraktni trida, ktera vraci stred objektu v ose X.
95       * @return int : Stred objektu v ose X.
96       */
97      public abstract int getCenterX();
98  
99      /**
100      * Abstraktni trida, ktera vraci stred objektu v ose Y.
101      * @return int : Stred objektu v ose Y.
102      */
103     public abstract int getCenterY();
104 
105     /**
106      * Abstraktni trida, ktera vraci nejaky objekt GameEntity.
107      * @return GameEntity : Objekt, ktery vracime.
108      */
109     public abstract GameEntity getFirstRoom();
110 
111     /**
112      * Abstraktni trida, ktera vraci grafickou reprezentaci daneho objektu v editoru.
113      * @return : Graficke ztvarneni daneho obektu z vytvoreneho sveta.
114      */
115     //public abstract RectangularShape getGraphicsObject();
116     public abstract Object getGraphicsObject();
117 
118     /**
119      * Snizi hodnotu ID o jedna.
120      */
121     public final void downID()
122     {
123         if (this.id > 0)
124         {
125             this.id -= 1;
126         }
127     }
128 
129     /**
130      * Vraci ID obektu.
131      * @return int : ID vytvoreneho objektu.
132      */
133     public final int getId()
134     {
135         return this.id;
136     }
137 
138     /**
139      * Vrati X-ovou souradnici daneho objektu.
140      * @return int : X-ova souradnice daneho objektu
141      */
142     public final int getLocationX()
143     {
144         return this.locationX;
145     }
146 
147     /**
148      * Vrati Y-ovou souradnici daneho objektu.
149      * @return int : Y-ova souradnice daneho objektu
150      */
151     public final int getLocationY()
152     {
153         return this.locationY;
154     }
155 
156     /**
157      * Abstraktni trida, ktera vraci nejaky objekt GameEntity.
158      * @return GameEntity : Objekt, ktery vracime.
159      */
160     public abstract GameEntity getSecondRoom();
161 
162     /**
163      * Vraci stav objektu - zda byl nebo nebyl vybran (oznacen).
164      * @return Boolean : true - objekt byl vybran, jinak vraci false.
165      */
166     public final Boolean isSeleted()
167     {
168         return this.selected;
169     }
170 
171     /**
172      * Nastavi X-ovou souradnici daneho objektu.
173      * @param x int : X-ova souradnice daneho objektu
174      */
175     public final void setLocationX(final int x)
176     {
177         this.locationX = x;
178     }
179 
180     /**
181      * Nastavi Y-ovou souradnici daneho objektu.
182      * @param y int : Y-ova souradnice daneho objektu
183      */
184     public final void setLocationY(final int y)
185     {
186         this.locationY = y;
187     }
188 
189     /**
190      * Nastavi stav objektu - vybran/nevybran.
191      * @param s Boolean : true - objekt byl vybran, jinak je false.
192      */
193     public final void setSelected(final Boolean s)
194     {
195         this.selected = s;
196     }
197 
198     /**
199      * Zobrazi grafickou reprezentaci daneho obektu v editoru.
200      * @param g2 Graphics2D : Graficky kontext, do ktereho se bude kreslit.
201      */
202     public abstract void showGraphicsObject(Graphics2D g2);
203 
204     /**
205      * Vrati typ herniho objektu.
206      * @return int : Typ herniho objektu.
207      */
208     public final int getType()
209     {
210         return this.type;
211     }
212 }