/** resets actor positions after eg. panning */ private void resetPositions() { // reset positions Actor actor = getChildren().get(currentElement); actor.addAction( Actions.parallel( Actions.moveTo(0, 0, animationDuration, Interpolation.pow2In), Actions.fadeIn(animationDuration))); if (currentOffsetX <= 0 && (cycle || hasNextElement())) { final Actor next = setupNextElement(); next.addAction( Actions.sequence( Actions.parallel( Actions.moveTo(animationXOffset, 0, animationDuration, Interpolation.pow2In), Actions.fadeOut(animationDuration)), Actions.visible(false))); } else if ((cycle || hasLastElement())) { final Actor next = setupLastElement(); next.addAction( Actions.sequence( Actions.parallel( Actions.moveTo(-animationXOffset, 0, animationDuration, Interpolation.pow2In), Actions.fadeOut(animationDuration)), Actions.visible(false))); } }
/** cycles to the last element */ public void last() { if (cycle || hasLastElement()) { final int nextElement = (currentElement - 1 + getChildren().size) % getChildren().size; final Actor next = setupLastElement(); next.addAction( Actions.parallel( Actions.moveTo(0, 0, animationDuration, Interpolation.pow2In), Actions.fadeIn(animationDuration))); final Actor old = getChildren().get(currentElement); old.clearActions(); old.addAction( Actions.sequence( Actions.parallel( Actions.moveTo(animationXOffset, 0, animationDuration, Interpolation.pow2In), Actions.fadeOut(animationDuration)), Actions.visible(false))); currentElement = nextElement; fireElementChanged(); } else { checkBeforeFirst(); } }
@Override public void onUse() { if (GemLord.getInstance().gameScreen.getBoard().getBoardState() != Board.BoardState.STATE_IDLE) return; if (!GemLord.getInstance().gameScreen.getBoard().isPlayerTurn()) return; if (currentCooldown <= 0) { GemLord.soundPlayer.playBow(); int damage = random.nextInt(((35 - 20) + 1)); damage += 20; Damage dmg = new Damage(); dmg.damage = damage; GemLord.getInstance().gameScreen.getBoard().getEnemy().damage(dmg); addAction(Actions.sequence(Actions.scaleTo(2f, 2f, 0.15f), Actions.scaleTo(1f, 1f, 0.15f))); currentCooldown = cooldown; TextureAtlas atlas = GemLord.assets.get("data/textures/pack.atlas", TextureAtlas.class); Image projectile = new Image(atlas.findRegion("itemarrow")); projectile.setPosition(getX(), getY()); float targetX = GemLord.getInstance().gameScreen.getBoard().getEnemy().getImage().getX(); float targetY = GemLord.getInstance().gameScreen.getBoard().getEnemy().getImage().getY(); projectile.addAction( Actions.sequence( Actions.moveTo(targetX, targetY, 0.25f), Actions.fadeOut(0.25f), Actions.removeActor())); GemLord.getInstance().gameScreen.getBoard().getEffectGroup().addActor(projectile); } }
public void swipeOut(boolean direction) { final Actor old = getChildren().get(currentElement); old.clearActions(); if (direction) { old.addAction( Actions.sequence( Actions.parallel( Actions.moveTo(animationXOffset, 0, animationDuration, Interpolation.pow2In), Actions.fadeOut(animationDuration)), Actions.visible(false))); } else { old.addAction( Actions.sequence( Actions.parallel( Actions.moveTo(-animationXOffset, 0, animationDuration, Interpolation.pow2In), Actions.fadeOut(animationDuration)), Actions.visible(false))); } }
public void moveToActive(float duration) { MenuElement menuElement = this.elements.get(this.order.get(this.active)); Actor actor = menuElement.getElement(); float offset = actor.getWidth() / 2f; this.group.clearActions(); this.group.addAction( Actions.sequence( // Actions.moveToAligned((actor.getX() + offset) * -1f, 0f, Align.center, duration, // Interpolation.sine) Actions.moveTo((actor.getX() + offset) * -1f, 0f, duration))); }
private void dropStar(Image img) { stars--; img.setDrawable(new TextureRegionDrawable(Assets.instance.gameElements.starOff)); star.setPosition(img.getX() - 45, img.getY() - 50); star.addAction( Actions.sequence( Actions.scaleTo(0.3f, 0.3f), Actions.alpha(1f), Actions.parallel( Actions.rotateBy(210f, 0.9f), Actions.scaleTo(0.8f, 0.8f, 0.9f), Actions.moveTo(star.getX() - 45f, star.getY() - 210f, 1.2f), Actions.alpha(0f, 0.9f, Interpolation.circleIn)))); }
public Bananas(Vector2 origin, Vector2 destination, float speed, boolean large) { super(origin, destination, speed, "actors/banana.png"); isLarge = large; textureRegion.setRegion(0, 0, WIDTH, HEIGHT); if (isLarge) setOrigin(WIDTH / 2, HEIGHT / 2); else setOrigin(WIDTH / 2 / 2, HEIGHT / 2 / 2); // Movimiento. ParallelAction pa = new ParallelAction(); pa.addAction(Actions.moveTo(destination.x, destination.y, speed)); pa.addAction(Actions.rotateBy(MathUtils.random(-360 * 4, 360 * 4), speed)); addAction(pa); }
/** * @param actors actors to move * @param oldPositions starting positions of the actors * @param newPositions ending positions of the actors * @param xOffset x offset for the ending positions of the actors (for centering) */ private void interpolateActorPositions( SnapshotArray<Actor> actors, List<Vector2> oldPositions, List<Vector2> newPositions, float xOffset, Interpolation interp, float speed) { // interpolate between them for each card. for (int i = 0; i < newPositions.size(); i++) { Actor toMove = actors.get(i); Vector2 oldPosition = oldPositions.get(i); Vector2 newPosition = newPositions.get(i); toMove.setPosition(oldPosition.x, oldPosition.y); // this action overrides all others // todo: ensure this doesn't break things toMove.getActions().clear(); toMove.addAction(Actions.moveTo(newPosition.x + xOffset, MARGIN, speed, interp)); } }
/** * brings the card up to the front and center, leaving a space where it belongs in the hand. * Nothing other than the card and its controls can be clicked during a zoom. Tapping the card * unzooms it. There also is a cancel, play, and rotate button, and arrows to see the next and * previous cards in the hand. * * @param toAdd card to zoom in on */ private void zoomCard(CardGroup toAdd) { zoomCard = toAdd; // remove toAdd from the hand and add it to the root zoomReturnIndex = cards.getChildren().indexOf(toAdd, true); zoomCard.remove(); addActor(zoomCard); makeSpace(zoomReturnIndex); zoomCard.getActions().clear(); // blow the card up zoomCard.addAction(Actions.scaleTo(3.0f, 3.0f, 0.2f, Interpolation.pow2)); // move it zoomCard.addAction(Actions.moveTo(600, 100, 0.2f, Interpolation.pow2)); // make only the zoom elements touchable for (Actor actor : getChildren()) { actor.setTouchable(Touchable.disabled); } zoomGroup.setTouchable(Touchable.enabled); zoomGroup.setVisible(true); updateZoomControls(); }
public Beaver(World world, Island island) { this.island = island; float scale = 2.0f; float radius = 1.0f; BodyDef bd = new BodyDef(); bd.type = BodyDef.BodyType.DynamicBody; Vector2 pos = island.physicsBody.getPosition(); ang = island.physicsBody.getAngle(); float islandW = island.getPhysicsWidth(); float islandH = island.getPhysicsHeight(); Vector2 off = new Vector2(islandW * MathUtils.random(0.3f, 0.6f), islandH); off.rotate(MathUtils.radiansToDegrees * ang); bd.position.set(new Vector2(pos.x + off.x, pos.y + off.y)); bd.angle = ang; off.set(islandW * 0.075f, islandH); off.rotate(MathUtils.radiansToDegrees * ang); Vector2 rightEdge = new Vector2(pos.x + off.x, pos.y + off.y).scl(Mane.PTM_RATIO); off.set(islandW * 0.85f, islandH); off.rotate(MathUtils.radiansToDegrees * ang); Vector2 leftEdge = new Vector2(pos.x + off.x, pos.y + off.y).scl(Mane.PTM_RATIO); float speed = MathUtils.random(1.0f, 3.0f); addAction( Actions.delay( MathUtils.random(0.0f, 1.0f), Actions.forever( Actions.sequence( Actions.moveTo(rightEdge.x, rightEdge.y, speed), Actions.moveTo(leftEdge.x, leftEdge.y, speed))))); bd.linearDamping = 0.2f; Body body = world.createBody(bd); FixtureDef fd = new FixtureDef(); fd.density = 1.0f; fd.filter.categoryBits = Collision.BEAVER; fd.filter.maskBits = Collision.SHARK; fd.restitution = 0.0f; fd.friction = 0.0f; fd.isSensor = true; CircleShape cs = new CircleShape(); cs.setRadius(radius); cs.setPosition(new Vector2(radius, radius)); fd.shape = cs; body.createFixture(fd); cs.dispose(); super.initPhysicsBody(body); setSize(scale * Mane.PTM_RATIO, scale * Mane.PTM_RATIO); setOrigin(0.0f, 0.0f); }
protected void newAction() { if (!hasActions()) { addAction(Actions.moveTo(getRandomX(), getRandomY(), getRandomDuration())); } }
public Allied enter(float posX, float posY) { clearActions(); addAction(Actions.moveTo(posX, posY + getHeight(), .8f)); return this; }
public void exit() { clearActions(); addAction(Actions.sequence(Actions.moveTo(getX(), -200, .8f), Actions.removeActor())); }
/** * by which menu Screen this option screen was called * * @param pScreen */ public OptionsScreen(MenuScreen pScreen) { screen = pScreen; game = screen.game; stage = new Stage(); stage.setViewport(800, 480, false); skin = new Skin(Gdx.files.internal("ui/myskin.json")); Table table = new Table(); table.setSize(800, 480); Label title = new Label("options", skin); title.setFontScale(2f); table.add(title).colspan(2).align(Align.center); table.row(); Label namel = new Label("name:", skin); table.add(namel); TextField name = new TextField("", skin); table.add(name); table.row(); Label graphicl = new Label("graphic:", skin); table.add(graphicl); CheckBox graphic = new CheckBox("", skin); table.add(graphic); table.row(); Label soundl = new Label("sound:", skin); table.add(soundl); final Slider sound = new Slider(0, 100, 1, false, skin); sound.setValue(game.preferences.getInteger("volume", 100)); table.add(sound); table.row(); Label themel = new Label("theme:", skin); table.add(themel); String[] items = {"cool", "mega", "awesome"}; SelectBox theme = new SelectBox(items, skin); theme.getSelection(); table.add(theme); table.row(); TextButton back = new TextButton("back to menu", skin); back.addListener( new ClickListener() { public void clicked(com.badlogic.gdx.scenes.scene2d.InputEvent event, float x, float y) { stage.addAction( Actions.sequence( Actions.moveTo(800, 0, 0.5f), new Action() { @Override public boolean act(float delta) { game.preferences.putInteger("volume", (int) sound.getValue()); game.preferences.flush(); Resources.page_turn.play(); screen.game.setScreen(screen); return false; } })); } }); table.add(back).colspan(2).align(Align.center).padTop(20); stage.addActor(table); stage.addAction(Actions.moveTo(800, 0)); stage.addAction(Actions.moveTo(0, 0, 0.5f)); Gdx.input.setInputProcessor(stage); }
public void init() { add = new ParticleEffect(); add.load( Gdx.files.internal(Setting.GAME_RES_PARTICLE + "addp.p"), Gdx.files.internal(Setting.GAME_RES_PARTICLE)); add.setPosition(835, 111); render = new ShapeRenderer(); render.setAutoShapeType(true); stage = new Stage( new ScalingViewport( Scaling.stretch, GameUtil.screen_width, GameUtil.screen_height, new OrthographicCamera()), GameMenuView.stage.getBatch()); $.add( new ImageButton( Res.getDrawable(Setting.GAME_RES_IMAGE_MENU_GLOBAL + "exit.png"), Res.getDrawable(Setting.GAME_RES_IMAGE_MENU_GLOBAL + "exitc.png"))) .setPosition(960, 550) .fadeOut() .addAction(Actions.parallel(Actions.fadeIn(0.2f), Actions.moveTo(960, 510, 0.1f))) .onClick( new Runnable() { @Override public void run() { Music.playSE("snd210"); GameViews.gameview.stackView.disposes(); } }) .appendTo(stage); $.add( new ImageButton( Res.getDrawable(Setting.GAME_RES_IMAGE_MENU_GLOBAL + "min.png"), Res.getDrawable(Setting.GAME_RES_IMAGE_MENU_GLOBAL + "minc.png"))) .setPosition(910, 550) .fadeOut() .addAction(Actions.parallel(Actions.fadeIn(0.2f), Actions.moveTo(910, 510, 0.1f))) .onClick( new Runnable() { @Override public void run() { GameViews.gameview.stackView.onkeyDown(Keys.ESCAPE); Music.playSE("snd210"); } }) .appendTo(stage); Image bg = Res.get(Setting.GAME_RES_IMAGE_MENU_ITEM + "item_bg.png"); bg.setColor(1, 1, 1, 0); bg.setPosition(160, 28); bg.addAction(Actions.fadeIn(0.2f)); stage.addActor(bg); ListStyle style = new ListStyle(); style.font = FontUtil.generateFont(" ".toCharArray()[0], 22); style.selection = Res.getDrawable(Setting.GAME_RES_IMAGE_MENU_EQUIP + "equipsel.png"); style.fontColorSelected = Color.valueOf("f5e70c"); elist = new com.rpsg.rpg.system.ui.List<Item>(style); elist.onClick( new Runnable() { @Override public void run() { item = elist.getSelected(); Music.playSE("snd210"); } }); elist.layout(); pane = new ScrollPane(elist); pane.getStyle().vScroll = Res.getDrawable(Setting.GAME_RES_IMAGE_MENU_ITEM + "scrollbar.png"); pane.getStyle().vScrollKnob = Res.getDrawable(Setting.GAME_RES_IMAGE_MENU_ITEM + "scrollbarin.png"); pane.setForceScroll(false, true); pane.layout(); Table table = new Table(); table.add(pane); table.padRight(20); table.setPosition(170, 40); table.setSize(270, 390); table.getCell(pane).width(table.getWidth()).height(table.getHeight() - 20); table.setColor(1, 1, 1, 0); table.addAction(Actions.fadeIn(0.2f)); stage.addActor(table); topbarSel = Res.get(Setting.GAME_RES_IMAGE_MENU_ITEM + "topsel.png"); topbar = new Table(); topbar.setBackground(Res.getDrawable(Setting.GAME_RES_IMAGE_MENU_ITEM + "topbar.png")); topbar.setSize(818, 42); topbar.setPosition(160, 455); int tmpI = 0, offsetX = 135; topbar.add(new TopBar("medicine", tmpI++ * offsetX)); topbar.add(new TopBar("material", tmpI++ * offsetX)); topbar.add(new TopBar("cooking", tmpI++ * offsetX)); topbar.add(new TopBar("equipment", tmpI++ * offsetX)); topbar.add(new TopBar("spellcard", tmpI++ * offsetX)); topbar.add(new TopBar("important", tmpI++ * offsetX)); for (Cell cell : topbar.getCells()) { cell.padLeft(50).padRight(34).height(40); cell.getActor() .addListener( new InputListener() { public boolean touchDown( InputEvent event, float x, float y, int pointer, int button) { Music.playSE("snd210"); return true; } }); } stage.addActor(topbar); generateLists("medicine"); final Actor mask = new Actor(); mask.setWidth(GameUtil.screen_width); mask.setHeight(GameUtil.screen_height); mask.addListener( new InputListener() { public boolean touchDown(InputEvent event, float x, float y, int pointer, int button) { return false; } }); stage.addActor(mask); scuse = Res.get(Setting.GAME_RES_IMAGE_MENU_SC + "sc_use.png"); scuse.loaded = new Runnable() { @Override public void run() { scuse.setPosition( (int) (GameUtil.screen_width / 2 - scuse.getWidth() / 2), (int) (GameUtil.screen_height / 2 - scuse.getHeight() / 2)); } }; sellist = new com.rpsg.rpg.system.ui.List<ListItem>(style); sellist.onDBClick( new Runnable() { @Override public void run() { sellist.getSelected().run.run(); } }); can = new Runnable() { @Override public void run() { scuse.visible = false; sellist.setVisible(false); mask.setVisible(false); layer = 0; } }; sellist.setPosition(368, 240); sellist.setSize(254, 100); sellist.layout(); stage.addActor( sellist.onClick( new Runnable() { @Override public void run() { Music.playSE("snd210"); } })); final Actor mask2 = new Actor(); mask2.setWidth(GameUtil.screen_width); mask2.setHeight(GameUtil.screen_height); mask2.addListener( new InputListener() { public boolean touchDown(InputEvent event, float x, float y, int pointer, int button) { return false; } }); elist.onDBClick( new Runnable() { @Override public void run() { scuse.visible = true; sellist.offsetX2 = 20; sellist.getItems().clear(); if (item.type == Item.TYPE_USEINMAP) sellist .getItems() .add( new ListItem("使用") .setUserObject(Res.get(Setting.GAME_RES_IMAGE_ICONS + "yes.png")) .setRunnable( new Runnable() { @Override public void run() { scfor.visible = true; herolist.setVisible(true); mask2.setVisible(true); layer = 2; } })); if (item.throwable) sellist .getItems() .add( new ListItem("丢弃") .setUserObject(Res.get(Setting.GAME_RES_IMAGE_ICONS + "bin.png")) .setRunnable( new Runnable() { @Override public void run() { group.setVisible(true); mask2.setVisible(true); can.run(); currentCount = 1; layer = 3; } })); sellist .getItems() .add( new ListItem("取消") .setUserObject(Res.get(Setting.GAME_RES_IMAGE_ICONS + "no.png")) .setRunnable( new Runnable() { @Override public void run() { can.run(); } })); sellist.onDBClick( new Runnable() { @Override public void run() { sellist.getSelected().run.run(); } }); sellist.setVisible(true); sellist.setSelectedIndex(0); sellist.setItemHeight(27); sellist.padTop = 2; mask.setVisible(true); layer = 1; } }); stage.addActor(mask2); scfor = Res.get(Setting.GAME_RES_IMAGE_MENU_ITEM + "selbg.png"); scfor.setPosition(500, 87); herolist = new com.rpsg.rpg.system.ui.List<ListItem>(style); herolist.offsetX2 = 20; herolist .getItems() .add(new ListItem("取消").setUserObject(Res.get(Setting.GAME_RES_IMAGE_ICONS + "no.png"))); for (Hero h : HeroController.heros) { herolist.getItems().add(new ListItem(h.name).setUserObject(h)); } herolist .onDBClick( new Runnable() { @Override public void run() {} }) .onClick( new Runnable() { @Override public void run() { Music.playSE("snd210"); } }); herolist.setPosition(492, 273); herolist.setSize(257, 140); herolist.layout(); stage.addActor(herolist); can2 = new Runnable() { @Override public void run() { scfor.visible = false; herolist.setVisible(false); mask2.setVisible(false); layer = 1; } }; TextButtonStyle butstyle = new TextButtonStyle(); butstyle.over = butstyle.checkedOver = Res.getDrawable(Setting.GAME_RES_IMAGE_GLOBAL + "button_hover.png"); butstyle.down = Res.getDrawable(Setting.GAME_RES_IMAGE_GLOBAL + "button_active.png"); butstyle.up = Res.getDrawable(Setting.GAME_RES_IMAGE_GLOBAL + "button.png"); group = new Group(); Image tbg = new Image(Setting.GAME_RES_IMAGE_MENU_SC + "throw.png"); tbg.setPosition(350, 200); group.addActor(tbg); TextButton button; button = new TextButton("确定", butstyle) .onClick( new Runnable() { @Override public void run() { ItemUtil.throwItem(currentBar.name, item, currentCount); AlertUtil.add("丢弃成功。", AlertUtil.Yellow); ItemView.this.generateLists(currentBar.name); item = new TipItem(); can3.run(); } }); button.setPosition(630, 290); button.setSize(100, 50); group.addActor(button); TextButton button2 = new TextButton("取消", butstyle) .onClick( new Runnable() { @Override public void run() { can3.run(); } }); button2.setPosition(630, 225); button2.setSize(100, 50); group.addActor(button2); ImageButton upbutton1 = new ImageButton( Res.getDrawable(Setting.GAME_RES_IMAGE_NUMBER + "up.png"), Res.getDrawable(Setting.GAME_RES_IMAGE_NUMBER + "ups.png")); upbutton1 .onClick( new Runnable() { @Override public void run() { if (currentCount + 100 <= item.count) currentCount += 100; } }) .setPosition(395, 340); group.addActor(upbutton1); ImageButton upbutton2 = new ImageButton( Res.getDrawable(Setting.GAME_RES_IMAGE_NUMBER + "up.png"), Res.getDrawable(Setting.GAME_RES_IMAGE_NUMBER + "ups.png")); upbutton2 .onClick( new Runnable() { @Override public void run() { if (currentCount + 10 <= item.count) currentCount += 10; } }) .setPosition(435, 340); group.addActor(upbutton2); ImageButton upbutton3 = new ImageButton( Res.getDrawable(Setting.GAME_RES_IMAGE_NUMBER + "up.png"), Res.getDrawable(Setting.GAME_RES_IMAGE_NUMBER + "ups.png")); upbutton3 .onClick( new Runnable() { @Override public void run() { if (currentCount + 1 <= item.count) currentCount += 1; } }) .setPosition(475, 340); group.addActor(upbutton3); ImageButton dbutton1 = new ImageButton( Res.getDrawable(Setting.GAME_RES_IMAGE_NUMBER + "down.png"), Res.getDrawable(Setting.GAME_RES_IMAGE_NUMBER + "downs.png")); dbutton1 .onClick( new Runnable() { @Override public void run() { if (currentCount - 100 >= 1) currentCount -= 100; } }) .setPosition(395, 240); group.addActor(dbutton1); ImageButton dbutton2 = new ImageButton( Res.getDrawable(Setting.GAME_RES_IMAGE_NUMBER + "down.png"), Res.getDrawable(Setting.GAME_RES_IMAGE_NUMBER + "downs.png")); dbutton2 .onClick( new Runnable() { @Override public void run() { if (currentCount - 10 >= 1) currentCount -= 10; } }) .setPosition(435, 240); group.addActor(dbutton2); ImageButton dbutton3 = new ImageButton( Res.getDrawable(Setting.GAME_RES_IMAGE_NUMBER + "down.png"), Res.getDrawable(Setting.GAME_RES_IMAGE_NUMBER + "downs.png")); dbutton3 .onClick( new Runnable() { @Override public void run() { if (currentCount - 1 >= 1) currentCount -= 1; } }) .setPosition(475, 240); group.addActor(dbutton3); Table buttable = new Table(); buttable .add( new TextButton("最大", butstyle, 16) .onClick( new Runnable() { @Override public void run() { currentCount = item.count == 0 ? 1 : item.count; } })) .size(80, 33) .row(); buttable .add( new TextButton("+1", butstyle, 16) .onClick( new Runnable() { @Override public void run() { if (currentCount < item.count) currentCount++; } })) .size(80, 35) .row(); buttable .add( new TextButton("-1", butstyle, 16) .onClick( new Runnable() { @Override public void run() { if (currentCount > 1) currentCount--; } })) .size(80, 35) .row(); buttable .add( new TextButton("最小", butstyle, 16) .onClick( new Runnable() { @Override public void run() { currentCount = 1; } })) .size(80, 33) .row(); for (Cell c : buttable.getCells()) { c.padTop(2).padBottom(2); } buttable.setPosition(575, 300); group.addActor(buttable); stage.addActor(group); for (final Actor a : group.getChildren()) { a.addListener( new InputListener() { public boolean touchDown(InputEvent event, float x, float y, int pointer, int button) { if (!(a instanceof Image)) Music.playSE("snd210"); return true; } }); } can3 = new Runnable() { @Override public void run() { group.setVisible(false); mask2.setVisible(false); can.run(); } }; can3.run(); can2.run(); can.run(); }