package org.javatari.main;
import java.awt.Color;
import java.util.ArrayList;
import javax.swing.JApplet;
import org.javatari.parameters.Parameters;
import org.javatari.pc.room.Room;
import org.javatari.utils.Environment;
public abstract class AbstractApplet extends JApplet {
@Override
public void init() {
// Initialize application environment
Environment.init();
// Builds an Array of args from the Applet parameters to mimic command line args
ArrayList<String> args = new ArrayList<String>();
for (int i = -1; i < 50; i++) {
String paramName = "ARG" + (i >= 0 ? i : "");
String paramValue = getParameter(paramName);
if (paramValue != null) args.add(paramValue);
}
// Load Parameters from properties file and process arguments
Parameters.init(args.toArray(new String[0]));
// Process background color parameter if present
String backgroundParam = getParameter("BACKGROUND");
if (backgroundParam != null) {
System.out.println("Background color: " + backgroundParam);
setBackground(new Color(Integer.parseInt(backgroundParam)));
}
// Unless forced, disable FSEM when using Applets (Applet + FSEM bug)
if (Parameters.SCREEN_USE_FSEM != 1) Parameters.SCREEN_USE_FSEM = 0;
// Create an Applet Room
room = buildRoom();
}
protected abstract Room buildRoom();
@Override
public void start() {
// Turn everything on
room.powerOn();
}
@Override
public void stop() {
// Turn everything off
room.powerOff();
}
@Override
public void destroy() {
// Destroy the Room
room.destroy();
}
protected Room room;
private static final long serialVersionUID = 1L;
}