The way the interfaces are organized is that each will have a UI component that expresses the [Actors](https://libgdx.badlogicgames.com/nightlies/docs/api/com/badlogic/gdx/scenes/scene2d/Actor.html) that will appear on screen. It will also have a table that is used for the stylizing the display and interacting with the display.
### Package Structure
The package title defines the purpose, usually abbreviated and it is stored within the _GameClient.src.view.PACKAGE_NAME_
## Overlaying Screen Class
Overlaying Screen is an abstract class used to created screens that pop up on top the game to display some information. These screens are colorized based on the color scheme for the crew that the payer is in.
1.**Container**
The overlaying screen contains a LibGDX Table that holds an overlaying table, or multiples overlaying tables. To add an overlaying table to the container use:
Each _OverlayingScreen_ should also override the _getMyWidth_ and _getMyHeight_ method. These methods should return _WIDTH_ and _HEIGHT_ respectively.
```java
@Override
public float getMyWidth()
{
return WIDTH;
}
@Override
public float getMyHeight()
{
return HEIGHT;
}
```
1.**Positioning**
By default, Overlaying Screens are centered on the y-axis and are ten per lowered from the top on the x-axis. Positioning is calculated by calculating ratios of size of the application and the size of the Overlaying Screen.
To add and Overlaying Screen to the _ScreenMap_ an instance variable of the of the desired Overlaying Screen must be made and instantiated.
```java
OverlayingScreen overlayingScreen;
```
Then overlaying screen must be instantiated and added to the _ScreenMap's_ stage in the _addUIs_ method.
```java
publicvoidaddUIs(Crewcrew)
{
overlayingScreen=newOverlayingScreen();
}
```
Thenisitmustbeaddedtothestageofthe_ScreenMap_.
##OverlayingTableClass
1.**ScrollPane**
TheOverlayingTableClassextendsa[ScrollPane](https://libgdx.badlogicgames.com/nightlies/docs/api/com/badlogic/gdx/scenes/scene2d/ui/ScrollPane.html). The reason for this is because we want to have to option to allow scrolling when displaying information. Scroll-ability is determined when the _OverlayingScreenTable_ is instantiated.
```java
overlayingScreenTable = new OverlayingScreenTable(BOOLEAN);
```
**Table**
The table, which is a LibGDX [Table](https://libgdx.badlogicgames.com/nightlies/docs/api/com/badlogic/gdx/scenes/scene2d/ui/Table.html), is where all the components for the Overlaying Screen Table is added.
2. **Sizing and Positioning**
The size of a Overlaying Screen Table is determine when it gets added to the container of an Overlaying Screen using the width() and height() methods.
Label l = new Label("text", SkinPicker.getSkinPicker().getCrewSkin());
```
_Button_
A button is a clickable element which can be used to do actions such as invoking a method, toggling a boolean, or altering a field.
```java
Button button = new Button();
```
_*Note_
There are MANY other components you can add to this, but you could probably sort most interfaces out with just label and buttons. For a full list use [Full List](https://libgdx.badlogicgames.com/nightlies/docs/api/com/badlogic/gdx/scenes/scene2d/ui/package-summary.html)
**Formatting and Making Your Interface Beautiful**
_Skin_
A skin is the look and feel of your interface. Our system uses a standard one for these and to access it we use the singleton _SkinPicker_ to grab a skin based off of our crew colors.
_Positioning_
Setting a position of a component isn’t just going to be hard-coding pixel positions, we will be using built in functions to define them.
There are a few functions that return the element so we can use multiple styles in one line of code.
It is advised to create a class that implements _ClickListener_ for the button you wish you add, so you can pass that in as a _ClickListener_.
## External Information
Outside information was taken in from [LibGDX Documentation](https://libgdx.badlogicgames.com/nightlies/docs/api/com/badlogic/gdx/scenes/scene2d/package-summary.html)