import javax.microedition.lcdui.Canvas;
import javax.microedition.lcdui.Display;
import javax.microedition.lcdui.Graphics;
import javax.microedition.midlet.MIDlet;
import javax.microedition.lcdui.Image;
import java.util.Hashtable;
import java.io.IOException;
public class Maler extends Canvas {
protected GameManager gameManager;
protected int GAME_WIDTH, GAME_HEIGHT;
Graphics gTemp = null;
protected Display dis;
private KeyMonitor KeyMonitor;
public int tankType = 1;
public int status;
protected Menu menu;
protected long time;
protected int tankAllNum;
public Maler(GameManager gameManager) {
this.gameManager = gameManager;
}
public void init() {
gamesize();
dis = Display.getDisplay((MIDlet) gameManager);
dis.setCurrent(this);
setFullScreenMode(true);
KeyMonitor = new KeyMonitor(gameManager);
this.setCommandListener(KeyMonitor);
}
protected void gamesize(){
GAME_WIDTH=240;
GAME_HEIGHT=240;
}
public void setColor(int R, int G, int B) {
gTemp.setColor(R, G, B);
}
public void fillOvall(int x, int y, int width, int height) {
gTemp.fillArc(x, y, width, height, 0, 360);
}
public void fillRect(int x, int y, int width, int height) {
gTemp.fillRect(x, y, width, height);
}
public void drawLine(int x1, int y1, int x2, int y2) {
gTemp.drawLine(x1, y1, x2, y2);
}
public void drawRoundRect(int x, int y, int width, int height, int arcw,
int arch) {
gTemp.drawRoundRect(x, y, width, height, arcw, arch);
}
protected void paint(Graphics g) {
gTemp = g;
g.setColor(0, 0, 0);
g.fillRect(0, 0, getWidth(), getHeight());
int c = g.getColor();
gameManager.malenkontrolle();
info(g);
g.setColor(c);
}
public void info(Graphics g) {
if (status == GameManager.SPIELEN) {
if (gameManager.getBlood() != 0) {
g.setColor(0, 255, 0);
g.drawString("MyTank Life: " + gameManager.getBlood(), 5,
GAME_HEIGHT, Graphics.TOP | Graphics.LEFT);
g.setColor(255, 0, 0);
g.fillRect(5, GAME_HEIGHT + 15, 5 * 2 * gameManager.getBlood(), 5);
g.setColor(0, 255, 0);
g.drawString("Tanks:" + gameManager.getTankMenge(), 5,
GAME_HEIGHT + 20, Graphics.TOP | Graphics.LEFT);
}
}
}
public int getScreenWidth() {
return this.getWidth();
}
public int getScreenHeight() {
return this.getWidth();
}
public void setStatus(int status) {
this.status = status;
}
////----------------------------------------------------------------
public void menuBehandeln(String option) {
System.out.println(option);
if (option.equals(Sprach.START)) {
this.setStatus(GameManager.TANK_WAEHLEN);
this.gameManager.setStatus(GameManager.TANK_WAEHLEN);
menu = null;
}
if (option.equals(Sprach.MAIN_MENU)) {
this.setStatus(GameManager.MAIN_MENU);
this.gameManager.setStatus(GameManager.MAIN_MENU);
menu = null;
}
if (option.equals(Sprach.NOTE)) {
this.setStatus(GameManager.NOTE);
this.gameManager.setStatus(GameManager.NOTE);
menu = null;
}
if (option.equals(Sprach.HNOTE)) {
this.setStatus(GameManager.MAIN_MENU);
this.gameManager.setStatus(GameManager.MAIN_MENU);
menu = null;
}
if (option.equals(Sprach.EXIT)) {
gameManager.exit();
}
if (option.equals(Sprach.PAUSE)) {
this.setStatus(GameManager.SPIELEN);
this.gameManager.setStatus(GameManager.SPIELEN);
menu = null;
}
if (option.equals(Sprach.RESUME)) {
gamescreenstart();
}
if (option.equals(Sprach.TANKA)) {
menu = null;
tankType = 01;
this.setStatus(GameManager.LEVEL);
gameManager.setStatus(GameManager.LEVEL);
}
if (option.equals(Sprach.TANKB)) {
menu = null;
tankType = 02;
this.setStatus(GameManager.LEVEL);
gameManager.setStatus(GameManager.LEVEL);
}
if (option.equals(Sprach.TANKC)) {
menu = null;
tankType = 03;
this.setStatus(GameManager.LEVEL);
gameManager.setStatus(GameManager.LEVEL);
}
if (option.equals(Sprach.HELP)) {
this.setStatus(GameManager.HELP);
gameManager.setStatus(GameManager.HELP);
menu = null;
}
if (option.equals(Sprach.HelpItem)) {
this.setStatus(GameManager.MAIN_MENU);
this.gameManager.setStatus(GameManager.MAIN_MENU);
menu = null;
}
}
protected void gameScreenStart() {
this.setStatus(GameManager.SPIELEN);
this.gameManager.setStatus(GameManager.SPIELEN);
}
public void mainMenu() {
if (menu == null) {
mainMenuerstellen();
}
menu.erscheinen(gTemp);
//System.out.println(menu.logoimage == null);
}
public void mainMenuerstellen() {
menu = new Menu(this);
menu.add(Sprach.START, 0);
menu.add(Sprach.HELP, 10);
menu.add(Sprach.EXIT, 11);
menu.setStyle(0);
menu.setKoordinateImage(GAME_WIDTH / 2, GAME_HEIGHT * 2 / 3);
menu.setZeileAbstand(20);
menu.addLogo(loadImage("15.png",0,0));
menu.setLogoKoordinate(0, 0);
}
public void tankWaehlen() {
if (menu == null) {
tankErstellen();
}
menu.erscheinen(gTemp);
}
protected void tankErstellen() {
menu = new Menu(this);
menu.addLogo(loadImage("15.png",0,0));
menu.setStyle(1);
menu.setZeileAbstand(10);
menu.setKoordinateImage(GAME_WIDTH / 2, GAME_HEIGHT*2/3);
}
public void help() {
if (menu == null) {
helpItemErstellen();
}
menu.erscheinen(gTemp);
}
protected void helpItemErstellen() {
menu = new Menu(this);
menu.add(Sprach.HelpItem, loadImage("transparent.png", 0, 0), loadImage("help.png", 0, 0), 0);
menu.setStyle(3);
menu.setKoordinateImage(GAME_WIDTH / 2, GAME_HEIGHT / 2);
}
public void pause() {
if (menu == null) {
menu = new Menu(this);
menu.setKoordinateImage(GAME_WIDTH / 2, GAME_HEIGHT / 2);
menu.setZeileAbstand(0);
menu.add(Sprach.PAUSE, 0);
menu.setStyle(0);
}
menu.erscheinen(gTemp);
}
protected void gameLevel(int lvl) {
if (menu == null) {
time = System.currentTimeMillis();
menu = new Menu(this);
menu.setKoordinateImage(GAME_WIDTH / 2, GAME_HEIGHT / 2);
menu.setZeileAbstand(0);
menu.add(Sprach.LEVEL, 0);
menu.add(lvl + "", 1);
menu.setStyle(0);
menu.setZeileAbstand(55);
menu.setWaehlbar(false);
}
menu.erscheinen(gTemp);
if (System.currentTimeMillis() - time > 2000) {
gamescreenstart();
menu = null;
}
}
protected void gamescreenstart() {
this.setStatus(GameManager.SPIELEN);
this.gameManager.setStatus(GameManager.SPIELEN);
menu = null;
}
public void gameLose() {
if (menu == null) {
time = System.currentTimeMillis();
menu = new Menu(this);
menu.setKoordinateImage(GAME_WIDTH / 2, GAME_HEIGHT / 2);
menu.setZeileAbstand(0);
menu.add(Sprach.LOSE, 0);
menu.setStyle(0);
menu.setZeileAbstand(55);
}
menu.erscheinen(gTemp);
if (System.currentTimeMillis() - time > 2000) {
this.setStatus(GameManager.MAIN_MENU);
gameManager.setStatus(gameManager.MAIN_MENU);
// gameManager.writeScore();
menu = null;
}
}
protected void gameWin() {
if (menu == null) {
time = System.currentTimeMillis();
menu = new Menu(this);
menu.setKoordinateImage(GAME_WIDTH / 2, GAME_HEIGHT / 2);
menu.setZeileAbstand(0);
menu.add(Sprach.WIN, 0);
menu.setStyle(0);
}
menu.erscheinen(gTemp);
if (System.currentTimeMillis() - time > 2000) {
this.setStatus(GameManager.MAIN_MENU);
this.gameManager.setStatus(GameManager.MAIN_MENU);
menu = null;
//gameManager.writeScore();
}
}
public void gameExit() {
if (menu == null) {
menu = new Menu(this);
menu.setKoordinateImage(GAME_WIDTH / 2, GAME_HEIGHT / 2);
menu.setZeileAbstand(0);
menu.add(Sprach.MAIN_MENU, 1);
menu.add(Sprach.RESUME, 0);
menu.setStyle(0);
menu.setZeileAbstand(55);
}
menu.erscheinen(gTemp);
}
////--------------------------------------------------------------------------------------
protected void keyPressed(int keyCode) {
KeyMonitor.KeyPressed(keyCode);
}
protected void keyReleased(int keyCode) {
KeyMonitor.keyReleased(keyCode);
}
protected void keyPressedBehandeln(int keyCode) {
if (menu != null) {
menu.KeyBehandeln(keyCode);
}
}
public Image loadImage(String str, int a, int b) {
Image tempimage = null;
try {
tempimage = Image.createImage("/" + str);
} catch (IOException ex) {
ex.printStackTrace();
}
if (a == 0 && b == 0) {
return tempimage;
}
return scale(tempimage, a, b);
}
public static Image scale(Image src, int width, int height) {
int scanline = src.getWidth();
int srcw = src.getWidth();
int srch = src.getHeight();
int buf[] = new int[srcw * srch];
src.getRGB(buf, 0, scanline, 0, 0, srcw, srch);
int buf2[] = new int[width * height];
for (int y = 0; y < height; y++) {
int c1 = y * width;
int c2 = (y * srch / height) * scanline;
for (int x = 0; x < width; x++) {
buf2[c1 + x] = buf[c2 + x * srcw / width];
}
}
Image img = Image.createRGBImage(buf2, width, height, true);
return img;
}
}