Subversion Repositories Projects

Rev

Rev 82 | Go to most recent revision | Details | Compare with Previous | Last modification | View Log | RSS feed

Rev Author Line No. Line
81 ligi 1
/***************************************************************
2
 *
3
 * Code for on Device Debugging of DUBwise
4
 *                                                          
5
 * Author:        Marcus -LiGi- Bueschleb                    
6
 *
7
 * see README for further Infos
8
 *
9
 ***************************************************************/
10
 
11
import javax.microedition.lcdui.*;
12
 
13
 
14
public class DUBwiseDebug
15
    extends Canvas
16
{
17
 
18
 
19
    public  boolean showing=false;
135 ligi 20
    public  boolean paused=false;
21
 
81 ligi 22
    public String debug_msg="";
23
 
24
    private byte[] debug_screen_sequence={KEY_POUND,KEY_NUM4,KEY_NUM2};
25
    private byte   debug_screen_sequence_pos=0;
26
 
27
 
135 ligi 28
    public final static int DEBUG_HISTORY_LENGTH=1000;
81 ligi 29
 
30
 
31
    public String[] debug_msgs;
135 ligi 32
 
81 ligi 33
    public int debug_pos=0;
135 ligi 34
    public int debug_paused_pos=0;
81 ligi 35
 
135 ligi 36
 
81 ligi 37
    int y_off=0;
38
 
135 ligi 39
 
40
    public DUBwiseCanvas canvas;
41
 
42
    public DUBwiseDebug(DUBwiseCanvas canvas_)
81 ligi 43
    {
135 ligi 44
        canvas=canvas_;
45
 
81 ligi 46
        debug_msgs=new String[DEBUG_HISTORY_LENGTH];
47
        for (int tmp_i=0;tmp_i<DEBUG_HISTORY_LENGTH;tmp_i++)
48
            debug_msgs[tmp_i]="";
49
    }
50
 
51
    public void log(String str)
52
    {
135 ligi 53
 
81 ligi 54
        debug_msgs[debug_pos]=str;
55
        debug_pos++;
56
        if (debug_pos==DEBUG_HISTORY_LENGTH)
57
            debug_pos=0;
135 ligi 58
            debug_msgs[debug_pos]=str;
81 ligi 59
    }
60
 
61
    public void paint (Graphics g)
62
    {
63
 
64
       Font debug_font= Font.getFont(Font.FACE_SYSTEM, Font.STYLE_PLAIN, Font.SIZE_SMALL);  
65
 
66
       g.setFont(debug_font);
67
 
68
        g.setColor(0x0000FF);
135 ligi 69
        g.fillRect(0,0,canvas.getWidth(),canvas.getHeight());
81 ligi 70
        g.setColor(0xFFFFFF);
71
 
72
        y_off=0;
135 ligi 73
        if (!paused) debug_paused_pos=debug_pos;
74
        for (int tmp_pos=debug_paused_pos;((tmp_pos>0)&&(y_off<canvas.getHeight()));tmp_pos--)
81 ligi 75
            {
76
                debug_msg=debug_msgs[tmp_pos];
77
                String tmp_str="";
78
 
79
                for(int tmp_i=0;tmp_i<debug_msg.length();tmp_i++)
80
                    {
81
                        if ((debug_msg.charAt(tmp_i)=='\r')||(debug_msg.charAt(tmp_i)=='\n'))
82
                            {
83
                            g.drawString(tmp_str,5,y_off,Graphics.TOP | Graphics.LEFT);
84
                            y_off+=debug_font.getHeight();
85
                            tmp_str="";
86
                            }
87
                        else
88
                            tmp_str+=debug_msg.charAt(tmp_i);
89
                    }
135 ligi 90
                g.drawString(tmp_pos+" "+tmp_str,0,y_off,Graphics.TOP | Graphics.LEFT);
81 ligi 91
                y_off+=debug_font.getHeight();
92
            }
93
 
94
    }
95
 
96
    public void process_key(int keyCode)
97
    {
98
 
99
 
100
        if (!showing)
101
            {
102
                if (keyCode==debug_screen_sequence[debug_screen_sequence_pos])
103
                    {
104
                        debug_screen_sequence_pos++;
105
                        if(debug_screen_sequence_pos==debug_screen_sequence.length)
106
                            {
107
                                showing=true;
108
                                debug_screen_sequence_pos=0;
109
                            }
110
                    }
111
                else
112
                    debug_screen_sequence_pos=0;
113
            }
114
        else
115
            {
116
                if (keyCode==KEY_STAR)
117
                    showing=false;
135 ligi 118
 
119
                if (keyCode==KEY_NUM0)
120
                    paused=!paused;
121
 
122
 
123
                switch (getGameAction (keyCode))
124
                            {
125
                            case UP:
126
                                debug_paused_pos++;
127
                                break;
128
 
129
                            case DOWN:
130
                                debug_paused_pos--;
131
                                break;
132
 
133
                            }
134
 
135
 
81 ligi 136
            }
137
 
138
 
139
    }
140
 
141
 
142
 
143
}