Subversion Repositories Projects

Rev

Rev 135 | 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
    {
149 ligi 53
        if (debug_pos==DEBUG_HISTORY_LENGTH)
54
            debug_pos=0;
135 ligi 55
 
81 ligi 56
        debug_msgs[debug_pos]=str;
57
        debug_pos++;
149 ligi 58
        //          debug_msgs[debug_pos]=str;
59
    }
60
 
61
 
62
    public void err(String str)
63
    {
81 ligi 64
        if (debug_pos==DEBUG_HISTORY_LENGTH)
65
            debug_pos=0;
149 ligi 66
 
67
        debug_msgs[debug_pos]=str;
68
        debug_pos++;
69
        showing=false;
70
        paused=true;
71
        //          debug_msgs[debug_pos]=str;
81 ligi 72
    }
73
 
74
    public void paint (Graphics g)
75
    {
76
 
77
       Font debug_font= Font.getFont(Font.FACE_SYSTEM, Font.STYLE_PLAIN, Font.SIZE_SMALL);  
78
 
79
       g.setFont(debug_font);
80
 
81
        g.setColor(0x0000FF);
135 ligi 82
        g.fillRect(0,0,canvas.getWidth(),canvas.getHeight());
81 ligi 83
        g.setColor(0xFFFFFF);
84
 
85
        y_off=0;
135 ligi 86
        if (!paused) debug_paused_pos=debug_pos;
87
        for (int tmp_pos=debug_paused_pos;((tmp_pos>0)&&(y_off<canvas.getHeight()));tmp_pos--)
81 ligi 88
            {
89
                debug_msg=debug_msgs[tmp_pos];
90
                String tmp_str="";
91
 
92
                for(int tmp_i=0;tmp_i<debug_msg.length();tmp_i++)
93
                    {
94
                        if ((debug_msg.charAt(tmp_i)=='\r')||(debug_msg.charAt(tmp_i)=='\n'))
95
                            {
96
                            g.drawString(tmp_str,5,y_off,Graphics.TOP | Graphics.LEFT);
97
                            y_off+=debug_font.getHeight();
98
                            tmp_str="";
99
                            }
100
                        else
101
                            tmp_str+=debug_msg.charAt(tmp_i);
102
                    }
135 ligi 103
                g.drawString(tmp_pos+" "+tmp_str,0,y_off,Graphics.TOP | Graphics.LEFT);
81 ligi 104
                y_off+=debug_font.getHeight();
105
            }
106
 
107
    }
108
 
109
    public void process_key(int keyCode)
110
    {
111
 
112
 
113
        if (!showing)
114
            {
115
                if (keyCode==debug_screen_sequence[debug_screen_sequence_pos])
116
                    {
117
                        debug_screen_sequence_pos++;
118
                        if(debug_screen_sequence_pos==debug_screen_sequence.length)
119
                            {
120
                                showing=true;
121
                                debug_screen_sequence_pos=0;
122
                            }
123
                    }
124
                else
125
                    debug_screen_sequence_pos=0;
126
            }
127
        else
128
            {
129
                if (keyCode==KEY_STAR)
130
                    showing=false;
135 ligi 131
 
132
                if (keyCode==KEY_NUM0)
133
                    paused=!paused;
134
 
135
 
136
                switch (getGameAction (keyCode))
137
                            {
138
                            case UP:
139
                                debug_paused_pos++;
140
                                break;
141
 
142
                            case DOWN:
143
                                debug_paused_pos--;
144
                                break;
145
 
146
                            }
147
 
148
 
81 ligi 149
            }
150
 
151
 
152
    }
153
 
154
 
155
 
156
}