244 lines
9.8 KiB
Java
Executable File
244 lines
9.8 KiB
Java
Executable File
package zero1hd.polyjet;
|
|
|
|
import com.badlogic.gdx.Application;
|
|
import com.badlogic.gdx.Game;
|
|
import com.badlogic.gdx.Gdx;
|
|
import com.badlogic.gdx.Preferences;
|
|
import com.badlogic.gdx.assets.AssetManager;
|
|
import com.badlogic.gdx.assets.loaders.ParticleEffectLoader;
|
|
import com.badlogic.gdx.assets.loaders.TextureAtlasLoader;
|
|
import com.badlogic.gdx.assets.loaders.TextureLoader;
|
|
import com.badlogic.gdx.assets.loaders.resolvers.InternalFileHandleResolver;
|
|
import com.badlogic.gdx.assets.loaders.resolvers.ResolutionFileResolver.Resolution;
|
|
import com.badlogic.gdx.audio.Sound;
|
|
import com.badlogic.gdx.graphics.Color;
|
|
import com.badlogic.gdx.graphics.Texture;
|
|
import com.badlogic.gdx.graphics.g2d.ParticleEffect;
|
|
import com.badlogic.gdx.graphics.g2d.TextureAtlas;
|
|
import com.badlogic.gdx.graphics.g2d.freetype.FreeTypeFontGenerator;
|
|
import com.badlogic.gdx.graphics.g2d.freetype.FreeTypeFontGenerator.FreeTypeFontParameter;
|
|
import com.badlogic.gdx.math.MathUtils;
|
|
import com.badlogic.gdx.scenes.scene2d.ui.Button.ButtonStyle;
|
|
import com.badlogic.gdx.scenes.scene2d.ui.CheckBox.CheckBoxStyle;
|
|
import com.badlogic.gdx.scenes.scene2d.ui.Label.LabelStyle;
|
|
import com.badlogic.gdx.scenes.scene2d.ui.List.ListStyle;
|
|
import com.badlogic.gdx.scenes.scene2d.ui.ScrollPane.ScrollPaneStyle;
|
|
import com.badlogic.gdx.scenes.scene2d.ui.SelectBox.SelectBoxStyle;
|
|
import com.badlogic.gdx.scenes.scene2d.ui.Skin;
|
|
import com.badlogic.gdx.scenes.scene2d.ui.Slider.SliderStyle;
|
|
import com.badlogic.gdx.scenes.scene2d.ui.TextButton.TextButtonStyle;
|
|
import com.badlogic.gdx.scenes.scene2d.ui.TextField.TextFieldStyle;
|
|
import com.badlogic.gdx.scenes.scene2d.ui.Window.WindowStyle;
|
|
|
|
import zero1hd.polyjet.screens.MainMenu;
|
|
import zero1hd.polyjet.screens.LoadingScreen;
|
|
|
|
public class Polyjet extends Game {
|
|
private boolean initComplete = false;
|
|
|
|
public static final int GAME_AREA_WIDTH = 64;
|
|
public static final int GAME_AREA_HEIGHT = 48;
|
|
public static final String VERSION = "(0.1)R1-PreAlpha";
|
|
|
|
public AssetManager assetManager = new AssetManager();
|
|
public Skin defaultSkin = new Skin();
|
|
public TextureAtlas buttons;
|
|
public FreeTypeFontGenerator default_fontGenerator;
|
|
public FreeTypeFontGenerator darktech_ldr_fontGenerator;
|
|
TextureAtlas skinAtlas;
|
|
public Preferences prefs;
|
|
|
|
@Override
|
|
public void create() {
|
|
Gdx.app.setLogLevel(Application.LOG_DEBUG);
|
|
prefs = Gdx.app.getPreferences("PolyJet_Preferences");
|
|
|
|
if (prefs.getBoolean("fullscreen", true)) {
|
|
Gdx.graphics.setFullscreenMode(Gdx.graphics.getDisplayMode());
|
|
} else {
|
|
Gdx.graphics.setWindowedMode(prefs.getInteger("screen-width"), prefs.getInteger("screen-height"));
|
|
}
|
|
|
|
Gdx.app.debug("Prelaunch Debug Info", "\ncurrent window size: "
|
|
+ Gdx.graphics.getWidth() + "x" + Gdx.graphics.getHeight() +"\n"
|
|
+ "Pixel density (PPI): " + Gdx.graphics.getDensity());
|
|
|
|
setScreen(new MainMenu(this));
|
|
|
|
Resolution[] resolution = {
|
|
new Resolution(800, 480, "800x480"),
|
|
new Resolution(1280, 720, "1280x720"),
|
|
new Resolution(1366, 768, "1366x768"),
|
|
new Resolution(1280, 800, "1280x800"),
|
|
new Resolution(1920, 1080, "1920x1080"),
|
|
new Resolution(1920, 1200, "1920x1200"),
|
|
new Resolution(2560, 1440, "2560x1440"),
|
|
new Resolution(3840, 2160, "3840x2160"),
|
|
};
|
|
|
|
RoundingResolutionHandler resolver = new RoundingResolutionHandler(new InternalFileHandleResolver(), resolution);
|
|
|
|
assetManager.setLoader(TextureAtlas.class, new TextureAtlasLoader(resolver));
|
|
assetManager.setLoader(Texture.class, new TextureLoader(resolver));
|
|
assetManager.setLoader(ParticleEffect.class, new ParticleEffectLoader(resolver));
|
|
|
|
default_fontGenerator = new FreeTypeFontGenerator(Gdx.files.internal("fonts/Gasalt-Regular.ttf"));
|
|
darktech_ldr_fontGenerator = new FreeTypeFontGenerator(Gdx.files.internal("fonts/darktech_ldr.ttf"));
|
|
|
|
|
|
}
|
|
|
|
@Override
|
|
public void render() {
|
|
super.render();
|
|
}
|
|
|
|
@Override
|
|
public void dispose() {
|
|
if (skinAtlas != null) {
|
|
skinAtlas.dispose();
|
|
defaultSkin.dispose();
|
|
default_fontGenerator.dispose();
|
|
darktech_ldr_fontGenerator.dispose();
|
|
assetManager.dispose();
|
|
}
|
|
super.dispose();
|
|
}
|
|
|
|
public void queueAssets() {
|
|
assetManager.load("uiskin.atlas", TextureAtlas.class);
|
|
assetManager.load("Tech-Circle1.png", Texture.class);
|
|
assetManager.load("polyjet-standard.png", Texture.class);
|
|
assetManager.load("standard_thrust.p", ParticleEffect.class);
|
|
assetManager.load("keyboard.atlas", TextureAtlas.class);
|
|
assetManager.load("cybercircle3B.png", Texture.class);
|
|
assetManager.load("PolyjetTitle.png", Texture.class);
|
|
assetManager.load("cybercircle1.png", Texture.class);
|
|
assetManager.load("defaultCover.png", Texture.class);
|
|
assetManager.load("teleport-cloak.p", ParticleEffect.class);
|
|
assetManager.load("sounds/SFX_open.ogg", Sound.class);
|
|
assetManager.load("sounds/SFX_close.ogg", Sound.class);
|
|
}
|
|
public void generateFonts() {
|
|
initComplete = true;
|
|
defaultSkin = new Skin();
|
|
Gdx.app.debug("Prelaunch Debug Info", "Generating fonts...");
|
|
|
|
skinAtlas = assetManager.get("uiskin.atlas", TextureAtlas.class);
|
|
defaultSkin.addRegions(skinAtlas);
|
|
|
|
defaultSkin.add("window-font", default_fontGenerator.generateFont(new FreeTypeFontParameter() {
|
|
{
|
|
size = 18;
|
|
}
|
|
}));
|
|
|
|
defaultSkin.add("sub-font", default_fontGenerator.generateFont(new FreeTypeFontParameter() {
|
|
{
|
|
size = fontScale(0.04f);
|
|
}
|
|
}));
|
|
|
|
defaultSkin.add("default-font", default_fontGenerator.generateFont(new FreeTypeFontParameter() {
|
|
{
|
|
size = fontScale(0.07f);
|
|
}
|
|
}));
|
|
|
|
|
|
defaultSkin.add("large-font", default_fontGenerator.generateFont(new FreeTypeFontParameter() {
|
|
{
|
|
size = fontScale(0.08f);
|
|
}
|
|
}));
|
|
|
|
defaultSkin.add("special-font", darktech_ldr_fontGenerator.generateFont(new FreeTypeFontParameter() {
|
|
{
|
|
size = fontScale(0.075f);
|
|
}
|
|
}));
|
|
|
|
}
|
|
|
|
public void defineSkinStyles() {
|
|
defaultSkin.add("default", Color.BLACK);
|
|
defaultSkin.add("inverse", Color.WHITE);
|
|
|
|
TextButtonStyle defaultTextButton = new TextButtonStyle();
|
|
defaultTextButton.up = defaultSkin.getDrawable("default-round");
|
|
defaultTextButton.down = defaultSkin.getDrawable("default-round-down");
|
|
defaultTextButton.font = defaultSkin.getFont("default-font");
|
|
defaultTextButton.fontColor = defaultSkin.getColor("default");
|
|
defaultTextButton.disabled = defaultSkin.getDrawable("default-round-disabled");
|
|
defaultSkin.add("default", defaultTextButton);
|
|
|
|
TextButtonStyle textButtonLeft = new TextButtonStyle();
|
|
textButtonLeft.up = defaultSkin.getDrawable("left-button");
|
|
textButtonLeft.down = defaultSkin.getDrawable("left-button-down");
|
|
textButtonLeft.font = defaultSkin.getFont("default-font");
|
|
textButtonLeft.fontColor = defaultSkin.getColor("default");
|
|
defaultSkin.add("left", textButtonLeft);
|
|
|
|
SliderStyle defaultSlider = new SliderStyle(defaultSkin.getDrawable("default-slider"), defaultSkin.getDrawable("default-slider-knob"));
|
|
defaultSkin.add("default-horizontal", defaultSlider);
|
|
|
|
ButtonStyle infoButton = new ButtonStyle();
|
|
infoButton.up = defaultSkin.getDrawable("holo-pane");
|
|
infoButton.down = defaultSkin.getDrawable("holo-pane-down");
|
|
defaultSkin.add("info-button", infoButton);
|
|
|
|
LabelStyle defaultLabel = new LabelStyle();
|
|
defaultLabel.font = defaultSkin.getFont("default-font");
|
|
defaultLabel.fontColor = defaultSkin.getColor("default");
|
|
defaultSkin.add("default", defaultLabel);
|
|
|
|
TextFieldStyle defaultTextField = new TextFieldStyle(defaultSkin.getFont("sub-font"), defaultSkin.getColor("default"), defaultSkin.getDrawable("cursor"), defaultSkin.getDrawable("selection"), defaultSkin.getDrawable("textfield"));
|
|
defaultSkin.add("default", defaultTextField);
|
|
|
|
WindowStyle defaultWindow = new WindowStyle(defaultSkin.getFont("window-font"), defaultSkin.getColor("default"), defaultSkin.getDrawable("default-window"));
|
|
defaultSkin.add("default", defaultWindow);
|
|
|
|
WindowStyle tintedWindow = new WindowStyle(defaultWindow);
|
|
tintedWindow.titleFontColor = defaultSkin.getColor("inverse");
|
|
tintedWindow.background = defaultSkin.getDrawable("tinted-window");
|
|
defaultSkin.add("tinted", tintedWindow);
|
|
|
|
ListStyle defaultList = new ListStyle(defaultSkin.getFont("sub-font"), defaultSkin.getColor("inverse"), defaultSkin.getColor("default"), defaultSkin.getDrawable("selection"));
|
|
defaultSkin.add("default", defaultList);
|
|
|
|
ScrollPaneStyle defaultScrollPane = new ScrollPaneStyle();
|
|
defaultScrollPane.vScroll = defaultSkin.getDrawable("default-scroll");
|
|
defaultScrollPane.hScrollKnob = defaultSkin.getDrawable("default-round-large");
|
|
defaultScrollPane.hScroll = defaultSkin.getDrawable("default-scroll");
|
|
defaultScrollPane.vScrollKnob = defaultSkin.getDrawable("default-round-large");
|
|
defaultSkin.add("default", defaultScrollPane);
|
|
|
|
CheckBoxStyle defaultCheckBox = new CheckBoxStyle(defaultSkin.getDrawable("check-off"), defaultSkin.getDrawable("check-on"), defaultSkin.getFont("window-font"), defaultSkin.getColor("default"));
|
|
defaultSkin.add("default", defaultCheckBox);
|
|
|
|
SelectBoxStyle defaultSelectBox = new SelectBoxStyle(defaultSkin.getFont("default-font"), defaultSkin.getColor("default"), defaultSkin.getDrawable("default-select"), defaultScrollPane, defaultList);
|
|
defaultSkin.add("default", defaultSelectBox);
|
|
|
|
Gdx.app.debug("Prelaunch Debug Info", "UI Skin has been defined.");
|
|
}
|
|
|
|
@Override
|
|
public void resize(int width, int height) {
|
|
if (initComplete) {
|
|
defaultSkin.dispose();
|
|
assetManager.clear();
|
|
prefs.putInteger("screen-width", width);
|
|
prefs.putInteger("screen-height", height);
|
|
prefs.flush();
|
|
}
|
|
setScreen(new LoadingScreen(this, getScreen(), true, !initComplete));
|
|
super.resize(width, height);
|
|
}
|
|
|
|
|
|
public int fontScale(float fontSize) {
|
|
Gdx.app.debug("Font pixel size", MathUtils.round(Gdx.graphics.getDensity()*(fontSize*Gdx.graphics.getHeight())) + "px");
|
|
return MathUtils.round(Gdx.graphics.getDensity()*(fontSize*Gdx.graphics.getHeight()));
|
|
}
|
|
}
|