Skip to content
Snippets Groups Projects
Commit 3020ffd1 authored by v.tarantik's avatar v.tarantik
Browse files

#40 Encyclopedia graphic edits

parent fc5cf79d
No related branches found
No related tags found
No related merge requests found
Showing with 86 additions and 31 deletions
core/assets/common/screen/encyclopedia/gfx/bookmark.9.png

618 B

core/assets/common/screen/encyclopedia/gfx/bookmark.png

873 B

......@@ -8,6 +8,7 @@ import com.badlogic.gdx.scenes.scene2d.Group;
import com.badlogic.gdx.scenes.scene2d.InputEvent;
import com.badlogic.gdx.scenes.scene2d.Touchable;
import com.badlogic.gdx.scenes.scene2d.ui.Button;
import com.badlogic.gdx.scenes.scene2d.ui.Cell;
import com.badlogic.gdx.scenes.scene2d.ui.HorizontalGroup;
import com.badlogic.gdx.scenes.scene2d.ui.Image;
import com.badlogic.gdx.scenes.scene2d.ui.ScrollPane;
......@@ -21,6 +22,7 @@ import java.util.List;
import java.util.Map;
import cz.nic.tablexia.TablexiaSettings;
import cz.nic.tablexia.screen.encyclopedia.content.model.Hint;
import cz.nic.tablexia.util.Point;
import cz.nic.tablexia.screen.AbstractTablexiaScreen;
import cz.nic.tablexia.screen.encyclopedia.assets.EncyclopediaAssets;
......@@ -38,8 +40,10 @@ import cz.nic.tablexia.util.ui.TablexiaButton;
public class EncyclopediaScreen extends AbstractTablexiaScreen<Void> {
private static final String SOURCE_FILE_EXTENSION = ".json";
private static final Point SCREEN_SIZE = new Point(TablexiaSettings.getWorldWidth(), TablexiaSettings.getMinWorldHeight());
private static final float RIGHT_PANEL_PADDING_TOP = 10;
private static final float FONT_BUTTON_WIDTH = 70;
private static final float CLOSE_BUTTON_WIDTH = 60;
public static final float CLOSE_BUTTON_WIDTH = 60;
public static final Point CLOSE_BUTTON_POSITION = new Point(10, 10);
private static final float BUTTONS_MARGIN_LEFT = 30;
private static final float BUTTONS_GAP = 20;
private static final float CONTENT_RELATIVE_WIDTH = 0.75f;
......@@ -50,11 +54,11 @@ public class EncyclopediaScreen extends AbstractTablexiaScreen<Void> {
private static final String MUSIC_EXTENSION = ".mp3";
private Stack contentStack;
private Stack rightPanelStack;
private Table rightPanelStack;
private HorizontalGroup container;
private Table content;
private ScrollPane contentScrollPane;
private ResizableVerticalGroup rightPanel;
private Table rightPanel;
private MenuWidget menu;
private ScrollPane menuScrollPane;
private Group buttonsPanel;
......@@ -107,23 +111,24 @@ public class EncyclopediaScreen extends AbstractTablexiaScreen<Void> {
buttonsPanel = new ResizableWidgetGroup();
buttonsPanel.setSize(rightPanelWidth, SCREEN_SIZE.y * (1 - MENU_RELATIVE_HEIGHT));
rightPanelStack = new Stack();
rightPanelStack = new Table();
rightPanel = new ResizableVerticalGroup(new Point(rightPanelWidth, SCREEN_SIZE.y));
rightPanel = new Table();
rightPanel.setPosition(SCREEN_SIZE.x - rightPanelWidth, SCREEN_SIZE.y);
rightPanel.setSize(rightPanelWidth, SCREEN_SIZE.y);
rightPanel.addActor(menuScrollPane);
rightPanel.addActor(buttonsPanel);
rightPanel.add(menuScrollPane);
rightPanel.row();
rightPanel.add(buttonsPanel);
rightPanelStack.addActor(new Image(getColorTextureRegion(BACKGROUND_COLOR)));
rightPanelStack.addActor(rightPanel);
rightPanelStack.setBackground(new TextureRegionDrawable(getColorTextureRegion(BACKGROUND_COLOR)));
rightPanelStack.add(rightPanel).padTop(RIGHT_PANEL_PADDING_TOP);
container.addActor(rightPanelStack);
}
private void prepareButtons() {
Button closeButton = new Button(new TextureRegionDrawable(getScreenTextureRegion(EncyclopediaAssets.CLOSEBUTTON_UNPRESSED)), new TextureRegionDrawable(getScreenTextureRegion(EncyclopediaAssets.CLOSEBUTTON_PRESSED)));
closeButton.addListener(new ClickListener(){
closeButton.addListener(new ClickListener() {
@Override
public void clicked(InputEvent event, float x, float y) {
super.clicked(event, x, y);
......@@ -131,6 +136,7 @@ public class EncyclopediaScreen extends AbstractTablexiaScreen<Void> {
}
});
closeButton.setSize(CLOSE_BUTTON_WIDTH, CLOSE_BUTTON_WIDTH);
closeButton.setPosition(CLOSE_BUTTON_POSITION.x, CLOSE_BUTTON_POSITION.y);
Group closeButtonGroup = new Group();
closeButtonGroup.addActor(closeButton);
closeButtonGroup.setTouchable(Touchable.childrenOnly);
......@@ -156,20 +162,22 @@ public class EncyclopediaScreen extends AbstractTablexiaScreen<Void> {
List<Content> contentList = ContentParser.parseEncyclopediaPageContent(fileHandle.readString());
for (Content c : contentList) {
Actor a = c.render(this, CONTENT_RELATIVE_WIDTH * SCREEN_SIZE.x);
if (c instanceof Header) {
content.add(a).align(Align.left).padLeft(CLOSE_BUTTON_WIDTH).padBottom(15);
content.row();
} else {
content.add(a).fillX().expandX().padLeft(CLOSE_BUTTON_WIDTH).padRight(10).padBottom(10);
content.row();
}
// Actor a = c.render(this, CONTENT_RELATIVE_WIDTH * SCREEN_SIZE.x);
// if (c instanceof Header) {
// content.add(a).align(Align.left).padLeft(CLOSE_BUTTON_POSITION.x + CLOSE_BUTTON_WIDTH).padBottom(25).padTop(20);
// } else {
// Cell cell = content.add(a).fillX().expandX().padLeft(CLOSE_BUTTON_POSITION.x + CLOSE_BUTTON_WIDTH).padRight(10).padBottom(10);
// if (c instanceof Hint) {
// cell.padTop(25);
// }
// }
c.addToCell(content,this,CONTENT_RELATIVE_WIDTH * SCREEN_SIZE.x);
content.row();
}
getStage().setDebugUnderMouse(true);
}
public void playMusic(String music,TablexiaButton musicButton){
public void playMusic(String music, TablexiaButton musicButton) {
disposeMusic();
this.musicButton = musicButton;
Music m = getMusic(EncyclopediaAssets.SFX_PATH + music + MUSIC_EXTENSION);
......@@ -177,8 +185,8 @@ public class EncyclopediaScreen extends AbstractTablexiaScreen<Void> {
playedMusic = m;
}
public void disposeMusic(){
if(playedMusic!=null&&playedMusic.isPlaying()){
public void disposeMusic() {
if (playedMusic != null && playedMusic.isPlaying()) {
musicButton.setChecked(false);
playedMusic.dispose();
playedMusic = null;
......
package cz.nic.tablexia.screen.encyclopedia.content.model;
import com.badlogic.gdx.scenes.scene2d.Actor;
import com.badlogic.gdx.scenes.scene2d.ui.Cell;
import com.badlogic.gdx.scenes.scene2d.ui.Table;
import com.fasterxml.jackson.annotation.JsonTypeInfo;
import cz.nic.tablexia.screen.AbstractTablexiaScreen;
import cz.nic.tablexia.screen.encyclopedia.EncyclopediaScreen;
/**
* Created by Václav Tarantík on 3.9.15.
*/
@JsonTypeInfo(use=JsonTypeInfo.Id.CLASS, include=JsonTypeInfo.As.WRAPPER_OBJECT, property="@class")
public interface Content {
Actor render(AbstractTablexiaScreen screen,float parentContainerWidth);
public abstract class Content {
private AbstractTablexiaScreen screen;
abstract Actor render(AbstractTablexiaScreen screen,float parentContainerWidth);
public Cell addToCell(Table contentTable,AbstractTablexiaScreen screen, float parentContainerWidth){
return contentTable.add(render(screen,parentContainerWidth)).fillX().expandX().padLeft(EncyclopediaScreen.CLOSE_BUTTON_POSITION.x + EncyclopediaScreen.CLOSE_BUTTON_WIDTH).padRight(20).padBottom(10);
}
}
......@@ -3,8 +3,10 @@ package cz.nic.tablexia.screen.encyclopedia.content.model;
import com.badlogic.gdx.audio.Music;
import com.badlogic.gdx.scenes.scene2d.Actor;
import com.badlogic.gdx.scenes.scene2d.InputEvent;
import com.badlogic.gdx.scenes.scene2d.ui.Cell;
import com.badlogic.gdx.scenes.scene2d.ui.Table;
import com.badlogic.gdx.scenes.scene2d.utils.ClickListener;
import com.badlogic.gdx.utils.Align;
import cz.nic.tablexia.screen.AbstractTablexiaScreen;
import cz.nic.tablexia.screen.encyclopedia.EncyclopediaScreen;
......@@ -14,7 +16,7 @@ import cz.nic.tablexia.util.ui.TablexiaButton;
/**
* Created by Václav Tarantík on 23.9.15.
*/
public class Header implements Content {
public class Header extends Content {
private String soundResource;
private TextContent textContent;
......@@ -52,6 +54,11 @@ public class Header implements Content {
return table;
}
@Override
public Cell addToCell(Table contentTable, AbstractTablexiaScreen screen, float parentContainerWidth) {
return contentTable.add(render(screen, parentContainerWidth)).align(Align.left).padLeft(EncyclopediaScreen.CLOSE_BUTTON_POSITION.x + EncyclopediaScreen.CLOSE_BUTTON_WIDTH).padBottom(25).padTop(20);
}
public void setSoundResource(String soundResource) {
this.soundResource = soundResource;
}
......
......@@ -3,6 +3,7 @@ package cz.nic.tablexia.screen.encyclopedia.content.model;
import com.badlogic.gdx.graphics.Color;
import com.badlogic.gdx.graphics.g2d.NinePatch;
import com.badlogic.gdx.scenes.scene2d.Actor;
import com.badlogic.gdx.scenes.scene2d.ui.Cell;
import com.badlogic.gdx.scenes.scene2d.ui.Image;
import com.badlogic.gdx.scenes.scene2d.ui.Label;
import com.badlogic.gdx.scenes.scene2d.ui.Table;
......@@ -17,8 +18,9 @@ import cz.nic.tablexia.screen.encyclopedia.assets.EncyclopediaAssets;
* Created by Václav Tarantík on 3.9.15.
*/
public class Hint implements Content {
public class Hint extends Content {
private static final float IMAGE_RELATIVE_WIDTH_PORTION = 0.3f;
private static final float HINT_MAX_HEIGHT = 200;
private ImageContent imageContent;
private TextContent textContent;
......@@ -63,6 +65,10 @@ public class Hint implements Content {
Point imageOriginalSize = new Point(image.getDrawable().getMinWidth(),image.getDrawable().getMinHeight());
float desiredImageWidth = parentContainerWidth*IMAGE_RELATIVE_WIDTH_PORTION;
float desiredImageHeight = (desiredImageWidth/imageOriginalSize.x)*imageOriginalSize.y;
if(desiredImageHeight>HINT_MAX_HEIGHT){
desiredImageHeight = HINT_MAX_HEIGHT;
desiredImageWidth = (imageOriginalSize.x/imageOriginalSize.y)*desiredImageHeight;
}
image.setSize(desiredImageWidth, desiredImageHeight);
textsTable.add(title).align(Align.left).padLeft(10);
......@@ -73,4 +79,9 @@ public class Hint implements Content {
contentTable.add(textsTable).fillX().expandX();
return contentTable;
}
@Override
public Cell addToCell(Table contentTable, AbstractTablexiaScreen screen, float parentContainerWidth) {
return super.addToCell(contentTable, screen, parentContainerWidth).padTop(25);
}
}
package cz.nic.tablexia.screen.encyclopedia.content.model;
import com.badlogic.gdx.scenes.scene2d.Actor;
import com.badlogic.gdx.scenes.scene2d.ui.Cell;
import com.badlogic.gdx.scenes.scene2d.ui.Image;
import com.badlogic.gdx.scenes.scene2d.ui.Table;
import cz.nic.tablexia.screen.AbstractTablexiaScreen;
import cz.nic.tablexia.screen.encyclopedia.assets.EncyclopediaAssets;
......@@ -9,7 +11,8 @@ import cz.nic.tablexia.screen.encyclopedia.assets.EncyclopediaAssets;
/**
* Created by Václav Tarantík on 3.9.15.
*/
public class ImageContent implements Content {
public class ImageContent extends Content {
private static final float MAX_IMAGE_HEIGHT = 300;
private String image;
public ImageContent(){
......@@ -25,6 +28,19 @@ public class ImageContent implements Content {
return new Image(screen.getScreenTextureRegion(EncyclopediaAssets.GFX_PATH+image));
}
@Override
public Cell addToCell(Table contentTable, AbstractTablexiaScreen screen, float parentContainerWidth) {
Actor a = render(screen,parentContainerWidth);
float actorHeight = a.getHeight();
float actorWidth = a.getWidth();
float actorSizeRatio = actorWidth/actorHeight;
if(actorHeight>MAX_IMAGE_HEIGHT){
actorHeight = MAX_IMAGE_HEIGHT;
actorWidth = actorSizeRatio*actorHeight;
}
return super.addToCell(contentTable, screen, parentContainerWidth).width(actorWidth).height(actorHeight);
}
public String getImage() {
return image;
}
......
......@@ -10,7 +10,7 @@ import cz.nic.tablexia.screen.AbstractTablexiaScreen;
/**
* Created by Václav Tarantík on 3.9.15.
*/
public class TextContent implements Content {
public class TextContent extends Content {
private String text;
private boolean bold;
......
......@@ -2,13 +2,16 @@ package cz.nic.tablexia.screen.encyclopedia.menu;
import com.badlogic.gdx.graphics.Color;
import com.badlogic.gdx.graphics.g2d.BitmapFont;
import com.badlogic.gdx.graphics.g2d.NinePatch;
import com.badlogic.gdx.scenes.scene2d.Actor;
import com.badlogic.gdx.scenes.scene2d.InputEvent;
import com.badlogic.gdx.scenes.scene2d.ui.TextButton;
import com.badlogic.gdx.scenes.scene2d.ui.VerticalGroup;
import com.badlogic.gdx.scenes.scene2d.utils.ClickListener;
import com.badlogic.gdx.scenes.scene2d.utils.Drawable;
import com.badlogic.gdx.scenes.scene2d.utils.NinePatchDrawable;
import com.badlogic.gdx.scenes.scene2d.utils.TextureRegionDrawable;
import com.badlogic.gdx.utils.Align;
import com.badlogic.gdx.utils.Array;
import java.util.HashMap;
......@@ -23,8 +26,7 @@ import cz.nic.tablexia.screen.AbstractTablexiaScreen;
public class MenuWidget extends VerticalGroup {
Array<MenuItem> menuItemValues;
private Map<MenuItem,TextButton> menuItems;
private Drawable selectionDrawable;
private BitmapFont font;
private NinePatchDrawable selectionDrawable;
private AbstractTablexiaScreen screen;
private OnMenuItemClickListener onItemClickListener;
......@@ -32,15 +34,17 @@ public class MenuWidget extends VerticalGroup {
menuItemValues = new Array<MenuItem>(MenuItem.values());
menuItems = new HashMap<MenuItem, TextButton>();
this.screen = screen;
selectionDrawable = new TextureRegionDrawable(screen.getScreenTextureRegion(selectionDrawableResource));
selectionDrawable = new NinePatchDrawable(new NinePatch(screen.getScreenPatch(selectionDrawableResource)));
selectionDrawable.setMinWidth(size.x);
this.onItemClickListener = onItemClickListener;
initItems();
}
private void initItems(){
//// FIXME: 15.10.15 Smaller font for menu items so it fits with visible bookmark
for (final MenuItem item: menuItemValues){
final TextButton menuItem = new TextButton(screen.getText(item.getTitle()),createMenuItemStyle());
menuItem.getLabel().setAlignment(Align.left);
menuItem.removeListener(menuItem.getClickListener());
menuItem.addListener(new ClickListener() {
@Override
......
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