1 package code
.kalter
.longflight
.screen
;
3 import code
.kalter
.longflight
.ByteArrayOutputStream
;
4 import code
.kalter
.longflight
.EventListener
;
5 import code
.kalter
.longflight
.Loader
;
6 import code
.kalter
.longflight
.LongFlight
;
7 import code
.kalter
.longflight
.Sprite
;
8 import code
.kalter
.longflight
.game
.ship
.Ship
;
9 import code
.kalter
.longflight
.game
.ship
.ShipGamer
;
10 import code
.kalter
.longflight
.rms
.RMS
;
11 import java
.io
.IOException
;
12 import javax
.microedition
.lcdui
.Image
;
13 import javax
.microedition
.rms
.RecordStoreException
;
20 public class SelectShip
extends Screen
{
23 private final Sprite window
;
24 private final Sprite frame
;
25 private final Sprite leftSoft
;
26 private final Sprite rightSoft
;
27 private final Sprite
[] leftButton
;
28 private final Sprite
[] rightButton
;
29 private final Sprite
[] ship
;
30 private final Image downPanel
;
32 public SelectShip() throws IOException
{
33 Loader loader
= Loader
.getInstance();
36 Image windowImage
= loader
.getImage("/gfx/select_ship/window.png");
37 int windowX
= (screenW
- windowImage
.getWidth()) / 2;
38 int windowY
= (screenH
- windowImage
.getHeight()) / 2;
39 window
= new Sprite(windowImage
, windowX
, windowY
);
40 window
.addEvent(new EventListener() {
43 return window
.isEntrySet(getXPressed(), getYPressed())
44 && getXPressed() == getXReleased()
45 && getYPressed() == getYReleased();
53 window
.addEvent(new EventListener() {
56 return window
.isEntrySet(getXPressed(), getYPressed())
57 && window
.isEntrySet(getXReleased(), getYReleased())
58 && Math
.abs(getXReleased() - getXPressed()) > 50
59 && Math
.abs(getYReleased() - getYPressed()) < 50;
64 if (getXPressed() < getXReleased()) {
67 if (getXPressed() > getXReleased()) {
74 Image leftSoftImage
= loader
.getImage("/gfx/awt/left_soft.png");
76 int leftSoftY
= screenH
- leftSoftImage
.getHeight();
77 leftSoft
= new Sprite(leftSoftImage
, leftSoftX
, leftSoftY
);
78 leftSoft
.addEvent(new EventListener() {
81 return leftSoft
.isEntrySet(getXPressed(), getYPressed());
91 Image rightSoftImage
= loader
.getImage("/gfx/awt/right_soft.png");
92 int rightSoftX
= screenW
- rightSoftImage
.getWidth();
93 int rightSoftY
= screenH
- rightSoftImage
.getHeight();
94 rightSoft
= new Sprite(rightSoftImage
, rightSoftX
, rightSoftY
);
95 rightSoft
.addEvent(new EventListener() {
98 return rightSoft
.isEntrySet(getXPressed(), getYPressed());
102 public void event() {
108 downPanel
= loader
.getImage("/gfx/awt/down_panel.png");
111 Image frameImage
= loader
.getImage("/gfx/select_ship/frame.png");
112 int frameX
= window
.getX()
113 + (window
.getWidth() - frameImage
.getWidth()) / 2;
114 int frameY
= window
.getY() + 14
115 + (window
.getHeight() - frameImage
.getHeight()) / 2;
116 frame
= new Sprite(frameImage
, frameX
, frameY
);
119 ship
= new Sprite
[4];
120 for (int i
= 0; i
< Ship
.COUNT
; i
++) {
121 Image shipImage
= ShipGamer
.getInstance().getImage(i
);
122 int shipX
= frame
.getX()
123 + (frame
.getWidth() - shipImage
.getWidth()) / 2;
124 int shipY
= frame
.getY()
125 + (frame
.getHeight() - shipImage
.getHeight()) / 2;
126 ship
[i
] = new Sprite(shipImage
, shipX
, shipY
);
129 // left / right buttons
130 Image button
= loader
.getImage("/gfx/select_ship/lr_button.png");
131 leftButton
= new Sprite
[2];
132 rightButton
= new Sprite
[2];
135 Image leftButtonImage
= Image
.createImage(button
, 0, 0, 6, 11, 0);
136 int leftButtonX
= window
.getX() + 15;
137 int leftButtonY
= frame
.getY() + (frame
.getHeight() - 11) / 2;
138 leftButton
[0] = new Sprite(leftButtonImage
, leftButtonX
, leftButtonY
);
140 // select left button
141 Image selectLeftButtonImage
= Image
.createImage(button
, 0, 11,
143 int selectLeftButtonX
= leftButton
[0].getX();
144 int selectLeftButtonY
= leftButton
[0].getY();
145 leftButton
[1] = new Sprite(selectLeftButtonImage
,
146 selectLeftButtonX
, selectLeftButtonY
);
149 Image rightButtonImage
= Image
.createImage(button
, 6, 0, 6, 11, 0);
150 int rightButtonX
= window
.getX() + window
.getWidth() - 21;
151 int rightButtonY
= frame
.getY() + (frame
.getHeight() - 11) / 2;
152 rightButton
[0] = new Sprite(rightButtonImage
,
153 rightButtonX
, rightButtonY
);
155 // select right button
156 Image selectRightButtonImage
= Image
.createImage(button
, 6, 11,
158 int selectRightButtonX
= rightButton
[0].getX();
159 int selectRightButtonY
= rightButton
[0].getY();
160 rightButton
[1] = new Sprite(selectRightButtonImage
,
161 selectRightButtonX
, selectRightButtonY
);
165 public void start() {
167 setDate(39, screenH
- 9);
178 while (getGameLoop()) {
182 LongFlight
.link
.sleep(20);
188 public void keyPressed(int keyCode
) {
189 switch (getGameAction(keyCode
)) {
214 public void pointerPressed(int x
, int y
) {
215 super.pointerPressed(x
, y
);
216 rightSoft
.exciteEvent();
217 leftSoft
.exciteEvent();
221 public void pointerReleased(int x
, int y
) {
222 super.pointerReleased(x
, y
);
223 window
.exciteEvent();
226 private void leftPressed() {
227 if (--position
< 0) {
228 position
= Ship
.COUNT
- 1;
232 private void rightPressed() {
233 if (++position
>= Ship
.COUNT
) {
238 private void firePressed() {
242 private void rightSoftPressed() {
243 LongFlight
.link
.setScreen(LongFlight
.MENU
);
246 private void leftSoftPressed() {
250 private void update() {
254 private void paint() {
255 space
.paint(graphics
);
256 window
.paint(graphics
);
257 frame
.paint(graphics
);
258 ship
[position
].paint(graphics
);
259 int keyStates
= getKeyStates();
261 if ((keyStates
& LEFT_PRESSED
) != 0) {
264 leftButton
[li
].paint(graphics
);
266 if ((keyStates
& RIGHT_PRESSED
) != 0) {
269 rightButton
[ri
].paint(graphics
);
270 for (int i
= 0; i
< screenW
; i
+= 128) {
271 graphics
.drawImage(downPanel
, i
, screenH
- 18, 0);
273 leftSoft
.paint(graphics
);
274 rightSoft
.paint(graphics
);
279 private void saveAndGoToFire() {
281 RMS rms
= new RMS("longflight", true);
282 ByteArrayOutputStream data
= new ByteArrayOutputStream(1);
283 data
.writeByte((byte) position
);
286 } catch (RecordStoreException rse
) {
287 LongFlight
.link
.catchException(rse
);
289 space
.deactivateEgg();
290 LongFlight
.link
.setScreen(LongFlight
.LOADING
);