rhythmbullet/core/src/zero1hd/polyjet/Polyjet.java

235 lines
9.5 KiB
Java
Raw Normal View History

2017-04-18 23:25:45 +00:00
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;
2017-04-18 23:25:45 +00:00
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
2017-04-18 23:25:45 +00:00
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));
2017-04-18 23:25:45 +00:00
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("sounds/metal_clang.ogg", Sound.class);
assetManager.load("sounds/MainMenuLoop1.ogg", Sound.class);
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);
2017-04-24 05:57:33 +00:00
assetManager.load("defaultCover.png", Texture.class);
2017-04-18 23:25:45 +00:00
}
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("small-font", default_fontGenerator.generateFont(new FreeTypeFontParameter() {
{
size = fontScale(0.04f);
}
}));
defaultSkin.add("default-font", default_fontGenerator.generateFont(new FreeTypeFontParameter() {
{
size = fontScale(0.06f);
}
}));
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);
2017-04-18 23:25:45 +00:00
}
}));
}
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");
2017-04-18 23:25:45 +00:00
defaultSkin.add("default", defaultTextButton);
// TextButtonStyle smallTextButton = new TextButtonStyle(defaultTextButton);
// smallTextButton.font = defaultSkin.getFont("small-font");
// defaultSkin.add("small", smallTextButton);
2017-04-18 23:25:45 +00:00
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);
2017-04-18 23:25:45 +00:00
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("small-font"), defaultSkin.getColor("default"), defaultSkin.getDrawable("cursor"), defaultSkin.getDrawable("selection"), defaultSkin.getDrawable("textfield"));
defaultSkin.add("default", defaultTextField);
WindowStyle defaultWindow = new WindowStyle(defaultSkin.getFont("small-font"), defaultSkin.getColor("default"), defaultSkin.getDrawable("default-window"));
defaultSkin.add("default", defaultWindow);
ListStyle defaultList = new ListStyle(defaultSkin.getFont("small-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("small-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.");
2017-04-18 23:25:45 +00:00
}
@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()));
2017-04-18 23:25:45 +00:00
}
}