package roguelike.android; import Roguelike.AbstractApplicationChanger; import Roguelike.Global; import Roguelike.RoguelikeGame; import android.content.SharedPreferences; import com.badlogic.gdx.Application; import com.badlogic.gdx.Gdx; import com.badlogic.gdx.Graphics; import com.badlogic.gdx.Preferences; import com.badlogic.gdx.backends.android.AndroidPreferences; import java.util.ArrayList; import java.util.Collections; import java.util.Comparator; /** * Created by Philip on 20-Jan-16. */ public class AndroidApplicationChanger extends AbstractApplicationChanger { public AndroidApplicationChanger() { super( Gdx.app.getPreferences( "game-settings" ) ); } @Override public Application createApplication( RoguelikeGame game, Preferences pref ) { return null; } @Override public void processResources() {} @Override public void updateApplication( Preferences pref ) { int width = pref.getInteger( "resolutionX" ); int height = pref.getInteger( "resolutionY" ); Global.TargetResolution[0] = width; Global.TargetResolution[1] = height; Global.FPS = pref.getInteger( "fps" ); Global.AnimationSpeed = 1.0f / pref.getFloat( "animspeed" ); Global.MovementTypePathfind = pref.getBoolean( "pathfindMovement" ); Global.MusicVolume = pref.getFloat( "musicVolume" ); Global.AmbientVolume = pref.getFloat( "ambientVolume" ); Global.EffectVolume = pref.getFloat( "effectVolume" ); Global.updateVolume(); } @Override public String[] getSupportedDisplayModes() { Graphics.DisplayMode[] displayModes = Gdx.graphics.getDisplayModes(); ArrayList<String> modes = new ArrayList<String>(); for ( int i = 0; i < displayModes.length; i++ ) { String mode = displayModes[i].width + "x" + displayModes[i].height; boolean contained = false; for ( String m : modes ) { if ( m.equals( mode ) ) { contained = true; break; } } if ( !contained ) { modes.add( mode ); } } if (displayModes.length == 1) { String mode = displayModes[0].width/2 + "x" + displayModes[0].height/2; modes.add(mode); } modes.add( "480x360" ); modes.add( "800x600" ); Collections.sort( modes, new Comparator<String>() { @Override public int compare( String s1, String s2 ) { int split = s1.indexOf( "x" ); int rX1 = Integer.parseInt( s1.substring( 0, split ) ); split = s2.indexOf( "x" ); int rX2 = Integer.parseInt( s2.substring( 0, split ) ); if ( rX1 < rX2 ) return -1; else if ( rX1 > rX2 ) return 1; return 0; } } ); String[] m = new String[modes.size()]; return modes.toArray( m ); } @Override public void setToNativeResolution( Preferences prefs ) { } public void setDefaultPrefs( Preferences prefs ) { prefs.putBoolean( "pathfindMovement", false ); prefs.putFloat( "musicVolume", 1 ); prefs.putFloat( "ambientVolume", 1 ); prefs.putFloat( "effectVolume", 1 ); prefs.putInteger( "resolutionX", 480 ); prefs.putInteger( "resolutionY", 360 ); prefs.putInteger( "fps", 30 ); prefs.putFloat( "animspeed", 1 ); } }