/** Set bounds the x, y, width, and height. */ public void setBounds(float x, float y, float width, float height) { setX(x); setY(y); setWidth(width); setHeight(height); }
public void layout() { Table table = getTable(); float width = table.getWidth(); float height = table.getHeight(); super.layout(0, 0, width, height); java.util.List<Cell> cells = getCells(); if (round) { for (int i = 0, n = cells.size(); i < n; i++) { Cell c = cells.get(i); if (c.getIgnore()) continue; float widgetWidth = Math.round(c.getWidgetWidth()); float widgetHeight = Math.round(c.getWidgetHeight()); float widgetX = Math.round(c.getWidgetX()); float widgetY = height - Math.round(c.getWidgetY()) - widgetHeight; c.setWidgetX(widgetX); c.setWidgetY(widgetY); c.setWidgetWidth(widgetWidth); c.setWidgetHeight(widgetHeight); Actor actor = (Actor) c.getWidget(); if (actor != null) { actor.setX(widgetX); actor.setY(widgetY); if (actor.getWidth() != widgetWidth || actor.getHeight() != widgetHeight) { actor.setWidth(widgetWidth); actor.setHeight(widgetHeight); if (actor instanceof Layout) ((Layout) actor).invalidate(); } } } } else { for (int i = 0, n = cells.size(); i < n; i++) { Cell c = cells.get(i); if (c.getIgnore()) continue; float widgetWidth = c.getWidgetWidth(); float widgetHeight = c.getWidgetHeight(); float widgetX = c.getWidgetX(); float widgetY = height - c.getWidgetY() - widgetHeight; c.setWidgetX(widgetX); c.setWidgetY(widgetY); c.setWidgetWidth(widgetWidth); c.setWidgetHeight(widgetHeight); Actor actor = (Actor) c.getWidget(); if (actor != null) { actor.setX(widgetX); actor.setY(widgetY); if (actor.getWidth() != widgetWidth || actor.getHeight() != widgetHeight) { actor.setWidth(widgetWidth); actor.setHeight(widgetHeight); if (actor instanceof Layout) ((Layout) actor).invalidate(); } } } } // Validate children separately from sizing actors to ensure actors without a cell are // validated. Array<Actor> children = table.getChildren(); for (int i = 0, n = children.size; i < n; i++) { Actor child = children.get(i); if (child instanceof Layout) ((Layout) child).validate(); } }
/** Adds the specified size to the current size. */ public void size(float width, float height) { setWidth(this.width + width); setHeight(this.height + height); }
/** Adds the specified size to the current size. */ public void size(float size) { setWidth(width + size); setHeight(height + size); }
/** Sets the width and height. */ public void setSize(float width, float height) { setWidth(width); setHeight(height); }
public void layout() { final Drawable bg = style.background; final Drawable hScrollKnob = style.hScrollKnob; final Drawable vScrollKnob = style.vScrollKnob; float bgLeftWidth = 0, bgRightWidth = 0, bgTopHeight = 0, bgBottomHeight = 0; if (bg != null) { bgLeftWidth = bg.getLeftWidth(); bgRightWidth = bg.getRightWidth(); bgTopHeight = bg.getTopHeight(); bgBottomHeight = bg.getBottomHeight(); } float width = getWidth(); float height = getHeight(); float scrollbarHeight = 0; if (hScrollKnob != null) scrollbarHeight = hScrollKnob.getMinHeight(); if (style.hScroll != null) scrollbarHeight = Math.max(scrollbarHeight, style.hScroll.getMinHeight()); float scrollbarWidth = 0; if (vScrollKnob != null) scrollbarWidth = vScrollKnob.getMinWidth(); if (style.vScroll != null) scrollbarWidth = Math.max(scrollbarWidth, style.vScroll.getMinWidth()); // Get available space size by subtracting background's padded area. areaWidth = width - bgLeftWidth - bgRightWidth; areaHeight = height - bgTopHeight - bgBottomHeight; if (widget == null) return; // Get widget's desired width. float widgetWidth, widgetHeight; if (widget instanceof Layout) { Layout layout = (Layout) widget; widgetWidth = layout.getPrefWidth(); widgetHeight = layout.getPrefHeight(); } else { widgetWidth = widget.getWidth(); widgetHeight = widget.getHeight(); } // Determine if horizontal/vertical scrollbars are needed. scrollX = forceOverscrollX || (widgetWidth > areaWidth && !disableX); scrollY = forceOverscrollY || (widgetHeight > areaHeight && !disableY); boolean fade = fadeScrollBars; if (!fade) { // Check again, now taking into account the area that's taken up by any enabled scrollbars. if (scrollY) { areaWidth -= scrollbarWidth; if (!scrollX && widgetWidth > areaWidth && !disableX) { scrollX = true; } } if (scrollX) { areaHeight -= scrollbarHeight; if (!scrollY && widgetHeight > areaHeight && !disableY) { scrollY = true; areaWidth -= scrollbarWidth; } } } // Set the widget area bounds. widgetAreaBounds.set(bgLeftWidth, bgBottomHeight, areaWidth, areaHeight); if (fade) { // Make sure widget is drawn under fading scrollbars. if (scrollX) areaHeight -= scrollbarHeight; if (scrollY) areaWidth -= scrollbarWidth; } else { if (scrollbarsOnTop) { // Make sure widget is drawn under non-fading scrollbars. if (scrollX) widgetAreaBounds.height += scrollbarHeight; if (scrollY) widgetAreaBounds.width += scrollbarWidth; } else { // Offset widget area y for horizontal scrollbar. if (scrollX) widgetAreaBounds.y += scrollbarHeight; } } // If the widget is smaller than the available space, make it take up the available space. widgetWidth = disableX ? width : Math.max(areaWidth, widgetWidth); widgetHeight = disableY ? height : Math.max(areaHeight, widgetHeight); maxX = widgetWidth - areaWidth; maxY = widgetHeight - areaHeight; if (fade) { // Make sure widget is drawn under fading scrollbars. if (scrollX) maxY -= scrollbarHeight; if (scrollY) maxX -= scrollbarWidth; } scrollX(MathUtils.clamp(amountX, 0, maxX)); amountY = MathUtils.clamp(amountY, 0, maxY); // Set the bounds and scroll knob sizes if scrollbars are needed. if (scrollX) { if (hScrollKnob != null) { float hScrollHeight = style.hScroll != null ? style.hScroll.getMinHeight() : hScrollKnob.getMinHeight(); hScrollBounds.set(bgLeftWidth, bgBottomHeight, areaWidth, hScrollHeight); hKnobBounds.width = Math.max( hScrollKnob.getMinWidth(), (int) (hScrollBounds.width * areaWidth / widget.getWidth())); hKnobBounds.height = hScrollKnob.getMinHeight(); hKnobBounds.x = hScrollBounds.x + (int) ((hScrollBounds.width - hKnobBounds.width) * getScrollPercentX()); hKnobBounds.y = hScrollBounds.y; } else { hScrollBounds.set(0, 0, 0, 0); hKnobBounds.set(0, 0, 0, 0); } } if (scrollY) { if (vScrollKnob != null) { float vScrollWidth = style.vScroll != null ? style.vScroll.getMinWidth() : vScrollKnob.getMinWidth(); vScrollBounds.set( width - bgRightWidth - vScrollWidth, height - bgTopHeight - areaHeight, vScrollWidth, areaHeight); vKnobBounds.width = vScrollKnob.getMinWidth(); vKnobBounds.height = Math.max( vScrollKnob.getMinHeight(), (int) (vScrollBounds.height * areaHeight / widgetHeight)); vKnobBounds.x = width - bgRightWidth - vScrollKnob.getMinWidth(); vKnobBounds.y = vScrollBounds.y + (int) ((vScrollBounds.height - vKnobBounds.height) * (1 - getScrollPercentY())); } else { vScrollBounds.set(0, 0, 0, 0); vKnobBounds.set(0, 0, 0, 0); } } if (widget.getWidth() != widgetWidth || widget.getHeight() != widgetHeight) { widget.setWidth(widgetWidth); widget.setHeight(widgetHeight); if (widget instanceof Layout) { Layout layout = (Layout) widget; layout.invalidate(); layout.validate(); } } else { if (widget instanceof Layout) ((Layout) widget).validate(); } }
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(); }