0,0 → 1,155 |
/*************************************************************** |
* |
* Code for on Device Debugging of DUBwise |
* |
* Author: Marcus -LiGi- Bueschleb |
* Mailto: LiGi @at@ LiGi DOTT de |
* |
***************************************************************/ |
|
import javax.microedition.lcdui.*; |
|
|
public class DUBwiseDebug |
extends Canvas |
{ |
|
|
public boolean showing=false; |
public boolean paused=false; |
|
public String debug_msg=""; |
|
private byte[] debug_screen_sequence={KEY_POUND,KEY_NUM4,KEY_NUM2}; |
private byte debug_screen_sequence_pos=0; |
|
|
public final static int DEBUG_HISTORY_LENGTH=100; |
|
|
public String[] debug_msgs; |
|
public int debug_pos=0; |
public int debug_paused_pos=0; |
|
|
int y_off=0; |
|
|
public DUBwiseCanvas canvas; |
|
public DUBwiseDebug(DUBwiseCanvas canvas_) |
{ |
canvas=canvas_; |
|
debug_msgs=new String[DEBUG_HISTORY_LENGTH]; |
for (int tmp_i=0;tmp_i<DEBUG_HISTORY_LENGTH;tmp_i++) |
debug_msgs[tmp_i]=""; |
} |
|
public void log(String str) |
{ |
if (debug_pos==DEBUG_HISTORY_LENGTH) |
debug_pos=0; |
|
debug_msgs[debug_pos]=str; |
debug_pos++; |
// debug_msgs[debug_pos]=str; |
} |
|
|
public void err(String str) |
{ |
if (debug_pos==DEBUG_HISTORY_LENGTH) |
debug_pos=0; |
|
debug_msgs[debug_pos]=str; |
debug_pos++; |
showing=false; |
paused=true; |
// debug_msgs[debug_pos]=str; |
} |
|
public void paint (Graphics g) |
{ |
|
Font debug_font= Font.getFont(Font.FACE_SYSTEM, Font.STYLE_PLAIN, Font.SIZE_SMALL); |
|
g.setFont(debug_font); |
|
g.setColor(0x0000FF); |
g.fillRect(0,0,canvas.getWidth(),canvas.getHeight()); |
g.setColor(0xFFFFFF); |
|
y_off=0; |
if (!paused) debug_paused_pos=debug_pos; |
for (int tmp_pos=debug_paused_pos;((tmp_pos>0)&&(y_off<canvas.getHeight()));tmp_pos--) |
{ |
debug_msg=debug_msgs[tmp_pos]; |
String tmp_str=""; |
|
for(int tmp_i=0;tmp_i<debug_msg.length();tmp_i++) |
{ |
if ((debug_msg.charAt(tmp_i)=='\r')||(debug_msg.charAt(tmp_i)=='\n')) |
{ |
g.drawString(tmp_str,5,y_off,Graphics.TOP | Graphics.LEFT); |
y_off+=debug_font.getHeight(); |
tmp_str=""; |
} |
else |
tmp_str+=debug_msg.charAt(tmp_i); |
} |
g.drawString(tmp_pos+" "+tmp_str,0,y_off,Graphics.TOP | Graphics.LEFT); |
y_off+=debug_font.getHeight(); |
} |
|
} |
|
public void process_key(int keyCode) |
{ |
|
|
if (!showing) |
{ |
if (keyCode==debug_screen_sequence[debug_screen_sequence_pos]) |
{ |
debug_screen_sequence_pos++; |
if(debug_screen_sequence_pos==debug_screen_sequence.length) |
{ |
showing=true; |
debug_screen_sequence_pos=0; |
} |
} |
else |
debug_screen_sequence_pos=0; |
} |
else |
{ |
if (keyCode==KEY_STAR) |
showing=false; |
|
if (keyCode==KEY_NUM0) |
paused=!paused; |
|
|
switch (getGameAction (keyCode)) |
{ |
case UP: |
debug_paused_pos++; |
break; |
|
case DOWN: |
debug_paused_pos--; |
break; |
|
} |
|
|
} |
|
|
} |
|
|
|
} |