Merge branch 'master' of https://github.com/Anuken/Mindustry into 4.0
This commit is contained in:
@@ -10,6 +10,7 @@ repositories {
|
|||||||
dependencies {
|
dependencies {
|
||||||
implementation 'com.android.support:support-v4:22.1.1'
|
implementation 'com.android.support:support-v4:22.1.1'
|
||||||
implementation 'org.sufficientlysecure:donations:2.5'
|
implementation 'org.sufficientlysecure:donations:2.5'
|
||||||
|
implementation 'com.google.android.gms:play-services-auth:11.8.0'
|
||||||
}
|
}
|
||||||
|
|
||||||
task deploy(type: Copy){
|
task deploy(type: Copy){
|
||||||
@@ -22,7 +23,7 @@ task deploy(type: Copy){
|
|||||||
|
|
||||||
android {
|
android {
|
||||||
buildToolsVersion '26.0.2'
|
buildToolsVersion '26.0.2'
|
||||||
compileSdkVersion 27
|
compileSdkVersion 26
|
||||||
sourceSets {
|
sourceSets {
|
||||||
main {
|
main {
|
||||||
manifest.srcFile 'AndroidManifest.xml'
|
manifest.srcFile 'AndroidManifest.xml'
|
||||||
@@ -58,7 +59,7 @@ android {
|
|||||||
}
|
}
|
||||||
|
|
||||||
applicationId "io.anuke.mindustry"
|
applicationId "io.anuke.mindustry"
|
||||||
minSdkVersion 9
|
minSdkVersion 14
|
||||||
targetSdkVersion 27
|
targetSdkVersion 27
|
||||||
versionCode code
|
versionCode code
|
||||||
versionName versionNameResult
|
versionName versionNameResult
|
||||||
|
|||||||
@@ -8,9 +8,14 @@ import android.os.Build;
|
|||||||
import android.os.Bundle;
|
import android.os.Bundle;
|
||||||
import android.provider.Settings.Secure;
|
import android.provider.Settings.Secure;
|
||||||
import android.telephony.TelephonyManager;
|
import android.telephony.TelephonyManager;
|
||||||
|
import android.util.Log;
|
||||||
import com.badlogic.gdx.backends.android.AndroidApplication;
|
import com.badlogic.gdx.backends.android.AndroidApplication;
|
||||||
import com.badlogic.gdx.backends.android.AndroidApplicationConfiguration;
|
import com.badlogic.gdx.backends.android.AndroidApplicationConfiguration;
|
||||||
import com.badlogic.gdx.utils.Base64Coder;
|
import com.badlogic.gdx.utils.Base64Coder;
|
||||||
|
import com.google.android.gms.common.GoogleApiAvailability;
|
||||||
|
import com.google.android.gms.common.GooglePlayServicesNotAvailableException;
|
||||||
|
import com.google.android.gms.common.GooglePlayServicesRepairableException;
|
||||||
|
import com.google.android.gms.security.ProviderInstaller;
|
||||||
import io.anuke.kryonet.DefaultThreadImpl;
|
import io.anuke.kryonet.DefaultThreadImpl;
|
||||||
import io.anuke.kryonet.KryoClient;
|
import io.anuke.kryonet.KryoClient;
|
||||||
import io.anuke.kryonet.KryoServer;
|
import io.anuke.kryonet.KryoServer;
|
||||||
@@ -119,9 +124,8 @@ public class AndroidLauncher extends AndroidApplication{
|
|||||||
|
|
||||||
return data;
|
return data;
|
||||||
}catch (Exception e){
|
}catch (Exception e){
|
||||||
Settings.defaults("uuid", "");
|
|
||||||
|
|
||||||
String uuid = Settings.getString("uuid");
|
String uuid = Settings.getString("uuid", "");
|
||||||
if(uuid.isEmpty()){
|
if(uuid.isEmpty()){
|
||||||
byte[] result = new byte[8];
|
byte[] result = new byte[8];
|
||||||
new Random().nextBytes(result);
|
new Random().nextBytes(result);
|
||||||
@@ -135,6 +139,15 @@ public class AndroidLauncher extends AndroidApplication{
|
|||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
|
try {
|
||||||
|
ProviderInstaller.installIfNeeded(this);
|
||||||
|
} catch (GooglePlayServicesRepairableException e) {
|
||||||
|
GoogleApiAvailability apiAvailability = GoogleApiAvailability.getInstance();
|
||||||
|
apiAvailability.getErrorDialog(this, e.getConnectionStatusCode(), 0).show();
|
||||||
|
} catch (GooglePlayServicesNotAvailableException e) {
|
||||||
|
Log.e("SecurityException", "Google Play Services not available.");
|
||||||
|
}
|
||||||
|
|
||||||
if(doubleScaleTablets && isTablet(this.getContext())){
|
if(doubleScaleTablets && isTablet(this.getContext())){
|
||||||
Unit.dp.addition = 0.5f;
|
Unit.dp.addition = 0.5f;
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -26,7 +26,7 @@ public class TextFieldDialogListener extends ClickListener{
|
|||||||
}
|
}
|
||||||
|
|
||||||
public static void add(TextField field){
|
public static void add(TextField field){
|
||||||
add(field, 0, 15);
|
add(field, 0, 16);
|
||||||
}
|
}
|
||||||
|
|
||||||
//type - 0 is text, 1 is numbers, 2 is decimals
|
//type - 0 is text, 1 is numbers, 2 is decimals
|
||||||
|
|||||||
@@ -7,6 +7,7 @@ buildscript {
|
|||||||
jcenter()
|
jcenter()
|
||||||
}
|
}
|
||||||
dependencies {
|
dependencies {
|
||||||
|
classpath 'com.mobidevelop.robovm:robovm-gradle-plugin:2.3.0'
|
||||||
classpath 'de.richsource.gradle.plugins:gwt-gradle-plugin:0.6'
|
classpath 'de.richsource.gradle.plugins:gwt-gradle-plugin:0.6'
|
||||||
classpath 'com.android.tools.build:gradle:3.0.1'
|
classpath 'com.android.tools.build:gradle:3.0.1'
|
||||||
classpath "com.badlogicgames.gdx:gdx-tools:1.9.8"
|
classpath "com.badlogicgames.gdx:gdx-tools:1.9.8"
|
||||||
@@ -24,6 +25,7 @@ allprojects {
|
|||||||
versionType = 'pre-alpha'
|
versionType = 'pre-alpha'
|
||||||
appName = 'Mindustry'
|
appName = 'Mindustry'
|
||||||
gdxVersion = '1.9.8'
|
gdxVersion = '1.9.8'
|
||||||
|
roboVMVersion = '2.3.0'
|
||||||
aiVersion = '1.8.1'
|
aiVersion = '1.8.1'
|
||||||
uCoreVersion = 'dd5eb72'
|
uCoreVersion = 'dd5eb72'
|
||||||
|
|
||||||
@@ -103,6 +105,27 @@ project(":android") {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
project(":ios") {
|
||||||
|
apply plugin: "java"
|
||||||
|
apply plugin: "robovm"
|
||||||
|
|
||||||
|
|
||||||
|
dependencies {
|
||||||
|
compile project(":core")
|
||||||
|
implementation project(":kryonet")
|
||||||
|
|
||||||
|
compile "com.mobidevelop.robovm:robovm-rt:$roboVMVersion"
|
||||||
|
compile "com.mobidevelop.robovm:robovm-cocoatouch:$roboVMVersion"
|
||||||
|
compile "com.badlogicgames.gdx:gdx-backend-robovm:$gdxVersion"
|
||||||
|
compile "com.badlogicgames.gdx:gdx-platform:$gdxVersion:natives-ios"
|
||||||
|
}
|
||||||
|
|
||||||
|
robovm {
|
||||||
|
iosSignIdentity = "a"
|
||||||
|
iosProvisioningProfile = ""
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
project(":core") {
|
project(":core") {
|
||||||
apply plugin: "java"
|
apply plugin: "java"
|
||||||
|
|
||||||
|
|||||||
@@ -1,4 +1,4 @@
|
|||||||
text.about=Created by [ROYAL]Anuken[] - [SKY]anukendev@gmail.com[]\nOriginally an entry in the [orange]GDL[] Metal Monstrosity Jam.\n\nCredits:\n- SFX made with [YELLOW]bfxr[]\n- Music made by [GREEN]RoccoW[] / found on [lime]FreeMusicArchive.org[]\n\nSpecial thanks to:\n- [coral]MitchellFJN[]: extensive playtesting and feedback\n- [sky]Luxray5474[]: wiki work, code contributions\n- [lime]Epowerj[]: code build system, icon\n- All the beta testers on itch.io and Google Play\n
|
text.about=Created by [ROYAL]Anuken[] - [SKY]anukendev@gmail.com[]\nOriginally an entry in the [orange]GDL[] Metal Monstrosity Jam.\n\nCredits:\n- SFX made with [YELLOW]bfxr[]\n- Music made by [GREEN]a drop a day[]\n\nSpecial thanks to:\n- [coral]MitchellFJN[]: extensive playtesting and feedback\n- [sky]Luxray5474[]: wiki work, code contributions\n- [lime]Epowerj[]: code build system, icon\n- All the beta testers on itch.io and Google Play\n
|
||||||
text.credits=Credits
|
text.credits=Credits
|
||||||
text.discord=Join the mindustry discord!
|
text.discord=Join the mindustry discord!
|
||||||
text.changes=[SCARLET]Attention!\n[]Some important game mechanics have been changed.\n\n- [accent]Teleporters[] now use power.\n- [accent]Smelteries[] and [accent]crucibles[] now have a maximum item capacity.\n- [accent]Crucibles[] now require coal as fuel.
|
text.changes=[SCARLET]Attention!\n[]Some important game mechanics have been changed.\n\n- [accent]Teleporters[] now use power.\n- [accent]Smelteries[] and [accent]crucibles[] now have a maximum item capacity.\n- [accent]Crucibles[] now require coal as fuel.
|
||||||
@@ -133,7 +133,8 @@ text.back=Back
|
|||||||
text.quit.confirm=Are you sure you want to quit?
|
text.quit.confirm=Are you sure you want to quit?
|
||||||
text.changelog.title=Changelog
|
text.changelog.title=Changelog
|
||||||
text.changelog.loading=Getting changelog...
|
text.changelog.loading=Getting changelog...
|
||||||
text.changelog.error.android=[orange]Note that the changelog does not work on Android 4.4 and below!\nThis is due to an internal Android bug.
|
text.changelog.error.android=[orange]Note that the changelog sometimes does not work on Android 4.4 and below!\nThis is due to an internal Android bug.
|
||||||
|
text.changelog.error.ios=[orange]The changelog is currently not supported in iOS.
|
||||||
text.changelog.error=[scarlet]Error getting changelog!\nCheck your internet connection.
|
text.changelog.error=[scarlet]Error getting changelog!\nCheck your internet connection.
|
||||||
text.changelog.current=[yellow][[Current version]
|
text.changelog.current=[yellow][[Current version]
|
||||||
text.changelog.latest=[orange][[Latest version]
|
text.changelog.latest=[orange][[Latest version]
|
||||||
|
|||||||
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
@@ -27,9 +27,12 @@ import java.util.Locale;
|
|||||||
|
|
||||||
public class Vars{
|
public class Vars{
|
||||||
|
|
||||||
public static final boolean testAndroid = false;
|
public static final boolean testMobile = false;
|
||||||
//shorthand for whether or not this is running on android
|
//shorthand for whether or not this is running on android
|
||||||
public static final boolean android = (Gdx.app.getType() == ApplicationType.Android) || testAndroid;
|
public static final boolean mobile = (Gdx.app.getType() == ApplicationType.Android) ||
|
||||||
|
Gdx.app.getType() == ApplicationType.iOS || testMobile;
|
||||||
|
public static final boolean ios = Gdx.app.getType() == ApplicationType.iOS;
|
||||||
|
public static final boolean android = Gdx.app.getType() == ApplicationType.Android;
|
||||||
//shorthand for whether or not this is running on GWT
|
//shorthand for whether or not this is running on GWT
|
||||||
public static final boolean gwt = (Gdx.app.getType() == ApplicationType.WebGL);
|
public static final boolean gwt = (Gdx.app.getType() == ApplicationType.WebGL);
|
||||||
//whether to send block state change events to players
|
//whether to send block state change events to players
|
||||||
@@ -39,7 +42,7 @@ public class Vars{
|
|||||||
//respawn time in frames
|
//respawn time in frames
|
||||||
public static final float respawnduration = 60*4;
|
public static final float respawnduration = 60*4;
|
||||||
//time between waves in frames (on normal mode)
|
//time between waves in frames (on normal mode)
|
||||||
public static final float wavespace = 60*60*(android ? 1 : 1);
|
public static final float wavespace = 60*60*(mobile ? 1 : 1);
|
||||||
//waves can last no longer than 3 minutes, otherwise the next one spawns
|
//waves can last no longer than 3 minutes, otherwise the next one spawns
|
||||||
public static final float maxwavespace = 60*60*4f;
|
public static final float maxwavespace = 60*60*4f;
|
||||||
//advance time the pathfinding starts at
|
//advance time the pathfinding starts at
|
||||||
|
|||||||
@@ -60,7 +60,7 @@ public class Control extends Module{
|
|||||||
|
|
||||||
Gdx.input.setCatchBackKey(true);
|
Gdx.input.setCatchBackKey(true);
|
||||||
|
|
||||||
if(android){
|
if(mobile){
|
||||||
input = new AndroidInput();
|
input = new AndroidInput();
|
||||||
}else{
|
}else{
|
||||||
input = new DesktopInput();
|
input = new DesktopInput();
|
||||||
@@ -98,19 +98,21 @@ public class Control extends Module{
|
|||||||
item.init();
|
item.init();
|
||||||
}
|
}
|
||||||
|
|
||||||
Sounds.load("shoot.ogg", "place.ogg", "explosion.ogg", "enemyshoot.ogg",
|
Sounds.load("shoot.mp3", "place.mp3", "explosion.mp3", "enemyshoot.mp3",
|
||||||
"corexplode.ogg", "break.ogg", "spawn.ogg", "flame.ogg", "die.ogg",
|
"corexplode.mp3", "break.mp3", "spawn.mp3", "flame.mp3", "die.mp3",
|
||||||
"respawn.ogg", "purchase.ogg", "flame2.ogg", "bigshot.ogg", "laser.ogg", "lasershot.ogg",
|
"respawn.mp3", "purchase.mp3", "flame2.mp3", "bigshot.mp3", "laser.mp3", "lasershot.mp3",
|
||||||
"ping.ogg", "tesla.ogg", "waveend.ogg", "railgun.ogg", "blast.ogg", "bang2.ogg");
|
"ping.mp3", "tesla.mp3", "waveend.mp3", "railgun.mp3", "blast.mp3", "bang2.mp3");
|
||||||
|
|
||||||
Sounds.setFalloff(9000f);
|
Sounds.setFalloff(9000f);
|
||||||
|
|
||||||
|
Musics.load("1.mp3", "2.mp3", "3.mp3", "4.mp3", "5.mp3", "6.mp3");
|
||||||
|
|
||||||
DefaultKeybinds.load();
|
DefaultKeybinds.load();
|
||||||
|
|
||||||
Settings.defaultList(
|
Settings.defaultList(
|
||||||
"ip", "localhost",
|
"ip", "localhost",
|
||||||
"port", port+"",
|
"port", port+"",
|
||||||
"name", android || gwt ? "player" : UCore.getProperty("user.name"),
|
"name", mobile || gwt ? "player" : UCore.getProperty("user.name"),
|
||||||
"servers", "",
|
"servers", "",
|
||||||
"color", Color.rgba8888(playerColors[8]),
|
"color", Color.rgba8888(playerColors[8]),
|
||||||
"lastVersion", "3.2",
|
"lastVersion", "3.2",
|
||||||
@@ -121,7 +123,7 @@ public class Control extends Module{
|
|||||||
|
|
||||||
player = new Player();
|
player = new Player();
|
||||||
player.name = Settings.getString("name");
|
player.name = Settings.getString("name");
|
||||||
player.mech = android ? Mechs.standardShip : Mechs.standard;
|
player.mech = mobile ? Mechs.standardShip : Mechs.standard;
|
||||||
player.color.set(Settings.getInt("color"));
|
player.color.set(Settings.getInt("color"));
|
||||||
player.isLocal = true;
|
player.isLocal = true;
|
||||||
|
|
||||||
|
|||||||
@@ -68,7 +68,7 @@ public class NetClient extends Module {
|
|||||||
|
|
||||||
ConnectPacket c = new ConnectPacket();
|
ConnectPacket c = new ConnectPacket();
|
||||||
c.name = player.name;
|
c.name = player.name;
|
||||||
c.android = android;
|
c.android = mobile;
|
||||||
c.color = Color.rgba8888(player.color);
|
c.color = Color.rgba8888(player.color);
|
||||||
c.uuid = Platform.instance.getUUID();
|
c.uuid = Platform.instance.getUUID();
|
||||||
|
|
||||||
|
|||||||
@@ -170,7 +170,7 @@ public class NetServer extends Module{
|
|||||||
if(!Timers.get("fastshoot-" + id + "-" + weapon.id, wtrc)){
|
if(!Timers.get("fastshoot-" + id + "-" + weapon.id, wtrc)){
|
||||||
info.fastShots.getAndIncrement(weapon.id, 0, 1);
|
info.fastShots.getAndIncrement(weapon.id, 0, 1);
|
||||||
|
|
||||||
if(info.fastShots.get(weapon.id, 0) > (int)(wtrc / (weapon.getReload() / 2f)) + 6){
|
if(info.fastShots.get(weapon.id, 0) > (int)(wtrc / (weapon.getReload() / 2f)) + 8){
|
||||||
kick(id, KickReason.kick);
|
kick(id, KickReason.kick);
|
||||||
}
|
}
|
||||||
}else{
|
}else{
|
||||||
|
|||||||
@@ -173,7 +173,7 @@ public class Renderer extends RendererModule{
|
|||||||
|
|
||||||
float deltax = camera.position.x - prex, deltay = camera.position.y - prey;
|
float deltax = camera.position.x - prex, deltay = camera.position.y - prey;
|
||||||
|
|
||||||
if(android){
|
if(mobile){
|
||||||
player.x += camera.position.x - prevx;
|
player.x += camera.position.x - prevx;
|
||||||
player.y += camera.position.y - prevy;
|
player.y += camera.position.y - prevy;
|
||||||
}
|
}
|
||||||
@@ -405,7 +405,7 @@ public class Renderer extends RendererModule{
|
|||||||
int tilex = control.input().getBlockX();
|
int tilex = control.input().getBlockX();
|
||||||
int tiley = control.input().getBlockY();
|
int tiley = control.input().getBlockY();
|
||||||
|
|
||||||
if(android){
|
if(mobile){
|
||||||
Vector2 vec = Graphics.world(Gdx.input.getX(0), Gdx.input.getY(0));
|
Vector2 vec = Graphics.world(Gdx.input.getX(0), Gdx.input.getY(0));
|
||||||
tilex = Mathf.scl2(vec.x, tilesize);
|
tilex = Mathf.scl2(vec.x, tilesize);
|
||||||
tiley = Mathf.scl2(vec.y, tilesize);
|
tiley = Mathf.scl2(vec.y, tilesize);
|
||||||
@@ -414,7 +414,7 @@ public class Renderer extends RendererModule{
|
|||||||
InputHandler input = control.input();
|
InputHandler input = control.input();
|
||||||
|
|
||||||
//draw placement box
|
//draw placement box
|
||||||
if((input.recipe != null && state.inventory.hasItems(input.recipe.requirements) && (!ui.hasMouse() || android)
|
if((input.recipe != null && state.inventory.hasItems(input.recipe.requirements) && (!ui.hasMouse() || mobile)
|
||||||
&& control.input().drawPlace())){
|
&& control.input().drawPlace())){
|
||||||
|
|
||||||
input.placeMode.draw(control.input().getBlockX(), control.input().getBlockY(),
|
input.placeMode.draw(control.input().getBlockX(), control.input().getBlockY(),
|
||||||
@@ -425,7 +425,7 @@ public class Renderer extends RendererModule{
|
|||||||
|
|
||||||
}else if(input.breakMode.delete && control.input().drawPlace()
|
}else if(input.breakMode.delete && control.input().drawPlace()
|
||||||
&& (input.recipe == null || !state.inventory.hasItems(input.recipe.requirements))
|
&& (input.recipe == null || !state.inventory.hasItems(input.recipe.requirements))
|
||||||
&& (input.placeMode.delete || input.breakMode.both || !android)){
|
&& (input.placeMode.delete || input.breakMode.both || !mobile)){
|
||||||
|
|
||||||
if(input.breakMode == PlaceMode.holdDelete)
|
if(input.breakMode == PlaceMode.holdDelete)
|
||||||
input.breakMode.draw(tilex, tiley, 0, 0);
|
input.breakMode.draw(tilex, tiley, 0, 0);
|
||||||
|
|||||||
@@ -166,7 +166,7 @@ public class MapEditorDialog extends Dialog{
|
|||||||
openImage.show();
|
openImage.show();
|
||||||
menu.hide();
|
menu.hide();
|
||||||
});
|
});
|
||||||
|
|
||||||
|
|
||||||
/*
|
/*
|
||||||
loadDialog = new MapLoadDialog(map -> {
|
loadDialog = new MapLoadDialog(map -> {
|
||||||
@@ -365,13 +365,13 @@ public class MapEditorDialog extends Dialog{
|
|||||||
|
|
||||||
}}.left().growY().end();
|
}}.left().growY().end();
|
||||||
|
|
||||||
|
|
||||||
new table("button"){{
|
new table("button"){{
|
||||||
margin(5);
|
margin(5);
|
||||||
marginBottom(10);
|
marginBottom(10);
|
||||||
add(view).grow();
|
add(view).grow();
|
||||||
}}.grow().end();
|
}}.grow().end();
|
||||||
|
|
||||||
new table(){{
|
new table(){{
|
||||||
|
|
||||||
row();
|
row();
|
||||||
@@ -413,7 +413,7 @@ public class MapEditorDialog extends Dialog{
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
private void addBlockSelection(Table table){
|
private void addBlockSelection(Table table){
|
||||||
Table content = new Table();
|
Table content = new Table();
|
||||||
pane = new ScrollPane(content, "volume");
|
pane = new ScrollPane(content, "volume");
|
||||||
|
|||||||
@@ -28,7 +28,7 @@ public class BlockRenderer{
|
|||||||
private int iterateidx = 0;
|
private int iterateidx = 0;
|
||||||
|
|
||||||
private float storeX, storeY;
|
private float storeX, storeY;
|
||||||
|
|
||||||
public BlockRenderer(){
|
public BlockRenderer(){
|
||||||
floorRenderer = new FloorRenderer();
|
floorRenderer = new FloorRenderer();
|
||||||
|
|
||||||
@@ -59,7 +59,7 @@ public class BlockRenderer{
|
|||||||
|
|
||||||
int rangex = (int) (camera.viewportWidth * camera.zoom / tilesize / 2)+2;
|
int rangex = (int) (camera.viewportWidth * camera.zoom / tilesize / 2)+2;
|
||||||
int rangey = (int) (camera.viewportHeight * camera.zoom / tilesize / 2)+2;
|
int rangey = (int) (camera.viewportHeight * camera.zoom / tilesize / 2)+2;
|
||||||
|
|
||||||
int expandr = 4;
|
int expandr = 4;
|
||||||
|
|
||||||
Graphics.surface(renderer.shadowSurface);
|
Graphics.surface(renderer.shadowSurface);
|
||||||
|
|||||||
@@ -25,8 +25,8 @@ public abstract class InputHandler extends InputAdapter{
|
|||||||
public float breaktime = 0;
|
public float breaktime = 0;
|
||||||
public Recipe recipe;
|
public Recipe recipe;
|
||||||
public int rotation;
|
public int rotation;
|
||||||
public PlaceMode placeMode = android ? PlaceMode.cursor : PlaceMode.hold;
|
public PlaceMode placeMode = mobile ? PlaceMode.cursor : PlaceMode.hold;
|
||||||
public PlaceMode breakMode = android ? PlaceMode.none : PlaceMode.holdDelete;
|
public PlaceMode breakMode = mobile ? PlaceMode.none : PlaceMode.holdDelete;
|
||||||
public PlaceMode lastPlaceMode = placeMode;
|
public PlaceMode lastPlaceMode = placeMode;
|
||||||
public PlaceMode lastBreakMode = breakMode;
|
public PlaceMode lastBreakMode = breakMode;
|
||||||
public boolean droppingItem, transferring;
|
public boolean droppingItem, transferring;
|
||||||
|
|||||||
@@ -28,8 +28,8 @@ public enum PlaceMode{
|
|||||||
float x = tilex * tilesize;
|
float x = tilex * tilesize;
|
||||||
float y = tiley * tilesize;
|
float y = tiley * tilesize;
|
||||||
|
|
||||||
boolean valid = control.input().validPlace(tilex, tiley, control.input().recipe.result) && (android || control.input().cursorNear());
|
boolean valid = control.input().validPlace(tilex, tiley, control.input().recipe.result) && (mobile || control.input().cursorNear());
|
||||||
|
|
||||||
Vector2 offset = control.input().recipe.result.getPlaceOffset();
|
Vector2 offset = control.input().recipe.result.getPlaceOffset();
|
||||||
|
|
||||||
float si = MathUtils.sin(Timers.time() / 6f) + 1.5f;
|
float si = MathUtils.sin(Timers.time() / 6f) + 1.5f;
|
||||||
@@ -89,7 +89,7 @@ public enum PlaceMode{
|
|||||||
tile = tile.getLinked();
|
tile = tile.getLinked();
|
||||||
float fin = control.input().breaktime / tile.getBreakTime();
|
float fin = control.input().breaktime / tile.getBreakTime();
|
||||||
|
|
||||||
if(android && control.input().breaktime > 0){
|
if(mobile && control.input().breaktime > 0){
|
||||||
Draw.color(Colors.get("breakStart"), Colors.get("break"), fin);
|
Draw.color(Colors.get("breakStart"), Colors.get("break"), fin);
|
||||||
Lines.poly(tile.drawx(), tile.drawy(), 25, 4 + (1f - fin) * 26);
|
Lines.poly(tile.drawx(), tile.drawy(), 25, 4 + (1f - fin) * 26);
|
||||||
}
|
}
|
||||||
@@ -169,8 +169,8 @@ public enum PlaceMode{
|
|||||||
process(tilex, tiley, endx, endy);
|
process(tilex, tiley, endx, endy);
|
||||||
tilex = this.tilex; tiley = this.tiley;
|
tilex = this.tilex; tiley = this.tiley;
|
||||||
endx = this.endx; endy = this.endy;
|
endx = this.endx; endy = this.endy;
|
||||||
|
|
||||||
if(android){
|
if(mobile){
|
||||||
ToolFragment t = ui.toolfrag;
|
ToolFragment t = ui.toolfrag;
|
||||||
if(!t.confirming || t.px != tilex || t.py != tiley || t.px2 != endx || t.py2 != endy) {
|
if(!t.confirming || t.px != tilex || t.py != tiley || t.px2 != endx || t.py2 != endy) {
|
||||||
t.confirming = true;
|
t.confirming = true;
|
||||||
@@ -236,7 +236,7 @@ public enum PlaceMode{
|
|||||||
}
|
}
|
||||||
|
|
||||||
public void draw(int tilex, int tiley, int endx, int endy){
|
public void draw(int tilex, int tiley, int endx, int endy){
|
||||||
if(android && !Gdx.input.isTouched(0) && !control.showCursor()){
|
if(mobile && !Gdx.input.isTouched(0) && !control.showCursor()){
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -300,8 +300,8 @@ public enum PlaceMode{
|
|||||||
Lines.stroke(2f);
|
Lines.stroke(2f);
|
||||||
Draw.color("placeInvalid");
|
Draw.color("placeInvalid");
|
||||||
Lines.crect(
|
Lines.crect(
|
||||||
px * t + (isX ? 0 : offset.x) + (ex < tx && isX ? t : 0) - (block.size == 3 && ex > tx && isX ? t : 0),
|
px * t + (isX ? 0 : offset.x) + (ex < tx && isX && block.size > 1 ? t : 0) - (block.size == 3 && ex > tx && isX ? t : 0),
|
||||||
py * t + (isX ? offset.y : 0) + (ey < ty && !isX ? t : 0) - (block.size == 3 && ey > ty && !isX ? t : 0),
|
py * t + (isX ? offset.y : 0) + (ey < ty && !isX && block.size > 1 ? t : 0) - (block.size == 3 && ey > ty && !isX ? t : 0),
|
||||||
t*(isX ? 1 : block.size),
|
t*(isX ? 1 : block.size),
|
||||||
t*(isX ? block.size : 1));
|
t*(isX ? block.size : 1));
|
||||||
Draw.color("place");
|
Draw.color("place");
|
||||||
|
|||||||
@@ -1,12 +1,15 @@
|
|||||||
package io.anuke.mindustry.io;
|
package io.anuke.mindustry.io;
|
||||||
|
|
||||||
|
import com.badlogic.gdx.utils.Base64Coder;
|
||||||
import io.anuke.mindustry.core.ThreadHandler.ThreadProvider;
|
import io.anuke.mindustry.core.ThreadHandler.ThreadProvider;
|
||||||
|
import io.anuke.ucore.core.Settings;
|
||||||
import io.anuke.ucore.entities.Entity;
|
import io.anuke.ucore.entities.Entity;
|
||||||
import io.anuke.ucore.entities.EntityGroup;
|
import io.anuke.ucore.entities.EntityGroup;
|
||||||
import io.anuke.ucore.scene.ui.TextField;
|
import io.anuke.ucore.scene.ui.TextField;
|
||||||
|
|
||||||
import java.util.Date;
|
import java.util.Date;
|
||||||
import java.util.Locale;
|
import java.util.Locale;
|
||||||
|
import java.util.Random;
|
||||||
|
|
||||||
public abstract class Platform {
|
public abstract class Platform {
|
||||||
public static Platform instance = new Platform() {};
|
public static Platform instance = new Platform() {};
|
||||||
@@ -31,7 +34,18 @@ public abstract class Platform {
|
|||||||
}
|
}
|
||||||
public boolean isDebug(){return false;}
|
public boolean isDebug(){return false;}
|
||||||
/**Must be 8 bytes in length.*/
|
/**Must be 8 bytes in length.*/
|
||||||
public byte[] getUUID(){return null;}
|
public byte[] getUUID(){
|
||||||
|
String uuid = Settings.getString("uuid", "");
|
||||||
|
if(uuid.isEmpty()){
|
||||||
|
byte[] result = new byte[8];
|
||||||
|
new Random().nextBytes(result);
|
||||||
|
uuid = new String(Base64Coder.encode(result));
|
||||||
|
Settings.putString("uuid", uuid);
|
||||||
|
Settings.save();
|
||||||
|
return result;
|
||||||
|
}
|
||||||
|
return Base64Coder.decode(uuid);
|
||||||
|
}
|
||||||
public ThreadProvider getThreadProvider(){
|
public ThreadProvider getThreadProvider(){
|
||||||
return new ThreadProvider() {
|
return new ThreadProvider() {
|
||||||
@Override public boolean isOnThread() {return true;}
|
@Override public boolean isOnThread() {return true;}
|
||||||
|
|||||||
@@ -44,6 +44,11 @@ public class ChangelogDialog extends FloatingDialog{
|
|||||||
table.row();
|
table.row();
|
||||||
table.add("$text.changelog.error.android").padTop(8);
|
table.add("$text.changelog.error.android").padTop(8);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if(Vars.ios){
|
||||||
|
table.row();
|
||||||
|
table.add("$text.changelog.error.ios").padTop(8);
|
||||||
|
}
|
||||||
}else{
|
}else{
|
||||||
for(VersionInfo info : versions){
|
for(VersionInfo info : versions){
|
||||||
Table in = new Table("clear");
|
Table in = new Table("clear");
|
||||||
|
|||||||
@@ -35,7 +35,7 @@ public class PausedDialog extends FloatingDialog{
|
|||||||
if(!Net.active()) state.set(State.paused);
|
if(!Net.active()) state.set(State.paused);
|
||||||
});
|
});
|
||||||
|
|
||||||
if(!android){
|
if(!mobile){
|
||||||
content().defaults().width(220).height(50);
|
content().defaults().width(220).height(50);
|
||||||
|
|
||||||
content().addButton("$text.back", () -> {
|
content().addButton("$text.back", () -> {
|
||||||
|
|||||||
@@ -84,7 +84,7 @@ public class SettingsMenuDialog extends SettingsDialog{
|
|||||||
menu.addButton("$text.settings.graphics", () -> visible(1));
|
menu.addButton("$text.settings.graphics", () -> visible(1));
|
||||||
menu.row();
|
menu.row();
|
||||||
menu.addButton("$text.settings.sound", () -> visible(2));
|
menu.addButton("$text.settings.sound", () -> visible(2));
|
||||||
if(!Vars.android) {
|
if(!Vars.mobile) {
|
||||||
menu.row();
|
menu.row();
|
||||||
menu.addButton("$text.settings.controls", ui.controls::show);
|
menu.addButton("$text.settings.controls", ui.controls::show);
|
||||||
}
|
}
|
||||||
@@ -142,7 +142,7 @@ public class SettingsMenuDialog extends SettingsDialog{
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
if(!android && !gwt) {
|
if(!mobile && !gwt) {
|
||||||
graphics.checkPref("vsync", true, b -> Gdx.graphics.setVSync(b));
|
graphics.checkPref("vsync", true, b -> Gdx.graphics.setVSync(b));
|
||||||
graphics.checkPref("fullscreen", false, b -> {
|
graphics.checkPref("fullscreen", false, b -> {
|
||||||
if (b) {
|
if (b) {
|
||||||
|
|||||||
@@ -39,7 +39,7 @@ public class BlocksFragment implements Fragment{
|
|||||||
private boolean shown = true;
|
private boolean shown = true;
|
||||||
private Recipe hoveredDescriptionRecipe;
|
private Recipe hoveredDescriptionRecipe;
|
||||||
private IntSet itemset = new IntSet();
|
private IntSet itemset = new IntSet();
|
||||||
|
|
||||||
public void build(){
|
public void build(){
|
||||||
InputHandler input = control.input();
|
InputHandler input = control.input();
|
||||||
|
|
||||||
|
|||||||
@@ -107,12 +107,12 @@ public class ChatFragment extends Table implements Fragment{
|
|||||||
|
|
||||||
add(chatfield).padBottom(offsety).padLeft(offsetx).growX().padRight(offsetx).height(28);
|
add(chatfield).padBottom(offsety).padLeft(offsetx).growX().padRight(offsetx).height(28);
|
||||||
|
|
||||||
if(Vars.android) {
|
if(Vars.mobile) {
|
||||||
marginBottom(105f);
|
marginBottom(105f);
|
||||||
marginRight(240f);
|
marginRight(240f);
|
||||||
}
|
}
|
||||||
|
|
||||||
if(Vars.android) {
|
if(Vars.mobile) {
|
||||||
addImageButton("icon-arrow-right", 14 * 2, this::toggle).size(46f, 51f).visible(() -> chatOpen).pad(2f);
|
addImageButton("icon-arrow-right", 14 * 2, this::toggle).size(46f, 51f).visible(() -> chatOpen).pad(2f);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -71,14 +71,14 @@ public class HudFragment implements Fragment{
|
|||||||
}).get();
|
}).get();
|
||||||
|
|
||||||
new imagebutton("icon-pause", isize, () -> {
|
new imagebutton("icon-pause", isize, () -> {
|
||||||
if(android) DebugFragment.printDebugInfo();
|
if(mobile) DebugFragment.printDebugInfo();
|
||||||
if (Net.active() && android) {
|
if (Net.active() && mobile) {
|
||||||
ui.listfrag.visible = !ui.listfrag.visible;
|
ui.listfrag.visible = !ui.listfrag.visible;
|
||||||
} else {
|
} else {
|
||||||
state.set(state.is(State.paused) ? State.playing : State.paused);
|
state.set(state.is(State.paused) ? State.playing : State.paused);
|
||||||
}
|
}
|
||||||
}).update(i -> {
|
}).update(i -> {
|
||||||
if (Net.active() && android) {
|
if (Net.active() && mobile) {
|
||||||
i.getStyle().imageUp = Core.skin.getDrawable("icon-players");
|
i.getStyle().imageUp = Core.skin.getDrawable("icon-players");
|
||||||
} else {
|
} else {
|
||||||
i.setDisabled(Net.active());
|
i.setDisabled(Net.active());
|
||||||
@@ -87,7 +87,7 @@ public class HudFragment implements Fragment{
|
|||||||
}).get();
|
}).get();
|
||||||
|
|
||||||
new imagebutton("icon-settings", isize, () -> {
|
new imagebutton("icon-settings", isize, () -> {
|
||||||
if (Net.active() && android) {
|
if (Net.active() && mobile) {
|
||||||
if (ui.chatfrag.chatOpen()) {
|
if (ui.chatfrag.chatOpen()) {
|
||||||
ui.chatfrag.hide();
|
ui.chatfrag.hide();
|
||||||
} else {
|
} else {
|
||||||
@@ -97,7 +97,7 @@ public class HudFragment implements Fragment{
|
|||||||
ui.settings.show();
|
ui.settings.show();
|
||||||
}
|
}
|
||||||
}).update(i -> {
|
}).update(i -> {
|
||||||
if (Net.active() && android) {
|
if (Net.active() && mobile) {
|
||||||
i.getStyle().imageUp = Core.skin.getDrawable("icon-chat");
|
i.getStyle().imageUp = Core.skin.getDrawable("icon-chat");
|
||||||
} else {
|
} else {
|
||||||
i.getStyle().imageUp = Core.skin.getDrawable("icon-settings");
|
i.getStyle().imageUp = Core.skin.getDrawable("icon-settings");
|
||||||
|
|||||||
@@ -18,7 +18,7 @@ public class MenuFragment implements Fragment{
|
|||||||
new table(){{
|
new table(){{
|
||||||
visible(() -> state.is(State.menu));
|
visible(() -> state.is(State.menu));
|
||||||
|
|
||||||
if(!android){
|
if(!mobile){
|
||||||
new table(){{
|
new table(){{
|
||||||
|
|
||||||
float w = 200f;
|
float w = 200f;
|
||||||
|
|||||||
@@ -29,7 +29,7 @@ public class PlacementFragment implements Fragment{
|
|||||||
Label modelabel;
|
Label modelabel;
|
||||||
|
|
||||||
public void build(){
|
public void build(){
|
||||||
if(!android) return;
|
if(!mobile) return;
|
||||||
|
|
||||||
InputHandler input = control.input();
|
InputHandler input = control.input();
|
||||||
|
|
||||||
|
|||||||
@@ -63,7 +63,7 @@ public class PlayerListFragment implements Fragment{
|
|||||||
}}.end();
|
}}.end();
|
||||||
|
|
||||||
update(t -> {
|
update(t -> {
|
||||||
if(!android){
|
if(!mobile){
|
||||||
visible = Inputs.keyDown("player_list");
|
visible = Inputs.keyDown("player_list");
|
||||||
}
|
}
|
||||||
if(!(Net.active() && !state.is(State.menu))){
|
if(!(Net.active() && !state.is(State.menu))){
|
||||||
|
|||||||
@@ -11,8 +11,6 @@ import io.anuke.ucore.core.Core;
|
|||||||
import io.anuke.ucore.core.Graphics;
|
import io.anuke.ucore.core.Graphics;
|
||||||
import io.anuke.ucore.scene.ui.layout.Table;
|
import io.anuke.ucore.scene.ui.layout.Table;
|
||||||
|
|
||||||
import static io.anuke.mindustry.Vars.*;
|
|
||||||
|
|
||||||
public class ToolFragment implements Fragment{
|
public class ToolFragment implements Fragment{
|
||||||
private Table tools;
|
private Table tools;
|
||||||
public int px, py, px2, py2;
|
public int px, py, px2, py2;
|
||||||
@@ -50,7 +48,7 @@ public class ToolFragment implements Fragment{
|
|||||||
Core.scene.add(tools);
|
Core.scene.add(tools);
|
||||||
|
|
||||||
tools.setVisible(() ->
|
tools.setVisible(() ->
|
||||||
!state.is(State.menu) && android && ((input.recipe != null && state.inventory.hasItems(input.recipe.requirements) &&
|
!state.is(State.menu) && mobile && ((input.recipe != null && state.inventory.hasItems(input.recipe.requirements) &&
|
||||||
input.placeMode == PlaceMode.cursor) || confirming)
|
input.placeMode == PlaceMode.cursor) || confirming)
|
||||||
);
|
);
|
||||||
|
|
||||||
|
|||||||
@@ -48,7 +48,7 @@ public class WeaponFactory extends Block{
|
|||||||
|
|
||||||
@Override
|
@Override
|
||||||
public boolean isConfigurable(Tile tile){
|
public boolean isConfigurable(Tile tile){
|
||||||
return !Vars.android;
|
return !Vars.mobile;
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
|
|||||||
+16
-8
@@ -13,18 +13,23 @@ ext.writeVersion = {
|
|||||||
def pfile = new File('core/assets/version.properties')
|
def pfile = new File('core/assets/version.properties')
|
||||||
def props = new Properties()
|
def props = new Properties()
|
||||||
|
|
||||||
pfile.createNewFile()
|
try{
|
||||||
|
pfile.createNewFile()
|
||||||
|
}catch (Exception e){}
|
||||||
|
|
||||||
props.load(new FileInputStream(pfile))
|
if(pfile.exists()) {
|
||||||
|
|
||||||
String code = getBuildVersion()
|
props.load(new FileInputStream(pfile))
|
||||||
|
|
||||||
props["name"] = appName
|
String code = getBuildVersion()
|
||||||
props["version"] = versionType
|
|
||||||
props["code"] = versionNumber
|
|
||||||
props["build"] = code
|
|
||||||
|
|
||||||
props.store(pfile.newWriter(), "Autogenerated file. Do not modify.")
|
props["name"] = appName
|
||||||
|
props["version"] = versionType
|
||||||
|
props["code"] = versionNumber
|
||||||
|
props["build"] = code
|
||||||
|
|
||||||
|
props.store(pfile.newWriter(), "Autogenerated file. Do not modify.")
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
ext.getPlatform = {
|
ext.getPlatform = {
|
||||||
@@ -51,6 +56,9 @@ task run(dependsOn: classes, type: JavaExec) {
|
|||||||
classpath = sourceSets.main.runtimeClasspath
|
classpath = sourceSets.main.runtimeClasspath
|
||||||
standardInput = System.in
|
standardInput = System.in
|
||||||
workingDir = project.assetsDir
|
workingDir = project.assetsDir
|
||||||
|
if(System.getProperty("os.name").toLowerCase().contains("mac")){
|
||||||
|
jvmArgs "-XstartOnFirstThread"
|
||||||
|
}
|
||||||
ignoreExitValue = true
|
ignoreExitValue = true
|
||||||
if (project.hasProperty("appArgs")) {
|
if (project.hasProperty("appArgs")) {
|
||||||
args Eval.me(appArgs)
|
args Eval.me(appArgs)
|
||||||
|
|||||||
Vendored
BIN
Binary file not shown.
+1
-1
@@ -1,4 +1,4 @@
|
|||||||
#Tue Dec 19 19:08:24 EST 2017
|
#Sat Apr 28 09:57:33 EDT 2018
|
||||||
distributionBase=GRADLE_USER_HOME
|
distributionBase=GRADLE_USER_HOME
|
||||||
distributionPath=wrapper/dists
|
distributionPath=wrapper/dists
|
||||||
zipStoreBase=GRADLE_USER_HOME
|
zipStoreBase=GRADLE_USER_HOME
|
||||||
|
|||||||
@@ -1,4 +1,4 @@
|
|||||||
#!/usr/bin/env bash
|
#!/usr/bin/env sh
|
||||||
|
|
||||||
##############################################################################
|
##############################################################################
|
||||||
##
|
##
|
||||||
@@ -6,47 +6,6 @@
|
|||||||
##
|
##
|
||||||
##############################################################################
|
##############################################################################
|
||||||
|
|
||||||
# Add default JVM options here. You can also use JAVA_OPTS and GRADLE_OPTS to pass JVM options to this script.
|
|
||||||
DEFAULT_JVM_OPTS=""
|
|
||||||
|
|
||||||
APP_NAME="Gradle"
|
|
||||||
APP_BASE_NAME=`basename "$0"`
|
|
||||||
|
|
||||||
# Use the maximum available, or set MAX_FD != -1 to use that value.
|
|
||||||
MAX_FD="maximum"
|
|
||||||
|
|
||||||
warn ( ) {
|
|
||||||
echo "$*"
|
|
||||||
}
|
|
||||||
|
|
||||||
die ( ) {
|
|
||||||
echo
|
|
||||||
echo "$*"
|
|
||||||
echo
|
|
||||||
exit 1
|
|
||||||
}
|
|
||||||
|
|
||||||
# OS specific support (must be 'true' or 'false').
|
|
||||||
cygwin=false
|
|
||||||
msys=false
|
|
||||||
darwin=false
|
|
||||||
case "`uname`" in
|
|
||||||
CYGWIN* )
|
|
||||||
cygwin=true
|
|
||||||
;;
|
|
||||||
Darwin* )
|
|
||||||
darwin=true
|
|
||||||
;;
|
|
||||||
MINGW* )
|
|
||||||
msys=true
|
|
||||||
;;
|
|
||||||
esac
|
|
||||||
|
|
||||||
# For Cygwin, ensure paths are in UNIX format before anything is touched.
|
|
||||||
if $cygwin ; then
|
|
||||||
[ -n "$JAVA_HOME" ] && JAVA_HOME=`cygpath --unix "$JAVA_HOME"`
|
|
||||||
fi
|
|
||||||
|
|
||||||
# Attempt to set APP_HOME
|
# Attempt to set APP_HOME
|
||||||
# Resolve links: $0 may be a link
|
# Resolve links: $0 may be a link
|
||||||
PRG="$0"
|
PRG="$0"
|
||||||
@@ -61,9 +20,49 @@ while [ -h "$PRG" ] ; do
|
|||||||
fi
|
fi
|
||||||
done
|
done
|
||||||
SAVED="`pwd`"
|
SAVED="`pwd`"
|
||||||
cd "`dirname \"$PRG\"`/" >&-
|
cd "`dirname \"$PRG\"`/" >/dev/null
|
||||||
APP_HOME="`pwd -P`"
|
APP_HOME="`pwd -P`"
|
||||||
cd "$SAVED" >&-
|
cd "$SAVED" >/dev/null
|
||||||
|
|
||||||
|
APP_NAME="Gradle"
|
||||||
|
APP_BASE_NAME=`basename "$0"`
|
||||||
|
|
||||||
|
# Add default JVM options here. You can also use JAVA_OPTS and GRADLE_OPTS to pass JVM options to this script.
|
||||||
|
DEFAULT_JVM_OPTS=""
|
||||||
|
|
||||||
|
# Use the maximum available, or set MAX_FD != -1 to use that value.
|
||||||
|
MAX_FD="maximum"
|
||||||
|
|
||||||
|
warn () {
|
||||||
|
echo "$*"
|
||||||
|
}
|
||||||
|
|
||||||
|
die () {
|
||||||
|
echo
|
||||||
|
echo "$*"
|
||||||
|
echo
|
||||||
|
exit 1
|
||||||
|
}
|
||||||
|
|
||||||
|
# OS specific support (must be 'true' or 'false').
|
||||||
|
cygwin=false
|
||||||
|
msys=false
|
||||||
|
darwin=false
|
||||||
|
nonstop=false
|
||||||
|
case "`uname`" in
|
||||||
|
CYGWIN* )
|
||||||
|
cygwin=true
|
||||||
|
;;
|
||||||
|
Darwin* )
|
||||||
|
darwin=true
|
||||||
|
;;
|
||||||
|
MINGW* )
|
||||||
|
msys=true
|
||||||
|
;;
|
||||||
|
NONSTOP* )
|
||||||
|
nonstop=true
|
||||||
|
;;
|
||||||
|
esac
|
||||||
|
|
||||||
CLASSPATH=$APP_HOME/gradle/wrapper/gradle-wrapper.jar
|
CLASSPATH=$APP_HOME/gradle/wrapper/gradle-wrapper.jar
|
||||||
|
|
||||||
@@ -90,7 +89,7 @@ location of your Java installation."
|
|||||||
fi
|
fi
|
||||||
|
|
||||||
# Increase the maximum file descriptors if we can.
|
# Increase the maximum file descriptors if we can.
|
||||||
if [ "$cygwin" = "false" -a "$darwin" = "false" ] ; then
|
if [ "$cygwin" = "false" -a "$darwin" = "false" -a "$nonstop" = "false" ] ; then
|
||||||
MAX_FD_LIMIT=`ulimit -H -n`
|
MAX_FD_LIMIT=`ulimit -H -n`
|
||||||
if [ $? -eq 0 ] ; then
|
if [ $? -eq 0 ] ; then
|
||||||
if [ "$MAX_FD" = "maximum" -o "$MAX_FD" = "max" ] ; then
|
if [ "$MAX_FD" = "maximum" -o "$MAX_FD" = "max" ] ; then
|
||||||
@@ -114,6 +113,7 @@ fi
|
|||||||
if $cygwin ; then
|
if $cygwin ; then
|
||||||
APP_HOME=`cygpath --path --mixed "$APP_HOME"`
|
APP_HOME=`cygpath --path --mixed "$APP_HOME"`
|
||||||
CLASSPATH=`cygpath --path --mixed "$CLASSPATH"`
|
CLASSPATH=`cygpath --path --mixed "$CLASSPATH"`
|
||||||
|
JAVACMD=`cygpath --unix "$JAVACMD"`
|
||||||
|
|
||||||
# We build the pattern for arguments to be converted via cygpath
|
# We build the pattern for arguments to be converted via cygpath
|
||||||
ROOTDIRSRAW=`find -L / -maxdepth 1 -mindepth 1 -type d 2>/dev/null`
|
ROOTDIRSRAW=`find -L / -maxdepth 1 -mindepth 1 -type d 2>/dev/null`
|
||||||
@@ -154,11 +154,19 @@ if $cygwin ; then
|
|||||||
esac
|
esac
|
||||||
fi
|
fi
|
||||||
|
|
||||||
# Split up the JVM_OPTS And GRADLE_OPTS values into an array, following the shell quoting and substitution rules
|
# Escape application args
|
||||||
function splitJvmOpts() {
|
save () {
|
||||||
JVM_OPTS=("$@")
|
for i do printf %s\\n "$i" | sed "s/'/'\\\\''/g;1s/^/'/;\$s/\$/' \\\\/" ; done
|
||||||
|
echo " "
|
||||||
}
|
}
|
||||||
eval splitJvmOpts $DEFAULT_JVM_OPTS $JAVA_OPTS $GRADLE_OPTS
|
APP_ARGS=$(save "$@")
|
||||||
JVM_OPTS[${#JVM_OPTS[*]}]="-Dorg.gradle.appname=$APP_BASE_NAME"
|
|
||||||
|
|
||||||
exec "$JAVACMD" "${JVM_OPTS[@]}" -classpath "$CLASSPATH" org.gradle.wrapper.GradleWrapperMain "$@"
|
# Collect all arguments for the java command, following the shell quoting and substitution rules
|
||||||
|
eval set -- $DEFAULT_JVM_OPTS $JAVA_OPTS $GRADLE_OPTS "\"-Dorg.gradle.appname=$APP_BASE_NAME\"" -classpath "\"$CLASSPATH\"" org.gradle.wrapper.GradleWrapperMain "$APP_ARGS"
|
||||||
|
|
||||||
|
# by default we should be in the correct project dir, but when run from Finder on Mac, the cwd is wrong
|
||||||
|
if [ "$(uname)" = "Darwin" ] && [ "$HOME" = "$PWD" ]; then
|
||||||
|
cd "$(dirname "$0")"
|
||||||
|
fi
|
||||||
|
|
||||||
|
exec "$JAVACMD" "$@"
|
||||||
|
|||||||
Vendored
+4
-10
@@ -8,14 +8,14 @@
|
|||||||
@rem Set local scope for the variables with windows NT shell
|
@rem Set local scope for the variables with windows NT shell
|
||||||
if "%OS%"=="Windows_NT" setlocal
|
if "%OS%"=="Windows_NT" setlocal
|
||||||
|
|
||||||
@rem Add default JVM options here. You can also use JAVA_OPTS and GRADLE_OPTS to pass JVM options to this script.
|
|
||||||
set DEFAULT_JVM_OPTS=
|
|
||||||
|
|
||||||
set DIRNAME=%~dp0
|
set DIRNAME=%~dp0
|
||||||
if "%DIRNAME%" == "" set DIRNAME=.
|
if "%DIRNAME%" == "" set DIRNAME=.
|
||||||
set APP_BASE_NAME=%~n0
|
set APP_BASE_NAME=%~n0
|
||||||
set APP_HOME=%DIRNAME%
|
set APP_HOME=%DIRNAME%
|
||||||
|
|
||||||
|
@rem Add default JVM options here. You can also use JAVA_OPTS and GRADLE_OPTS to pass JVM options to this script.
|
||||||
|
set DEFAULT_JVM_OPTS=
|
||||||
|
|
||||||
@rem Find java.exe
|
@rem Find java.exe
|
||||||
if defined JAVA_HOME goto findJavaFromJavaHome
|
if defined JAVA_HOME goto findJavaFromJavaHome
|
||||||
|
|
||||||
@@ -46,10 +46,9 @@ echo location of your Java installation.
|
|||||||
goto fail
|
goto fail
|
||||||
|
|
||||||
:init
|
:init
|
||||||
@rem Get command-line arguments, handling Windowz variants
|
@rem Get command-line arguments, handling Windows variants
|
||||||
|
|
||||||
if not "%OS%" == "Windows_NT" goto win9xME_args
|
if not "%OS%" == "Windows_NT" goto win9xME_args
|
||||||
if "%@eval[2+2]" == "4" goto 4NT_args
|
|
||||||
|
|
||||||
:win9xME_args
|
:win9xME_args
|
||||||
@rem Slurp the command line arguments.
|
@rem Slurp the command line arguments.
|
||||||
@@ -60,11 +59,6 @@ set _SKIP=2
|
|||||||
if "x%~1" == "x" goto execute
|
if "x%~1" == "x" goto execute
|
||||||
|
|
||||||
set CMD_LINE_ARGS=%*
|
set CMD_LINE_ARGS=%*
|
||||||
goto execute
|
|
||||||
|
|
||||||
:4NT_args
|
|
||||||
@rem Get arguments from the 4NT Shell from JP Software
|
|
||||||
set CMD_LINE_ARGS=%$
|
|
||||||
|
|
||||||
:execute
|
:execute
|
||||||
@rem Setup the command line
|
@rem Setup the command line
|
||||||
|
|||||||
@@ -0,0 +1,58 @@
|
|||||||
|
<?xml version="1.0" encoding="UTF-8"?>
|
||||||
|
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
|
||||||
|
<plist version="1.0">
|
||||||
|
<dict>
|
||||||
|
<key>CFBundleDevelopmentRegion</key>
|
||||||
|
<string>en</string>
|
||||||
|
<key>CFBundleDisplayName</key>
|
||||||
|
<string>${app.name}</string>
|
||||||
|
<key>CFBundleExecutable</key>
|
||||||
|
<string>${app.executable}</string>
|
||||||
|
<key>CFBundleIdentifier</key>
|
||||||
|
<string>${app.id}</string>
|
||||||
|
<key>CFBundleInfoDictionaryVersion</key>
|
||||||
|
<string>6.0</string>
|
||||||
|
<key>CFBundleName</key>
|
||||||
|
<string>${app.name}</string>
|
||||||
|
<key>CFBundlePackageType</key>
|
||||||
|
<string>APPL</string>
|
||||||
|
<key>CFBundleShortVersionString</key>
|
||||||
|
<string>${app.version}</string>
|
||||||
|
<key>CFBundleSignature</key>
|
||||||
|
<string>????</string>
|
||||||
|
<key>CFBundleVersion</key>
|
||||||
|
<string>${app.build}</string>
|
||||||
|
<key>LSRequiresIPhoneOS</key>
|
||||||
|
<true/>
|
||||||
|
<key>UIViewControllerBasedStatusBarAppearance</key>
|
||||||
|
<false/>
|
||||||
|
<key>UIStatusBarHidden</key>
|
||||||
|
<true/>
|
||||||
|
<key>UIDeviceFamily</key>
|
||||||
|
<array>
|
||||||
|
<integer>1</integer>
|
||||||
|
<integer>2</integer>
|
||||||
|
</array>
|
||||||
|
<key>UIRequiredDeviceCapabilities</key>
|
||||||
|
<array>
|
||||||
|
<string>armv7</string>
|
||||||
|
<string>opengles-2</string>
|
||||||
|
</array>
|
||||||
|
<key>UISupportedInterfaceOrientations</key>
|
||||||
|
<array>
|
||||||
|
<string>UIInterfaceOrientationLandscapeLeft</string>
|
||||||
|
<string>UIInterfaceOrientationLandscapeRight</string>
|
||||||
|
</array>
|
||||||
|
<key>CFBundleIcons</key>
|
||||||
|
<dict>
|
||||||
|
<key>CFBundlePrimaryIcon</key>
|
||||||
|
<dict>
|
||||||
|
<key>CFBundleIconFiles</key>
|
||||||
|
<array>
|
||||||
|
<string>Icon</string>
|
||||||
|
<string>Icon-72</string>
|
||||||
|
</array>
|
||||||
|
</dict>
|
||||||
|
</dict>
|
||||||
|
</dict>
|
||||||
|
</plist>
|
||||||
@@ -0,0 +1,22 @@
|
|||||||
|
sourceSets.main.java.srcDirs = [ "src/" ]
|
||||||
|
|
||||||
|
sourceCompatibility = '1.8'
|
||||||
|
[compileJava, compileTestJava]*.options*.encoding = 'UTF-8'
|
||||||
|
|
||||||
|
ext {
|
||||||
|
mainClassName = "io.anuke.mindustry.IOSLauncher"
|
||||||
|
}
|
||||||
|
|
||||||
|
launchIPhoneSimulator.dependsOn build
|
||||||
|
launchIPadSimulator.dependsOn build
|
||||||
|
launchIOSDevice.dependsOn build
|
||||||
|
createIPA.dependsOn build
|
||||||
|
|
||||||
|
robovm {
|
||||||
|
archs = "thumbv7:arm64"
|
||||||
|
}
|
||||||
|
|
||||||
|
eclipse.project {
|
||||||
|
name = appName + "-ios"
|
||||||
|
natures 'org.robovm.eclipse.RoboVMNature'
|
||||||
|
}
|
||||||
Binary file not shown.
|
After Width: | Height: | Size: 622 KiB |
Binary file not shown.
|
After Width: | Height: | Size: 783 KiB |
Binary file not shown.
|
After Width: | Height: | Size: 1.8 MiB |
Binary file not shown.
|
After Width: | Height: | Size: 1.7 MiB |
Binary file not shown.
|
After Width: | Height: | Size: 1.7 MiB |
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user