/** * eAdventure (formerly <e-Adventure> and <e-Game>) is a research project of the * <e-UCM> research group. * * Copyright 2005-2010 <e-UCM> research group. * * You can access a list of all the contributors to eAdventure at: * http://e-adventure.e-ucm.es/contributors * * <e-UCM> is a research group of the Department of Software Engineering * and Artificial Intelligence at the Complutense University of Madrid * (School of Computer Science). * * C Profesor Jose Garcia Santesmases sn, * 28040 Madrid (Madrid), Spain. * * For more info please visit: <http://e-adventure.e-ucm.es> or * <http://www.e-ucm.es> * * **************************************************************************** * * This file is part of eAdventure, version 2.0 * * eAdventure is free software: you can redistribute it and/or modify * it under the terms of the GNU Lesser General Public License as published by * the Free Software Foundation, either version 3 of the License, or * (at your option) any later version. * * eAdventure 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 Lesser General Public License for more details. * * You should have received a copy of the GNU Lesser General Public License * along with eAdventure. If not, see <http://www.gnu.org/licenses/>. */ package es.eucm.ead.engine.desktop.debugger; import es.eucm.ead.engine.desktop.debugger.components.ChangeSceneComboBox; import es.eucm.ead.engine.desktop.debugger.hooks.ChapterLoadedHook; import es.eucm.ead.engine.desktop.debugger.hooks.EffectsHook; import es.eucm.ead.engine.desktop.debugger.hooks.ModelLoadedHook; import es.eucm.ead.engine.game.interfaces.EngineHook; import es.eucm.ead.engine.game.interfaces.GUI; import es.eucm.ead.engine.game.Game; import es.eucm.ead.model.elements.debuggers.FieldsDebugger; import es.eucm.ead.model.elements.debuggers.GhostDebugger; import es.eucm.ead.model.elements.debuggers.TrajectoryDebugger; import es.eucm.ead.model.elements.effects.AddChildEf; import es.eucm.ead.model.elements.effects.RemoveEf; import javax.swing.*; import java.awt.*; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; import java.util.HashMap; import java.util.Map; public class DebuggerFrame extends JFrame { private static final long serialVersionUID = -7678228724129188732L; private Map<String, EngineHook> hooks; private Game game; private EffectsHook effectsHook; private ModelLoadedHook modelLoadedHook; private ChapterLoadedHook chapterLoadedHook; public DebuggerFrame(Game g) { setTitle("eAdventure Debugger"); this.game = g; hooks = new HashMap<String, EngineHook>(); hooks.put(Game.HOOK_AFTER_UPDATE, effectsHook = new EffectsHook()); hooks.put(Game.HOOK_AFTER_MODEL_READ, modelLoadedHook = new ModelLoadedHook()); hooks.put(Game.HOOK_AFTER_CHAPTER_READ, chapterLoadedHook = new ChapterLoadedHook()); for (Map.Entry<String, EngineHook> e : hooks.entrySet()) { game.addHook(e.getKey(), e.getValue()); } JComboBox changeScene = new ChangeSceneComboBox(effectsHook, chapterLoadedHook); // Trajectories final JCheckBox showTrajectory = new JCheckBox("Show trajectories"); final TrajectoryDebugger trajectoryDebugger = new TrajectoryDebugger(); trajectoryDebugger.setId("#trajectory_debugger"); showTrajectory.addActionListener(new ActionListener() { @Override public void actionPerformed(ActionEvent actionEvent) { if (showTrajectory.isSelected()) { effectsHook.addEffect(new AddChildEf(GUI.DEBBUGERS_HUD_ID, trajectoryDebugger)); } else { effectsHook.addEffect(new RemoveEf(trajectoryDebugger)); } } }); // Ghost elements final JCheckBox showGhostElements = new JCheckBox( "Show ghost elements (Active Areas and Exits)"); final GhostDebugger ghostDebugger = new GhostDebugger(); ghostDebugger.setId("#ghost_debugger"); showGhostElements.addActionListener(new ActionListener() { @Override public void actionPerformed(ActionEvent actionEvent) { if (showGhostElements.isSelected()) { effectsHook.addEffect(new AddChildEf(GUI.DEBBUGERS_HUD_ID, ghostDebugger)); } else { effectsHook.addEffect(new RemoveEf(ghostDebugger)); } } }); // Ghost elements final JCheckBox showFields = new JCheckBox("Show fields"); final FieldsDebugger fieldDebugger = new FieldsDebugger(); fieldDebugger.setId("#fields_debugger"); showFields.addActionListener(new ActionListener() { @Override public void actionPerformed(ActionEvent actionEvent) { if (showFields.isSelected()) { effectsHook.addEffect(new AddChildEf(GUI.DEBBUGERS_HUD_ID, fieldDebugger)); } else { effectsHook.addEffect(new RemoveEf(fieldDebugger)); } } }); // Skip videos final JCheckBox skipVideos = new JCheckBox("Skip videos"); skipVideos.addActionListener(new ActionListener() { @Override public void actionPerformed(ActionEvent actionEvent) { /*if (skipVideos.isSelected()) { game.getSceneElementFactory().put(VideoScene.class, SkipVideoSceneGO.class); } else { game.getSceneElementFactory().put(VideoScene.class, VideoSceneGO.class); }*/ } }); GridBagLayout layout = new GridBagLayout(); JPanel panel = new JPanel(layout); GridBagConstraints c = new GridBagConstraints(); c.gridx = 0; c.gridy = 0; c.fill = GridBagConstraints.BOTH; panel.add(changeScene, c); c.gridy = 1; panel.add(showTrajectory, c); c.gridy = 2; panel.add(showGhostElements, c); c.gridy = 3; panel.add(showFields, c); c.gridy = 4; panel.add(skipVideos, c); this.add(panel); pack(); } }