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

242 lines
9.6 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.CheckBox.CheckBoxStyle;
import com.badlogic.gdx.scenes.scene2d.ui.ImageButton.ImageButtonStyle;
2017-04-18 23:25:45 +00:00
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.ImageButton;
2017-04-18 23:25:45 +00:00
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.GameScreen;
import zero1hd.polyjet.screens.MainMenu;
import zero1hd.polyjet.screens.PreGameScreen;
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;
//screens
public MainMenu mainMenuScreen;
public PreGameScreen preGameScreen;
public GameScreen gameScreen;
@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(mainMenuScreen = 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("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);
}
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.08f);
}
}));
}
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");
defaultSkin.add("default", defaultTextButton);
TextButtonStyle smallTextButton = new TextButtonStyle(defaultTextButton);
smallTextButton.font = defaultSkin.getFont("small-font");
defaultSkin.add("small", smallTextButton);
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);
ImageButtonStyle infoButton = new ImageButtonStyle();
infoButton.up = defaultSkin.getDrawable("holo-pane");
infoButton.down = defaultSkin.getDrawable("holo-pane-down");
defaultSkin.add("info-pane", 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);
}
@Override
public void resize(int width, int height) {
if (initComplete) {
defaultSkin.dispose();
gameScreen = null;
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()));
}
}