DEADSOFTWARE

Initial commit.
[LongFlight.git] / src / code / kalter / longflight / screen / Pause.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 *
14 * @author KalterFive
15 */
16 public class Pause extends Screen {
18 private static final int COUNT = 2; //choise
20 private static final int FIGHT = 0;
21 private static final int MENU = 1;
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 Pause() throws IOException {
33 position = 0;
34 Loader loader = Loader.getInstance();
36 // window
37 Image windowImage = loader.getImage("/gfx/pause/window.png");
38 int windowX = (screenW - windowImage.getWidth()) / 2;
39 int windowY = (screenH - windowImage.getHeight()) / 2;
40 window = new Sprite(windowImage, windowX, windowY);
42 // right soft
43 Image rightSoftImage = loader.getImage("/gfx/awt/right_soft.png");
44 int rightSoftX = screenW - rightSoftImage.getWidth();
45 int rightSoftY = screenH - rightSoftImage.getHeight();
46 rightSoft = new Sprite(rightSoftImage, rightSoftX, rightSoftY);
47 rightSoft.addEvent(new EventListener() {
48 // override
49 public boolean is() {
50 return rightSoft.isEntrySet(getXPressed(), getYPressed());
51 }
53 // override
54 public void event() {
55 rightSoftPressed();
56 }
57 });
59 // left soft
60 Image leftSoftImage = loader.getImage("/gfx/awt/left_soft.png");
61 int leftSoftX = 0;
62 int leftSoftY = screenH - leftSoftImage.getHeight();
63 leftSoft = new Sprite(leftSoftImage, leftSoftX, leftSoftY);
64 leftSoft.addEvent(new EventListener() {
65 // override
66 public boolean is() {
67 return leftSoft.isEntrySet(getXPressed(), getYPressed());
68 }
70 // override
71 public void event() {
72 leftSoftPressed();
73 }
74 });
76 // down panel
77 downPanel = loader.getImage("/gfx/awt/down_panel.png");
79 // choises
80 Image choiseCrop = loader.getImage("/gfx/pause/choise.png");
81 choise = new Sprite[COUNT];
82 selectChoise = new Sprite[COUNT];
83 for (int i = 0; i < COUNT; i++) {
84 // choise
85 Image c = Image.createImage(choiseCrop, 0, i * 22, 102, 22, 0);
86 int choiseX = (screenW - 102) / 2;
87 int choiseY = window.getY() + 34 + i * 24;
88 choise[i] = new Sprite(c, choiseX, choiseY);
90 // selectchoise
91 Image sc = Image.createImage(choiseCrop, 102, i * 22, 102, 22, 0);
92 int selectChoiseX = choise[i].getX();
93 int selectChoiseY = choise[i].getY();
94 selectChoise[i] = new Sprite(sc, selectChoiseX, selectChoiseY);
95 }
97 // adding event listener for choise about of "fight"
98 choise[FIGHT].addEvent(new EventListener() {
99 // override
100 public boolean is() {
101 return choise[FIGHT].isEntrySet(getXPressed(), getYPressed());
104 // override
105 public void event() {
106 position = FIGHT;
107 firePressed();
109 });
111 // adding event listener for choise about of "menu"
112 choise[MENU].addEvent(new EventListener() {
113 // override
114 public boolean is() {
115 return choise[MENU].isEntrySet(getXPressed(), getYPressed());
118 // override
119 public void event() {
120 position = MENU;
121 firePressed();
123 });
126 //override
127 public void run() {
128 while (getGameLoop()) {
129 fps.process();
130 update();
131 paint();
132 LongFlight.link.sleep(20);
133 fps.max();
137 // override
138 public void start() {
139 setDate(39, screenH - 9);
140 super.start();
143 // override
144 public void keyPressed(int keyCode) {
145 switch (getGameAction(keyCode)) {
146 case UP:
147 upPressed();
148 break;
150 case DOWN:
151 downPressed();
152 break;
154 case FIRE:
155 firePressed();
156 break;
158 switch (keyCode) {
159 case LEFT_SOFT:
160 leftSoftPressed();
161 break;
163 case RIGHT_SOFT:
164 rightSoftPressed();
165 break;
169 // override
170 public void pointerPressed(int x, int y) {
171 super.pointerPressed(x, y);
172 leftSoft.exciteEvent();
173 rightSoft.exciteEvent();
174 choise[FIGHT].exciteEvent();
175 choise[MENU].exciteEvent();
178 private void upPressed() {
179 if (--position < 0) {
180 position = 0;
184 private void downPressed() {
185 if (++position >= COUNT) {
186 position = COUNT - 1;
190 private void leftSoftPressed() {
191 firePressed();
194 private void rightSoftPressed() {
195 position = FIGHT;
196 firePressed();
199 private void firePressed() {
200 switch (position) {
201 case FIGHT:
202 LongFlight.link.setScreen(LongFlight.GAME);
203 break;
205 case MENU:
206 Game.link.setNullPause();
207 LongFlight.link.setScreen(LongFlight.MENU);
208 break;
212 private void update() {
213 space.update();
216 private void paint() {
217 space.paint(graphics);
218 Game.link.paintElements(graphics);
219 window.paint(graphics);
220 paintChoise();
221 paintDownPanel();
222 leftSoft.paint(graphics);
223 rightSoft.paint(graphics);
224 paintDate();
225 flushGraphics();
228 private void paintChoise() {
229 for (int i = 0; i < COUNT; i++) {
230 if (i == position) {
231 selectChoise[i].paint(graphics);
232 } else {
233 choise[i].paint(graphics);
238 private void paintDownPanel() {
239 for (int i = 0; i < screenW; i += 128) {
240 graphics.drawImage(downPanel, i, screenH - 18, 0);