Skip to content
Snippets Groups Projects
Commit 4fce2244 authored by Matyáš Latner's avatar Matyáš Latner
Browse files

#58 User menu and user selectbox refactor

parent e6222ab4
No related branches found
No related tags found
No related merge requests found
package cz.nic.tablexia.menu;
import com.badlogic.gdx.graphics.Color;
import com.badlogic.gdx.graphics.g2d.Sprite;
import com.badlogic.gdx.math.Interpolation;
import com.badlogic.gdx.scenes.scene2d.Action;
import com.badlogic.gdx.scenes.scene2d.Group;
......@@ -13,10 +12,7 @@ import com.badlogic.gdx.scenes.scene2d.ui.HorizontalGroup;
import com.badlogic.gdx.scenes.scene2d.ui.Image;
import com.badlogic.gdx.scenes.scene2d.ui.Stack;
import com.badlogic.gdx.scenes.scene2d.ui.Table;
import com.badlogic.gdx.scenes.scene2d.ui.TextButton.TextButtonStyle;
import com.badlogic.gdx.scenes.scene2d.ui.VerticalGroup;
import com.badlogic.gdx.scenes.scene2d.utils.ClickListener;
import com.badlogic.gdx.scenes.scene2d.utils.SpriteDrawable;
import com.badlogic.gdx.scenes.scene2d.utils.TextureRegionDrawable;
import com.badlogic.gdx.utils.Align;
import com.badlogic.gdx.utils.Disposable;
......@@ -26,7 +22,6 @@ import com.badlogic.gdx.utils.reflect.ReflectionException;
import cz.nic.tablexia.TablexiaSettings;
import cz.nic.tablexia.bus.ApplicationBus;
import cz.nic.tablexia.loader.application.ApplicationAtlasManager;
import cz.nic.tablexia.loader.application.ApplicationFontManager;
import cz.nic.tablexia.loader.application.ApplicationSoundManager;
import cz.nic.tablexia.util.Log;
import cz.nic.tablexia.util.ui.TablexiaNoBlendingImage;
......@@ -108,30 +103,29 @@ public abstract class AbstractMenu extends Stack implements Disposable {
}
}
private static final float MENU_MOVE_DURATION = 1f;
private static final Interpolation.PowOut MENU_MOVE_INTERPOLATION = Interpolation.pow4Out;
private static final float MENU_CONTROLLER_SIZE_RATIO = (1f / 7);
private static final Color MENU_TEXT_COLOR = Color.BLACK;
private static final int OPEN_MENU_BUTTON_WIDTH = 60;
private static final int OPEN_MENU_BUTTON_HEIGHT = 75;
private static final int LAYOUT_CONTAINER_ALIGN = Align.left;
private static final float MENU_MOVE_DURATION = 1f;
private static final Interpolation.PowOut MENU_MOVE_INTERPOLATION = Interpolation.pow4Out;
private static final float MENU_CONTROLLER_SIZE_RATIO = (1f / 7);
private static final int OPEN_MENU_BUTTON_WIDTH = 60;
private static final int OPEN_MENU_BUTTON_HEIGHT = 75;
private static final int OPEN_MENU_BUTTON_TOP_OFFSET = 60;
protected VerticalGroup menuItemsLayout;
private final Container<Group> layoutContainer;
private TextButtonStyle menuButtonStyle;
private float menuHidePositionX;
private float menuClosePositionX;
private int menuOpenPositionX;
private int menuPositionY;
private Action moveAction;
private boolean isMenuHidden;
private boolean isMenuClose;
private boolean isMenuOpen;
private boolean isClosing;
private boolean isOpening;
private Image background;
private Image border;
private final Container<Group> layoutContainer;
private float menuHidePositionX;
private float menuClosePositionX;
private int menuOpenPositionX;
private int menuPositionY;
private Action moveAction;
private boolean isMenuHidden;
private boolean isMenuClose;
private boolean isMenuOpen;
private boolean isClosing;
private boolean isOpening;
private Image background;
private Image border;
public AbstractMenu(Float width, Float height) {
background = new TablexiaNoBlendingImage(ApplicationAtlasManager.getInstance().getTextureRegion(ApplicationAtlasManager.MAINMENU_BACKGROUND));
......@@ -143,12 +137,10 @@ public abstract class AbstractMenu extends Stack implements Disposable {
// don't click through the menu
addListener(new ClickListener());
// menu layout
menuItemsLayout = new VerticalGroup();
// layout container
layoutContainer = new Container<Group>();
layoutContainer.setDebug(true, false);
layoutContainer.setActor(createMenuLayout(menuItemsLayout));
layoutContainer.align(Align.left);
layoutContainer.align(LAYOUT_CONTAINER_ALIGN);
Stack backgroundStack = new Stack();
backgroundStack.add(background);
......@@ -164,14 +156,6 @@ public abstract class AbstractMenu extends Stack implements Disposable {
isClosing = false;
isOpening = false;
// menu button style
menuButtonStyle = new TextButtonStyle();
menuButtonStyle.font = ApplicationFontManager.getInstance().getFont(ApplicationFontManager.APPLICATION_DEFAULT_FONT_REGULAR);
menuButtonStyle.fontColor = MENU_TEXT_COLOR;
menuButtonStyle.up = new SpriteDrawable(new Sprite(ApplicationAtlasManager.getInstance().getColorTextureRegion(Color.BLUE)));
menuButtonStyle.up.setMinWidth(50); // temprorary button size
menuButtonStyle.up.setMinHeight(50); // temprorary button size
// open close button
if (getMenuControlType().isHasSwitch()) {
Button openCloseButton = new Button(new TextureRegionDrawable(ApplicationAtlasManager.getInstance().getColorTextureRegion(Color.RED)));
......@@ -218,10 +202,6 @@ public abstract class AbstractMenu extends Stack implements Disposable {
//nothing needed
}
protected Group createMenuLayout(VerticalGroup menuLayout) {
return menuLayout;
}
protected abstract MenuControlType getMenuControlType();
protected abstract boolean isScreenPause();
......@@ -230,6 +210,7 @@ public abstract class AbstractMenu extends Stack implements Disposable {
//////////////////////////// MENU ITEMS
public void initMenuItems() {
layoutContainer.clear();
initMenuItems(layoutContainer);
}
......@@ -372,7 +353,6 @@ public abstract class AbstractMenu extends Stack implements Disposable {
}
}
// TODO check
public void doMenuAction(MenuAction menuAction, boolean animated, boolean force) {
if (menuAction != null) {
menuAction.doAction(this, animated, force);
......
......@@ -16,6 +16,8 @@ import cz.nic.tablexia.TablexiaSettings;
import cz.nic.tablexia.loader.application.ApplicationFontManager;
import cz.nic.tablexia.menu.AbstractMenu;
import cz.nic.tablexia.menu.IMenuItem;
import cz.nic.tablexia.menu.main.locale.LocaleSelectBox;
import cz.nic.tablexia.menu.main.user.UserSelectBox;
/**
* MainMenu container
......@@ -24,6 +26,9 @@ import cz.nic.tablexia.menu.IMenuItem;
*/
public class MainMenu extends AbstractMenu {
private static final MenuControlType MENU_CONTROL_TYPE = MenuControlType.MANUAL;
private static final boolean MENU_SCREEN_PAUSE = true;
private static final float MAINMENU_PADDING = 10f;
private static final float SCROLLBAR_PADDING_BOTTOM = 10f;
private static final float SCROLLBAR_PADDING_TOP = 10f;
......@@ -41,7 +46,20 @@ public class MainMenu extends AbstractMenu {
}
@Override
protected Group createMenuLayout(VerticalGroup menuLayout) {
protected boolean isScreenPause() {
return MENU_SCREEN_PAUSE;
}
@Override
protected MenuControlType getMenuControlType() {
return MENU_CONTROL_TYPE;
}
@Override
public void initMenuItems(Container<Group> layoutContainer) {
VerticalGroup menuItemsLayout = new VerticalGroup();
menuItemsLayout.fill();
Table layoutTable = new Table();
layoutTable.pad(MAINMENU_PADDING);
BitmapFont font = ApplicationFontManager.getInstance().getDefaultApplicationRegularFont();
......@@ -51,7 +69,7 @@ public class MainMenu extends AbstractMenu {
layoutTable.row();
// Menu ScrollPane
ScrollPane scrollPane = new ScrollPane(menuLayout);
ScrollPane scrollPane = new ScrollPane(menuItemsLayout);
scrollPane.setScrollingDisabled(true, false);
layoutTable.add(scrollPane).expand().fill().padBottom(SCROLLBAR_PADDING_BOTTOM).padTop(SCROLLBAR_PADDING_TOP);
layoutTable.setFillParent(true);
......@@ -68,13 +86,6 @@ public class MainMenu extends AbstractMenu {
footerTable.add(appName).width(footerContentWidth * APP_NAME_WIDTH_RATIO).padLeft(APP_NAME_TEXT_PADDING_LEFT);
layoutTable.add(footerTable).expand().fill();
return layoutTable;
}
@Override
public void initMenuItems(Container<Group> layoutContainer) {
menuItemsLayout.clear();
menuItemsLayout.fill();
for (final IMenuItem mainMenuDefinition : MainMenuDefinition.getItemsForMenu()) {
Group menuItemContainer = getGroupForMenuItem(mainMenuDefinition);
......@@ -101,16 +112,7 @@ public class MainMenu extends AbstractMenu {
}
}
}
}
@Override
protected boolean isScreenPause() {
return true;
}
@Override
protected MenuControlType getMenuControlType() {
return MenuControlType.MANUAL;
layoutContainer.setActor(layoutTable);
}
}
......@@ -2,128 +2,49 @@ package cz.nic.tablexia.menu.main.user;
import com.badlogic.gdx.graphics.Color;
import com.badlogic.gdx.graphics.g2d.Batch;
import com.badlogic.gdx.graphics.g2d.BitmapFont;
import com.badlogic.gdx.graphics.g2d.GlyphLayout;
import com.badlogic.gdx.graphics.g2d.NinePatch;
import com.badlogic.gdx.scenes.scene2d.Actor;
import com.badlogic.gdx.scenes.scene2d.Group;
import com.badlogic.gdx.scenes.scene2d.utils.ChangeListener;
import com.badlogic.gdx.scenes.scene2d.utils.TextureRegionDrawable;
import com.badlogic.gdx.utils.Align;
import net.engio.mbassy.listener.Handler;
import java.util.ArrayList;
import java.util.List;
import cz.nic.tablexia.Tablexia;
import cz.nic.tablexia.TablexiaApplication;
import cz.nic.tablexia.TablexiaSettings;
import cz.nic.tablexia.bus.ApplicationBus;
import cz.nic.tablexia.loader.application.ApplicationAtlasManager;
import cz.nic.tablexia.loader.application.ApplicationFontManager;
import cz.nic.tablexia.loader.application.ApplicationTextManager;
import cz.nic.tablexia.menu.IMenuItem;
import cz.nic.tablexia.menu.user.UserMenuNewSelectBoxItemGroup;
import cz.nic.tablexia.menu.user.UserMenuSelectBoxItemGroup;
import cz.nic.tablexia.model.User;
import cz.nic.tablexia.screen.createuser.PanoramaScreen;
import cz.nic.tablexia.util.ui.AbstractTablexiaSelectBox;
/**
* Created by Matyáš Latner.
*/
public class UserSelectBox extends AbstractTablexiaSelectBox<UserSelectBox.IUserItem> {
public class UserSelectBox extends AbstractTablexiaSelectBox<UserSelectBox.UserSelectBoxItem> {
public interface UserSelectBoxItem {
void performAction();
void setBounds (float x, float y, float width, float height);
void draw(Batch batch, float parentAlpha);
}
private static final int TRIANGLE_WIDTH = 12;
private static final int TRIANGLE_HEIGHT = 12;
private static final int TRIANGLE_BOTTOM_OFFSET = 3;
private static final int TRIANGLE_RIGHT_OFFSET = 3;
private static final int TEXT_LEFT_OFFSET = 20;
private static final int IMAGE_BORDER_OFFSET = 4;
private static final int SELECTOR_RIGHT_OFFSET = 10;
private static final int SELECTOR_BOTTOM_OFFSET = 4;
private static final int SELECTOR_WIDTH = 5;
private static final int SELECTOR_TOP_OFFSET = 8;
private static final Color FOREGROUND_COLOR = new Color(0.322f, 0.278f, 0.255f, 1f);
private static final Color NEWUSER_TEXT_COLOR = new Color(0.098f, 0.086f, 0.075f, 1f);
private static final int NEWUSER_TEXT_ALIGN = Align.center;
private static final int ITEMS_OVERLAP_SIZE = 1;
private TextureRegionDrawable triangle;
private TextureRegionDrawable selector;
public interface IUserItem {
void performAction();
void setBounds (float x, float y, float width, float height);
void draw(Batch batch, float parentAlpha);
}
public static class UserItem extends Group implements IUserItem {
private final NinePatch background;
private final BitmapFont font;
private final TextureRegionDrawable image;
private final User user;
public UserItem(IMenuItem menuItem) {
this.user = (User) menuItem;
background = ApplicationAtlasManager.getInstance().getPatch(ApplicationAtlasManager.USERMENU_MENUITEM_BACKGROUND);
font = ApplicationFontManager.getInstance().getDefaultApplicationRegularFont();
image = new TextureRegionDrawable(ApplicationAtlasManager.getInstance().getTextureRegion(ApplicationAtlasManager.USERMENU_MENUITEM_SAMPLE));
}
public void performAction() {
user.performAction();
}
@Override
public void draw(Batch batch, float parentAlpha) {
FOREGROUND_COLOR.a = parentAlpha;
font.setColor(FOREGROUND_COLOR);
background.draw(batch, getX(), getY(), getWidth(), getHeight());
float imageWidth = getHeight();
image.draw(batch, getX() + IMAGE_BORDER_OFFSET, getY() + IMAGE_BORDER_OFFSET, imageWidth - IMAGE_BORDER_OFFSET * 2, getHeight() - IMAGE_BORDER_OFFSET * 2);
float textPositionX = getX() + imageWidth + TEXT_LEFT_OFFSET;
float textPositionY = getY() + getHeight() / 2;
font.draw(batch, user.getName(), textPositionX, textPositionY + font.getLineHeight() / 3);
}
}
public static class NewUserItem extends Actor implements IUserItem {
private final NinePatch background;
private final BitmapFont font;
private final String text;
private final GlyphLayout glyphLayout;
public NewUserItem() {
background = ApplicationAtlasManager.getInstance().getPatch(ApplicationAtlasManager.USERMENU_MENUBUTTON_BACKGROUND);
font = ApplicationFontManager.getInstance().getDefaultApplicationBoldFont();
text = ApplicationTextManager.getInstance().getText(ApplicationTextManager.ApplicationTextsAssets.USERMENU_NEWUSER);
glyphLayout = new GlyphLayout();
}
public void performAction() {
TablexiaSettings.getInstance().setSelectedUser(null);
ApplicationBus.getInstance().post(new Tablexia.ChangeScreenEvent(PanoramaScreen.class, TablexiaApplication.ScreenTransaction.FADE)).asynchronously();
}
@Override
public void draw(Batch batch, float parentAlpha) {
NEWUSER_TEXT_COLOR.a = parentAlpha;
font.setColor(NEWUSER_TEXT_COLOR);
background.draw(batch, getX(), getY(), getWidth(), getHeight());
glyphLayout.setText(font, text, NEWUSER_TEXT_COLOR, getWidth(), NEWUSER_TEXT_ALIGN, false);
font.draw(batch, glyphLayout, getX(), getY() + getHeight() / 2 + font.getLineHeight() / 3);
}
}
private final ChangeListener changeListener = new ChangeListener() {
@Override
public void changed(ChangeEvent event, Actor actor) {
......@@ -142,26 +63,19 @@ public class UserSelectBox extends AbstractTablexiaSelectBox<UserSelectBox.IUser
prepareActiveUsers();
}
@Handler
public void onSelectedUserEvent(TablexiaSettings.SelectedUserEvent selectedUserEvent) {
if (selectedUserEvent.isUserSelected()) {
prepareActiveUsers();
}
}
private void prepareActiveUsers() {
removeCaptureListener(changeListener);
UserItem selectedUserItem = null;
List<IUserItem> userItems = new ArrayList<IUserItem>();
UserMenuSelectBoxItemGroup selectedUserItem = null;
List<UserSelectBoxItem> userItems = new ArrayList<UserSelectBoxItem>();
for (User user: User.selectActiveUsers()) {
UserItem userItem = new UserItem(user);
UserMenuSelectBoxItemGroup userItem = new UserMenuSelectBoxItemGroup(user);
userItems.add(userItem);
if (user.equals(TablexiaSettings.getInstance().getSelectedUser())) {
selectedUserItem = userItem;
}
}
userItems.add(new NewUserItem());
setItems(userItems.toArray(new IUserItem[]{}));
userItems.add(new UserMenuNewSelectBoxItemGroup());
setItems(userItems.toArray(new UserSelectBoxItem[]{}));
if (selectedUserItem != null) {
setSelected(selectedUserItem);
}
......@@ -169,14 +83,14 @@ public class UserSelectBox extends AbstractTablexiaSelectBox<UserSelectBox.IUser
}
@Override
protected void drawSelectedItem(Batch batch, float parentAlpha, IUserItem selected, float width, float height) {
protected void drawSelectedItem(Batch batch, float parentAlpha, UserSelectBoxItem selected, float width, float height) {
selected.setBounds(getX(), getY(), width, height);
selected.draw(batch, parentAlpha);
triangle.draw(batch, getX() + getWidth() - TRIANGLE_WIDTH - TRIANGLE_RIGHT_OFFSET, getY() + TRIANGLE_BOTTOM_OFFSET, TRIANGLE_WIDTH, TRIANGLE_HEIGHT);
}
@Override
protected void drawListItem(Batch batch, float parentAlpha, IUserItem item, float x, float y, float width, float height) {
protected void drawListItem(Batch batch, float parentAlpha, UserSelectBoxItem item, float x, float y, float width, float height) {
height = height + ITEMS_OVERLAP_SIZE;
item.setBounds(x, y, width, height);
item.draw(batch, parentAlpha);
......@@ -186,4 +100,12 @@ public class UserSelectBox extends AbstractTablexiaSelectBox<UserSelectBox.IUser
}
//////////////////////////// SELECTED USER EVENT HANDLING
@Handler
public void onSelectedUserEvent(TablexiaSettings.SelectedUserEvent selectedUserEvent) {
if (selectedUserEvent.isUserSelected()) {
prepareActiveUsers();
}
}
}
......@@ -22,18 +22,8 @@ import cz.nic.tablexia.model.User;
*/
public class UserMenu extends AbstractMenu {
public static abstract class UserMenuItem implements IMenuItem {
@Override
public MenuAction getMenuAction() {
return null;
}
@Override
public IMenuItem[] getSubmenu() {
return null;
}
}
private static final MenuControlType MENU_CONTROL_TYPE = MenuControlType.AUTOMATIC;
private static final boolean MENU_SCREEN_PAUSE = false;
public UserMenu(Float width, Float height) {
super(width, height);
......@@ -42,27 +32,21 @@ public class UserMenu extends AbstractMenu {
@Override
protected boolean isScreenPause() {
return false;
return MENU_SCREEN_PAUSE;
}
@Override
protected MenuControlType getMenuControlType() {
return MenuControlType.AUTOMATIC;
return MENU_CONTROL_TYPE;
}
@Override
protected Group createMenuLayout(VerticalGroup menuLayout) {
ScrollPane scrollPane = new ScrollPane(menuLayout);
public void initMenuItems(Container<Group> layoutContainer) {
VerticalGroup menuItemsLayout = new VerticalGroup();
ScrollPane scrollPane = new ScrollPane(menuItemsLayout);
Container<ScrollPane> container = new Container<ScrollPane>(scrollPane);
container.setFillParent(true);
return container;
}
@Override
public void initMenuItems(Container<Group> layoutContainer) {
menuItemsLayout.clear();
menuItemsLayout.align(Align.left);
menuItemsLayout.fill();
for (final IMenuItem menuItem : User.selectActiveUsers()) {
Group userItemGroup = getGroupForMenuItem(menuItem);
......@@ -76,15 +60,20 @@ public class UserMenu extends AbstractMenu {
});
menuItemsLayout.addActor(userItemGroup);
}
}
@Handler
public void handleCreatedUserEvent(User.CreatedUserEvent createdUserEvent) {
initMenuItems();
layoutContainer.setActor(container);
}
@Override
public void dispose() {
ApplicationBus.getInstance().unsubscribe(this);
}
//////////////////////////// CREATE USER EVENT HANDLING
@Handler
public void handleCreatedUserEvent(User.CreatedUserEvent createdUserEvent) {
initMenuItems();
}
}
package cz.nic.tablexia.menu.user;
import com.badlogic.gdx.graphics.Color;
import com.badlogic.gdx.graphics.g2d.Batch;
import com.badlogic.gdx.graphics.g2d.BitmapFont;
import com.badlogic.gdx.graphics.g2d.GlyphLayout;
import com.badlogic.gdx.graphics.g2d.NinePatch;
import com.badlogic.gdx.scenes.scene2d.Actor;
import com.badlogic.gdx.utils.Align;
import cz.nic.tablexia.Tablexia;
import cz.nic.tablexia.TablexiaApplication;
import cz.nic.tablexia.TablexiaSettings;
import cz.nic.tablexia.bus.ApplicationBus;
import cz.nic.tablexia.loader.application.ApplicationAtlasManager;
import cz.nic.tablexia.loader.application.ApplicationFontManager;
import cz.nic.tablexia.loader.application.ApplicationTextManager;
import cz.nic.tablexia.menu.main.user.UserSelectBox;
import cz.nic.tablexia.screen.createuser.PanoramaScreen;
/**
* Created by Matyáš Latner.
*/
public class UserMenuNewSelectBoxItemGroup extends Actor implements UserSelectBox.UserSelectBoxItem {
private static final Color NEWUSER_TEXT_COLOR = new Color(0.098f, 0.086f, 0.075f, 1f);
private static final int NEWUSER_TEXT_ALIGN = Align.center;
private final NinePatch background;
private final BitmapFont font;
private final String text;
private final GlyphLayout glyphLayout;
public UserMenuNewSelectBoxItemGroup() {
background = ApplicationAtlasManager.getInstance().getPatch(ApplicationAtlasManager.USERMENU_MENUBUTTON_BACKGROUND);
font = ApplicationFontManager.getInstance().getDefaultApplicationBoldFont();
text = ApplicationTextManager.getInstance().getText(ApplicationTextManager.ApplicationTextsAssets.USERMENU_NEWUSER);
glyphLayout = new GlyphLayout();
}
public void performAction() {
TablexiaSettings.getInstance().setSelectedUser(null);
ApplicationBus.getInstance().post(new Tablexia.ChangeScreenEvent(PanoramaScreen.class, TablexiaApplication.ScreenTransaction.FADE)).asynchronously();
}
@Override
public void draw(Batch batch, float parentAlpha) {
NEWUSER_TEXT_COLOR.a = parentAlpha;
font.setColor(NEWUSER_TEXT_COLOR);
background.draw(batch, getX(), getY(), getWidth(), getHeight());
glyphLayout.setText(font, text, NEWUSER_TEXT_COLOR, getWidth(), NEWUSER_TEXT_ALIGN, false);
font.draw(batch, glyphLayout, getX(), getY() + getHeight() / 2 + font.getLineHeight() / 3);
}
}
package cz.nic.tablexia.menu.user;
import com.badlogic.gdx.graphics.Color;
import com.badlogic.gdx.graphics.g2d.Batch;
import com.badlogic.gdx.graphics.g2d.BitmapFont;
import com.badlogic.gdx.graphics.g2d.NinePatch;
import com.badlogic.gdx.scenes.scene2d.Group;
import com.badlogic.gdx.scenes.scene2d.utils.TextureRegionDrawable;
import cz.nic.tablexia.loader.application.ApplicationAtlasManager;
import cz.nic.tablexia.loader.application.ApplicationFontManager;
import cz.nic.tablexia.menu.IMenuItem;
import cz.nic.tablexia.menu.main.user.UserSelectBox;
import cz.nic.tablexia.model.User;
/**
* Created by Matyáš Latner.
*/
public class UserMenuSelectBoxItemGroup extends Group implements UserSelectBox.UserSelectBoxItem {
private static final int TEXT_LEFT_OFFSET = 20;
private static final int IMAGE_BORDER_OFFSET = 4;
private static final Color FOREGROUND_COLOR = new Color(0.322f, 0.278f, 0.255f, 1f);
private final NinePatch background;
private final BitmapFont font;
private final TextureRegionDrawable image;
private final User user;
public UserMenuSelectBoxItemGroup(IMenuItem menuItem) {
this.user = (User) menuItem;
background = ApplicationAtlasManager.getInstance().getPatch(ApplicationAtlasManager.USERMENU_MENUITEM_BACKGROUND);
font = ApplicationFontManager.getInstance().getDefaultApplicationRegularFont();
image = new TextureRegionDrawable(ApplicationAtlasManager.getInstance().getTextureRegion(ApplicationAtlasManager.USERMENU_MENUITEM_SAMPLE));
}
public void performAction() {
user.performAction();
}
@Override
public void draw(Batch batch, float parentAlpha) {
FOREGROUND_COLOR.a = parentAlpha;
font.setColor(FOREGROUND_COLOR);
background.draw(batch, getX(), getY(), getWidth(), getHeight());
float imageWidth = getHeight();
image.draw(batch, getX() + IMAGE_BORDER_OFFSET, getY() + IMAGE_BORDER_OFFSET, imageWidth - IMAGE_BORDER_OFFSET * 2, getHeight() - IMAGE_BORDER_OFFSET * 2);
float textPositionX = getX() + imageWidth + TEXT_LEFT_OFFSET;
float textPositionY = getY() + getHeight() / 2;
font.draw(batch, user.getName(), textPositionX, textPositionY + font.getLineHeight() / 3);
}
}
......@@ -13,17 +13,18 @@ import cz.nic.tablexia.TablexiaStorage;
import cz.nic.tablexia.bus.ApplicationBus;
import cz.nic.tablexia.game.GameDefinition;
import cz.nic.tablexia.game.difficulty.GameDifficulty;
import cz.nic.tablexia.menu.main.user.UserSelectBox;
import cz.nic.tablexia.menu.user.UserMenu;
import cz.nic.tablexia.menu.AbstractMenu;
import cz.nic.tablexia.menu.IMenuItem;
import cz.nic.tablexia.menu.user.UserMenuSelectBoxItemGroup;
import cz.nic.tablexia.model.game.Game;
import cz.nic.tablexia.util.Log;
/**
* Created by lhoracek, Matyáš Latner
*/
public class User extends UserMenu.UserMenuItem {
public class User implements IMenuItem {
private static final Class<UserSelectBox.UserItem> USER_ITEM_CLASS = UserSelectBox.UserItem.class;
private static final Class<UserMenuSelectBoxItemGroup> USER_ITEM_CLASS = UserMenuSelectBoxItemGroup.class;
public enum Gender {
FEMALE(0),
......@@ -136,6 +137,16 @@ public class User extends UserMenu.UserMenuItem {
TablexiaSettings.getInstance().setSelectedUser(this);
}
@Override
public AbstractMenu.MenuAction getMenuAction() {
return null;
}
@Override
public IMenuItem[] getSubmenu() {
return null;
}
//////////////////////////// DB ACCESS
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment