package br.com.etyllica; import java.awt.Graphics; import java.net.URL; import javax.swing.JFrame; import br.com.etyllica.awt.core.AWTCore; import br.com.etyllica.awt.engine.AWTEngine; import br.com.etyllica.core.Engine; import br.com.etyllica.core.context.Application; import br.com.etyllica.core.engine.EtyllicaFrame; import br.com.etyllica.core.event.GUIEvent; import br.com.etyllica.loader.Loader; import br.com.etyllica.loader.image.ImageLoader; import br.com.etyllica.util.PathHelper; /** * * @author yuripourre * */ public abstract class Etyllica extends JFrame implements EtyllicaFrame { private static final long serialVersionUID = 4588303747276461888L; private AWTCore core; private Engine engine; protected int w = 640; protected int h = 480; protected String icon = ""; private Application application; public Etyllica(int width, int height) { super(); this.w = width; this.h = height; setDefaultCloseOperation(EXIT_ON_CLOSE); } public void init(String path) { initCore(); setPath(path); this.application = startApplication(); startCore(); updateIcon(); } @Override public void init() { initCore(); initialSetup(""); this.application = startApplication(); startCore(); updateIcon(); } private void initCore() { engine = new AWTEngine(this, w, h); core = engine.getCore(); core.setEngine(this); } private void startCore() { core.startCore(application); core.startEngine(); addComponentListener(core); } protected void initialSetup(String suffix) { String defaultPath = PathHelper.currentFileDirectory().toString(); setPath(defaultPath+suffix); } protected void setPath(URL url) { setPath(url.toString()); } protected void setPath(String path) { core.setPath(path); engine.init(); } protected String getPath() { return core.getPath(); } @Override public void paint( Graphics g ) { core.paint(g); } @Override public void update(Graphics g) { paint(g); } public void draw() { repaint(); } public void addLoader(Loader loader) { engine.addLoader(loader); } protected void hideCursor() { engine.hideCursor(); } @Override public void updateSuperEvent(GUIEvent event) { engine.updateSuperEvent(event); } protected void setIcon(String icon) { this.icon = icon; } private void updateIcon() { if (!icon.isEmpty()) { setIconImage(ImageLoader.getInstance().getImage(icon)); } } }