Subversion Repositories Projects

Rev

Blame | Last modification | View Log | RSS feed

/***************************************************************
 *
 * 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;

                            }

                   
            }


    }
   


}