gdx-studio

#libgdx#java#desktop

git clone https://git.pyrossh.dev/gdx-studio

An IDE for creating Games using libgdx and Java supported on all platforms Android, iOS, Desktop


src/gdxstudio/GdxStudio.java
package gdxstudio;
import gdxstudio.panel.ConsolePanel;
import gdxstudio.panel.StudioPanel;

import java.awt.AlphaComposite;
import java.awt.Color;
import java.awt.Dimension;
import java.awt.Font;
import java.awt.Graphics2D;
import java.awt.SplashScreen;
import java.awt.Toolkit;

import javax.swing.JFrame;
import javax.swing.SwingUtilities;
import javax.swing.UIManager;

import scene2d.Asset;
import web.laf.lite.widget.Register;

public class GdxStudio {
	public static final String version = "0.7.1";
	
	public static void main(String[] args) {
		/*try {
			JavaLexer lexer = new JavaLexer(new ANTLRFileStream("C:/JavaParser.java"));
			JavaParser parser = new JavaParser(new CommonTokenStream(lexer));
			parser.addErrorListener(new DiagnosticErrorListener());
			parser.setErrorHandler(new DefaultErrorStrategy());
			parser.getInterpreter().setPredictionMode(PredictionMode.SLL);
			parser.compilationUnit();
		} catch (IOException e) {
			e.printStackTrace();
		}*/
		SwingUtilities.invokeLater(new Runnable() {
            @Override
            public void run() {
            	 Register.init("gdxstudio");
        		 Content.initProjects();
            	 try{
            		 UIManager.setLookAndFeel("web.laf.lite.ui.WebLookAndFeelLite");
                 }
                 catch (Throwable e){
                     e.printStackTrace ();
                 }
            	createSplash();
            	//Frame.getInstance().pack();
            	Frame.getInstance().setVisible(true);
            	Frame.getInstance().setExtendedState(JFrame.MAXIMIZED_BOTH);
       	     	ConsolePanel.redirectSystemStreams();
       	     	if(Content.projectExists()){
       				Asset.loadAsynchronous = false;
       				Asset.setBasePath(Content.getProject());
       				SceneEditor.reloadAssets = true; // to load assets of new project
       				StudioPanel.updateAssets();
       	     		Content.toggleView(2);
       	     	}
       	     	else{
       	     		Frame.setDisabledProject();
       	     	}
            }
        });
		/*SwingUtilities.invokeLater(new Runnable() {
			@Override
			public void run() {
				new Update().setVisible(true);
			}
		});*/
	}
	
    static void createFrameWithoutSplash(){
    	 Icon.loadIcons();
    	 Frame.getInstance().setIconImage(Icon.icon("icon").getImage());
    	 Frame.getInstance().setTitle("GdxStudio");
		 Dimension screenSize = Toolkit.getDefaultToolkit().getScreenSize();
		 Frame.getInstance().setSize(screenSize);
		 Frame.getInstance().setLocation(0, 0);
		 Frame.getInstance().setLocationRelativeTo(null);
		 Frame.getInstance().initSideBar();
		 Frame.getInstance().initStatusBar();
		 Frame.getInstance().initContent();
		 Frame.getInstance().initToolBar();
    }
	
	static void createSplash(){
		Graphics2D g = null;
	    final SplashScreen splash = SplashScreen.getSplashScreen();
	    if (splash == null) createFrameWithoutSplash();
	    else {
	     g = splash.createGraphics();  
	     renderSplashFrame(g, 1, "Initializing");
	     splash.update();
	     renderSplashFrame(g, 2, "Loading Icons");
	     splash.update();
	     Icon.loadIcons();
	     renderSplashFrame(g, 3, "Loading Frame");
	     splash.update();
	     Frame.getInstance().setIconImage(Icon.icon("icon").getImage());
	     Frame.getInstance().setTitle("GdxStudio");
		 Dimension screenSize = Toolkit.getDefaultToolkit().getScreenSize();
		 Frame.getInstance().setSize(screenSize);
		 Frame.getInstance().setLocation(0, 0);
		 Frame.getInstance().setLocationRelativeTo(null);
		 renderSplashFrame(g, 4, "Loading Explorer");
	     splash.update();
	     renderSplashFrame(g, 5, "Loading SideBar");
	     splash.update();
	     Frame.getInstance().initSideBar();
	     renderSplashFrame(g, 6, "Loading Status Bar");
	     splash.update();
	     Frame.getInstance().initStatusBar();
	     renderSplashFrame(g, 7, "Loading Content");
	     splash.update();
	     Frame.getInstance().initContent();
	     renderSplashFrame(g, 8, "Loading ToolBar");
	     splash.update();
	     Frame.getInstance().initToolBar();
	     renderSplashFrame(g, 9, "Finished");
	     splash.update();   
	    }
	}
	
	static int height = 200;
	static int width = 400;
	static int fontHeight = 12;
	private static int ind = 8;
	
	static void renderSplashFrame(Graphics2D g, int frame,  String content) {
		g.setComposite(AlphaComposite.Src);
		g.setColor(Color.BLACK);  
		g.setPaintMode();  
		g.fillRect(0, height - 29, width, 17);  
		g.setColor(Color.RED);
		ind--;
		if(ind == 0) ind = 1;
		for(int i= 0; i < frame; i ++)
			for(int j= 0; j < i*frame/ind; j ++){
				int x = 9 *j;
				/*if(x > 0 || x < 0) g.setColor(Color.RED);
				if(x > width/4) g.setColor(Color.ORANGE);
				if(x > width/2) g.setColor(Color.YELLOW);
				if(x > 3*width/4) g.setColor(Color.GREEN);*/
				g.fillRect(x , height - 28, 8, 8);
			}
		g.setColor(Color.ORANGE);
		for(int i= 0; i < frame; i ++)
			for(int j= 0; j < i*frame/1.1; j ++)
				g.fillRect(9 * j , height - 20, 8, 8);
		
		g.setColor(Color.BLACK);
		g.fillRect(0, height - 12, width, fontHeight);
		g.setColor(Color.WHITE);
		g.setFont(new Font("Purisa", Font.PLAIN, 13));
		g.drawString(content, 0, height - 2);	
	}

	public static void log(String text){
		System.out.println(text);
	}
	
	public static void error(String text){
		System.err.println(text);
	}
}