diff --git a/core/src/ru/deadsoftware/cavedroid/menu/submenus/Menu.java b/core/src/ru/deadsoftware/cavedroid/menu/submenus/Menu.java
index 21bf02b083050bb90be78135fb078a0fc1aadcb3..9f8df4c25d96d498c6019c1e123ef99a61e05c6e 100644 (file)
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
private ArrayMap<String, Button> 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();
}
* @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<String, ButtonEventListener> 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()) : () -> {
}));
}
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);
}
}