X-Git-Url: http://deadsoftware.ru/gitweb?a=blobdiff_plain;f=core%2Fsrc%2Fru%2Fdeadsoftware%2Fcavedroid%2Fmenu%2Fsubmenus%2FMenu.java;h=9f8df4c25d96d498c6019c1e123ef99a61e05c6e;hb=5b3244dceab39900a44eeb4d6108715c56735626;hp=21bf02b083050bb90be78135fb078a0fc1aadcb3;hpb=7c525620f826997870a05e6c1607bc36c19f3da9;p=cavedroid.git diff --git a/core/src/ru/deadsoftware/cavedroid/menu/submenus/Menu.java b/core/src/ru/deadsoftware/cavedroid/menu/submenus/Menu.java index 21bf02b..9f8df4c 100644 --- a/core/src/ru/deadsoftware/cavedroid/menu/submenus/Menu.java +++ b/core/src/ru/deadsoftware/cavedroid/menu/submenus/Menu.java @@ -6,21 +6,24 @@ import com.badlogic.gdx.graphics.g2d.SpriteBatch; import com.badlogic.gdx.graphics.g2d.TextureRegion; import com.badlogic.gdx.utils.ArrayMap; import com.badlogic.gdx.utils.JsonValue; -import ru.deadsoftware.cavedroid.CaveGame; -import ru.deadsoftware.cavedroid.GameScreen; +import ru.deadsoftware.cavedroid.MainConfig; +import ru.deadsoftware.cavedroid.menu.MenuProc; import ru.deadsoftware.cavedroid.menu.objects.Button; -import ru.deadsoftware.cavedroid.menu.objects.ButtonDrawer; import ru.deadsoftware.cavedroid.menu.objects.ButtonEventListener; +import ru.deadsoftware.cavedroid.menu.objects.ButtonRenderer; import ru.deadsoftware.cavedroid.misc.Assets; import java.util.HashMap; public abstract class Menu { - private ButtonDrawer buttonDrawer; + protected final MainConfig mMainConfig; + protected final MenuProc.Input mMenuInput; - private float width; - private float height; + private final ButtonRenderer mButtonRenderer; + + private final float mWidth; + private final float mHeight; /** * {@link ArrayMap} of {@link Button Buttons} of this menu screen @@ -28,14 +31,16 @@ public abstract class Menu { private ArrayMap buttons; /** - * @param width Viewport width - * @param height Viewport height - * @param buttonDrawer {@link ButtonDrawer} that will draw the buttons of this menu + * @param width Viewport width + * @param height Viewport height + * @param buttonRenderer {@link ButtonRenderer} that will draw the buttons of this menu */ - Menu(float width, float height, ButtonDrawer buttonDrawer) { - this.width = width; - this.height = height; - this.buttonDrawer = buttonDrawer; + Menu(float width, float height, ButtonRenderer buttonRenderer, MainConfig mainConfig, MenuProc.Input menuInput) { + mWidth = width; + mHeight = height; + mButtonRenderer = buttonRenderer; + mMainConfig = mainConfig; + mMenuInput = menuInput; initButtons(); } @@ -56,15 +61,18 @@ public abstract class Menu { * @param jsonFile A {@link FileHandle} to json file */ void loadButtonsFromJson(FileHandle jsonFile) { - if (buttons == null) buttons = new ArrayMap<>(); + if (buttons == null) { + buttons = new ArrayMap<>(); + } HashMap eventListeners = getButtonEventListeners(); JsonValue json = Assets.jsonReader.parse(jsonFile); - int y = (int) height / 4; + int y = (int) mHeight / 4; for (JsonValue key = json.child(); key != null; key = key.next(), y += Button.HEIGHT + 10) { buttons.put(key.name(), new Button(Assets.getStringFromJson(key, "label", ""), - (int) width / 2 - Button.WIDTH / 2, - Assets.getIntFromJson(key, "y", y), Assets.getIntFromJson(key, "type", Button.NORMAL), + (int) mWidth / 2 - Button.WIDTH / 2, + Assets.getIntFromJson(key, "y", y), + Assets.getIntFromJson(key, "type", Button.NORMAL), eventListeners.containsKey(key.name()) ? eventListeners.get(key.name()) : () -> { })); } @@ -79,24 +87,24 @@ public abstract class Menu { TextureRegion background = Assets.textureRegions.get("background"); TextureRegion gamelogo = Assets.textureRegions.get("gamelogo"); - for (int x = 0; x <= width / 16; x++) { - for (int y = 0; y <= height / 16; y++) { + for (int x = 0; x <= mWidth / 16; x++) { + for (int y = 0; y <= mHeight / 16; y++) { spriter.draw(background, x * 16, y * 16); } } - spriter.draw(gamelogo, width / 2 - (float) gamelogo.getRegionWidth() / 2, 8); + spriter.draw(gamelogo, mWidth / 2 - (float) gamelogo.getRegionWidth() / 2, 8); - float inputX = Gdx.input.getX() * width / GameScreen.getWidth(); - float inputY = Gdx.input.getY() * height / GameScreen.getHeight(); + float inputX = Gdx.input.getX() * mWidth / Gdx.graphics.getWidth(); + float inputY = Gdx.input.getY() * mHeight / Gdx.graphics.getHeight(); for (Button button : buttons.values()) { if (button.getType() > 0) { - if (button.getRect().contains(inputX, inputY) && (!CaveGame.TOUCH || Gdx.input.isTouched())) { + if (button.getRect().contains(inputX, inputY) && (/*!CaveGame.TOUCH || */Gdx.input.isTouched())) { button.setType(2); } else { button.setType(1); } } - button.draw(buttonDrawer); + button.draw(mButtonRenderer); } }