/** * 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.techdemo.elementfactories.scenes.scenes; import es.eucm.ead.model.assets.drawable.basics.shapes.BalloonShape; import es.eucm.ead.model.assets.drawable.basics.shapes.BezierShape; import es.eucm.ead.model.assets.drawable.basics.shapes.extra.BalloonType; import es.eucm.ead.model.elements.effects.DragEf; import es.eucm.ead.model.elements.effects.sceneelements.ChangeColorEf; import es.eucm.ead.model.elements.effects.variables.ChangeFieldEf; import es.eucm.ead.model.elements.operations.ElementField; import es.eucm.ead.model.elements.operations.ValueOp; import es.eucm.ead.model.elements.scenes.SceneElement; import es.eucm.ead.model.elements.scenes.SceneElementDef; import es.eucm.ead.model.params.fills.ColorFill; import es.eucm.ead.model.params.fills.LinearGradientFill; import es.eucm.ead.model.params.fills.Paint; import es.eucm.ead.model.params.guievents.DragGEv; import es.eucm.ead.model.params.guievents.MouseGEv; import es.eucm.ead.model.params.guievents.enums.DragGEvType; import es.eucm.ead.model.params.util.Position; import es.eucm.ead.model.params.util.Position.Corner; public class DragDropScene extends EmptyScene { public DragDropScene() { this.setId("DragDropScene"); setBackgroundFill(new LinearGradientFill(ColorFill.LIGHT_GRAY, new ColorFill(245, 255, 245), 800, 600)); BezierShape shape = new BalloonShape(0, 0, 100, 100, BalloonType.ROUNDED_RECTANGLE); shape.setPaint(new LinearGradientFill(ColorFill.RED, new ColorFill(200, 0, 0), 100, 100)); SceneElementDef def = new SceneElementDef(shape); SceneElement e1 = new SceneElement(def); e1.addBehavior(MouseGEv.MOUSE_LEFT_PRESSED, new DragEf()); e1.setPosition(new Position(Corner.CENTER, 600, 300)); e1.putProperty(SceneElement.VAR_Z, 0); SceneElement e4 = new SceneElement(def); e4.addBehavior(MouseGEv.MOUSE_LEFT_PRESSED, new DragEf()); e4.setPosition(new Position(Corner.TOP_LEFT, 20, 20)); e4.setScale(0.5f); e4.putProperty(SceneElement.VAR_Z, 1); SceneElement e5 = new SceneElement(def); e5.addBehavior(MouseGEv.MOUSE_LEFT_PRESSED, new DragEf()); e5.setPosition(new Position(Corner.TOP_RIGHT, 500, 10)); e5.setScale(1.5f); e5.putProperty(SceneElement.VAR_Z, 2); // addComplexElement( ); BezierShape shape2 = new BalloonShape(0, 0, 110, 110, BalloonType.ROUNDED_RECTANGLE); shape2.setPaint(Paint.BLACK_ON_WHITE); SceneElement e2 = new SceneElement(shape2); e2.setPosition(new Position(Corner.CENTER, 100, 300)); SceneElement e3 = new SceneElement(shape2); e3.setPosition(new Position(Corner.CENTER, 300, 300)); addBehaviors(e2, e1); addBehaviors(e3, e1); getSceneElements().add(e2); getSceneElements().add(e3); getSceneElements().add(e1); getSceneElements().add(e4); getSceneElements().add(e5); } private void addBehaviors(SceneElement e2, SceneElement e1) { ElementField scale = new ElementField(e2, SceneElement.VAR_SCALE); ChangeFieldEf changeScale1 = new ChangeFieldEf(scale, new ValueOp(1.2f)); ChangeFieldEf changeScale2 = new ChangeFieldEf(scale, new ValueOp(1.0f)); e2.addBehavior(new DragGEv(e1.getId(), DragGEvType.ENTERED), changeScale1); e2.addBehavior(new DragGEv(e1.getId(), DragGEvType.EXITED), changeScale2); e2.addBehavior(new DragGEv(e1.getId(), DragGEvType.DROP), new ChangeColorEf(0.0f, 1.0f, 0.0f)); e1.addBehavior(MouseGEv.MOUSE_START_DRAG, new ChangeFieldEf(e1 .getField(SceneElement.VAR_ROTATION), new ValueOp(10.0f))); e1.addBehavior(MouseGEv.MOUSE_DROP, new ChangeFieldEf(e1 .getField(SceneElement.VAR_ROTATION), new ValueOp(0.0f))); // EAdField<Integer> fieldX = new EAdField<Integer>(e1, // SceneElement.VAR_X); // EAdField<Integer> fieldY = new EAdField<Integer>(e1, // SceneElement.VAR_Y); // ChangeFieldEf changeX = new ChangeFieldEf( // fieldX, // new MathOp("[0]", new EAdField<Integer>(e2, // SceneElement.VAR_X))); // // ChangeFieldEf changeY = new ChangeFieldEf( // fieldY, // new MathOp("[0]", new EAdField<Integer>(e2, // SceneElement.VAR_Y))); // e2.addBehavior(new EAdDragEventImpl(e1.getDefinition(), // DragAction.DROP), changeX); // e2.addBehavior(new EAdDragEventImpl(e1.getDefinition(), // DragAction.DROP), changeY); } }