/** * 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.Image; import es.eucm.ead.model.assets.drawable.basics.animation.FramesAnimation; import es.eucm.ead.model.assets.drawable.compounds.EAdStateDrawable; import es.eucm.ead.model.assets.drawable.compounds.StateDrawable; import es.eucm.ead.model.elements.effects.Effect; import es.eucm.ead.model.elements.enums.CommonStates; import es.eucm.ead.model.elements.events.SceneElementEv; import es.eucm.ead.model.elements.events.enums.SceneElementEvType; import es.eucm.ead.model.elements.operations.ElementField; import es.eucm.ead.model.elements.operations.ValueOp; import es.eucm.ead.model.elements.predef.sceneelements.Button; import es.eucm.ead.model.elements.scenes.SceneElement; import es.eucm.ead.model.interfaces.features.enums.Orientation; import es.eucm.ead.model.params.guievents.KeyGEv; import es.eucm.ead.model.params.guievents.MouseGEv; import es.eucm.ead.model.params.text.EAdString; import es.eucm.ead.model.params.util.Position.Corner; import es.eucm.ead.techdemo.elementfactories.EAdElementsFactory; import es.eucm.ead.techdemo.elementfactories.scenes.normalguy.NgCommon; public class CharacterScene extends EmptyScene { private static String standUris[] = new String[] { "@drawable/stand_up.png", "@drawable/red_stand_right.png", "@drawable/stand_down.png", "@drawable/red_stand_left.png" }; private static String talkDownUris[] = new String[] { "@drawable/stand_down.png", "@drawable/stand_down_talking.png" }; private static String talkRightUris[] = new String[] { "@drawable/red_stand_right.png", "@drawable/red_stand_right_talking.png" }; private static String talkLeftUris[] = new String[] { "@drawable/red_stand_left.png", "@drawable/red_stand_left_talking.png" }; private static String walkDownUris[] = new String[] { "@drawable/walking_down.png", "@drawable/walking_down_2.png" }; private static String walkUpUris[] = new String[] { "@drawable/walking_up_1.png", "@drawable/walking_up_2.png" }; private static String walkRightUris[] = new String[] { "@drawable/walking_right_1.png", "@drawable/walking_right_2.png" }; private static String walkLeftUris[] = new String[] { "@drawable/walking_left_1.png", "@drawable/walking_left_2.png" }; public CharacterScene() { this.setId("CharacterScene"); // EAdBasicSceneElement element = EAdElementsFactory.getInstance() // .getSceneElementFactory() // .createSceneElement(getStateDrawable(), 100, 300); NgCommon.init(); SceneElement element = new SceneElement(NgCommon.getMainCharacter()); element.setPosition(Corner.CENTER, 400, 300); element.setId("normalguy"); SceneElementEv event = new SceneElementEv(); event .addEffect(SceneElementEvType.INIT, EAdElementsFactory .getInstance().getEffectFactory().getMakeActiveElement( element)); element.addEvent(event); this.getSceneElements().add(element); Effect goUpEffect = EAdElementsFactory.getInstance().getEffectFactory() .getChangeVarValueEffect( new ElementField(element, VAR_ORIENTATION), new ValueOp(Orientation.N)); SceneElement goUpArrow = EAdElementsFactory.getInstance() .getSceneElementFactory().createSceneElement( new Image("@drawable/arrow_up.png"), 100, 210, goUpEffect); this.getSceneElements().add(goUpArrow); element.addBehavior(KeyGEv.KEY_ARROW_UP, goUpEffect); Effect goDownEffect = EAdElementsFactory.getInstance() .getEffectFactory().getChangeVarValueEffect( new ElementField(element, VAR_ORIENTATION), new ValueOp(Orientation.S)); SceneElement goDownArrow = EAdElementsFactory.getInstance() .getSceneElementFactory().createSceneElement( new Image("@drawable/arrow_down.png"), 100, 320, goDownEffect); this.getSceneElements().add(goDownArrow); element.addBehavior(KeyGEv.KEY_ARROW_DOWN, goDownEffect); Effect goLeftEffect = EAdElementsFactory.getInstance() .getEffectFactory().getChangeVarValueEffect( new ElementField(element, VAR_ORIENTATION), new ValueOp(Orientation.W)); SceneElement goLeftArrow = EAdElementsFactory.getInstance() .getSceneElementFactory().createSceneElement( new Image("@drawable/arrow_left.png"), 0, 260, goLeftEffect); this.getSceneElements().add(goLeftArrow); element.addBehavior(KeyGEv.KEY_ARROW_LEFT, goLeftEffect); Effect goRightEffect = EAdElementsFactory.getInstance() .getEffectFactory().getChangeVarValueEffect( new ElementField(element, VAR_ORIENTATION), new ValueOp(Orientation.E)); SceneElement goRightArrow = EAdElementsFactory.getInstance() .getSceneElementFactory().createSceneElement( new Image("@drawable/arrow_right.png"), 200, 260, goRightEffect); this.getSceneElements().add(goRightArrow); element.addBehavior(KeyGEv.KEY_ARROW_RIGHT, goRightEffect); // Change state buttons Effect standEffect = EAdElementsFactory.getInstance() .getEffectFactory().getChangeVarValueEffect( new ElementField(element, VAR_STATE), new ValueOp(CommonStates.DEFAULT.toString())); // EAdBasicSceneElement stand = EAdElementsFactory.getInstance() // .getSceneElementFactory() // .createSceneElement("Stand", 300, 10, standEffect); Button stand = new Button( new EAdString("techDemo.CharacterScene.Stand")); stand.addBehavior(MouseGEv.MOUSE_LEFT_PRESSED, standEffect); stand.setPosition(Corner.CENTER, 600, 250); getSceneElements().add(stand); Effect talkEffect = EAdElementsFactory.getInstance().getEffectFactory() .getChangeVarValueEffect(new ElementField(element, VAR_STATE), new ValueOp(CommonStates.TALKING.toString())); Button talk = new Button(new EAdString("techDemo.CharacterScene.Talk")); talk.addBehavior(MouseGEv.MOUSE_LEFT_PRESSED, talkEffect); talk.setPosition(Corner.CENTER, 600, 290); getSceneElements().add(talk); Effect walkEffect = EAdElementsFactory.getInstance().getEffectFactory() .getChangeVarValueEffect(new ElementField(element, VAR_STATE), new ValueOp(CommonStates.WALKING.toString())); Button walk = new Button(new EAdString("techDemo.CharacterScene.Walk")); walk.addBehavior(MouseGEv.MOUSE_LEFT_PRESSED, walkEffect); walk.setPosition(Corner.CENTER, 600, 330); getSceneElements().add(walk); } private static StateDrawable getTalkDrawable() { StateDrawable oriented = new StateDrawable(); oriented .setDrawable(Orientation.N, new Image("@drawable/stand_up.png")); FramesAnimation right = EAdElementsFactory.getInstance() .getDrawableFactory().getFramesAnimation(talkRightUris, 500); oriented.setDrawable(Orientation.E, right); FramesAnimation left = EAdElementsFactory.getInstance() .getDrawableFactory().getFramesAnimation(talkLeftUris, 500); oriented.setDrawable(Orientation.W, left); FramesAnimation down = EAdElementsFactory.getInstance() .getDrawableFactory().getFramesAnimation(talkDownUris, 500); oriented.setDrawable(Orientation.S, down); return oriented; } private static StateDrawable getWalkDrawable() { StateDrawable oriented = new StateDrawable(); FramesAnimation up = EAdElementsFactory.getInstance() .getDrawableFactory().getFramesAnimation(walkUpUris, 500); oriented.setDrawable(Orientation.N, up); FramesAnimation right = EAdElementsFactory.getInstance() .getDrawableFactory().getFramesAnimation(walkRightUris, 500); oriented.setDrawable(Orientation.E, right); FramesAnimation left = EAdElementsFactory.getInstance() .getDrawableFactory().getFramesAnimation(walkLeftUris, 500); oriented.setDrawable(Orientation.W, left); FramesAnimation down = EAdElementsFactory.getInstance() .getDrawableFactory().getFramesAnimation(walkDownUris, 2000); oriented.setDrawable(Orientation.S, down); return oriented; } public static EAdStateDrawable getStateDrawable() { StateDrawable stand = EAdElementsFactory.getInstance() .getDrawableFactory().getOrientedDrawable(standUris); StateDrawable stateDrawable = new StateDrawable(); stateDrawable.addDrawable(CommonStates.DEFAULT.toString(), stand); stateDrawable.addDrawable(CommonStates.TALKING.toString(), getTalkDrawable()); stateDrawable.addDrawable(CommonStates.WALKING.toString(), getWalkDrawable()); return stateDrawable; } }