DEADSOFTWARE

Initial commit.
[LongFlight.git] / src / code / kalter / longflight / screen / Menu.java
1 package code.kalter.longflight.screen;
3 import code.kalter.longflight.EventListener;
4 import code.kalter.longflight.Loader;
5 import code.kalter.longflight.LongFlight;
6 import code.kalter.longflight.Sprite;
7 import java.io.IOException;
8 import javax.microedition.lcdui.Image;
10 /**
11 * Экран главного меню
12 *
13 * @author KalterFive
14 */
15 public class Menu extends Screen {
17 private static final int COUNT_CHOISE = 3;
19 private static final int FIGHT = 0;
20 private static final int HSCORE = 1;
21 private static final int ABOUT = 2;
23 private final Sprite[] choise;
24 private final Sprite[] selectChoise;
25 private final Sprite window;
26 private final Sprite leftSoft;
27 private final Sprite rightSoft;
28 private final Image downPanel;
30 private int position;
32 public Menu() throws IOException {
33 position = 0;
34 Loader loader = Loader.getInstance();
36 // window
37 Image windowImage = loader.getImage("/gfx/menu/window.png");
38 int windowX = (screenW - windowImage.getWidth()) / 2;
39 int windowY = (screenH - windowImage.getHeight()) / 2;
40 window = new Sprite(windowImage, windowX, windowY);
41 //===========================================================[Пасхалка]
42 window.addEvent(new EventListener() {
43 // override
44 public boolean is() {
45 return (getXReleased() > getXPressed())
46 && (window.isEntrySet(getXPressed(), getYPressed()))
47 && (window.isEntrySet(getXReleased(), getYReleased()))
48 && (Math.abs(getXPressed() - getXReleased())
49 > window.getWidth() / 2);
50 }
52 // override
53 public void event() {
54 space.activateEgg();
55 }
56 });
58 // left panel
59 Image leftSoftImage = loader.getImage("/gfx/awt/left_soft.png");
60 int leftSoftX = 0;
61 int leftSoftY = screenH - leftSoftImage.getHeight();
62 leftSoft = new Sprite(leftSoftImage, leftSoftX, leftSoftY);
63 leftSoft.addEvent(new EventListener() {
64 // override
65 public boolean is() {
66 return leftSoft.isEntrySet(getXPressed(), getYPressed());
67 }
69 // override
70 public void event() {
71 leftSoftPressed();
72 }
73 });
75 // right panel
76 Image rightSoftImage = loader.getImage("/gfx/awt/right_soft.png");
77 int rightSoftX = screenW - rightSoftImage.getWidth();
78 int rightSoftY = screenH - rightSoftImage.getHeight();
79 rightSoft = new Sprite(rightSoftImage, rightSoftX, rightSoftY);
80 rightSoft.addEvent(new EventListener() {
81 // override
82 public boolean is() {
83 return rightSoft.isEntrySet(getXPressed(), getYPressed());
84 }
86 // override
87 public void event() {
88 rightSoftPressed();
89 }
90 });
92 // down panel
93 downPanel = loader.getImage("/gfx/awt/down_panel.png");
95 // choises
96 Image choiseCrop = loader.getImage("/gfx/menu/choise.png");
97 choise = new Sprite[COUNT_CHOISE];
98 selectChoise = new Sprite[COUNT_CHOISE];
99 for (int i = 0; i < COUNT_CHOISE; i++) {
100 // choise
101 Image c = Image.createImage(choiseCrop, 0, i * 22, 102, 22, 0);
102 int choiseX = (screenW - 102) / 2;
103 int choiseY = window.getY() + 34 + i * 24;
104 choise[i] = new Sprite(c, choiseX, choiseY);
106 // selectchoise
107 Image sc = Image.createImage(choiseCrop, 102, i * 22, 102, 22, 0);
108 int selectChoiseX = choise[i].getX();
109 int selectChoiseY = choise[i].getY();
110 selectChoise[i] = new Sprite(sc, selectChoiseX, selectChoiseY);
113 // adding event listener for choise about of "fight"
114 choise[FIGHT].addEvent(new EventListener() {
115 // override
116 public boolean is() {
117 return choise[FIGHT].isEntrySet(getXPressed(), getYPressed());
120 // override
121 public void event() {
122 position = FIGHT;
123 firePressed();
125 });
126 selectChoise[FIGHT].addEvent(choise[FIGHT].getEvent(0));
128 // adding event listener for choise about of "high score"
129 choise[HSCORE].addEvent(new EventListener() {
130 // override
131 public boolean is() {
132 return choise[HSCORE].isEntrySet(getXPressed(), getYPressed());
135 // override
136 public void event() {
137 position = HSCORE;
138 firePressed();
140 });
141 selectChoise[HSCORE].addEvent(choise[HSCORE].getEvent(0));
143 // adding event listener for choise about of "about"
144 choise[ABOUT].addEvent(new EventListener() {
145 // override
146 public boolean is() {
147 return choise[ABOUT].isEntrySet(getXPressed(), getYPressed());
150 // override
151 public void event() {
152 position = ABOUT;
153 firePressed();
155 });
156 selectChoise[ABOUT].addEvent(choise[ABOUT].getEvent(0));
159 // override
160 public void start() {
161 final int previosScreenID = LongFlight.link.getPreviosScreenID();
162 if (previosScreenID == LongFlight.CRASH
163 || previosScreenID == LongFlight.PAUSE) {
164 Game.link.save();
166 setDate(39, screenH - 9);
167 super.start();
170 // override
171 public void run() {
172 while (getGameLoop()) {
173 fps.process();
174 update();
175 paint();
176 LongFlight.link.sleep(20);
177 fps.max();
181 // override
182 public void keyPressed(int keyCode) {
183 switch (getGameAction(keyCode)) {
184 case UP:
185 upPressed();
186 break;
188 case DOWN:
189 downPressed();
190 break;
192 case FIRE:
193 firePressed();
194 break;
196 switch (keyCode) {
197 case RIGHT_SOFT:
198 rightSoftPressed();
199 break;
201 case LEFT_SOFT:
202 leftSoftPressed();
203 break;
207 // override
208 public void keyReleased(int keyCode) {
209 switch (keyCode) {
210 //=======================================================[Пасхалка]
211 case KEY_NUM0:
212 space.activateEgg();
213 break;
217 // override
218 public void pointerReleased(int x, int y) {
219 super.pointerReleased(x, y);
220 window.exciteEvent();
223 // override
224 public void pointerPressed(int x, int y) {
225 super.pointerPressed(x, y);
226 rightSoft.exciteEvent();
227 leftSoft.exciteEvent();
228 choise[FIGHT].exciteEvent();
229 choise[HSCORE].exciteEvent();
230 choise[ABOUT].exciteEvent();
233 private void upPressed() {
234 position--;
235 if (position < 0) {
236 position = 0;
240 private void downPressed() {
241 position++;
242 if (position >= COUNT_CHOISE) {
243 position = COUNT_CHOISE - 1;
247 private void firePressed() {
248 leftSoftPressed();
251 private void rightSoftPressed() {
252 LongFlight.link.destroyApp(true);
255 private void leftSoftPressed() {
256 switch (position) {
257 case FIGHT:
258 LongFlight.link.setScreen(LongFlight.SELECT_SHIP);
259 break;
261 case HSCORE:
262 LongFlight.link.setScreen(LongFlight.HIGH_SCORE);
263 break;
265 case ABOUT:
266 LongFlight.link.setScreen(LongFlight.ABOUT);
267 break;
271 private void update() {
272 space.update();
275 private void paint() {
276 space.paint(graphics);
277 window.paint(graphics);
278 for (int i = 0; i < COUNT_CHOISE; i++) {
279 if (i == position) {
280 selectChoise[i].paint(graphics);
281 } else {
282 choise[i].paint(graphics);
285 for (int i = 0; i < screenW; i += 128) {
286 graphics.drawImage(downPanel, i, screenH - 18, 0);
288 leftSoft.paint(graphics);
289 rightSoft.paint(graphics);
290 paintDate();
291 flushGraphics();