DEADSOFTWARE

Initial commit.
[LongFlight.git] / src / code / kalter / longflight / screen / HighScore.java
1 package code.kalter.longflight.screen;
3 import code.kalter.longflight.ByteArrayInputStream;
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.rms.RMS;
9 import code.kalter.longflight.rms.RecordNotFoundException;
10 import java.io.IOException;
11 import javax.microedition.lcdui.Image;
12 import javax.microedition.rms.RecordStoreException;
14 /**
15 * Экран отображения лучших рекордов
16 *
17 * @author KalterFive
18 */
19 public class HighScore extends Screen {
21 private String score;
22 private final Sprite window;
23 private final Sprite leftSoft;
24 private final Sprite rightSoft;
25 private final Image downPanel;
27 public HighScore() throws IOException {
28 Loader loader = Loader.getInstance();
30 // window
31 Image windowImage = loader.getImage("/gfx/hscore/window.png");
32 int windowX = (screenW - windowImage.getWidth()) / 2;
33 int windowY = (screenH - windowImage.getHeight()) / 2;
34 window = new Sprite(windowImage, windowX, windowY);
35 window.addEvent(new EventListener() {
36 // override
37 public boolean is() {
38 return window.isEntrySet(getXPressed(), getYPressed());
39 }
41 // override
42 public void event() {
43 setScreenMenu();
44 }
45 });
47 // left soft
48 Image leftSoftImage = loader.getImage("/gfx/awt/left_soft.png");
49 int leftSoftX = 0;
50 int leftSoftY = screenH - leftSoftImage.getHeight();
51 leftSoft = new Sprite(leftSoftImage, leftSoftX, leftSoftY);
52 leftSoft.addEvent(new EventListener() {
53 // override
54 public boolean is() {
55 return leftSoft.isEntrySet(getXPressed(), getYPressed());
56 }
58 // override
59 public void event() {
60 setScreenMenu();
61 }
62 });
64 // right soft
65 Image rightSoftImage = loader.getImage("/gfx/awt/right_soft.png");
66 int rightSoftX = screenW - rightSoftImage.getWidth();
67 int rightSoftY = screenH - rightSoftImage.getHeight();
68 rightSoft = new Sprite(rightSoftImage, rightSoftX, rightSoftY);
69 rightSoft.addEvent(new EventListener() {
70 // override
71 public boolean is() {
72 return rightSoft.isEntrySet(getXPressed(), getYPressed());
73 }
75 // override
76 public void event() {
77 setScreenMenu();
78 }
79 });
81 // down panel
82 downPanel = loader.getImage("/gfx/awt/down_panel.png");
83 }
85 // override
86 public void start() {
87 score = "";
88 try {
89 RMS rms = new RMS("longflight", true);
90 ByteArrayInputStream byteReader = rms.get(2);
91 rms.close();
92 for (int i = 0; i < 5; i++) {
93 score += (i + 1) + ". " + byteReader.readInteger() + "\r\n";
94 }
95 } catch (RecordNotFoundException e) {
96 for (int i = 0; i < 5; i++) {
97 score += (i + 1) + ". 0\r\n";
98 }
99 } catch (RecordStoreException e) {
100 LongFlight.link.catchException(e);
102 setDate(39, screenH - 9);
103 super.start();
106 // override
107 public void run() {
108 while (getGameLoop()) {
109 fps.process();
110 update();
111 paint();
112 LongFlight.link.sleep(20);
113 fps.max();
117 // override
118 public void keyPressed(int keyCode) {
119 switch (getGameAction(keyCode)) {
120 case FIRE:
121 keyCode = LEFT_SOFT;
122 break;
124 switch (keyCode) {
125 case LEFT_SOFT:
126 case RIGHT_SOFT:
127 setScreenMenu();
128 break;
132 // override
133 public void pointerPressed(int x, int y) {
134 super.pointerPressed(x, y);
135 rightSoft.exciteEvent();
136 leftSoft.exciteEvent();
137 window.exciteEvent();
140 private void setScreenMenu() {
141 LongFlight.link.setScreen(LongFlight.MENU);
144 private void update() {
145 space.update();
148 private void paint() {
149 space.paint(graphics);
150 window.paint(graphics);
151 for (int i = 0; i < screenW; i += 128) {
152 graphics.drawImage(downPanel, i, screenH - 18, 0);
154 leftSoft.paint(graphics);
155 rightSoft.paint(graphics);
156 font.paint(graphics, score, window.getX() + 10, window.getY() + 37);
157 paintDate();
158 flushGraphics();