SplashScreen.java
package chip8emu;

/*
This file is part of JavaCHIP8.

Copyright 2004 Kustaa Nyholm / SpareTimeLabs

JavaCHIP8 is free software; you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation; either version 2 of the License, or
(at your option) any later version.

JavaCHIP8 is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
GNU General Public License for more details.

You should have received a copy of the GNU General Public License
along with JavaCHIP8; if not, write to the Free Software
Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
*/

import javax.microedition.lcdui.*;


class SplashScreen
    extends Canvas
    implements Runnable
{
    private final Chip8MIDlet midlet;
    private Image splashImage;
    private volatile boolean dismissed = false;


    SplashScreen(Chip8MIDlet midlet)
    {
        this.midlet = midlet;
        setFullScreenMode(true);
        splashImage = Chip8MIDlet.createImage("splashScreen.png");
        new Thread(this).start();
    }


    public void run()
    {
        synchronized(this)
        {
            try
            {
                wait(3000L);   // 3 seconds
            }
            catch (InterruptedException e)
            {
                // can't happen in MIDP: no Thread.interrupt method
            }
            dismiss();
        }
    }


    public void paint(Graphics g)
    {
        int width = getWidth();
        int height = getHeight();
        g.setColor(0);  // white
        g.fillRect(00, width, height);

        if (splashImage != null)
        {
            g.drawImage(splashImage,
                        width/2,
                        height/2,
                        Graphics.VCENTER | Graphics.HCENTER);
            splashImage = null;
            //midlet.splashScreenPainted();
        }
    }


    public synchronized void keyPressed(int keyCode)
    {
        dismiss();
    }


    private void dismiss()
    {
        if (!dismissed)
        {
            dismissed = true;
            midlet.gotoGamesScreen();
        }
    }
}