package code.kalter.longflight.screen; import code.kalter.longflight.EventListener; import code.kalter.longflight.Loader; import code.kalter.longflight.LongFlight; import code.kalter.longflight.Sprite; import java.io.IOException; import javax.microedition.lcdui.Image; /** * Включение / не включение звука * * @author KalterFive */ public class EnableSound extends Screen { private static final int COUNT = 2; // of choise private static final int YES = 0; private static final int NO = 1; private int position; private final Sprite window; private final Sprite leftSoft; private final Sprite[] choise; private final Sprite[] selectChoise; private final Image downPanel; public EnableSound() throws IOException { position = 0; Loader loader = Loader.getInstance(); // window Image windowImage = loader.getImage("/gfx/enable_sound/window.png"); int windowX = (screenW - windowImage.getWidth()) / 2; int windowY = (screenH - windowImage.getHeight()) / 2; window = new Sprite(windowImage, windowX, windowY); // left panel Image leftSoftImage = loader.getImage("/gfx/awt/left_soft.png"); int leftSoftX = 0; int leftSoftY = screenH - leftSoftImage.getHeight(); leftSoft = new Sprite(leftSoftImage, leftSoftX, leftSoftY); leftSoft.addEvent(new EventListener() { // override public boolean is() { return leftSoft.isEntrySet(getXPressed(), getYPressed()); } // override public void event() { leftSoftPressed(); } }); // choises Image choiseCrop = loader.getImage("/gfx/enable_sound/choise.png"); choise = new Sprite[COUNT]; selectChoise = new Sprite[COUNT]; for (int i = 0; i < COUNT; i++) { // choise Image c = Image.createImage(choiseCrop, 0, i * 22, 102, 22, 0); int choiseX = (screenW - 102) / 2; int choiseY = window.getY() + 51 + i * 24; choise[i] = new Sprite(c, choiseX, choiseY); // selectchoise Image sc = Image.createImage(choiseCrop, 102, i * 22, 102, 22, 0); int selectChoiseX = choise[i].getX(); int selectChoiseY = choise[i].getY(); selectChoise[i] = new Sprite(sc, selectChoiseX, selectChoiseY); } // down panel downPanel = loader.getImage("/gfx/awt/down_panel.png"); // adding event listener for choise about of "yes" choise[YES].addEvent(new EventListener() { // override public boolean is() { return choise[YES].isEntrySet(getXPressed(), getYPressed()); } // override public void event() { yes(); } }); selectChoise[YES].addEvent(choise[YES].getEvent(0)); // adding event listener for choise about of "no" choise[NO].addEvent(new EventListener() { // override public boolean is() { return choise[NO].isEntrySet(getXPressed(), getYPressed()); } // override public void event() { no(); } }); selectChoise[NO].addEvent(choise[NO].getEvent(0)); } // override public void start() { setDate(39, screenH - 9); super.start(); } // override public void pointerPressed(int x, int y) { super.pointerPressed(x, y); leftSoft.exciteEvent(); choise[YES].exciteEvent(); choise[NO].exciteEvent(); } // override public void keyPressed(int keyCode) { switch (getGameAction(keyCode)) { case UP: upPressed(); break; case DOWN: downPressed(); break; case FIRE: firePressed(); break; } switch (keyCode) { case LEFT_SOFT: leftSoftPressed(); break; } } // override public void run() { while (getGameLoop()) { fps.process(); update(); paint(); LongFlight.link.sleep(20); fps.max(); } LongFlight.link.setScreen(LongFlight.SPLASH); } private void paint() { space.paint(graphics); for (int i = 0; i < screenW; i += 128) { graphics.drawImage(downPanel, i, screenH - 18, 0); } paintDate(); leftSoft.paint(graphics); window.paint(graphics); for (int i = 0; i < COUNT; i++) { if (position == i) { selectChoise[i].paint(graphics); } else { choise[i].paint(graphics); } } flushGraphics(); } private void update() { space.update(); } private void leftSoftPressed() { firePressed(); } private void upPressed() { if (--position < 0) { position = 0; } } private void downPressed() { if (++position >= COUNT) { position = COUNT - 1; } } private void firePressed() { switch (position) { case YES: yes(); break; case NO: no(); break; } } private void yes() { choise[YES].removeEvent(0); LongFlight.link.playMusic(); stop(); } private void no() { stop(); } }