1 package code
.kalter
.longflight
.screen
;
3 import code
.kalter
.longflight
.Area
;
4 import code
.kalter
.longflight
.FPS
;
5 import code
.kalter
.longflight
.Font
;
6 import code
.kalter
.longflight
.Pointer
;
7 import code
.kalter
.longflight
.Time
;
8 import code
.kalter
.longflight
.space
.Space
;
9 import java
.io
.IOException
;
10 import javax
.microedition
.lcdui
.Graphics
;
11 import javax
.microedition
.lcdui
.game
.GameCanvas
;
14 * Абстрактный класс для всех экранов
18 public abstract class Screen
extends GameCanvas
implements Runnable
{
21 public final int LEFT_SOFT
= -6;
22 public final int RIGHT_SOFT
= -7;
24 // некоторые свойства, характерные каждому экрану
25 protected final Graphics graphics
;
26 protected final FPS fps
;
27 protected final Space space
;
28 protected final Font font
;
29 protected final int screenW
;
30 protected final int screenH
;
32 // нажатие и области нажатия
33 private final Pointer pointer
;
34 private final Area upArea
;
35 private final Area downArea
;
36 private final Area leftArea
;
37 private final Area rightArea
;
38 private final Area fireArea
;
40 // текущее время и его координаты
41 private final Time time
;
42 private int timeXPosition
;
43 private int timeYPosition
;
45 private Thread thread
;
46 protected boolean gameLoop
;
48 public Screen() throws IOException
{
50 setFullScreenMode(true);
51 graphics
= getGraphics();
53 screenH
= getHeight();
54 fps
= FPS
.getInstance(30);
55 space
= Space
.getInstance(screenW
, screenH
);
56 font
= Font
.getInstance();
57 time
= Time
.getInstance(60000);
58 pointer
= new Pointer();
59 upArea
= new Area(screenW
/ 3, 0, screenW
- screenW
/ 3, screenH
/ 3);
60 downArea
= new Area(screenW
/ 3, screenH
- screenH
/ 3,
61 screenW
- screenW
/ 3, screenH
);
62 leftArea
= new Area(0, 0, screenW
/ 3, screenH
);
63 rightArea
= new Area(screenW
- screenW
/ 3, 0, screenW
, screenH
);
64 fireArea
= new Area(screenW
/ 3, screenH
/ 3,
65 screenW
- screenW
/ 3, screenH
- screenH
/ 3);
70 space
.paint(graphics
);
72 thread
= new Thread(this);
82 public void pointerPressed(int x
, int y
) {
83 pointer
.setPressed(x
, y
);
87 public void pointerReleased(int x
, int y
) {
88 pointer
.setReleased(x
, y
);
91 public final boolean getGameLoop() {
95 public int getXPressed() {
96 return pointer
.getXPressed();
99 public int getYPressed() {
100 return pointer
.getYPressed();
103 public int getXReleased() {
104 return pointer
.getXReleased();
107 public int getYReleased() {
108 return pointer
.getYReleased();
111 public boolean isPointerUp() {
112 return isPointerArea(upArea
);
115 public boolean isPointerDown() {
116 return isPointerArea(downArea
);
119 public boolean isPointerLeft() {
120 return isPointerArea(leftArea
);
123 public boolean isPointerRight() {
124 return isPointerArea(rightArea
);
127 public boolean isPointerFire() {
128 return isPointerArea(fireArea
);
131 public boolean isPointerArea(Area area
) {
132 return area
.isEntry(pointer
.getXPressed(), pointer
.getYPressed());
135 protected final void setDate(int x
, int y
) {
136 this.timeXPosition
= x
;
137 this.timeYPosition
= y
;
140 protected final void paintDate() {
141 font
.paint(graphics
, time
.toString(), timeXPosition
, timeYPosition
);