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/panel/SceneEffectPanel.java
package gdxstudio.panel;

import java.awt.Component;
import javax.swing.DefaultCellEditor;
import javax.swing.JComboBox;
import javax.swing.JTable;

import scene2d.Asset;
import scene2d.Effect;
import scene2d.EffectType;
import scene2d.InterpolationType;
import scene2d.Scene;

public class SceneEffectPanel extends BaseTable {
	private static final long serialVersionUID = 1L;
	
	static JComboBox<String> bgComboBox = createComboBox();
	static JComboBox<String> musicComboBox = createComboBox();
	static JComboBox<String> transitionComboBox = createComboBox();
	static JComboBox<String> interpolationComboBox = createComboBox();
	
	public SceneEffectPanel(){
		super("Properties", null, new SceneEffectRenderer());
		editors.add(new DefaultCellEditor(bgComboBox));
		editors.add(new DefaultCellEditor(musicComboBox));
		editors.add(new DefaultCellEditor(transitionComboBox));
		editors.add(createFloatSpinner("Duration"));
		editors.add(new DefaultCellEditor(interpolationComboBox));
		for(EffectType effect: EffectType.values())
			transitionComboBox.addItem(effect.toString());
		for(InterpolationType interpolation: InterpolationType.values())
			interpolationComboBox.addItem(interpolation.toString());
	}
	
	@Override
	public void clear(String... names){
		super.clear("Background", "Music", "Transition", "Duration", "Interpolation");
	}
	
	@Override
	public void update(String... values){
		Scene scene = Scene.getCurrentScene();
		super.update("Background", scene.sceneBackground, "Music", scene.sceneMusic,
				"Transition", scene.sceneTransition, "Duration", ""+scene.sceneDuration,
				"Interpolation", scene.sceneInterpolationType.toString());
		bgComboBox.removeAllItems();
		musicComboBox.removeAllItems();
		bgComboBox.addItem("None");
		musicComboBox.addItem("None");
		for(String tex: Asset.texMap.keys())
			bgComboBox.addItem(tex);
		for(String tex: Asset.musicMap.keys())
			musicComboBox.addItem(tex);
	}
	
	@Override
	public void setProperty(String key, String value){
		if(key.isEmpty() || value.isEmpty())
			return ;
		Scene scene = Scene.getCurrentScene();
		switch(key){
			case "Background": 
				scene.sceneBackground = value;
				if(!scene.sceneBackground.equals("None"))
					Scene.getCurrentScene().setBackground(scene.sceneBackground);
				else
					Scene.getCurrentScene().removeBackground();
				break;
			case "Music": 
				scene.sceneMusic = value;
				if(!scene.sceneMusic.equals("None"))
					Asset.musicPlay(scene.sceneMusic);
				break;
			case "Transition": 
				scene.sceneTransition = value;
				break;
			case "Duration": 
				scene.sceneDuration = Float.parseFloat(value);
				break;
			case "Interpolation":
				scene.sceneInterpolationType = InterpolationType.valueOf(value);
				break;
		}
		Effect.createEffect(Scene.getRoot(), EffectType.valueOf(scene.sceneTransition), 1f,
				scene.sceneDuration, scene.sceneInterpolationType);
		Scene.isDirty = true;
	}
}

class SceneEffectRenderer extends BaseRenderer {
	private static final long serialVersionUID = 1L;

	@Override
    public Component getTableCellRendererComponent(JTable table, Object value, boolean isSelected, boolean hasFocus, int row, int column) {
        setBorder(noFocusBorder);
        if(column == 0)
        	return new HeaderLabel(value.toString());
        else {
        	if(row == 3){
        		if(!value.toString().isEmpty())
        			spinnerFloat.setValue(Float.parseFloat(value.toString()));
        		else
        			spinnerFloat.setValue(new Float(0.0));
        		return spinnerFloat;
            }
        }
        return super.getTableCellRendererComponent(table, value, isSelected, hasFocus, row, column);
    }
}