mirror of
https://github.com/Anuken/Mindustry.git
synced 2024-11-11 14:56:10 +03:00
Fixed building for HTML5
This commit is contained in:
parent
404ec68570
commit
aa6308fffc
@ -56,7 +56,8 @@ void main() {
|
|||||||
|
|
||||||
color.a = ALPHA;
|
color.a = ALPHA;
|
||||||
|
|
||||||
for(int i = 0; i < u_hitamount; i ++){
|
for(int i = 0; i < MAX_HITS; i ++){
|
||||||
|
if(i >= u_hitamount) break;
|
||||||
vec3 hit = u_hits[i];
|
vec3 hit = u_hits[i];
|
||||||
float rad = hit.z * HIT_RADIUS;
|
float rad = hit.z * HIT_RADIUS;
|
||||||
float fract = 1.0 - hit.z;
|
float fract = 1.0 - hit.z;
|
||||||
|
@ -3,6 +3,5 @@
|
|||||||
<module>
|
<module>
|
||||||
<source path="io/anuke/mindustry" />
|
<source path="io/anuke/mindustry" />
|
||||||
<extend-configuration-property name="gdx.reflect.include" value="io.anuke.mindustry.entities" />
|
<extend-configuration-property name="gdx.reflect.include" value="io.anuke.mindustry.entities" />
|
||||||
<extend-configuration-property name="gdx.reflect.include" value="java.lang.Class" />
|
<extend-configuration-property name="gdx.reflect.include" value="io.anuke.mindustry.world.Tile" />
|
||||||
<extend-configuration-property name="gdx.reflect.include" value="io.anuke.ucore.function.DelayRun" />
|
|
||||||
</module>
|
</module>
|
@ -45,7 +45,7 @@ public class Vars{
|
|||||||
//whether turrets have infinite ammo (only with debug)
|
//whether turrets have infinite ammo (only with debug)
|
||||||
public static boolean infiniteAmmo = false;
|
public static boolean infiniteAmmo = false;
|
||||||
//whether to show paths of enemies
|
//whether to show paths of enemies
|
||||||
public static boolean showPaths = true;
|
public static boolean showPaths = false;
|
||||||
//if false, player is always hidden
|
//if false, player is always hidden
|
||||||
public static boolean showPlayer = true;
|
public static boolean showPlayer = true;
|
||||||
//number of save slots-- increasing may lead to layout issues
|
//number of save slots-- increasing may lead to layout issues
|
||||||
|
@ -10,7 +10,6 @@ import io.anuke.mindustry.Vars;
|
|||||||
import io.anuke.mindustry.entities.enemies.Enemy;
|
import io.anuke.mindustry.entities.enemies.Enemy;
|
||||||
import io.anuke.mindustry.world.SpawnPoint;
|
import io.anuke.mindustry.world.SpawnPoint;
|
||||||
import io.anuke.mindustry.world.Tile;
|
import io.anuke.mindustry.world.Tile;
|
||||||
import io.anuke.ucore.core.Timers;
|
|
||||||
import io.anuke.ucore.util.Angles;
|
import io.anuke.ucore.util.Angles;
|
||||||
import io.anuke.ucore.util.Mathf;
|
import io.anuke.ucore.util.Mathf;
|
||||||
import io.anuke.ucore.util.Tmp;
|
import io.anuke.ucore.util.Tmp;
|
||||||
@ -72,8 +71,11 @@ public class Pathfind{
|
|||||||
}
|
}
|
||||||
|
|
||||||
float dst = Vector2.dst(enemy.x, enemy.y, target.worldx(), target.worldy());
|
float dst = Vector2.dst(enemy.x, enemy.y, target.worldx(), target.worldy());
|
||||||
|
float nlinedist = enemy.node >= path.length - 1 ? 9999 :
|
||||||
|
pointLineDist(path[enemy.node].worldx(), path[enemy.node].worldy(),
|
||||||
|
path[enemy.node + 1].worldx(), path[enemy.node + 1].worldy(), enemy.x, enemy.y);
|
||||||
|
|
||||||
if(dst < 8){
|
if(dst < 8 || nlinedist < 8){
|
||||||
if(enemy.node <= path.length-2)
|
if(enemy.node <= path.length-2)
|
||||||
enemy.node ++;
|
enemy.node ++;
|
||||||
|
|
||||||
@ -132,9 +134,7 @@ public class Pathfind{
|
|||||||
|
|
||||||
enemy.path = Vars.control.getSpawnPoints().get(enemy.spawn).pathTiles;
|
enemy.path = Vars.control.getSpawnPoints().get(enemy.spawn).pathTiles;
|
||||||
|
|
||||||
int closest = findClosest(enemy.path, 0, enemy.x, enemy.y);
|
int closest = findClosest(enemy.path, enemy.x, enemy.y);
|
||||||
closest = findClosest(enemy.path, closest + 1, enemy.x, enemy.y);
|
|
||||||
//closest ++;
|
|
||||||
|
|
||||||
closest = Mathf.clamp(closest, 1, enemy.path.length-1);
|
closest = Mathf.clamp(closest, 1, enemy.path.length-1);
|
||||||
Tile end = enemy.path[closest];
|
Tile end = enemy.path[closest];
|
||||||
@ -142,23 +142,25 @@ public class Pathfind{
|
|||||||
|
|
||||||
//if the enemy can't get to this node, teleport to it
|
//if the enemy can't get to this node, teleport to it
|
||||||
if(enemy.node < enemy.path.length - 2 && Vars.world.raycastWorld(enemy.x, enemy.y, end.worldx(), end.worldy()) != null){
|
if(enemy.node < enemy.path.length - 2 && Vars.world.raycastWorld(enemy.x, enemy.y, end.worldx(), end.worldy()) != null){
|
||||||
Timers.run(Mathf.random(20f), () -> enemy.set(end.worldx(), end.worldy()));
|
// Timers.run(Mathf.random(20f), () -> enemy.set(end.worldx(), end.worldy()));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
private static int findClosest(Tile[] tiles, int offset, float x, float y){
|
private static int findClosest(Tile[] tiles, float x, float y){
|
||||||
int cindex = -1;
|
int cindex = -2;
|
||||||
float dst = Float.MAX_VALUE;
|
float dst = Float.MAX_VALUE;
|
||||||
|
|
||||||
for(int i = offset; i < tiles.length; i ++){
|
for(int i = 0; i < tiles.length - 1; i ++){
|
||||||
Tile tile = tiles[i];
|
Tile tile = tiles[i];
|
||||||
if(Vector2.dst(tile.worldx(), tile.worldy(), x, y) < dst){
|
Tile next = tiles[i + 1];
|
||||||
dst = Vector2.dst(tile.worldx(), tile.worldy(), x, y);
|
float d = pointLineDist(tile.worldx(), tile.worldy(), next.worldx(), next.worldy(), x, y);
|
||||||
|
if(d < dst){
|
||||||
|
dst = d;
|
||||||
cindex = i;
|
cindex = i;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
return cindex;
|
return cindex + 1;
|
||||||
}
|
}
|
||||||
|
|
||||||
private static int indexOf(Tile tile, Tile[] tiles){
|
private static int indexOf(Tile tile, Tile[] tiles){
|
||||||
@ -175,6 +177,13 @@ public class Pathfind{
|
|||||||
return MathUtils.isEqual(vector.dst(x1, y1) + vector.dst(x2, y2), Vector2.dst(x1, y1, x2, y2), 0.01f);
|
return MathUtils.isEqual(vector.dst(x1, y1) + vector.dst(x2, y2), Vector2.dst(x1, y1, x2, y2), 0.01f);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private static float pointLineDist(float x, float y, float x2, float y2, float px, float py){
|
||||||
|
float l2 = Vector2.dst2(x, y, x2, y2);
|
||||||
|
float t = Math.max(0, Math.min(1, Vector2.dot(px - x, py - y, x2 - x, y2 - y) / l2));
|
||||||
|
Vector2 projection = Tmp.v1.set(x, y).add(Tmp.v2.set(x2, y2).sub(x, y).scl(t)); // Projection falls on the segment
|
||||||
|
return projection.dst(px, py);
|
||||||
|
}
|
||||||
|
|
||||||
private static Vector2 projectPoint(float x1, float y1, float x2, float y2, float pointx, float pointy){
|
private static Vector2 projectPoint(float x1, float y1, float x2, float y2, float pointx, float pointy){
|
||||||
float px = x2-x1, py = y2-y1, dAB = px*px + py*py;
|
float px = x2-x1, py = y2-y1, dAB = px*px + py*py;
|
||||||
float u = ((pointx - x1) * px + (pointy - y1) * py) / dAB;
|
float u = ((pointx - x1) * px + (pointy - y1) * py) / dAB;
|
||||||
|
@ -271,7 +271,7 @@ public class Renderer extends RendererModule{
|
|||||||
|
|
||||||
Draw.reset();
|
Draw.reset();
|
||||||
|
|
||||||
if(Vars.showPaths){
|
if(Vars.showPaths && Vars.debug){
|
||||||
drawPaths();
|
drawPaths();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -4,7 +4,6 @@ import com.badlogic.gdx.Gdx;
|
|||||||
import com.badlogic.gdx.Input.Keys;
|
import com.badlogic.gdx.Input.Keys;
|
||||||
import com.badlogic.gdx.files.FileHandle;
|
import com.badlogic.gdx.files.FileHandle;
|
||||||
import com.badlogic.gdx.graphics.Pixmap;
|
import com.badlogic.gdx.graphics.Pixmap;
|
||||||
import com.badlogic.gdx.graphics.PixmapIO;
|
|
||||||
import com.badlogic.gdx.graphics.Texture;
|
import com.badlogic.gdx.graphics.Texture;
|
||||||
import com.badlogic.gdx.math.Vector2;
|
import com.badlogic.gdx.math.Vector2;
|
||||||
import com.badlogic.gdx.utils.ObjectMap;
|
import com.badlogic.gdx.utils.ObjectMap;
|
||||||
@ -80,7 +79,7 @@ public class EditorControl extends Module{
|
|||||||
|
|
||||||
if(Inputs.keyUp(Keys.E)){
|
if(Inputs.keyUp(Keys.E)){
|
||||||
try{
|
try{
|
||||||
ClassReflection.getMethod(PixmapIO.class, "writePNG", FileHandle.class, Pixmap.class)
|
ClassReflection.getMethod(ClassReflection.forName("com.badlogic.gdx.graphics.PixmapIO"), "writePNG", FileHandle.class, Pixmap.class)
|
||||||
.invoke(Gdx.files.absolute("/home/anuke/Pictures/maps/out-" + TimeUtils.millis() + ".png"), pixmap);
|
.invoke(Gdx.files.absolute("/home/anuke/Pictures/maps/out-" + TimeUtils.millis() + ".png"), pixmap);
|
||||||
}catch (Exception e){
|
}catch (Exception e){
|
||||||
throw new RuntimeException(e);
|
throw new RuntimeException(e);
|
||||||
|
@ -41,8 +41,10 @@ public class Shaders{
|
|||||||
public void apply(){
|
public void apply(){
|
||||||
float scale = Settings.getBool("pixelate") ? 1 : Core.cameraScale / Core.camera.zoom;
|
float scale = Settings.getBool("pixelate") ? 1 : Core.cameraScale / Core.camera.zoom;
|
||||||
float scaling = Core.cameraScale / 4f / Core.camera.zoom;
|
float scaling = Core.cameraScale / 4f / Core.camera.zoom;
|
||||||
shader.setUniform3fv("u_hits[0]", hits.items, 0, Math.min(hits.size, MAX_HITS));
|
if(hits.size > 0){
|
||||||
shader.setUniformi("u_hitamount", Math.min(hits.size, MAX_HITS)/3);
|
shader.setUniform3fv("u_hits[0]", hits.items, 0, Math.min(hits.size, MAX_HITS));
|
||||||
|
shader.setUniformi("u_hitamount", Math.min(hits.size, MAX_HITS)/3);
|
||||||
|
}
|
||||||
shader.setUniformf("u_color", color);
|
shader.setUniformf("u_color", color);
|
||||||
shader.setUniformf("u_time", Timers.time());
|
shader.setUniformf("u_time", Timers.time());
|
||||||
shader.setUniformf("u_scaling", scaling);
|
shader.setUniformf("u_scaling", scaling);
|
||||||
|
@ -226,7 +226,7 @@ public class Enemy extends DestructibleEntity{
|
|||||||
xvelocity = (x - lastx) / Timers.delta();
|
xvelocity = (x - lastx) / Timers.delta();
|
||||||
yvelocity = (y - lasty) / Timers.delta();
|
yvelocity = (y - lasty) / Timers.delta();
|
||||||
|
|
||||||
float minv = 0.0001f;
|
float minv = 0.08f;
|
||||||
|
|
||||||
if(xvelocity < minv && yvelocity < minv && node > 0){
|
if(xvelocity < minv && yvelocity < minv && node > 0){
|
||||||
idletime += Timers.delta();
|
idletime += Timers.delta();
|
||||||
|
@ -2,9 +2,6 @@ package io.anuke.mindustry.ui;
|
|||||||
|
|
||||||
import static io.anuke.mindustry.Vars.ui;
|
import static io.anuke.mindustry.Vars.ui;
|
||||||
|
|
||||||
import com.badlogic.gdx.Application.ApplicationType;
|
|
||||||
import com.badlogic.gdx.Gdx;
|
|
||||||
|
|
||||||
import io.anuke.mindustry.Vars;
|
import io.anuke.mindustry.Vars;
|
||||||
import io.anuke.mindustry.core.GameState;
|
import io.anuke.mindustry.core.GameState;
|
||||||
import io.anuke.mindustry.core.GameState.State;
|
import io.anuke.mindustry.core.GameState.State;
|
||||||
@ -44,7 +41,7 @@ public class MenuDialog extends FloatingDialog{
|
|||||||
ui.showPrefs();
|
ui.showPrefs();
|
||||||
});
|
});
|
||||||
|
|
||||||
if(Gdx.app.getType() != ApplicationType.WebGL){
|
if(!Vars.gwt){
|
||||||
content().row();
|
content().row();
|
||||||
content().addButton("Save Game", () -> {
|
content().addButton("Save Game", () -> {
|
||||||
save.show();
|
save.show();
|
||||||
|
@ -28,7 +28,7 @@
|
|||||||
|
|
||||||
|
|
||||||
function preventUseOfDefaultKeys(event) {
|
function preventUseOfDefaultKeys(event) {
|
||||||
if (event.keyCode == 32 || event.keyCode == 27 || event.keyCode == 38 || event.keyCode == 37 || event.keyCode == 39 || event.keyCode == 40) {
|
if (event.keyCode == 32 || event.keyCode == 27 || event.keyCode == 38 || event.keyCode == 37 || event.keyCode == 39 || event.keyCode == 40 || event.keyCode == 17){
|
||||||
event.preventDefault();
|
event.preventDefault();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -6,7 +6,7 @@ canvas {
|
|||||||
}
|
}
|
||||||
|
|
||||||
body {
|
body {
|
||||||
background-color: black;
|
background-color: transparent;
|
||||||
margin: 0px;
|
margin: 0px;
|
||||||
padding: 0px;
|
padding: 0px;
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user