mirror of
https://github.com/Anuken/Mindustry.git
synced 2024-09-17 11:27:35 +03:00
Fixed most things besides drawing
This commit is contained in:
parent
3abfaf1bca
commit
44e4ffbe62
@ -194,12 +194,6 @@ project(":core"){
|
||||
project(":server"){
|
||||
apply plugin: "java"
|
||||
|
||||
configurations{
|
||||
if(findProject(":android") != null){
|
||||
compile.exclude module: android
|
||||
}
|
||||
}
|
||||
|
||||
dependencies{
|
||||
|
||||
compile project(":core")
|
||||
@ -248,7 +242,7 @@ project(":kryonet"){
|
||||
dependencies{
|
||||
compile project(":core")
|
||||
compile "org.lz4:lz4-java:1.4.1"
|
||||
compile 'com.github.Anuken:kryonet:53b10247b1'
|
||||
compile 'com.github.Anuken:kryonet:38ca8d51b5763ebe463ed973a63b64390ff51416'
|
||||
compile 'com.github.Anuken:WaifUPnP:05eb46bc577fd7674596946ba288c96c0cedd893'
|
||||
}
|
||||
}
|
@ -23,7 +23,7 @@ import io.anuke.arc.entities.EntityGroup;
|
||||
import io.anuke.arc.entities.impl.EffectEntity;
|
||||
import io.anuke.arc.entities.trait.DrawTrait;
|
||||
import io.anuke.arc.scene.ui.layout.Unit;
|
||||
import io.anuke.arc.util.Translator;
|
||||
import io.anuke.arc.util.Vector2;
|
||||
|
||||
import java.util.Arrays;
|
||||
import java.util.Locale;
|
||||
@ -122,7 +122,7 @@ public class Vars{
|
||||
public static EntityGroup<Fire> fireGroup;
|
||||
public static EntityGroup<BaseUnit>[] unitGroups;
|
||||
|
||||
public static final Translator[] tmptr = new Translator[]{new Translator(), new Translator(), new Translator(), new Translator()};
|
||||
public static final Vector2[] tmptr = new Vector2[]{new Vector2(), new Vector2(), new Vector2(), new Vector2()};
|
||||
|
||||
public static void init(){
|
||||
Serialization.init();
|
||||
|
@ -6,7 +6,6 @@ import io.anuke.arc.function.Predicate;
|
||||
import io.anuke.arc.math.Mathf;
|
||||
import io.anuke.arc.math.geom.Geometry;
|
||||
import io.anuke.arc.math.geom.Vector2;
|
||||
import io.anuke.arc.util.Bits;
|
||||
import io.anuke.mindustry.content.blocks.Blocks;
|
||||
import io.anuke.mindustry.entities.TileEntity;
|
||||
import io.anuke.mindustry.game.EventType.TileChangeEvent;
|
||||
|
@ -1,8 +1,11 @@
|
||||
package io.anuke.mindustry.ai;
|
||||
|
||||
import io.anuke.arc.math.GridPoint2;
|
||||
import io.anuke.arc.util.IntArray;
|
||||
import io.anuke.arc.util.Queue;
|
||||
import io.anuke.arc.Events;
|
||||
import io.anuke.arc.collection.IntArray;
|
||||
import io.anuke.arc.collection.Queue;
|
||||
import io.anuke.arc.math.geom.Geometry;
|
||||
import io.anuke.arc.math.geom.GridPoint2;
|
||||
import io.anuke.arc.util.Structs;
|
||||
import io.anuke.arc.util.Time;
|
||||
import io.anuke.mindustry.game.EventType.TileChangeEvent;
|
||||
import io.anuke.mindustry.game.EventType.WorldLoadEvent;
|
||||
@ -11,10 +14,6 @@ import io.anuke.mindustry.game.Teams.TeamData;
|
||||
import io.anuke.mindustry.net.Net;
|
||||
import io.anuke.mindustry.world.Tile;
|
||||
import io.anuke.mindustry.world.meta.BlockFlag;
|
||||
import io.anuke.arc.Events;
|
||||
import io.anuke.arc.Timers;
|
||||
import io.anuke.arc.util.Geometry;
|
||||
import io.anuke.arc.util.Structs;
|
||||
|
||||
import static io.anuke.mindustry.Vars.state;
|
||||
import static io.anuke.mindustry.Vars.world;
|
||||
|
@ -1,6 +1,10 @@
|
||||
package io.anuke.mindustry.ai;
|
||||
|
||||
import io.anuke.arc.Events;
|
||||
import io.anuke.arc.collection.Array;
|
||||
import io.anuke.arc.collection.GridBits;
|
||||
import io.anuke.arc.math.Mathf;
|
||||
import io.anuke.arc.util.Structs;
|
||||
import io.anuke.mindustry.content.blocks.Blocks;
|
||||
import io.anuke.mindustry.entities.units.BaseUnit;
|
||||
import io.anuke.mindustry.entities.units.Squad;
|
||||
@ -9,10 +13,6 @@ import io.anuke.mindustry.game.SpawnGroup;
|
||||
import io.anuke.mindustry.game.Team;
|
||||
import io.anuke.mindustry.game.Waves;
|
||||
import io.anuke.mindustry.world.Tile;
|
||||
import io.anuke.arc.Events;
|
||||
import io.anuke.arc.util.GridBits;
|
||||
import io.anuke.arc.math.Mathf;
|
||||
import io.anuke.arc.util.Structs;
|
||||
|
||||
import java.io.DataInput;
|
||||
import java.io.DataOutput;
|
||||
@ -115,8 +115,8 @@ public class WaveSpawner{
|
||||
FlyerSpawn spawn = flySpawns.get(flyCount);
|
||||
|
||||
float margin = 40f; //how far away from the edge flying units spawn
|
||||
spawnX = world.width() * tilesize / 2f + Mathf.sqrwavex(spawn.angle) * (world.width() / 2f * tilesize + margin);
|
||||
spawnY = world.height() * tilesize / 2f + Mathf.sqrwavey(spawn.angle) * (world.height() / 2f * tilesize + margin);
|
||||
spawnX = world.width() * tilesize / 2f + sqrwavex(spawn.angle) * (world.width() / 2f * tilesize + margin);
|
||||
spawnY = world.height() * tilesize / 2f + sqrwavey(spawn.angle) * (world.height() / 2f * tilesize + margin);
|
||||
spread = margin / 1.5f;
|
||||
|
||||
flyCount++;
|
||||
@ -223,7 +223,7 @@ public class WaveSpawner{
|
||||
int shellWidth = quadWidth() * 2 + quadHeight() * 2 * 6;
|
||||
shellWidth = Math.min(quadWidth() * quadHeight() / 4, shellWidth);
|
||||
|
||||
Mathf.traverseSpiral(quadWidth(), quadHeight(), Mathf.random(shellWidth), (x, y) -> {
|
||||
traverseSpiral(quadWidth(), quadHeight(), Mathf.random(shellWidth), (x, y) -> {
|
||||
if(getQuad(x, y)){
|
||||
spawn.x = x;
|
||||
spawn.y = y;
|
||||
@ -256,4 +256,57 @@ public class WaveSpawner{
|
||||
//quadrant spawn coordinates
|
||||
int x, y;
|
||||
}
|
||||
|
||||
//utility methods
|
||||
|
||||
float sqrwavex(float degrees){
|
||||
degrees = Mathf.mod(degrees, 360f);
|
||||
if(degrees < 45){
|
||||
return 1;
|
||||
}else if(degrees < 135){
|
||||
return 1f - (degrees - 45f) / 90f;
|
||||
}else if(degrees < 225){
|
||||
return -1f;
|
||||
}else if(degrees < 315){
|
||||
return (degrees - 225) / 90f;
|
||||
}else{
|
||||
return 1f;
|
||||
}
|
||||
}
|
||||
|
||||
float sqrwavey(float degrees){
|
||||
return sqrwavex(degrees + 90f);
|
||||
}
|
||||
|
||||
void traverseSpiral(int width, int height, int offset, SpiralTraverser con){
|
||||
int directionIdx = 0;
|
||||
int curRow = 0, curCol = 0;
|
||||
for(int i = 0; i < height * width; i++){
|
||||
|
||||
if(i >= offset && con.accept(curCol, curRow)) break;
|
||||
|
||||
int same = 1, row = curRow, col = curCol;
|
||||
if(row > height - 1 - row){
|
||||
row = height - 1 - row;
|
||||
same = 0;
|
||||
}
|
||||
if(col >= width - 1 - col){
|
||||
col = width - 1 - col;
|
||||
same = 0;
|
||||
}
|
||||
row -= same;
|
||||
|
||||
if(row == col){
|
||||
directionIdx = (directionIdx + 1) % 4;
|
||||
}
|
||||
curRow += directions[directionIdx][0];
|
||||
curCol += directions[directionIdx][1];
|
||||
}
|
||||
}
|
||||
|
||||
interface SpiralTraverser{
|
||||
boolean accept(int x, int y);
|
||||
}
|
||||
|
||||
private static int[][] directions = {{0, 1}, {1, 0}, {0, -1}, {-1, 0}};
|
||||
}
|
||||
|
@ -1,8 +1,14 @@
|
||||
package io.anuke.mindustry.content;
|
||||
|
||||
import io.anuke.arc.Core;
|
||||
import io.anuke.arc.entities.Effects;
|
||||
import io.anuke.arc.Graphics;
|
||||
import io.anuke.arc.graphics.Color;
|
||||
import io.anuke.arc.graphics.g2d.Draw;
|
||||
import io.anuke.arc.graphics.g2d.TextureRegion;
|
||||
import io.anuke.arc.math.Rectangle;
|
||||
import io.anuke.arc.math.Mathf;
|
||||
import io.anuke.arc.math.geom.Rectangle;
|
||||
import io.anuke.arc.util.Time;
|
||||
import io.anuke.mindustry.content.fx.BulletFx;
|
||||
import io.anuke.mindustry.content.fx.UnitFx;
|
||||
import io.anuke.mindustry.entities.Player;
|
||||
@ -17,12 +23,6 @@ import io.anuke.mindustry.maps.TutorialSector;
|
||||
import io.anuke.mindustry.net.Net;
|
||||
import io.anuke.mindustry.type.ContentType;
|
||||
import io.anuke.mindustry.type.Mech;
|
||||
import io.anuke.arc.Core;
|
||||
import io.anuke.arc.Effects;
|
||||
import io.anuke.arc.Graphics;
|
||||
import io.anuke.arc.Timers;
|
||||
import io.anuke.arc.graphics.Draw;
|
||||
import io.anuke.arc.math.Mathf;
|
||||
|
||||
import static io.anuke.mindustry.Vars.unitGroups;
|
||||
|
||||
|
@ -1,14 +1,14 @@
|
||||
package io.anuke.mindustry.content;
|
||||
|
||||
import io.anuke.arc.entities.Effects;
|
||||
import io.anuke.arc.math.Mathf;
|
||||
import io.anuke.arc.util.Time;
|
||||
import io.anuke.mindustry.content.fx.EnvironmentFx;
|
||||
import io.anuke.mindustry.entities.StatusController.StatusEntry;
|
||||
import io.anuke.mindustry.entities.Unit;
|
||||
import io.anuke.mindustry.game.ContentList;
|
||||
import io.anuke.mindustry.type.ContentType;
|
||||
import io.anuke.mindustry.type.StatusEffect;
|
||||
import io.anuke.arc.Effects;
|
||||
import io.anuke.arc.Timers;
|
||||
import io.anuke.arc.math.Mathf;
|
||||
|
||||
public class StatusEffects implements ContentList{
|
||||
public static StatusEffect none, burning, freezing, wet, melting, tarred, overdrive, shielded, shocked;
|
||||
|
@ -10,9 +10,9 @@ import io.anuke.mindustry.type.ItemStack;
|
||||
import io.anuke.mindustry.world.Block;
|
||||
import io.anuke.mindustry.world.Tile;
|
||||
import io.anuke.mindustry.world.blocks.*;
|
||||
import io.anuke.arc.Timers;
|
||||
import io.anuke.arc.graphics.Draw;
|
||||
import io.anuke.arc.graphics.Lines;
|
||||
import io.anuke.arc.util.Time;
|
||||
import io.anuke.arc.graphics.g2d.Draw;
|
||||
import io.anuke.arc.graphics.g2d.Lines;
|
||||
import io.anuke.arc.math.Mathf;
|
||||
|
||||
public class Blocks extends BlockList implements ContentList{
|
||||
|
@ -23,7 +23,7 @@ public class CraftingBlocks extends BlockList implements ContentList{
|
||||
burnDuration = 46f;
|
||||
useFlux = true;
|
||||
|
||||
consumes.items(new ItemStack[]{new ItemStack(Items.copper, 1), new ItemStack(Items.lead, 2)});
|
||||
consumes.items(new ItemStack(Items.copper, 1), new ItemStack(Items.lead, 2));
|
||||
consumes.item(Items.coal).optional(true);
|
||||
}};
|
||||
|
||||
@ -37,7 +37,7 @@ public class CraftingBlocks extends BlockList implements ContentList{
|
||||
useFlux = true;
|
||||
fluxNeeded = 2;
|
||||
|
||||
consumes.items(new ItemStack[]{new ItemStack(Items.copper, 1), new ItemStack(Items.lead, 2)});
|
||||
consumes.items(new ItemStack(Items.copper, 1), new ItemStack(Items.lead, 2));
|
||||
consumes.power(0.1f);
|
||||
}};
|
||||
|
||||
@ -51,7 +51,7 @@ public class CraftingBlocks extends BlockList implements ContentList{
|
||||
hasLiquids = false;
|
||||
flameColor = Color.valueOf("ffef99");
|
||||
|
||||
consumes.items(new ItemStack[]{new ItemStack(Items.coal, 1), new ItemStack(Items.sand, 2)});
|
||||
consumes.items(new ItemStack(Items.coal, 1), new ItemStack(Items.sand, 2));
|
||||
consumes.power(0.05f);
|
||||
}};
|
||||
|
||||
@ -80,7 +80,7 @@ public class CraftingBlocks extends BlockList implements ContentList{
|
||||
powerCapacity = 50f;
|
||||
size = 2;
|
||||
|
||||
consumes.items(new ItemStack[]{new ItemStack(Items.thorium, 4), new ItemStack(Items.sand, 10)});
|
||||
consumes.items(new ItemStack(Items.thorium, 4), new ItemStack(Items.sand, 10));
|
||||
consumes.power(0.5f);
|
||||
}};
|
||||
|
||||
@ -95,7 +95,7 @@ public class CraftingBlocks extends BlockList implements ContentList{
|
||||
fluxNeeded = 3;
|
||||
|
||||
consumes.power(0.4f);
|
||||
consumes.items(new ItemStack[]{new ItemStack(Items.titanium, 2), new ItemStack(Items.lead, 4), new ItemStack(Items.silicon, 3), new ItemStack(Items.copper, 3)});
|
||||
consumes.items(new ItemStack(Items.titanium, 2), new ItemStack(Items.lead, 4), new ItemStack(Items.silicon, 3), new ItemStack(Items.copper, 3));
|
||||
}};
|
||||
|
||||
cryofluidmixer = new LiquidMixer("cryofluidmixer"){{
|
||||
@ -133,7 +133,7 @@ public class CraftingBlocks extends BlockList implements ContentList{
|
||||
size = 2;
|
||||
|
||||
consumes.power(0.02f);
|
||||
consumes.items(new ItemStack[]{new ItemStack(Items.coal, 1), new ItemStack(Items.lead, 2), new ItemStack(Items.sand, 2)});
|
||||
consumes.items(new ItemStack(Items.coal, 1), new ItemStack(Items.lead, 2), new ItemStack(Items.sand, 2));
|
||||
}};
|
||||
|
||||
melter = new PowerCrafter("melter"){{
|
||||
|
@ -17,7 +17,7 @@ import io.anuke.mindustry.world.blocks.PowerBlock;
|
||||
import io.anuke.mindustry.world.blocks.distribution.Sorter;
|
||||
import io.anuke.mindustry.world.blocks.power.PowerNode;
|
||||
import io.anuke.mindustry.world.meta.BlockStat;
|
||||
import io.anuke.arc.graphics.Draw;
|
||||
import io.anuke.arc.graphics.g2d.Draw;
|
||||
import io.anuke.arc.scene.ui.ButtonGroup;
|
||||
import io.anuke.arc.scene.ui.ImageButton;
|
||||
import io.anuke.arc.scene.ui.layout.Table;
|
||||
|
@ -1,5 +1,6 @@
|
||||
package io.anuke.mindustry.content.blocks;
|
||||
|
||||
import io.anuke.arc.Core;
|
||||
import io.anuke.arc.graphics.Color;
|
||||
import io.anuke.arc.graphics.g2d.TextureRegion;
|
||||
import io.anuke.mindustry.content.AmmoTypes;
|
||||
@ -8,7 +9,7 @@ import io.anuke.mindustry.type.AmmoType;
|
||||
import io.anuke.mindustry.game.ContentList;
|
||||
import io.anuke.mindustry.world.Block;
|
||||
import io.anuke.mindustry.world.blocks.defense.turrets.*;
|
||||
import io.anuke.arc.graphics.Draw;
|
||||
import io.anuke.arc.graphics.g2d.Draw;
|
||||
import io.anuke.arc.util.Angles;
|
||||
import io.anuke.arc.math.Mathf;
|
||||
|
||||
@ -73,11 +74,11 @@ public class TurretBlocks extends BlockList implements ContentList{
|
||||
health = 360;
|
||||
|
||||
drawer = (tile, entity) -> {
|
||||
Draw.rect(region, tile.drawx() + tr2.x, tile.drawy() + tr2.y, entity.rotation - 90);
|
||||
Draw.rect(region, tile.drawx() + tr2.x, tile.drawy() + tr2.y).rot(entity.rotation - 90);
|
||||
|
||||
Draw.color(entity.liquids.current().color);
|
||||
Draw.alpha(entity.liquids.total() / liquidCapacity);
|
||||
Draw.rect(name + "-liquid", tile.drawx() + tr2.x, tile.drawy() + tr2.y, entity.rotation - 90);
|
||||
Draw.rect(name + "-liquid", tile.drawx() + tr2.x, tile.drawy() + tr2.y).rot(entity.rotation - 90).color(entity.liquids.current().color);
|
||||
Draw.color();
|
||||
};
|
||||
}};
|
||||
|
@ -8,7 +8,7 @@ import io.anuke.mindustry.entities.bullet.MissileBulletType;
|
||||
import io.anuke.mindustry.entities.effect.Lightning;
|
||||
import io.anuke.mindustry.graphics.Palette;
|
||||
import io.anuke.mindustry.game.ContentList;
|
||||
import io.anuke.arc.Timers;
|
||||
import io.anuke.arc.util.Time;
|
||||
import io.anuke.arc.math.Mathf;
|
||||
|
||||
public class MissileBullets extends BulletList implements ContentList{
|
||||
|
@ -18,8 +18,8 @@ import io.anuke.mindustry.graphics.Palette;
|
||||
import io.anuke.mindustry.world.Tile;
|
||||
import io.anuke.mindustry.world.blocks.BuildBlock;
|
||||
import io.anuke.mindustry.world.blocks.distribution.MassDriver.DriverBulletData;
|
||||
import io.anuke.arc.Effects;
|
||||
import io.anuke.arc.Timers;
|
||||
import io.anuke.arc.entities.Effects;
|
||||
import io.anuke.arc.util.Time;
|
||||
import io.anuke.arc.graphics.*;
|
||||
import io.anuke.arc.util.Angles;
|
||||
import io.anuke.arc.math.Mathf;
|
||||
|
@ -5,10 +5,10 @@ import io.anuke.mindustry.entities.effect.GroundEffectEntity.GroundEffect;
|
||||
import io.anuke.mindustry.graphics.Palette;
|
||||
import io.anuke.mindustry.game.ContentList;
|
||||
import io.anuke.arc.entities.Effects.Effect;
|
||||
import io.anuke.arc.graphics.Draw;
|
||||
import io.anuke.arc.graphics.g2d.Draw;
|
||||
import io.anuke.arc.graphics.Fill;
|
||||
import io.anuke.arc.graphics.Hue;
|
||||
import io.anuke.arc.graphics.Lines;
|
||||
import io.anuke.arc.graphics.g2d.Lines;
|
||||
import io.anuke.arc.util.Angles;
|
||||
import io.anuke.arc.math.Mathf;
|
||||
import io.anuke.arc.util.Tmp;
|
||||
|
@ -4,9 +4,9 @@ import io.anuke.arc.graphics.Color;
|
||||
import io.anuke.mindustry.graphics.Palette;
|
||||
import io.anuke.mindustry.game.ContentList;
|
||||
import io.anuke.arc.entities.Effects.Effect;
|
||||
import io.anuke.arc.graphics.Draw;
|
||||
import io.anuke.arc.graphics.g2d.Draw;
|
||||
import io.anuke.arc.graphics.Fill;
|
||||
import io.anuke.arc.graphics.Lines;
|
||||
import io.anuke.arc.graphics.g2d.Lines;
|
||||
import io.anuke.arc.util.Angles;
|
||||
import io.anuke.arc.math.Mathf;
|
||||
|
||||
|
@ -4,9 +4,9 @@ import io.anuke.arc.graphics.Color;
|
||||
import io.anuke.mindustry.graphics.Palette;
|
||||
import io.anuke.mindustry.game.ContentList;
|
||||
import io.anuke.arc.entities.Effects.Effect;
|
||||
import io.anuke.arc.graphics.Draw;
|
||||
import io.anuke.arc.graphics.g2d.Draw;
|
||||
import io.anuke.arc.graphics.Fill;
|
||||
import io.anuke.arc.graphics.Lines;
|
||||
import io.anuke.arc.graphics.g2d.Lines;
|
||||
import io.anuke.arc.util.Angles;
|
||||
import io.anuke.arc.math.Mathf;
|
||||
|
||||
|
@ -4,9 +4,9 @@ import io.anuke.arc.graphics.Color;
|
||||
import io.anuke.mindustry.graphics.Palette;
|
||||
import io.anuke.mindustry.game.ContentList;
|
||||
import io.anuke.arc.entities.Effects.Effect;
|
||||
import io.anuke.arc.graphics.Draw;
|
||||
import io.anuke.arc.graphics.g2d.Draw;
|
||||
import io.anuke.arc.graphics.Fill;
|
||||
import io.anuke.arc.graphics.Lines;
|
||||
import io.anuke.arc.graphics.g2d.Lines;
|
||||
import io.anuke.arc.util.Angles;
|
||||
|
||||
import static io.anuke.mindustry.Vars.tilesize;
|
||||
|
@ -5,9 +5,9 @@ import io.anuke.mindustry.entities.effect.GroundEffectEntity.GroundEffect;
|
||||
import io.anuke.mindustry.graphics.Palette;
|
||||
import io.anuke.mindustry.game.ContentList;
|
||||
import io.anuke.arc.entities.Effects.Effect;
|
||||
import io.anuke.arc.graphics.Draw;
|
||||
import io.anuke.arc.graphics.g2d.Draw;
|
||||
import io.anuke.arc.graphics.Fill;
|
||||
import io.anuke.arc.graphics.Lines;
|
||||
import io.anuke.arc.graphics.g2d.Lines;
|
||||
import io.anuke.arc.graphics.Shapes;
|
||||
import io.anuke.arc.util.Angles;
|
||||
import io.anuke.arc.math.Mathf;
|
||||
|
@ -4,9 +4,9 @@ import io.anuke.mindustry.entities.effect.GroundEffectEntity.GroundEffect;
|
||||
import io.anuke.mindustry.graphics.Palette;
|
||||
import io.anuke.mindustry.game.ContentList;
|
||||
import io.anuke.arc.entities.Effects.Effect;
|
||||
import io.anuke.arc.graphics.Draw;
|
||||
import io.anuke.arc.graphics.g2d.Draw;
|
||||
import io.anuke.arc.graphics.Fill;
|
||||
import io.anuke.arc.graphics.Lines;
|
||||
import io.anuke.arc.graphics.g2d.Lines;
|
||||
import io.anuke.arc.util.Angles;
|
||||
import io.anuke.arc.math.Mathf;
|
||||
|
||||
|
@ -188,7 +188,7 @@ public class Control implements ApplicationListener{
|
||||
}
|
||||
|
||||
inputs[index] = input;
|
||||
Core.input.addInputProcessor(input);
|
||||
Core.input.addProcessor(input);
|
||||
}
|
||||
|
||||
public void removePlayer(){
|
||||
|
@ -165,21 +165,19 @@ public class NetClient implements ApplicationListener{
|
||||
netClient.disconnectQuietly();
|
||||
state.set(State.menu);
|
||||
|
||||
threads.runGraphics(() -> {
|
||||
if(!reason.quiet){
|
||||
if(reason.extraText() != null){
|
||||
ui.showText(reason.toString(), reason.extraText());
|
||||
}else{
|
||||
ui.showText("$text.disconnect", reason.toString());
|
||||
}
|
||||
if(!reason.quiet){
|
||||
if(reason.extraText() != null){
|
||||
ui.showText(reason.toString(), reason.extraText());
|
||||
}else{
|
||||
ui.showText("$text.disconnect", reason.toString());
|
||||
}
|
||||
ui.loadfrag.hide();
|
||||
});
|
||||
}
|
||||
ui.loadfrag.hide();
|
||||
}
|
||||
|
||||
@Remote(variants = Variant.both)
|
||||
public static void onInfoMessage(String message){
|
||||
threads.runGraphics(() -> ui.showText("", message));
|
||||
ui.showText("", message);
|
||||
}
|
||||
|
||||
@Remote(variants = Variant.both)
|
||||
@ -190,15 +188,13 @@ public class NetClient implements ApplicationListener{
|
||||
ui.chatfrag.clearMessages();
|
||||
Net.setClientLoaded(false);
|
||||
|
||||
threads.runGraphics(() -> {
|
||||
ui.loadfrag.show("$text.connecting.data");
|
||||
ui.loadfrag.show("$text.connecting.data");
|
||||
|
||||
ui.loadfrag.setButton(() -> {
|
||||
ui.loadfrag.hide();
|
||||
netClient.connecting = false;
|
||||
netClient.quiet = true;
|
||||
Net.disconnect();
|
||||
});
|
||||
ui.loadfrag.setButton(() -> {
|
||||
ui.loadfrag.hide();
|
||||
netClient.connecting = false;
|
||||
netClient.quiet = true;
|
||||
Net.disconnect();
|
||||
});
|
||||
}
|
||||
|
||||
|
@ -1,16 +1,30 @@
|
||||
package io.anuke.mindustry.core;
|
||||
|
||||
import io.anuke.arc.Core;
|
||||
import io.anuke.arc.Graphics;
|
||||
import io.anuke.arc.entities.Effects;
|
||||
import io.anuke.arc.entities.EntityDraw;
|
||||
import io.anuke.arc.entities.EntityGroup;
|
||||
import io.anuke.arc.entities.impl.EffectEntity;
|
||||
import io.anuke.arc.entities.trait.DrawTrait;
|
||||
import io.anuke.arc.entities.trait.Entity;
|
||||
import io.anuke.arc.files.FileHandle;
|
||||
import io.anuke.arc.function.Consumer;
|
||||
import io.anuke.arc.function.Predicate;
|
||||
import io.anuke.arc.graphics.Color;
|
||||
import io.anuke.arc.graphics.Pixmap;
|
||||
import io.anuke.arc.graphics.PixmapIO;
|
||||
import io.anuke.arc.graphics.g2d.Draw;
|
||||
import io.anuke.arc.graphics.g2d.Lines;
|
||||
import io.anuke.arc.graphics.g2d.SpriteBatch;
|
||||
import io.anuke.arc.math.Rectangle;
|
||||
import io.anuke.arc.math.Vector2;
|
||||
import io.anuke.arc.math.Mathf;
|
||||
import io.anuke.arc.math.geom.Rectangle;
|
||||
import io.anuke.arc.math.geom.Vector2;
|
||||
import io.anuke.arc.scene.utils.Cursors;
|
||||
import io.anuke.arc.util.BufferUtils;
|
||||
import io.anuke.arc.util.ScreenUtils;
|
||||
import io.anuke.arc.util.Time;
|
||||
import io.anuke.arc.util.pooling.Pools;
|
||||
import io.anuke.mindustry.content.fx.Fx;
|
||||
import io.anuke.mindustry.core.GameState.State;
|
||||
import io.anuke.mindustry.entities.Player;
|
||||
@ -23,28 +37,7 @@ import io.anuke.mindustry.entities.units.BaseUnit;
|
||||
import io.anuke.mindustry.game.Team;
|
||||
import io.anuke.mindustry.graphics.*;
|
||||
import io.anuke.mindustry.world.blocks.defense.ForceProjector.ShieldEntity;
|
||||
import io.anuke.arc.Effects;
|
||||
import io.anuke.arc.Graphics;
|
||||
import io.anuke.arc.entities.EntityDraw;
|
||||
import io.anuke.arc.entities.EntityGroup;
|
||||
import io.anuke.arc.entities.impl.EffectEntity;
|
||||
import io.anuke.arc.entities.trait.DrawTrait;
|
||||
import io.anuke.arc.entities.trait.Entity;
|
||||
import io.anuke.arc.function.Consumer;
|
||||
import io.anuke.arc.function.Predicate;
|
||||
import io.anuke.arc.graphics.Draw;
|
||||
import io.anuke.arc.graphics.Lines;
|
||||
import io.anuke.arc.graphics.Surface;
|
||||
import io.anuke.arc.modules.RendererModule;
|
||||
import io.anuke.arc.scene.utils.Cursors;
|
||||
import io.anuke.arc.util.Bundles;
|
||||
import io.anuke.arc.math.Mathf;
|
||||
import io.anuke.arc.util.Pooling;
|
||||
import io.anuke.arc.util.Translator;
|
||||
|
||||
import static io.anuke.mindustry.Vars.*;
|
||||
import static io.anuke.arc.core.Core.batch;
|
||||
import static io.anuke.arc.core.Core.camera;
|
||||
|
||||
public class Renderer extends RendererModule{
|
||||
public final Surface effectSurface;
|
||||
@ -55,7 +48,7 @@ public class Renderer extends RendererModule{
|
||||
|
||||
private int targetscale = baseCameraScale;
|
||||
private Rectangle rect = new Rectangle(), rect2 = new Rectangle();
|
||||
private Vector2 avgPosition = new Translator();
|
||||
private Vector2 avgPosition = new Vector2();
|
||||
|
||||
public Renderer(){
|
||||
Core.batch = new SpriteBatch(4096);
|
||||
@ -75,7 +68,7 @@ public class Renderer extends RendererModule{
|
||||
if(view.overlaps(pos)){
|
||||
|
||||
if(!(effect instanceof GroundEffect)){
|
||||
EffectEntity entity = Pooling.obtain(EffectEntity.class, EffectEntity::new);
|
||||
EffectEntity entity = Pools.obtain(EffectEntity.class, EffectEntity::new);
|
||||
entity.effect = effect;
|
||||
entity.color = color;
|
||||
entity.rotation = rotation;
|
||||
@ -87,7 +80,7 @@ public class Renderer extends RendererModule{
|
||||
}
|
||||
threads.runGraphics(() -> effectGroup.add(entity));
|
||||
}else{
|
||||
GroundEffectEntity entity = Pooling.obtain(GroundEffectEntity.class, GroundEffectEntity::new);
|
||||
GroundEffectEntity entity = Pools.obtain(GroundEffectEntity.class, GroundEffectEntity::new);
|
||||
entity.effect = effect;
|
||||
entity.color = color;
|
||||
entity.rotation = rotation;
|
||||
|
@ -11,6 +11,7 @@ import io.anuke.arc.math.geom.GridPoint2;
|
||||
import io.anuke.arc.util.Log;
|
||||
import io.anuke.arc.util.Structs;
|
||||
import io.anuke.arc.util.Time;
|
||||
import io.anuke.arc.util.Tmp;
|
||||
import io.anuke.mindustry.ai.BlockIndexer;
|
||||
import io.anuke.mindustry.ai.Pathfinder;
|
||||
import io.anuke.mindustry.ai.WaveSpawner;
|
||||
|
@ -1,10 +1,10 @@
|
||||
package io.anuke.mindustry.editor;
|
||||
|
||||
import io.anuke.arc.collection.Array;
|
||||
import io.anuke.arc.util.IntSet;
|
||||
import io.anuke.arc.collection.IntSet;
|
||||
import io.anuke.arc.util.Pack;
|
||||
import io.anuke.mindustry.maps.MapTileData;
|
||||
import io.anuke.mindustry.maps.MapTileData.TileDataMarker;
|
||||
import io.anuke.arc.util.Bits;
|
||||
|
||||
public class DrawOperation{
|
||||
/**
|
||||
@ -29,7 +29,7 @@ public class DrawOperation{
|
||||
}
|
||||
|
||||
public boolean checkDuplicate(short x, short y){
|
||||
int i = Bits.packInt(x, y);
|
||||
int i = Pack.shortInt(x, y);
|
||||
if(checks.contains(i)) return true;
|
||||
|
||||
checks.add(i);
|
||||
|
@ -1,15 +1,15 @@
|
||||
package io.anuke.mindustry.editor;
|
||||
|
||||
import io.anuke.arc.util.IntArray;
|
||||
import io.anuke.arc.collection.IntArray;
|
||||
import io.anuke.arc.function.IntPositionConsumer;
|
||||
import io.anuke.arc.util.Pack;
|
||||
import io.anuke.arc.util.Structs;
|
||||
import io.anuke.mindustry.content.blocks.Blocks;
|
||||
import io.anuke.mindustry.maps.MapTileData;
|
||||
import io.anuke.mindustry.maps.MapTileData.DataPosition;
|
||||
import io.anuke.mindustry.maps.MapTileData.TileDataMarker;
|
||||
import io.anuke.mindustry.world.Block;
|
||||
import io.anuke.mindustry.world.blocks.Floor;
|
||||
import io.anuke.arc.function.IntPositionConsumer;
|
||||
import io.anuke.arc.util.Structs;
|
||||
import io.anuke.arc.util.Bits;
|
||||
|
||||
import static io.anuke.mindustry.Vars.content;
|
||||
import static io.anuke.mindustry.Vars.ui;
|
||||
@ -24,8 +24,8 @@ public enum EditorTool{
|
||||
byte link = editor.getMap().read(x, y, DataPosition.link);
|
||||
|
||||
if(link != 0){
|
||||
x -= (Bits.getLeftByte(link) - 8);
|
||||
y -= (Bits.getRightByte(link) - 8);
|
||||
x -= (Pack.leftByte(link) - 8);
|
||||
y -= (Pack.rightByte(link) - 8);
|
||||
bf = editor.getMap().read(x, y, DataPosition.floor);
|
||||
bw = editor.getMap().read(x, y, DataPosition.wall);
|
||||
}
|
||||
@ -101,7 +101,7 @@ public enum EditorTool{
|
||||
byte bw = data.read(x, y, DataPosition.wall);
|
||||
be = data.read(x, y, DataPosition.elevation);
|
||||
boolean synth = editor.getDrawBlock().synthetic();
|
||||
byte brt = Bits.packByte((byte) editor.getDrawRotation(), (byte) editor.getDrawTeam().ordinal());
|
||||
byte brt = Pack.byteByte((byte) editor.getDrawRotation(), (byte) editor.getDrawTeam().ordinal());
|
||||
|
||||
dest = floor ? bf : bw;
|
||||
byte draw = editor.getDrawBlock().id;
|
||||
|
@ -1,6 +1,9 @@
|
||||
package io.anuke.mindustry.editor;
|
||||
|
||||
import io.anuke.arc.collection.ObjectMap;
|
||||
import io.anuke.arc.math.Mathf;
|
||||
import io.anuke.arc.util.Pack;
|
||||
import io.anuke.arc.util.Structs;
|
||||
import io.anuke.mindustry.Vars;
|
||||
import io.anuke.mindustry.content.blocks.Blocks;
|
||||
import io.anuke.mindustry.editor.DrawOperation.TileOperation;
|
||||
@ -10,10 +13,9 @@ import io.anuke.mindustry.maps.MapTileData.DataPosition;
|
||||
import io.anuke.mindustry.maps.MapTileData.TileDataMarker;
|
||||
import io.anuke.mindustry.world.Block;
|
||||
import io.anuke.mindustry.world.blocks.Floor;
|
||||
import io.anuke.arc.util.Structs;
|
||||
import io.anuke.arc.util.Bits;
|
||||
import io.anuke.arc.math.Mathf;
|
||||
|
||||
import static io.anuke.mindustry.Vars.content;
|
||||
|
||||
public class MapEditor{
|
||||
public static final int[] brushSizes = {1, 2, 3, 4, 5, 9, 15};
|
||||
|
||||
@ -103,7 +105,7 @@ public class MapEditor{
|
||||
|
||||
byte writeID = drawBlock.id;
|
||||
byte partID = Blocks.blockpart.id;
|
||||
byte rotationTeam = Bits.packByte(drawBlock.rotate ? (byte) rotation : 0, drawBlock.synthetic() ? (byte) drawTeam.ordinal() : 0);
|
||||
byte rotationTeam = Pack.byteByte(drawBlock.rotate ? (byte)rotation : 0, drawBlock.synthetic() ? (byte)drawTeam.ordinal() : 0);
|
||||
|
||||
boolean isfloor = drawBlock instanceof Floor && drawBlock != Blocks.air;
|
||||
|
||||
@ -126,13 +128,13 @@ public class MapEditor{
|
||||
if(i == 1){
|
||||
map.write(worldx, worldy, DataPosition.wall, partID);
|
||||
map.write(worldx, worldy, DataPosition.rotationTeam, rotationTeam);
|
||||
map.write(worldx, worldy, DataPosition.link, Bits.packByte((byte) (dx + offsetx + 8), (byte) (dy + offsety + 8)));
|
||||
map.write(worldx, worldy, DataPosition.link, Pack.byteByte((byte) (dx + offsetx + 8), (byte) (dy + offsety + 8)));
|
||||
}else{
|
||||
byte link = map.read(worldx, worldy, DataPosition.link);
|
||||
byte block = map.read(worldx, worldy, DataPosition.wall);
|
||||
|
||||
if(link != 0){
|
||||
removeLinked(worldx - (Bits.getLeftByte(link) - 8), worldy - (Bits.getRightByte(link) - 8));
|
||||
removeLinked(worldx - (Pack.leftByte(link) - 8), worldy - (Pack.rightByte(link) - 8));
|
||||
}else if(content.block(block).isMultiblock()){
|
||||
removeLinked(worldx, worldy);
|
||||
}
|
||||
@ -170,7 +172,7 @@ public class MapEditor{
|
||||
if(content.block(map.read(wx, wy, DataPosition.wall)).isMultiblock()){
|
||||
removeLinked(wx, wy);
|
||||
}else if(link != 0){
|
||||
removeLinked(wx - (Bits.getLeftByte(link) - 8), wy - (Bits.getRightByte(link) - 8));
|
||||
removeLinked(wx - (Pack.leftByte(link) - 8), wy - (Pack.rightByte(link) - 8));
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -1,15 +1,22 @@
|
||||
package io.anuke.mindustry.editor;
|
||||
|
||||
import io.anuke.arc.Core;
|
||||
import io.anuke.arc.collection.ObjectMap;
|
||||
import io.anuke.arc.files.FileHandle;
|
||||
import io.anuke.arc.function.Consumer;
|
||||
import io.anuke.arc.graphics.Color;
|
||||
import io.anuke.arc.graphics.Pixmap;
|
||||
import io.anuke.arc.graphics.g2d.Batch;
|
||||
import io.anuke.arc.graphics.g2d.TextureRegion;
|
||||
import io.anuke.arc.math.Vector2;
|
||||
import io.anuke.arc.util.Align;
|
||||
import io.anuke.arc.util.Disposable;
|
||||
import io.anuke.arc.collection.ObjectMap;
|
||||
import io.anuke.arc.input.KeyCode;
|
||||
import io.anuke.arc.math.Mathf;
|
||||
import io.anuke.arc.math.geom.Vector2;
|
||||
import io.anuke.arc.scene.actions.Actions;
|
||||
import io.anuke.arc.scene.ui.*;
|
||||
import io.anuke.arc.scene.ui.layout.Stack;
|
||||
import io.anuke.arc.scene.ui.layout.Table;
|
||||
import io.anuke.arc.scene.ui.layout.Unit;
|
||||
import io.anuke.arc.scene.utils.UIUtils;
|
||||
import io.anuke.arc.util.*;
|
||||
import io.anuke.mindustry.Vars;
|
||||
import io.anuke.mindustry.content.blocks.StorageBlocks;
|
||||
import io.anuke.mindustry.core.Platform;
|
||||
@ -21,22 +28,6 @@ import io.anuke.mindustry.maps.MapTileData;
|
||||
import io.anuke.mindustry.type.Recipe;
|
||||
import io.anuke.mindustry.ui.dialogs.FloatingDialog;
|
||||
import io.anuke.mindustry.world.Block;
|
||||
import io.anuke.arc.Graphics;
|
||||
import io.anuke.arc.Inputs;
|
||||
import io.anuke.arc.Timers;
|
||||
import io.anuke.arc.function.Consumer;
|
||||
import io.anuke.arc.graphics.Draw;
|
||||
import io.anuke.arc.input.Input;
|
||||
import io.anuke.arc.scene.actions.Actions;
|
||||
import io.anuke.arc.scene.ui.*;
|
||||
import io.anuke.arc.scene.ui.layout.Stack;
|
||||
import io.anuke.arc.scene.ui.layout.Table;
|
||||
import io.anuke.arc.scene.ui.layout.Unit;
|
||||
import io.anuke.arc.scene.utils.UIUtils;
|
||||
import io.anuke.arc.util.Bundles;
|
||||
import io.anuke.arc.util.Log;
|
||||
import io.anuke.arc.math.Mathf;
|
||||
import io.anuke.arc.util.Strings;
|
||||
|
||||
import java.io.DataInputStream;
|
||||
import java.io.InputStream;
|
||||
@ -190,7 +181,7 @@ public class MapEditorDialog extends Dialog implements Disposable{
|
||||
return;
|
||||
}
|
||||
|
||||
Vector2 v = pane.stageToLocalCoordinates(Graphics.mouse());
|
||||
Vector2 v = pane.stageToLocalCoordinates(Core.input.mouse());
|
||||
|
||||
if(v.x >= 0 && v.y >= 0 && v.x <= pane.getWidth() && v.y <= pane.getHeight()){
|
||||
Core.scene.setScrollFocus(pane);
|
||||
@ -223,8 +214,8 @@ public class MapEditorDialog extends Dialog implements Disposable{
|
||||
}
|
||||
|
||||
@Override
|
||||
protected void drawBackground(Batch batch, float parentAlpha, float x, float y){
|
||||
drawDefaultBackground(batch, parentAlpha, x, y);
|
||||
protected void drawBackground(float x, float y){
|
||||
drawDefaultBackground(x, y);
|
||||
}
|
||||
|
||||
private void save(){
|
||||
@ -475,35 +466,35 @@ public class MapEditorDialog extends Dialog implements Disposable{
|
||||
private void doInput(){
|
||||
//tool select
|
||||
for(int i = 0; i < EditorTool.values().length; i++){
|
||||
if(Core.input.keyTap(Input.valueOf("NUM_" + (i + 1)))){
|
||||
if(Core.input.keyTap(KeyCode.valueOf("NUM_" + (i + 1)))){
|
||||
view.setTool(EditorTool.values()[i]);
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
if(Core.input.keyTap(Input.R)){
|
||||
if(Core.input.keyTap(KeyCode.R)){
|
||||
editor.setDrawRotation((editor.getDrawRotation() + 1) % 4);
|
||||
}
|
||||
|
||||
if(Core.input.keyTap(Input.E)){
|
||||
if(Core.input.keyTap(KeyCode.E)){
|
||||
editor.setDrawRotation(Mathf.mod((editor.getDrawRotation() + 1), 4));
|
||||
}
|
||||
|
||||
//ctrl keys (undo, redo, save)
|
||||
if(UIUtils.ctrl()){
|
||||
if(Core.input.keyTap(Input.Z)){
|
||||
if(Core.input.keyTap(KeyCode.Z)){
|
||||
view.undo();
|
||||
}
|
||||
|
||||
if(Core.input.keyTap(Input.Y)){
|
||||
if(Core.input.keyTap(KeyCode.Y)){
|
||||
view.redo();
|
||||
}
|
||||
|
||||
if(Core.input.keyTap(Input.S)){
|
||||
if(Core.input.keyTap(KeyCode.S)){
|
||||
save();
|
||||
}
|
||||
|
||||
if(Core.input.keyTap(Input.G)){
|
||||
if(Core.input.keyTap(KeyCode.G)){
|
||||
view.setGrid(!view.isGrid());
|
||||
}
|
||||
}
|
||||
|
@ -1,11 +1,11 @@
|
||||
package io.anuke.mindustry.editor;
|
||||
|
||||
import io.anuke.arc.Core;
|
||||
import io.anuke.arc.collection.ObjectMap;
|
||||
import io.anuke.mindustry.core.Platform;
|
||||
import io.anuke.mindustry.ui.dialogs.FloatingDialog;
|
||||
import io.anuke.arc.Settings;
|
||||
import io.anuke.arc.scene.ui.TextArea;
|
||||
import io.anuke.arc.scene.ui.TextField;
|
||||
import io.anuke.mindustry.core.Platform;
|
||||
import io.anuke.mindustry.ui.dialogs.FloatingDialog;
|
||||
|
||||
public class MapInfoDialog extends FloatingDialog{
|
||||
private final MapEditor editor;
|
||||
@ -55,7 +55,7 @@ public class MapInfoDialog extends FloatingDialog{
|
||||
|
||||
author = content().addField(tags.get("author", Core.settings.getString("mapAuthor", "")), text -> {
|
||||
tags.put("author", text);
|
||||
Core.settings.putString("mapAuthor", text);
|
||||
Core.settings.put("mapAuthor", text);
|
||||
Core.settings.save();
|
||||
}).size(400, 55f).get();
|
||||
author.setMessageText("$text.unknown");
|
||||
|
@ -11,7 +11,7 @@ import io.anuke.mindustry.maps.MapTileData.DataPosition;
|
||||
import io.anuke.mindustry.world.Block;
|
||||
import io.anuke.arc.Core;
|
||||
import io.anuke.arc.Graphics;
|
||||
import io.anuke.arc.graphics.Draw;
|
||||
import io.anuke.arc.graphics.g2d.Draw;
|
||||
import io.anuke.arc.graphics.IndexedRenderer;
|
||||
import io.anuke.arc.util.Structs;
|
||||
import io.anuke.arc.util.Bits;
|
||||
@ -125,12 +125,12 @@ public class MapRenderer implements Disposable{
|
||||
if(wall.rotate){
|
||||
mesh.draw((wx % chunksize) + (wy % chunksize) * chunksize, region,
|
||||
wx * tilesize + wall.offset(), wy * tilesize + wall.offset(),
|
||||
region.getRegionWidth(), region.getRegionHeight(), rotation * 90 - 90);
|
||||
region.getWidth(), region.getHeight(), rotation * 90 - 90);
|
||||
}else{
|
||||
mesh.draw((wx % chunksize) + (wy % chunksize) * chunksize, region,
|
||||
wx * tilesize + wall.offset() + (tilesize - region.getRegionWidth())/2f,
|
||||
wy * tilesize + wall.offset() + (tilesize - region.getRegionHeight())/2f,
|
||||
region.getRegionWidth(), region.getRegionHeight());
|
||||
wx * tilesize + wall.offset() + (tilesize - region.getWidth())/2f,
|
||||
wy * tilesize + wall.offset() + (tilesize - region.getHeight())/2f,
|
||||
region.getWidth(), region.getHeight());
|
||||
}
|
||||
}else{
|
||||
region = floor.getEditorIcon();
|
||||
@ -154,7 +154,7 @@ public class MapRenderer implements Disposable{
|
||||
|
||||
mesh.draw((wx % chunksize) + (wy % chunksize) * chunksize + chunksize * chunksize, region,
|
||||
wx * tilesize - (wall.size/3) * tilesize, wy * tilesize - (wall.size/3) * tilesize,
|
||||
region.getRegionWidth(), region.getRegionHeight());
|
||||
region.getWidth(), region.getHeight());
|
||||
mesh.setColor(Color.WHITE);
|
||||
}
|
||||
|
||||
|
@ -7,7 +7,7 @@ import io.anuke.arc.input.GestureDetector;
|
||||
import io.anuke.arc.input.GestureDetector.GestureListener;
|
||||
import io.anuke.arc.math.Bresenham2;
|
||||
import io.anuke.arc.math.GridPoint2;
|
||||
import io.anuke.arc.math.Rectangle;
|
||||
import io.anuke.arc.math.geom.Rectangle;
|
||||
import io.anuke.arc.math.Vector2;
|
||||
import io.anuke.arc.collection.Array;
|
||||
import io.anuke.mindustry.editor.DrawOperation.TileOperation;
|
||||
@ -16,8 +16,8 @@ import io.anuke.mindustry.ui.GridImage;
|
||||
import io.anuke.arc.Core;
|
||||
import io.anuke.arc.Graphics;
|
||||
import io.anuke.arc.Inputs;
|
||||
import io.anuke.arc.graphics.Draw;
|
||||
import io.anuke.arc.graphics.Lines;
|
||||
import io.anuke.arc.graphics.g2d.Draw;
|
||||
import io.anuke.arc.graphics.g2d.Lines;
|
||||
import io.anuke.arc.scene.Element;
|
||||
import io.anuke.arc.scene.event.InputEvent;
|
||||
import io.anuke.arc.scene.event.InputListener;
|
||||
|
@ -22,7 +22,7 @@ public class OperationStack{
|
||||
stack.add(action);
|
||||
|
||||
if(stack.size > maxSize){
|
||||
stack.removeIndex(0);
|
||||
stack.removeAt(0);
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -1,11 +1,17 @@
|
||||
package io.anuke.mindustry.entities;
|
||||
|
||||
import io.anuke.arc.entities.Effects;
|
||||
import io.anuke.arc.entities.Effects.Effect;
|
||||
import io.anuke.arc.function.Consumer;
|
||||
import io.anuke.arc.function.Predicate;
|
||||
import io.anuke.arc.graphics.Color;
|
||||
import io.anuke.arc.math.Rectangle;
|
||||
import io.anuke.arc.math.Vector2;
|
||||
import io.anuke.arc.math.Mathf;
|
||||
import io.anuke.arc.math.geom.Geometry;
|
||||
import io.anuke.arc.math.geom.Rectangle;
|
||||
import io.anuke.arc.math.geom.Vector2;
|
||||
import io.anuke.arc.util.Time;
|
||||
import io.anuke.mindustry.content.bullets.TurretBullets;
|
||||
import io.anuke.mindustry.content.fx.ExplosionFx;
|
||||
import io.anuke.mindustry.content.fx.Fx;
|
||||
import io.anuke.mindustry.entities.bullet.Bullet;
|
||||
import io.anuke.mindustry.entities.effect.Fire;
|
||||
import io.anuke.mindustry.entities.effect.Lightning;
|
||||
@ -13,14 +19,6 @@ import io.anuke.mindustry.game.Team;
|
||||
import io.anuke.mindustry.gen.Call;
|
||||
import io.anuke.mindustry.graphics.Palette;
|
||||
import io.anuke.mindustry.world.Tile;
|
||||
import io.anuke.arc.Effects;
|
||||
import io.anuke.arc.entities.Effects.Effect;
|
||||
import io.anuke.arc.Timers;
|
||||
import io.anuke.arc.function.Consumer;
|
||||
import io.anuke.arc.function.Predicate;
|
||||
import io.anuke.arc.math.Mathf;
|
||||
import io.anuke.arc.util.Physics;
|
||||
import io.anuke.arc.util.Translator;
|
||||
|
||||
import static io.anuke.mindustry.Vars.*;
|
||||
|
||||
@ -28,7 +26,7 @@ import static io.anuke.mindustry.Vars.*;
|
||||
public class Damage{
|
||||
private static Rectangle rect = new Rectangle();
|
||||
private static Rectangle hitrect = new Rectangle();
|
||||
private static Translator tr = new Translator();
|
||||
private static Vector2 tr = new Vector2();
|
||||
|
||||
/**Creates a dynamic explosion based on specified parameters.*/
|
||||
public static void dynamicExplosion(float x, float y, float flammability, float explosiveness, float power, float radius, Color color){
|
||||
@ -47,7 +45,7 @@ public class Damage{
|
||||
for(int i = 0; i < waves; i++){
|
||||
int f = i;
|
||||
Time.run(i * 2f, () -> {
|
||||
threads.run(() -> Damage.damage(x, y, Mathf.clamp(radius + explosiveness, 0, 50f) * ((f + 1f) / waves), explosiveness / 2f));
|
||||
Damage.damage(x, y, Mathf.clamp(radius + explosiveness, 0, 50f) * ((f + 1f) / waves), explosiveness / 2f);
|
||||
Effects.effect(ExplosionFx.blockExplosionSmoke, x + Mathf.range(radius), y + Mathf.range(radius));
|
||||
});
|
||||
}
|
||||
@ -119,7 +117,7 @@ public class Damage{
|
||||
other.width += expand * 2;
|
||||
other.height += expand * 2;
|
||||
|
||||
Vector2 vec = Physics.raycastRect(x, y, x2, y2, other);
|
||||
Vector2 vec = Geometry.raycastRect(x, y, x2, y2, other);
|
||||
|
||||
if(vec != null){
|
||||
Effects.effect(effect, vec.x, vec.y);
|
||||
@ -180,7 +178,7 @@ public class Damage{
|
||||
int trad = (int) (radius / tilesize);
|
||||
for(int dx = -trad; dx <= trad; dx++){
|
||||
for(int dy = -trad; dy <= trad; dy++){
|
||||
Tile tile = world.tile(Mathf.scl2(x, tilesize) + dx, Mathf.scl2(y, tilesize) + dy);
|
||||
Tile tile = world.tile(Math.round(x / tilesize) + dx, Math.round(y / tilesize) + dy);
|
||||
if(tile != null && tile.entity != null && (team == null || state.teams.areEnemies(team, tile.getTeam())) && Vector2.dst(dx, dy, 0, 0) <= trad){
|
||||
float amount = calculateDamage(x, y, tile.worldx(), tile.worldy(), radius, damage);
|
||||
tile.entity.damage(amount);
|
||||
|
@ -326,7 +326,7 @@ public class Player extends Unit implements BuilderTrait, CarryTrait, ShooterTra
|
||||
Draw.rect(mech.legRegion,
|
||||
x + Angles.trnsx(baseRotation, ft * i + boostTrnsY, -boostTrnsX * i),
|
||||
y + Angles.trnsy(baseRotation, ft * i + boostTrnsY, -boostTrnsX * i),
|
||||
mech.legRegion.getRegionWidth() * i, mech.legRegion.getRegionHeight() - Mathf.clamp(ft * i, 0, 2), baseRotation - 90 + boostAng * i);
|
||||
mech.legRegion.getWidth() * i, mech.legRegion.getHeight() - Mathf.clamp(ft * i, 0, 2), baseRotation - 90 + boostAng * i);
|
||||
}
|
||||
|
||||
Draw.rect(mech.baseRegion, x, y, baseRotation - 90);
|
||||
@ -344,10 +344,10 @@ public class Player extends Unit implements BuilderTrait, CarryTrait, ShooterTra
|
||||
|
||||
for(int i : Mathf.signs){
|
||||
float tra = rotation - 90, trY = -mech.weapon.getRecoil(this, i > 0) + mech.weaponOffsetY;
|
||||
float w = i > 0 ? -mech.weapon.equipRegion.getRegionWidth() : mech.weapon.equipRegion.getRegionWidth();
|
||||
float w = i > 0 ? -mech.weapon.equipRegion.getWidth() : mech.weapon.equipRegion.getWidth();
|
||||
Draw.rect(mech.weapon.equipRegion,
|
||||
x + Angles.trnsx(tra, (mech.weaponOffsetX + mech.spreadX(this)) * i, trY),
|
||||
y + Angles.trnsy(tra, (mech.weaponOffsetX + mech.spreadX(this)) * i, trY), w, mech.weapon.equipRegion.getRegionHeight(), rotation - 90);
|
||||
y + Angles.trnsy(tra, (mech.weaponOffsetX + mech.spreadX(this)) * i, trY), w, mech.weapon.equipRegion.getHeight(), rotation - 90);
|
||||
}
|
||||
|
||||
float backTrns = 4f, itemSize = 5f;
|
||||
@ -403,7 +403,7 @@ public class Player extends Unit implements BuilderTrait, CarryTrait, ShooterTra
|
||||
}
|
||||
|
||||
public void drawName(){
|
||||
GlyphLayout layout = Pooling.obtain(GlyphLayout.class, GlyphLayout::new);
|
||||
GlyphLayout layout = Pools.obtain(GlyphLayout.class, GlyphLayout::new);
|
||||
|
||||
boolean ints = Core.font.usesIntegerPositions();
|
||||
Core.font.setUseIntegerPositions(false);
|
||||
@ -424,7 +424,7 @@ public class Player extends Unit implements BuilderTrait, CarryTrait, ShooterTra
|
||||
}
|
||||
|
||||
Draw.reset();
|
||||
Pooling.free(layout);
|
||||
Pools.free(layout);
|
||||
Draw.tscl(1f);
|
||||
Core.font.setUseIntegerPositions(ints);
|
||||
}
|
||||
@ -613,7 +613,7 @@ public class Player extends Unit implements BuilderTrait, CarryTrait, ShooterTra
|
||||
movement.x += xa * speed;
|
||||
}
|
||||
|
||||
Vector2 vec = Graphics.world(control.input(playerIndex).getMouseX(), control.input(playerIndex).getMouseY());
|
||||
Vector2 vec = Core.input.mouseWorld(control.input(playerIndex).getMouseX(), control.input(playerIndex).getMouseY());
|
||||
pointerX = vec.x;
|
||||
pointerY = vec.y;
|
||||
updateShooting();
|
||||
@ -767,7 +767,7 @@ public class Player extends Unit implements BuilderTrait, CarryTrait, ShooterTra
|
||||
}
|
||||
|
||||
}else if(isShooting()){
|
||||
Vector2 vec = Graphics.world(control.input(playerIndex).getMouseX(),
|
||||
Vector2 vec = Core.input.mouseWorld(control.input(playerIndex).getMouseX(),
|
||||
control.input(playerIndex).getMouseY());
|
||||
pointerX = vec.x;
|
||||
pointerY = vec.y;
|
||||
|
@ -1,8 +1,8 @@
|
||||
package io.anuke.mindustry.entities;
|
||||
|
||||
import io.anuke.arc.math.Vector2;
|
||||
import io.anuke.mindustry.entities.traits.TargetTrait;
|
||||
import io.anuke.arc.math.Mathf;
|
||||
import io.anuke.arc.math.geom.Vector2;
|
||||
import io.anuke.mindustry.entities.traits.TargetTrait;
|
||||
|
||||
/**
|
||||
* Class for predicting shoot angles based on velocities of targets.
|
||||
|
@ -1,15 +1,14 @@
|
||||
package io.anuke.mindustry.entities;
|
||||
|
||||
import io.anuke.arc.graphics.Color;
|
||||
import io.anuke.arc.collection.Array;
|
||||
import io.anuke.arc.graphics.Color;
|
||||
import io.anuke.arc.util.Time;
|
||||
import io.anuke.arc.util.Tmp;
|
||||
import io.anuke.arc.util.pooling.Pools;
|
||||
import io.anuke.mindustry.content.StatusEffects;
|
||||
import io.anuke.mindustry.entities.traits.Saveable;
|
||||
import io.anuke.mindustry.type.ContentType;
|
||||
import io.anuke.mindustry.type.StatusEffect;
|
||||
import io.anuke.arc.Timers;
|
||||
import io.anuke.arc.util.Pooling;
|
||||
import io.anuke.arc.util.ThreadArray;
|
||||
import io.anuke.arc.util.Tmp;
|
||||
|
||||
import java.io.DataInput;
|
||||
import java.io.DataOutput;
|
||||
@ -21,9 +20,9 @@ import static io.anuke.mindustry.Vars.content;
|
||||
*/
|
||||
public class StatusController implements Saveable{
|
||||
private static final StatusEntry globalResult = new StatusEntry();
|
||||
private static final Array<StatusEntry> removals = new ThreadArray<>();
|
||||
private static final Array<StatusEntry> removals = new Array<>();
|
||||
|
||||
private Array<StatusEntry> statuses = new ThreadArray<>();
|
||||
private Array<StatusEntry> statuses = new Array<>();
|
||||
|
||||
private float speedMultiplier;
|
||||
private float damageMultiplier;
|
||||
@ -57,7 +56,7 @@ public class StatusController implements Saveable{
|
||||
}
|
||||
|
||||
//otherwise, no opposites found, add direct effect
|
||||
StatusEntry entry = Pooling.obtain(StatusEntry.class, StatusEntry::new);
|
||||
StatusEntry entry = Pools.obtain(StatusEntry.class, StatusEntry::new);
|
||||
entry.set(effect, newTime);
|
||||
statuses.add(entry);
|
||||
}
|
||||
@ -91,7 +90,7 @@ public class StatusController implements Saveable{
|
||||
entry.time = Math.max(entry.time - Time.delta(), 0);
|
||||
|
||||
if(entry.time <= 0){
|
||||
Pooling.free(entry);
|
||||
Pools.free(entry);
|
||||
removals.add(entry);
|
||||
}else{
|
||||
speedMultiplier *= entry.effect.speedMultiplier;
|
||||
@ -137,7 +136,7 @@ public class StatusController implements Saveable{
|
||||
@Override
|
||||
public void readSave(DataInput stream) throws IOException{
|
||||
for(StatusEntry effect : statuses){
|
||||
Pooling.free(effect);
|
||||
Pools.free(effect);
|
||||
}
|
||||
|
||||
statuses.clear();
|
||||
@ -146,7 +145,7 @@ public class StatusController implements Saveable{
|
||||
for(int i = 0; i < amount; i++){
|
||||
byte id = stream.readByte();
|
||||
float time = stream.readShort() / 2f;
|
||||
StatusEntry entry = Pooling.obtain(StatusEntry.class, StatusEntry::new);
|
||||
StatusEntry entry = Pools.obtain(StatusEntry.class, StatusEntry::new);
|
||||
entry.set(content.getByID(ContentType.status, id), time);
|
||||
statuses.add(entry);
|
||||
}
|
||||
|
@ -10,6 +10,7 @@ import io.anuke.arc.entities.impl.BaseEntity;
|
||||
import io.anuke.arc.entities.trait.HealthTrait;
|
||||
import io.anuke.arc.math.Mathf;
|
||||
import io.anuke.arc.math.geom.GridPoint2;
|
||||
import io.anuke.arc.math.geom.Position;
|
||||
import io.anuke.arc.math.geom.Vector2;
|
||||
import io.anuke.arc.util.Interval;
|
||||
import io.anuke.arc.util.Time;
|
||||
@ -258,7 +259,7 @@ public class TileEntity extends BaseEntity implements TargetTrait, HealthTrait{
|
||||
|
||||
@Override
|
||||
public Vector2 getVelocity(){
|
||||
return Vector2.Zero;
|
||||
return Vector2.ZERO;
|
||||
}
|
||||
|
||||
@Override
|
||||
|
@ -1,9 +1,9 @@
|
||||
package io.anuke.mindustry.entities.bullet;
|
||||
|
||||
import io.anuke.mindustry.content.fx.BulletFx;
|
||||
import io.anuke.arc.Effects;
|
||||
import io.anuke.arc.entities.Effects;
|
||||
import io.anuke.arc.entities.Effects.Effect;
|
||||
import io.anuke.arc.graphics.Draw;
|
||||
import io.anuke.arc.graphics.g2d.Draw;
|
||||
|
||||
//TODO scale velocity depending on fslope()
|
||||
public class ArtilleryBulletType extends BasicBulletType{
|
||||
|
@ -6,9 +6,9 @@ import io.anuke.mindustry.entities.Damage;
|
||||
import io.anuke.mindustry.entities.Units;
|
||||
import io.anuke.mindustry.entities.traits.TargetTrait;
|
||||
import io.anuke.mindustry.graphics.Palette;
|
||||
import io.anuke.arc.Effects;
|
||||
import io.anuke.arc.Timers;
|
||||
import io.anuke.arc.graphics.Draw;
|
||||
import io.anuke.arc.entities.Effects;
|
||||
import io.anuke.arc.util.Time;
|
||||
import io.anuke.arc.graphics.g2d.Draw;
|
||||
import io.anuke.arc.util.Angles;
|
||||
import io.anuke.arc.math.Mathf;
|
||||
|
||||
|
@ -10,7 +10,7 @@ import io.anuke.mindustry.entities.traits.SyncTrait;
|
||||
import io.anuke.mindustry.entities.traits.TeamTrait;
|
||||
import io.anuke.mindustry.game.Team;
|
||||
import io.anuke.mindustry.world.Tile;
|
||||
import io.anuke.arc.Timers;
|
||||
import io.anuke.arc.util.Time;
|
||||
import io.anuke.arc.entities.EntityGroup;
|
||||
import io.anuke.arc.entities.impl.BulletEntity;
|
||||
import io.anuke.arc.entities.trait.Entity;
|
||||
@ -55,7 +55,7 @@ public class Bullet extends BulletEntity<BulletType> implements TeamTrait, SyncT
|
||||
}
|
||||
|
||||
public static Bullet create(BulletType type, Entity owner, Team team, float x, float y, float angle, float velocityScl, float lifetimeScl, Object data){
|
||||
Bullet bullet = Pooling.obtain(Bullet.class, Bullet::new);
|
||||
Bullet bullet = Pools.obtain(Bullet.class, Bullet::new);
|
||||
bullet.type = type;
|
||||
bullet.owner = owner;
|
||||
bullet.data = data;
|
||||
@ -259,7 +259,7 @@ public class Bullet extends BulletEntity<BulletType> implements TeamTrait, SyncT
|
||||
|
||||
@Override
|
||||
public void removed(){
|
||||
Pooling.free(this);
|
||||
Pools.free(this);
|
||||
}
|
||||
|
||||
@Override
|
||||
|
@ -6,10 +6,10 @@ import io.anuke.mindustry.game.Content;
|
||||
import io.anuke.mindustry.type.ContentType;
|
||||
import io.anuke.mindustry.type.StatusEffect;
|
||||
import io.anuke.mindustry.world.Tile;
|
||||
import io.anuke.arc.Effects;
|
||||
import io.anuke.arc.entities.Effects;
|
||||
import io.anuke.arc.entities.Effects.Effect;
|
||||
import io.anuke.arc.entities.impl.BaseBulletType;
|
||||
import io.anuke.arc.util.Translator;
|
||||
import io.anuke.arc.util.Vector2;
|
||||
|
||||
public abstract class BulletType extends Content implements BaseBulletType<Bullet>{
|
||||
public float lifetime;
|
||||
@ -45,7 +45,7 @@ public abstract class BulletType extends Content implements BaseBulletType<Bulle
|
||||
/**Whether velocity is inherited from the shooter.*/
|
||||
public boolean keepVelocity = true;
|
||||
|
||||
protected Translator vector = new Translator();
|
||||
protected Vector2 vector = new Vector2();
|
||||
|
||||
public BulletType(float speed, float damage){
|
||||
this.speed = speed;
|
||||
|
@ -1,9 +1,9 @@
|
||||
package io.anuke.mindustry.entities.bullet;
|
||||
|
||||
import io.anuke.arc.math.Rectangle;
|
||||
import io.anuke.arc.math.geom.Rectangle;
|
||||
import io.anuke.mindustry.content.fx.BulletFx;
|
||||
import io.anuke.mindustry.entities.Units;
|
||||
import io.anuke.arc.Timers;
|
||||
import io.anuke.arc.util.Time;
|
||||
|
||||
public abstract class FlakBulletType extends BasicBulletType{
|
||||
protected static Rectangle rect = new Rectangle();
|
||||
|
@ -8,8 +8,8 @@ import io.anuke.mindustry.entities.effect.Fire;
|
||||
import io.anuke.mindustry.entities.effect.Puddle;
|
||||
import io.anuke.mindustry.type.Liquid;
|
||||
import io.anuke.mindustry.world.Tile;
|
||||
import io.anuke.arc.Effects;
|
||||
import io.anuke.arc.graphics.Draw;
|
||||
import io.anuke.arc.entities.Effects;
|
||||
import io.anuke.arc.graphics.g2d.Draw;
|
||||
import io.anuke.arc.graphics.Fill;
|
||||
import io.anuke.arc.util.Geometry;
|
||||
import io.anuke.arc.math.Mathf;
|
||||
|
@ -3,8 +3,8 @@ package io.anuke.mindustry.entities.bullet;
|
||||
import io.anuke.arc.graphics.Color;
|
||||
import io.anuke.mindustry.content.fx.BulletFx;
|
||||
import io.anuke.mindustry.graphics.Palette;
|
||||
import io.anuke.arc.Effects;
|
||||
import io.anuke.arc.Timers;
|
||||
import io.anuke.arc.entities.Effects;
|
||||
import io.anuke.arc.util.Time;
|
||||
import io.anuke.arc.math.Mathf;
|
||||
|
||||
public class MissileBulletType extends BasicBulletType{
|
||||
|
@ -5,7 +5,7 @@ import io.anuke.mindustry.entities.traits.BelowLiquidTrait;
|
||||
import io.anuke.arc.entities.EntityGroup;
|
||||
import io.anuke.arc.entities.impl.TimedEntity;
|
||||
import io.anuke.arc.entities.trait.DrawTrait;
|
||||
import io.anuke.arc.graphics.Draw;
|
||||
import io.anuke.arc.graphics.g2d.Draw;
|
||||
import io.anuke.arc.math.Mathf;
|
||||
|
||||
import static io.anuke.mindustry.Vars.groundEffectGroup;
|
||||
|
@ -16,8 +16,8 @@ import io.anuke.mindustry.gen.Call;
|
||||
import io.anuke.mindustry.net.Net;
|
||||
import io.anuke.mindustry.world.Block;
|
||||
import io.anuke.mindustry.world.Tile;
|
||||
import io.anuke.arc.Effects;
|
||||
import io.anuke.arc.Timers;
|
||||
import io.anuke.arc.entities.Effects;
|
||||
import io.anuke.arc.util.Time;
|
||||
import io.anuke.arc.entities.EntityGroup;
|
||||
import io.anuke.arc.entities.impl.TimedEntity;
|
||||
import io.anuke.arc.util.Structs;
|
||||
@ -51,7 +51,7 @@ public class Fire extends TimedEntity implements SaveTrait, SyncTrait, Poolable{
|
||||
Fire fire = map.get(tile.pos());
|
||||
|
||||
if(fire == null){
|
||||
fire = Pooling.obtain(Fire.class, Fire::new);
|
||||
fire = Pools.obtain(Fire.class, Fire::new);
|
||||
fire.tile = tile;
|
||||
fire.lifetime = baseLifetime;
|
||||
fire.set(tile.worldx(), tile.worldy());
|
||||
|
@ -2,9 +2,9 @@ package io.anuke.mindustry.entities.effect;
|
||||
|
||||
import io.anuke.mindustry.Vars;
|
||||
import io.anuke.mindustry.world.Tile;
|
||||
import io.anuke.arc.Effects;
|
||||
import io.anuke.arc.entities.Effects;
|
||||
import io.anuke.arc.entities.Effects.Effect;
|
||||
import io.anuke.arc.Timers;
|
||||
import io.anuke.arc.util.Time;
|
||||
import io.anuke.arc.entities.impl.EffectEntity;
|
||||
import io.anuke.arc.Effects.EffectRenderer;
|
||||
import io.anuke.arc.math.Mathf;
|
||||
|
@ -5,15 +5,15 @@ import io.anuke.annotations.Annotations.Remote;
|
||||
import io.anuke.arc.entities.EntityGroup;
|
||||
import io.anuke.arc.entities.impl.TimedEntity;
|
||||
import io.anuke.arc.entities.trait.DrawTrait;
|
||||
import io.anuke.arc.entities.trait.PosTrait;
|
||||
import io.anuke.arc.graphics.Draw;
|
||||
import io.anuke.arc.graphics.Fill;
|
||||
import io.anuke.arc.graphics.Lines;
|
||||
import io.anuke.arc.graphics.g2d.Draw;
|
||||
import io.anuke.arc.graphics.g2d.Fill;
|
||||
import io.anuke.arc.graphics.g2d.Lines;
|
||||
import io.anuke.arc.math.Interpolation;
|
||||
import io.anuke.arc.math.Vector2;
|
||||
import io.anuke.arc.math.Mathf;
|
||||
import io.anuke.arc.util.Pooling;
|
||||
import io.anuke.arc.math.geom.Position;
|
||||
import io.anuke.arc.math.geom.Vector2;
|
||||
import io.anuke.arc.util.Time;
|
||||
import io.anuke.arc.util.pooling.Pools;
|
||||
import io.anuke.mindustry.entities.Unit;
|
||||
import io.anuke.mindustry.graphics.Palette;
|
||||
import io.anuke.mindustry.type.Item;
|
||||
@ -28,7 +28,7 @@ public class ItemTransfer extends TimedEntity implements DrawTrait{
|
||||
private Vector2 tovec = new Vector2();
|
||||
private Item item;
|
||||
private float seed;
|
||||
private PosTrait to;
|
||||
private Position to;
|
||||
private Runnable done;
|
||||
|
||||
public ItemTransfer(){
|
||||
@ -57,8 +57,8 @@ public class ItemTransfer extends TimedEntity implements DrawTrait{
|
||||
tile.entity.items.add(item, amount);
|
||||
}
|
||||
|
||||
public static void create(Item item, float fromx, float fromy, PosTrait to, Runnable done){
|
||||
ItemTransfer tr = Pooling.obtain(ItemTransfer.class, ItemTransfer::new);
|
||||
public static void create(Item item, float fromx, float fromy, Position to, Runnable done){
|
||||
ItemTransfer tr = Pools.obtain(ItemTransfer.class, ItemTransfer::new);
|
||||
tr.item = item;
|
||||
tr.from.set(fromx, fromy);
|
||||
tr.to = to;
|
||||
@ -88,7 +88,7 @@ public class ItemTransfer extends TimedEntity implements DrawTrait{
|
||||
if(done != null){
|
||||
threads.run(done);
|
||||
}
|
||||
Pooling.free(this);
|
||||
Pools.free(this);
|
||||
}
|
||||
|
||||
@Override
|
||||
@ -108,8 +108,7 @@ public class ItemTransfer extends TimedEntity implements DrawTrait{
|
||||
public void draw(){
|
||||
float length = fslope() * 6f;
|
||||
float angle = current.set(x, y).sub(from).angle();
|
||||
Draw.color(Palette.accent);
|
||||
Lines.stroke(fslope() * 2f);
|
||||
Lines.stroke(fslope() * 2f, Palette.accent);
|
||||
|
||||
Lines.circle(x, y, fslope() * 2f);
|
||||
Lines.lineAngleCenter(x, y, angle, length);
|
||||
|
@ -1,7 +1,7 @@
|
||||
package io.anuke.mindustry.entities.effect;
|
||||
|
||||
import io.anuke.arc.graphics.Color;
|
||||
import io.anuke.arc.math.Rectangle;
|
||||
import io.anuke.arc.math.geom.Rectangle;
|
||||
import io.anuke.arc.collection.Array;
|
||||
import io.anuke.arc.util.IntSet;
|
||||
import io.anuke.annotations.Annotations.Loc;
|
||||
@ -19,8 +19,8 @@ import io.anuke.arc.entities.impl.TimedEntity;
|
||||
import io.anuke.arc.entities.trait.DrawTrait;
|
||||
import io.anuke.arc.entities.trait.PosTrait;
|
||||
import io.anuke.arc.entities.trait.TimeTrait;
|
||||
import io.anuke.arc.graphics.Draw;
|
||||
import io.anuke.arc.graphics.Lines;
|
||||
import io.anuke.arc.graphics.g2d.Draw;
|
||||
import io.anuke.arc.graphics.g2d.Lines;
|
||||
|
||||
import java.io.DataInput;
|
||||
import java.io.DataOutput;
|
||||
@ -54,7 +54,7 @@ public class Lightning extends TimedEntity implements DrawTrait, SyncTrait, Time
|
||||
@Remote(called = Loc.server)
|
||||
public static void createLighting(int seed, Team team, Color color, float damage, float x, float y, float rotation, int length){
|
||||
|
||||
Lightning l = Pooling.obtain(Lightning.class, Lightning::new);
|
||||
Lightning l = Pools.obtain(Lightning.class, Lightning::new);
|
||||
Float dmg = damage;
|
||||
|
||||
l.x = x;
|
||||
@ -67,7 +67,7 @@ public class Lightning extends TimedEntity implements DrawTrait, SyncTrait, Time
|
||||
|
||||
for (int i = 0; i < length/2; i++) {
|
||||
Bullet.create(TurretBullets.damageLightning, l, team, x, y, 0f, 1f, 1f, dmg);
|
||||
l.lines.add(new Translator(x + Mathf.range(3f), y + Mathf.range(3f)));
|
||||
l.lines.add(new Vector2(x + Mathf.range(3f), y + Mathf.range(3f)));
|
||||
|
||||
rect.setSize(hitRange).setCenter(x, y);
|
||||
entities.clear();
|
||||
@ -119,7 +119,7 @@ public class Lightning extends TimedEntity implements DrawTrait, SyncTrait, Time
|
||||
@Override
|
||||
public void removed(){
|
||||
super.removed();
|
||||
Pooling.free(this);
|
||||
Pools.free(this);
|
||||
}
|
||||
|
||||
@Override
|
||||
|
@ -2,7 +2,7 @@ package io.anuke.mindustry.entities.effect;
|
||||
|
||||
import io.anuke.arc.graphics.Color;
|
||||
import io.anuke.arc.math.GridPoint2;
|
||||
import io.anuke.arc.math.Rectangle;
|
||||
import io.anuke.arc.math.geom.Rectangle;
|
||||
import io.anuke.arc.util.IntMap;
|
||||
import io.anuke.arc.util.Pool.Poolable;
|
||||
import io.anuke.annotations.Annotations.Loc;
|
||||
@ -19,12 +19,12 @@ import io.anuke.mindustry.gen.Call;
|
||||
import io.anuke.mindustry.net.Net;
|
||||
import io.anuke.mindustry.type.Liquid;
|
||||
import io.anuke.mindustry.world.Tile;
|
||||
import io.anuke.arc.Effects;
|
||||
import io.anuke.arc.Timers;
|
||||
import io.anuke.arc.entities.Effects;
|
||||
import io.anuke.arc.util.Time;
|
||||
import io.anuke.arc.entities.EntityGroup;
|
||||
import io.anuke.arc.entities.impl.SolidEntity;
|
||||
import io.anuke.arc.entities.trait.DrawTrait;
|
||||
import io.anuke.arc.graphics.Draw;
|
||||
import io.anuke.arc.graphics.g2d.Draw;
|
||||
import io.anuke.arc.graphics.Fill;
|
||||
import io.anuke.arc.graphics.Hue;
|
||||
import io.anuke.arc.util.Angles;
|
||||
@ -97,7 +97,7 @@ public class Puddle extends SolidEntity implements SaveTrait, Poolable, DrawTrai
|
||||
if(p == null){
|
||||
if(Net.client()) return; //not clientside.
|
||||
|
||||
Puddle puddle = Pooling.obtain(Puddle.class, Puddle::new);
|
||||
Puddle puddle = Pools.obtain(Puddle.class, Puddle::new);
|
||||
puddle.tile = tile;
|
||||
puddle.liquid = liquid;
|
||||
puddle.amount = amount;
|
||||
|
@ -1,6 +1,6 @@
|
||||
package io.anuke.mindustry.entities.effect;
|
||||
|
||||
import io.anuke.arc.graphics.Draw;
|
||||
import io.anuke.arc.graphics.g2d.Draw;
|
||||
import io.anuke.arc.math.Mathf;
|
||||
|
||||
public class RubbleDecal extends Decal{
|
||||
|
@ -2,7 +2,7 @@ package io.anuke.mindustry.entities.effect;
|
||||
|
||||
import io.anuke.arc.graphics.g2d.TextureRegion;
|
||||
import io.anuke.mindustry.world.Tile;
|
||||
import io.anuke.arc.graphics.Draw;
|
||||
import io.anuke.arc.graphics.g2d.Draw;
|
||||
import io.anuke.arc.util.Angles;
|
||||
import io.anuke.arc.math.Mathf;
|
||||
|
||||
|
@ -21,13 +21,13 @@ import io.anuke.mindustry.world.Pos;
|
||||
import io.anuke.mindustry.world.Tile;
|
||||
import io.anuke.mindustry.world.blocks.BuildBlock;
|
||||
import io.anuke.mindustry.world.blocks.BuildBlock.BuildEntity;
|
||||
import io.anuke.arc.Effects;
|
||||
import io.anuke.arc.entities.Effects;
|
||||
import io.anuke.arc.Events;
|
||||
import io.anuke.arc.Timers;
|
||||
import io.anuke.arc.util.Time;
|
||||
import io.anuke.arc.entities.trait.Entity;
|
||||
import io.anuke.arc.graphics.Draw;
|
||||
import io.anuke.arc.graphics.g2d.Draw;
|
||||
import io.anuke.arc.graphics.Fill;
|
||||
import io.anuke.arc.graphics.Lines;
|
||||
import io.anuke.arc.graphics.g2d.Lines;
|
||||
import io.anuke.arc.graphics.Shapes;
|
||||
import io.anuke.arc.util.Angles;
|
||||
import io.anuke.arc.math.Mathf;
|
||||
|
@ -5,7 +5,7 @@ import io.anuke.annotations.Annotations.Remote;
|
||||
import io.anuke.mindustry.content.fx.UnitFx;
|
||||
import io.anuke.mindustry.entities.Player;
|
||||
import io.anuke.mindustry.gen.Call;
|
||||
import io.anuke.arc.Effects;
|
||||
import io.anuke.arc.entities.Effects;
|
||||
import io.anuke.arc.entities.trait.SolidTrait;
|
||||
|
||||
public interface CarryTrait extends TeamTrait, SolidTrait, TargetTrait{
|
||||
|
@ -1,14 +1,14 @@
|
||||
package io.anuke.mindustry.entities.traits;
|
||||
|
||||
import io.anuke.mindustry.game.Team;
|
||||
import io.anuke.arc.entities.trait.PosTrait;
|
||||
import io.anuke.arc.entities.trait.SolidTrait;
|
||||
import io.anuke.arc.entities.trait.VelocityTrait;
|
||||
import io.anuke.arc.math.geom.Position;
|
||||
import io.anuke.mindustry.game.Team;
|
||||
|
||||
/**
|
||||
* Base interface for targetable entities.
|
||||
*/
|
||||
public interface TargetTrait extends PosTrait, VelocityTrait{
|
||||
public interface TargetTrait extends Position, VelocityTrait{
|
||||
|
||||
boolean isDead();
|
||||
|
||||
|
@ -1,7 +1,7 @@
|
||||
package io.anuke.mindustry.entities.units;
|
||||
|
||||
import io.anuke.arc.graphics.g2d.TextureRegion;
|
||||
import io.anuke.arc.math.Rectangle;
|
||||
import io.anuke.arc.math.geom.Rectangle;
|
||||
import io.anuke.annotations.Annotations.Loc;
|
||||
import io.anuke.annotations.Annotations.Remote;
|
||||
import io.anuke.mindustry.Vars;
|
||||
@ -24,10 +24,10 @@ import io.anuke.mindustry.type.Weapon;
|
||||
import io.anuke.mindustry.world.Tile;
|
||||
import io.anuke.mindustry.world.blocks.units.CommandCenter.CommandCenterEntity;
|
||||
import io.anuke.mindustry.world.meta.BlockFlag;
|
||||
import io.anuke.arc.Effects;
|
||||
import io.anuke.arc.Timers;
|
||||
import io.anuke.arc.entities.Effects;
|
||||
import io.anuke.arc.util.Time;
|
||||
import io.anuke.arc.entities.EntityGroup;
|
||||
import io.anuke.arc.graphics.Draw;
|
||||
import io.anuke.arc.graphics.g2d.Draw;
|
||||
import io.anuke.arc.util.*;
|
||||
|
||||
import java.io.DataInput;
|
||||
|
@ -10,14 +10,14 @@ import io.anuke.mindustry.net.Net;
|
||||
import io.anuke.mindustry.type.AmmoType;
|
||||
import io.anuke.mindustry.world.Tile;
|
||||
import io.anuke.mindustry.world.meta.BlockFlag;
|
||||
import io.anuke.arc.Timers;
|
||||
import io.anuke.arc.graphics.Draw;
|
||||
import io.anuke.arc.util.Time;
|
||||
import io.anuke.arc.graphics.g2d.Draw;
|
||||
import io.anuke.arc.util.*;
|
||||
|
||||
import static io.anuke.mindustry.Vars.world;
|
||||
|
||||
public abstract class FlyingUnit extends BaseUnit implements CarryTrait{
|
||||
protected static Translator vec = new Translator();
|
||||
protected static Vector2 vec = new Vector2();
|
||||
protected static float wobblyness = 0.6f;
|
||||
|
||||
protected Trail trail = new Trail(8);
|
||||
|
@ -12,11 +12,11 @@ import io.anuke.mindustry.type.ContentType;
|
||||
import io.anuke.mindustry.type.Weapon;
|
||||
import io.anuke.mindustry.world.Tile;
|
||||
import io.anuke.mindustry.world.blocks.Floor;
|
||||
import io.anuke.arc.Timers;
|
||||
import io.anuke.arc.graphics.Draw;
|
||||
import io.anuke.arc.util.Time;
|
||||
import io.anuke.arc.graphics.g2d.Draw;
|
||||
import io.anuke.arc.util.Angles;
|
||||
import io.anuke.arc.math.Mathf;
|
||||
import io.anuke.arc.util.Translator;
|
||||
import io.anuke.arc.util.Vector2;
|
||||
|
||||
import java.io.DataInput;
|
||||
import java.io.DataOutput;
|
||||
@ -26,7 +26,7 @@ import static io.anuke.mindustry.Vars.content;
|
||||
import static io.anuke.mindustry.Vars.world;
|
||||
|
||||
public abstract class GroundUnit extends BaseUnit{
|
||||
protected static Translator vec = new Translator();
|
||||
protected static Vector2 vec = new Vector2();
|
||||
|
||||
protected float walkTime;
|
||||
protected float stuckTime;
|
||||
|
@ -1,7 +1,7 @@
|
||||
package io.anuke.mindustry.entities.units;
|
||||
|
||||
import io.anuke.arc.math.Vector2;
|
||||
import io.anuke.arc.util.Translator;
|
||||
import io.anuke.arc.util.Vector2;
|
||||
|
||||
import static io.anuke.mindustry.Vars.threads;
|
||||
|
||||
@ -10,7 +10,7 @@ import static io.anuke.mindustry.Vars.threads;
|
||||
* Usually, squads are used by units spawned in the same wave.
|
||||
*/
|
||||
public class Squad{
|
||||
public Vector2 direction = new Translator();
|
||||
public Vector2 direction = new Vector2();
|
||||
public int units;
|
||||
|
||||
private long lastUpdated;
|
||||
|
@ -13,7 +13,7 @@ import io.anuke.mindustry.type.Item;
|
||||
import io.anuke.mindustry.type.Weapon;
|
||||
import io.anuke.mindustry.ui.ContentDisplay;
|
||||
import io.anuke.arc.function.Supplier;
|
||||
import io.anuke.arc.graphics.Draw;
|
||||
import io.anuke.arc.graphics.g2d.Draw;
|
||||
import io.anuke.arc.scene.ui.layout.Table;
|
||||
import io.anuke.arc.util.Bundles;
|
||||
import io.anuke.arc.util.Log;
|
||||
|
@ -15,7 +15,7 @@ import io.anuke.mindustry.entities.units.UnitState;
|
||||
import io.anuke.mindustry.gen.Call;
|
||||
import io.anuke.mindustry.net.Net;
|
||||
import io.anuke.mindustry.type.AmmoType;
|
||||
import io.anuke.arc.Effects;
|
||||
import io.anuke.arc.entities.Effects;
|
||||
import io.anuke.arc.math.Mathf;
|
||||
|
||||
import java.io.DataInput;
|
||||
|
@ -1,19 +1,18 @@
|
||||
package io.anuke.mindustry.game;
|
||||
|
||||
import io.anuke.arc.files.FileHandle;
|
||||
import io.anuke.arc.Core;
|
||||
import io.anuke.arc.Events;
|
||||
import io.anuke.arc.collection.Array;
|
||||
import io.anuke.arc.util.IntArray;
|
||||
import io.anuke.arc.util.IntMap;
|
||||
import io.anuke.arc.collection.IntArray;
|
||||
import io.anuke.arc.collection.IntMap;
|
||||
import io.anuke.arc.files.FileHandle;
|
||||
import io.anuke.arc.util.Strings;
|
||||
import io.anuke.arc.util.Time;
|
||||
import io.anuke.mindustry.core.GameState.State;
|
||||
import io.anuke.mindustry.game.EventType.StateChangeEvent;
|
||||
import io.anuke.mindustry.io.SaveIO;
|
||||
import io.anuke.mindustry.io.SaveMeta;
|
||||
import io.anuke.mindustry.maps.Map;
|
||||
import io.anuke.arc.Events;
|
||||
import io.anuke.arc.Timers;
|
||||
import io.anuke.arc.util.Strings;
|
||||
import io.anuke.arc.util.ThreadArray;
|
||||
|
||||
import java.io.IOException;
|
||||
import java.text.SimpleDateFormat;
|
||||
@ -23,7 +22,7 @@ import static io.anuke.mindustry.Vars.*;
|
||||
|
||||
public class Saves{
|
||||
private int nextSlot;
|
||||
private Array<SaveSlot> saves = new ThreadArray<>();
|
||||
private Array<SaveSlot> saves = new Array<>();
|
||||
private IntMap<SaveSlot> saveMap = new IntMap<>();
|
||||
private SaveSlot current;
|
||||
private boolean saving;
|
||||
@ -35,11 +34,9 @@ public class Saves{
|
||||
public Saves(){
|
||||
Events.on(StateChangeEvent.class, event -> {
|
||||
if(event.to == State.menu){
|
||||
threads.run(() -> {
|
||||
totalPlaytime = 0;
|
||||
lastTimestamp = 0;
|
||||
current = null;
|
||||
});
|
||||
totalPlaytime = 0;
|
||||
lastTimestamp = 0;
|
||||
current = null;
|
||||
}
|
||||
});
|
||||
}
|
||||
@ -68,7 +65,7 @@ public class Saves{
|
||||
SaveSlot current = this.current;
|
||||
|
||||
if(current != null && !state.is(State.menu)
|
||||
&& !(state.isPaused() && ui.hasDialog())){
|
||||
&& !(state.isPaused() && Core.scene.hasDialog())){
|
||||
if(lastTimestamp != 0){
|
||||
totalPlaytime += Time.timeSinceMillis(lastTimestamp);
|
||||
}
|
||||
@ -145,7 +142,7 @@ public class Saves{
|
||||
IntArray result = new IntArray(saves.size);
|
||||
for(int i = 0; i < saves.size; i++) result.add(saves.get(i).index);
|
||||
|
||||
Core.settings.putObject("save-slots", result);
|
||||
Core.settings.put("save-slots", result);
|
||||
Core.settings.save();
|
||||
}
|
||||
|
||||
@ -204,7 +201,7 @@ public class Saves{
|
||||
}
|
||||
|
||||
public void setName(String name){
|
||||
Core.settings.putString("save-" + index + "-name", name);
|
||||
Core.settings.put("save-" + index + "-name", name);
|
||||
Core.settings.save();
|
||||
}
|
||||
|
||||
@ -229,7 +226,7 @@ public class Saves{
|
||||
}
|
||||
|
||||
public void setAutosave(boolean save){
|
||||
Core.settings.putBool("save-" + index + "-autosave", save);
|
||||
Core.settings.put("save-" + index + "-autosave", save);
|
||||
Core.settings.save();
|
||||
}
|
||||
|
||||
|
@ -1,7 +1,7 @@
|
||||
package io.anuke.mindustry.game;
|
||||
|
||||
import io.anuke.arc.Core;
|
||||
import io.anuke.arc.graphics.Color;
|
||||
import io.anuke.arc.util.Bundles;
|
||||
|
||||
public enum Team{
|
||||
none(Color.valueOf("4d4e58")),
|
||||
|
@ -5,9 +5,7 @@ import io.anuke.arc.collection.ObjectSet;
|
||||
import io.anuke.mindustry.Vars;
|
||||
import io.anuke.mindustry.world.Tile;
|
||||
|
||||
/**
|
||||
* Class for various team-based utilities.
|
||||
*/
|
||||
/**Class for various team-based utilities.*/
|
||||
public class Teams{
|
||||
private TeamData[] map = new TeamData[Team.all.length];
|
||||
|
||||
|
@ -1,5 +1,6 @@
|
||||
package io.anuke.mindustry.game;
|
||||
|
||||
import io.anuke.arc.Core;
|
||||
import io.anuke.arc.collection.ObjectMap;
|
||||
import io.anuke.arc.collection.ObjectSet;
|
||||
import io.anuke.mindustry.game.EventType.UnlockEvent;
|
||||
@ -12,7 +13,7 @@ public class Unlocks{
|
||||
private ObjectMap<ContentType, ObjectSet<String>> unlocked = new ObjectMap<>();
|
||||
private boolean dirty;
|
||||
|
||||
static{
|
||||
public Unlocks(){
|
||||
Core.settings.setSerializer(ContentType.class, (stream, t) -> stream.writeInt(t.ordinal()), stream -> ContentType.values()[stream.readInt()]);
|
||||
}
|
||||
|
||||
|
@ -1,10 +1,10 @@
|
||||
package io.anuke.mindustry.game;
|
||||
|
||||
import io.anuke.arc.Core;
|
||||
import io.anuke.arc.files.FileHandle;
|
||||
import io.anuke.arc.collection.ObjectMap;
|
||||
import io.anuke.arc.util.PropertiesUtils;
|
||||
import io.anuke.arc.files.FileHandle;
|
||||
import io.anuke.arc.util.Strings;
|
||||
import io.anuke.arc.util.io.PropertiesUtils;
|
||||
|
||||
import java.io.IOException;
|
||||
|
||||
|
@ -12,7 +12,7 @@ import io.anuke.mindustry.world.Tile;
|
||||
import io.anuke.arc.Core;
|
||||
import io.anuke.arc.Events;
|
||||
import io.anuke.arc.Graphics;
|
||||
import io.anuke.arc.graphics.Draw;
|
||||
import io.anuke.arc.graphics.g2d.Draw;
|
||||
import io.anuke.arc.graphics.Surface;
|
||||
import io.anuke.arc.math.Mathf;
|
||||
|
||||
|
@ -3,7 +3,7 @@ package io.anuke.mindustry.graphics;
|
||||
import io.anuke.arc.graphics.Color;
|
||||
import io.anuke.arc.Core;
|
||||
import io.anuke.arc.Graphics;
|
||||
import io.anuke.arc.graphics.Draw;
|
||||
import io.anuke.arc.graphics.g2d.Draw;
|
||||
import io.anuke.arc.graphics.Shader;
|
||||
|
||||
import static io.anuke.mindustry.Vars.renderer;
|
||||
|
@ -14,9 +14,9 @@ import io.anuke.mindustry.world.Tile;
|
||||
import io.anuke.mindustry.world.blocks.Floor;
|
||||
import io.anuke.arc.Events;
|
||||
import io.anuke.arc.Graphics;
|
||||
import io.anuke.arc.Timers;
|
||||
import io.anuke.arc.util.Time;
|
||||
import io.anuke.arc.graphics.CacheBatch;
|
||||
import io.anuke.arc.graphics.Draw;
|
||||
import io.anuke.arc.graphics.g2d.Draw;
|
||||
import io.anuke.arc.graphics.Fill;
|
||||
import io.anuke.arc.util.Log;
|
||||
import io.anuke.arc.math.Mathf;
|
||||
|
@ -16,7 +16,7 @@ import io.anuke.mindustry.world.Tile;
|
||||
import io.anuke.arc.Events;
|
||||
import io.anuke.arc.Graphics;
|
||||
import io.anuke.arc.entities.EntityDraw;
|
||||
import io.anuke.arc.graphics.Draw;
|
||||
import io.anuke.arc.graphics.g2d.Draw;
|
||||
import io.anuke.arc.graphics.Fill;
|
||||
|
||||
import java.nio.ByteBuffer;
|
||||
|
@ -5,7 +5,7 @@ import io.anuke.arc.graphics.Pixmap;
|
||||
import io.anuke.arc.graphics.Pixmap.Format;
|
||||
import io.anuke.arc.graphics.Texture;
|
||||
import io.anuke.arc.graphics.g2d.TextureRegion;
|
||||
import io.anuke.arc.math.Rectangle;
|
||||
import io.anuke.arc.math.geom.Rectangle;
|
||||
import io.anuke.arc.collection.Array;
|
||||
import io.anuke.arc.util.Disposable;
|
||||
import io.anuke.mindustry.entities.Unit;
|
||||
@ -16,7 +16,7 @@ import io.anuke.mindustry.world.ColorMapper;
|
||||
import io.anuke.mindustry.world.Tile;
|
||||
import io.anuke.arc.Events;
|
||||
import io.anuke.arc.Graphics;
|
||||
import io.anuke.arc.graphics.Draw;
|
||||
import io.anuke.arc.graphics.g2d.Draw;
|
||||
import io.anuke.arc.graphics.Pixmaps;
|
||||
import io.anuke.arc.math.Mathf;
|
||||
import io.anuke.arc.util.ThreadArray;
|
||||
|
@ -2,7 +2,7 @@ package io.anuke.mindustry.graphics;
|
||||
|
||||
import io.anuke.arc.graphics.Color;
|
||||
import io.anuke.arc.math.MathUtils;
|
||||
import io.anuke.arc.math.Rectangle;
|
||||
import io.anuke.arc.math.geom.Rectangle;
|
||||
import io.anuke.arc.math.Vector2;
|
||||
import io.anuke.arc.collection.Array;
|
||||
import io.anuke.mindustry.content.blocks.Blocks;
|
||||
@ -16,10 +16,10 @@ import io.anuke.mindustry.world.meta.BlockBar;
|
||||
import io.anuke.arc.Core;
|
||||
import io.anuke.arc.Graphics;
|
||||
import io.anuke.arc.Settings;
|
||||
import io.anuke.arc.Timers;
|
||||
import io.anuke.arc.graphics.Draw;
|
||||
import io.anuke.arc.util.Time;
|
||||
import io.anuke.arc.graphics.g2d.Draw;
|
||||
import io.anuke.arc.graphics.Fill;
|
||||
import io.anuke.arc.graphics.Lines;
|
||||
import io.anuke.arc.graphics.g2d.Lines;
|
||||
import io.anuke.arc.math.Mathf;
|
||||
import io.anuke.arc.util.Tmp;
|
||||
|
||||
@ -101,8 +101,8 @@ public class OverlayRenderer{
|
||||
Draw.reset();
|
||||
|
||||
//draw selected block bars and info
|
||||
if(input.recipe == null && !ui.hasMouse()){
|
||||
Vector2 vec = Graphics.world(input.getMouseX(), input.getMouseY());
|
||||
if(input.recipe == null && !Core.scene.hasMouse()){
|
||||
Vector2 vec = Core.input.mouseWorld(input.getMouseX(), input.getMouseY());
|
||||
Tile tile = world.tileWorld(vec.x, vec.y);
|
||||
|
||||
if(tile != null && tile.block() != Blocks.air && tile.target().getTeam() == players[0].getTeam()){
|
||||
@ -181,7 +181,7 @@ public class OverlayRenderer{
|
||||
}
|
||||
|
||||
if(input.isDroppingItem()){
|
||||
Vector2 v = Graphics.world(input.getMouseX(), input.getMouseY());
|
||||
Vector2 v = Core.input.mouseWorld(input.getMouseX(), input.getMouseY());
|
||||
float size = 8;
|
||||
Draw.rect(player.inventory.getItem().item.region, v.x, v.y, size, size);
|
||||
Draw.color(Palette.accent);
|
||||
|
@ -4,8 +4,8 @@ import io.anuke.arc.Core;
|
||||
import io.anuke.arc.graphics.Color;
|
||||
import io.anuke.arc.graphics.g2d.TextureRegion;
|
||||
import io.anuke.arc.Core;
|
||||
import io.anuke.arc.Timers;
|
||||
import io.anuke.arc.graphics.Draw;
|
||||
import io.anuke.arc.util.Time;
|
||||
import io.anuke.arc.graphics.g2d.Draw;
|
||||
import io.anuke.arc.graphics.Shader;
|
||||
import io.anuke.arc.scene.ui.layout.Unit;
|
||||
|
||||
|
@ -3,10 +3,10 @@ package io.anuke.mindustry.graphics;
|
||||
import io.anuke.arc.graphics.Color;
|
||||
import io.anuke.arc.math.Vector2;
|
||||
import io.anuke.arc.util.FloatArray;
|
||||
import io.anuke.arc.Timers;
|
||||
import io.anuke.arc.graphics.Draw;
|
||||
import io.anuke.arc.util.Time;
|
||||
import io.anuke.arc.graphics.g2d.Draw;
|
||||
import io.anuke.arc.graphics.Fill;
|
||||
import io.anuke.arc.graphics.Lines;
|
||||
import io.anuke.arc.graphics.g2d.Lines;
|
||||
import io.anuke.arc.math.Mathf;
|
||||
|
||||
/**
|
||||
|
@ -1,7 +1,14 @@
|
||||
package io.anuke.mindustry.input;
|
||||
|
||||
import io.anuke.arc.Core;
|
||||
import io.anuke.arc.Graphics;
|
||||
import io.anuke.arc.KeyBinds;
|
||||
import io.anuke.arc.graphics.g2d.Draw;
|
||||
import io.anuke.arc.graphics.g2d.Lines;
|
||||
import io.anuke.arc.graphics.g2d.TextureRegion;
|
||||
import io.anuke.arc.input.InputDevice.DeviceType;
|
||||
import io.anuke.arc.math.Mathf;
|
||||
import io.anuke.arc.scene.ui.layout.Unit;
|
||||
import io.anuke.mindustry.content.blocks.Blocks;
|
||||
import io.anuke.mindustry.core.GameState.State;
|
||||
import io.anuke.mindustry.entities.Player;
|
||||
@ -11,15 +18,6 @@ import io.anuke.mindustry.input.PlaceUtils.NormalizeResult;
|
||||
import io.anuke.mindustry.net.Net;
|
||||
import io.anuke.mindustry.world.Block;
|
||||
import io.anuke.mindustry.world.Tile;
|
||||
import io.anuke.arc.Graphics;
|
||||
import io.anuke.arc.Inputs;
|
||||
import io.anuke.arc.Core.input.DeviceType;
|
||||
import io.anuke.arc.KeyBinds;
|
||||
import io.anuke.arc.Settings;
|
||||
import io.anuke.arc.graphics.Draw;
|
||||
import io.anuke.arc.graphics.Lines;
|
||||
import io.anuke.arc.scene.ui.layout.Unit;
|
||||
import io.anuke.arc.math.Mathf;
|
||||
|
||||
import static io.anuke.mindustry.Vars.*;
|
||||
import static io.anuke.mindustry.input.CursorType.*;
|
||||
@ -54,7 +52,7 @@ public class DesktopInput extends InputHandler{
|
||||
|
||||
for(TextureRegion region : regions){
|
||||
Draw.rect(region, x * tilesize + block.offset(), y * tilesize + block.offset(),
|
||||
region.getRegionWidth() * selectScale, region.getRegionHeight() * selectScale, block.rotate ? rotation * 90 : 0);
|
||||
region.getWidth() * selectScale, region.getHeight() * selectScale, block.rotate ? rotation * 90 : 0);
|
||||
}
|
||||
}else{
|
||||
Draw.color(Palette.removeBack);
|
||||
@ -71,16 +69,16 @@ public class DesktopInput extends InputHandler{
|
||||
|
||||
@Override
|
||||
public void drawOutlined(){
|
||||
int cursorX = tileX(Core.input.getX());
|
||||
int cursorY = tileY(Core.input.getY());
|
||||
int cursorX = tileX(Core.input.mouseX());
|
||||
int cursorY = tileY(Core.input.mouseY());
|
||||
|
||||
//draw selection(s)
|
||||
if(mode == placing && recipe != null){
|
||||
NormalizeResult result = PlaceUtils.normalizeArea(selectX, selectY, cursorX, cursorY, rotation, true, maxLength);
|
||||
|
||||
for(int i = 0; i <= result.getLength(); i += recipe.result.size){
|
||||
int x = selectX + i * Mathf.sign(cursorX - selectX) * Mathf.bool(result.isX());
|
||||
int y = selectY + i * Mathf.sign(cursorY - selectY) * Mathf.bool(!result.isX());
|
||||
int x = selectX + i * Mathf.sign(cursorX - selectX) * Mathf.num(result.isX());
|
||||
int y = selectY + i * Mathf.sign(cursorY - selectY) * Mathf.num(!result.isX());
|
||||
|
||||
if(i + recipe.result.size > result.getLength() && recipe.result.rotate){
|
||||
Draw.color(!validPlace(x, y, recipe.result, result.rotation) ? Palette.remove : Palette.placeRotate);
|
||||
@ -128,24 +126,22 @@ public class DesktopInput extends InputHandler{
|
||||
|
||||
@Override
|
||||
public void update(){
|
||||
if(Net.active() && Core.input.keyTap("player_list")){
|
||||
if(Net.active() && Core.input.keyTap(Binding.player_list)){
|
||||
ui.listfrag.toggle();
|
||||
}
|
||||
|
||||
if(Core.input.keyRelease(section, "select")){
|
||||
if(Core.input.keyRelease(Binding.select)){
|
||||
player.isShooting = false;
|
||||
}
|
||||
|
||||
if(state.is(State.menu) || ui.hasDialog()) return;
|
||||
|
||||
boolean controller = KeyBinds.getSection(section).device.type == DeviceType.controller;
|
||||
if(state.is(State.menu) || Core.scene.hasDialog()) return;
|
||||
|
||||
//zoom and rotate things
|
||||
if(Core.input.getAxisActive("zoom") && (Core.input.keyDown(section, "zoom_hold") || controller)){
|
||||
renderer.scaleCamera((int) Core.input.getAxisTapped(section, "zoom"));
|
||||
if(Math.abs(Core.input.axis(Binding.zoom)) > 0 && (Core.input.keyDown(Binding.zoom_hold))){
|
||||
renderer.scaleCamera((int) Core.input.axis(Binding.zoom));
|
||||
}
|
||||
|
||||
renderer.minimap.zoomBy(-(int) Core.input.getAxisTapped(section, "zoom_minimap"));
|
||||
renderer.minimap.zoomBy(-(int) Core.input.axis(Binding.zoom_minimap));
|
||||
|
||||
if(player.isDead()) return;
|
||||
|
||||
@ -167,9 +163,9 @@ public class DesktopInput extends InputHandler{
|
||||
selectScale = 0f;
|
||||
}
|
||||
|
||||
rotation = Mathf.mod(rotation + (int) Core.input.getAxisTapped(section, "rotate"), 4);
|
||||
rotation = Mathf.mod(rotation + (int) Core.input.axis(Binding.rotate), 4);
|
||||
|
||||
Tile cursor = tileAt(Core.input.getX(), Core.input.getY());
|
||||
Tile cursor = tileAt(Core.input.mouseX(), Core.input.mouseY());
|
||||
|
||||
if(player.isDead()){
|
||||
cursorType = normal;
|
||||
@ -186,12 +182,12 @@ public class DesktopInput extends InputHandler{
|
||||
cursorType = drill;
|
||||
}
|
||||
|
||||
if(canTapPlayer(Graphics.mouseWorld().x, Graphics.mouseWorld().y)){
|
||||
if(canTapPlayer(Core.input.mouseWorld().x, Core.input.mouseWorld().y)){
|
||||
cursorType = unload;
|
||||
}
|
||||
}
|
||||
|
||||
if(!ui.hasMouse()){
|
||||
if(!Core.scene.hasMouse()){
|
||||
cursorType.set();
|
||||
}
|
||||
|
||||
@ -199,52 +195,52 @@ public class DesktopInput extends InputHandler{
|
||||
}
|
||||
|
||||
void pollInput(){
|
||||
Tile selected = tileAt(Core.input.getX(), Core.input.getY());
|
||||
int cursorX = tileX(Core.input.getX());
|
||||
int cursorY = tileY(Core.input.getY());
|
||||
Tile selected = tileAt(Core.input.mouseX(), Core.input.mouseY());
|
||||
int cursorX = tileX(Core.input.mouseX());
|
||||
int cursorY = tileY(Core.input.mouseY());
|
||||
|
||||
if(Core.input.keyTap(section, "deselect")){
|
||||
if(Core.input.keyTap(Binding.deselect)){
|
||||
player.setMineTile(null);
|
||||
}
|
||||
|
||||
if(Core.input.keyTap(section, "select") && !ui.hasMouse()){
|
||||
if(Core.input.keyTap(Binding.select) && !Core.scene.hasMouse()){
|
||||
if(isPlacing()){
|
||||
selectX = cursorX;
|
||||
selectY = cursorY;
|
||||
mode = placing;
|
||||
}else if(selected != null){
|
||||
//only begin shooting if there's no cursor event
|
||||
if (!tileTapped(selected) && !tryTapPlayer(Graphics.mouseWorld().x, Graphics.mouseWorld().y) && player.getPlaceQueue().size == 0 && !droppingItem &&
|
||||
if (!tileTapped(selected) && !tryTapPlayer(Core.input.mouseWorld().x, Core.input.mouseWorld().y) && player.getPlaceQueue().size == 0 && !droppingItem &&
|
||||
!tryBeginMine(selected) && player.getMineTile() == null && !ui.chatfrag.chatOpen()) {
|
||||
player.isShooting = true;
|
||||
}
|
||||
}else if(!ui.chatfrag.chatOpen()){ //if it's out of bounds, shooting is just fine
|
||||
player.isShooting = true;
|
||||
}
|
||||
}else if(Core.input.keyTap(section, "deselect") && (recipe != null || mode != none || player.isBuilding()) &&
|
||||
!(player.getCurrentRequest() != null && player.getCurrentRequest().breaking && KeyBinds.get(section, "deselect") == KeyBinds.get(section, "break"))){
|
||||
}else if(Core.input.keyTap(Binding.deselect) && (recipe != null || mode != none || player.isBuilding()) &&
|
||||
!(player.getCurrentRequest() != null && player.getCurrentRequest().breaking && Core.keybinds.get(Binding.deselect) == Core.keybinds.get(Binding.break_block))){
|
||||
if(recipe == null){
|
||||
player.clearBuilding();
|
||||
}
|
||||
|
||||
recipe = null;
|
||||
mode = none;
|
||||
}else if(Core.input.keyTap(section, "break") && !ui.hasMouse()){
|
||||
}else if(Core.input.keyTap(Binding.break_block) && !Core.scene.hasMouse()){
|
||||
//is recalculated because setting the mode to breaking removes potential multiblock cursor offset
|
||||
mode = breaking;
|
||||
selectX = tileX(Core.input.getX());
|
||||
selectY = tileY(Core.input.getY());
|
||||
selectX = tileX(Core.input.mouseX());
|
||||
selectY = tileY(Core.input.mouseY());
|
||||
}
|
||||
|
||||
|
||||
if(Core.input.keyRelease(section, "break") || Core.input.keyRelease(section, "select")){
|
||||
if(Core.input.keyRelease(Binding.break_block) || Core.input.keyRelease(Binding.select)){
|
||||
|
||||
if(mode == placing){ //touch up while placing, place everything in selection
|
||||
NormalizeResult result = PlaceUtils.normalizeArea(selectX, selectY, cursorX, cursorY, rotation, true, maxLength);
|
||||
|
||||
for(int i = 0; i <= result.getLength(); i += recipe.result.size){
|
||||
int x = selectX + i * Mathf.sign(cursorX - selectX) * Mathf.bool(result.isX());
|
||||
int y = selectY + i * Mathf.sign(cursorY - selectY) * Mathf.bool(!result.isX());
|
||||
int x = selectX + i * Mathf.sign(cursorX - selectX) * Mathf.num(result.isX());
|
||||
int y = selectY + i * Mathf.sign(cursorY - selectY) * Mathf.num(!result.isX());
|
||||
|
||||
rotation = result.rotation;
|
||||
|
||||
@ -263,7 +259,7 @@ public class DesktopInput extends InputHandler{
|
||||
}
|
||||
|
||||
if(selected != null){
|
||||
tryDropItems(selected.target(), Graphics.mouseWorld().x, Graphics.mouseWorld().y);
|
||||
tryDropItems(selected.target(), Core.input.mouseWorld().x, Core.input.mouseWorld().y);
|
||||
}
|
||||
|
||||
mode = none;
|
||||
@ -278,12 +274,12 @@ public class DesktopInput extends InputHandler{
|
||||
|
||||
@Override
|
||||
public float getMouseX(){
|
||||
return !controlling ? Core.input.getX() : controlx;
|
||||
return !controlling ? Core.input.mouseX() : controlx;
|
||||
}
|
||||
|
||||
@Override
|
||||
public float getMouseY(){
|
||||
return !controlling ? Core.input.getY() : controly;
|
||||
return !controlling ? Core.input.mouseY() : controly;
|
||||
}
|
||||
|
||||
@Override
|
||||
@ -293,46 +289,10 @@ public class DesktopInput extends InputHandler{
|
||||
|
||||
@Override
|
||||
public void updateController(){
|
||||
//TODO no controller support
|
||||
//TODO move controller input to new class, ControllerInput
|
||||
boolean mousemove = Core.input.getDeltaX() > 1 || Core.input.getDeltaY() > 1;
|
||||
|
||||
if(state.is(State.menu)){
|
||||
droppingItem = false;
|
||||
}
|
||||
|
||||
if(KeyBinds.getSection(section).device.type == DeviceType.controller && (!mousemove || player.playerIndex > 0)){
|
||||
if(player.playerIndex > 0){
|
||||
controlling = true;
|
||||
}
|
||||
|
||||
float xa = Core.input.getAxis(section, "cursor_x");
|
||||
float ya = Core.input.getAxis(section, "cursor_y");
|
||||
|
||||
if(Math.abs(xa) > controllerMin || Math.abs(ya) > controllerMin){
|
||||
float scl = Core.settings.getInt("sensitivity", 100) / 100f * Unit.dp.scl(1f);
|
||||
controlx += xa * baseControllerSpeed * scl;
|
||||
controly -= ya * baseControllerSpeed * scl;
|
||||
controlling = true;
|
||||
|
||||
if(player.playerIndex == 0){
|
||||
Core.input.setCursorCatched(true);
|
||||
}
|
||||
|
||||
Core.input.getProcessor().touchDragged((int) getMouseX(), (int) getMouseY(), player.playerIndex);
|
||||
}
|
||||
|
||||
controlx = Mathf.clamp(controlx, 0, Core.graphics.getWidth());
|
||||
controly = Mathf.clamp(controly, 0, Core.graphics.getHeight());
|
||||
}else{
|
||||
controlling = false;
|
||||
Core.input.setCursorCatched(false);
|
||||
}
|
||||
|
||||
if(!controlling){
|
||||
controlx = Core.input.getX();
|
||||
controly = Core.input.getY();
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
|
@ -125,11 +125,11 @@ public abstract class InputHandler implements InputProcessor{
|
||||
}
|
||||
|
||||
public float getMouseX(){
|
||||
return Core.input.getX();
|
||||
return Core.input.mouseX();
|
||||
}
|
||||
|
||||
public float getMouseY(){
|
||||
return Core.input.getY();
|
||||
return Core.input.mouseY();
|
||||
}
|
||||
|
||||
public void resetCursor(){
|
||||
@ -240,7 +240,7 @@ public abstract class InputHandler implements InputProcessor{
|
||||
}
|
||||
|
||||
boolean canMine(Tile tile){
|
||||
return !ui.hasMouse()
|
||||
return !Core.scene.hasMouse()
|
||||
&& tile.floor().drops != null && tile.floor().drops.item.hardness <= player.mech.drillPower
|
||||
&& !tile.floor().playerUnmineable
|
||||
&& player.inventory.canAcceptItem(tile.floor().drops.item)
|
||||
@ -253,7 +253,7 @@ public abstract class InputHandler implements InputProcessor{
|
||||
}
|
||||
|
||||
int tileX(float cursorX){
|
||||
Vector2 vec = Graphics.world(cursorX, 0);
|
||||
Vector2 vec = Core.input.mouseWorld(cursorX, 0);
|
||||
if(selectedBlock()){
|
||||
vec.sub(recipe.result.offset(), recipe.result.offset());
|
||||
}
|
||||
@ -261,7 +261,7 @@ public abstract class InputHandler implements InputProcessor{
|
||||
}
|
||||
|
||||
int tileY(float cursorY){
|
||||
Vector2 vec = Graphics.world(0, cursorY);
|
||||
Vector2 vec = Core.input.mouseWorld(0, cursorY);
|
||||
if(selectedBlock()){
|
||||
vec.sub(recipe.result.offset(), recipe.result.offset());
|
||||
}
|
||||
@ -277,7 +277,7 @@ public abstract class InputHandler implements InputProcessor{
|
||||
}
|
||||
|
||||
public float mouseAngle(float x, float y){
|
||||
return Graphics.world(getMouseX(), getMouseY()).sub(x, y).angle();
|
||||
return Core.input.mouseWorld(getMouseX(), getMouseY()).sub(x, y).angle();
|
||||
}
|
||||
|
||||
public void remove(){
|
||||
@ -286,7 +286,7 @@ public abstract class InputHandler implements InputProcessor{
|
||||
}
|
||||
|
||||
public boolean canShoot(){
|
||||
return recipe == null && !ui.hasMouse() && !onConfigurable() && !isDroppingItem();
|
||||
return recipe == null && !Core.scene.hasMouse() && !onConfigurable() && !isDroppingItem();
|
||||
}
|
||||
|
||||
public boolean onConfigurable(){
|
||||
|
@ -6,7 +6,7 @@ import io.anuke.arc.graphics.g2d.TextureRegion;
|
||||
import io.anuke.arc.input.GestureDetector;
|
||||
import io.anuke.arc.input.GestureDetector.GestureListener;
|
||||
import io.anuke.arc.math.Interpolation;
|
||||
import io.anuke.arc.math.Rectangle;
|
||||
import io.anuke.arc.math.geom.Rectangle;
|
||||
import io.anuke.arc.math.Vector2;
|
||||
import io.anuke.arc.util.Align;
|
||||
import io.anuke.arc.collection.Array;
|
||||
@ -28,8 +28,8 @@ import io.anuke.mindustry.ui.dialogs.FloatingDialog;
|
||||
import io.anuke.mindustry.world.Block;
|
||||
import io.anuke.mindustry.world.Tile;
|
||||
import io.anuke.arc.*;
|
||||
import io.anuke.arc.graphics.Draw;
|
||||
import io.anuke.arc.graphics.Lines;
|
||||
import io.anuke.arc.graphics.g2d.Draw;
|
||||
import io.anuke.arc.graphics.g2d.Lines;
|
||||
import io.anuke.arc.scene.ui.layout.Table;
|
||||
import io.anuke.arc.math.Mathf;
|
||||
|
||||
@ -176,7 +176,7 @@ public class MobileInput extends InputHandler implements GestureListener{
|
||||
|
||||
for(TextureRegion region : regions){
|
||||
Draw.rect(region, tile.worldx() + offset, tile.worldy() + offset,
|
||||
region.getRegionWidth() * request.scale, region.getRegionHeight() * request.scale,
|
||||
region.getWidth() * request.scale, region.getHeight() * request.scale,
|
||||
request.recipe.result.rotate ? request.rotation * 90 : 0);
|
||||
}
|
||||
}else{
|
||||
@ -321,8 +321,8 @@ public class MobileInput extends InputHandler implements GestureListener{
|
||||
|
||||
//Draw lines
|
||||
if(lineMode){
|
||||
int tileX = tileX(Core.input.getX());
|
||||
int tileY = tileY(Core.input.getY());
|
||||
int tileX = tileX(Core.input.mouseX());
|
||||
int tileY = tileY(Core.input.mouseY());
|
||||
|
||||
//draw placing
|
||||
if(mode == placing && recipe != null){
|
||||
@ -344,7 +344,7 @@ public class MobileInput extends InputHandler implements GestureListener{
|
||||
|
||||
for(TextureRegion region : regions){
|
||||
Draw.rect(region, x * tilesize + recipe.result.offset(), y * tilesize + recipe.result.offset(),
|
||||
region.getRegionWidth() * lineScale, region.getRegionHeight() * lineScale, recipe.result.rotate ? result.rotation * 90 : 0);
|
||||
region.getWidth() * lineScale, region.getHeight() * lineScale, recipe.result.rotate ? result.rotation * 90 : 0);
|
||||
}
|
||||
}else{
|
||||
Draw.color(Palette.removeBack);
|
||||
@ -415,7 +415,7 @@ public class MobileInput extends InputHandler implements GestureListener{
|
||||
//get tile on cursor
|
||||
Tile cursor = tileAt(screenX, screenY);
|
||||
|
||||
float worldx = Graphics.world(screenX, screenY).x, worldy = Graphics.world(screenX, screenY).y;
|
||||
float worldx = Core.input.mouseWorld(screenX, screenY).x, worldy = Core.input.mouseWorld(screenX, screenY).y;
|
||||
|
||||
//ignore off-screen taps
|
||||
if(cursor == null || ui.hasMouse(screenX, screenY)) return false;
|
||||
@ -492,7 +492,7 @@ public class MobileInput extends InputHandler implements GestureListener{
|
||||
|
||||
if(tile == null) return false;
|
||||
|
||||
tryDropItems(tile.target(), Graphics.world(screenX, screenY).x, Graphics.world(screenX, screenY).y);
|
||||
tryDropItems(tile.target(), Core.input.mouseWorld(screenX, screenY).x, Core.input.mouseWorld(screenX, screenY).y);
|
||||
}
|
||||
return false;
|
||||
}
|
||||
@ -526,7 +526,7 @@ public class MobileInput extends InputHandler implements GestureListener{
|
||||
public boolean tap(float x, float y, int count, int button){
|
||||
if(state.is(State.menu) || lineMode) return false;
|
||||
|
||||
float worldx = Graphics.world(x, y).x, worldy = Graphics.world(x, y).y;
|
||||
float worldx = Core.input.mouseWorld(x, y).x, worldy = Core.input.mouseWorld(x, y).y;
|
||||
|
||||
//get tile on cursor
|
||||
Tile cursor = tileAt(x, y);
|
||||
@ -554,7 +554,7 @@ public class MobileInput extends InputHandler implements GestureListener{
|
||||
consumed = true;
|
||||
player.dropCarry(); //drop off unit
|
||||
}else{
|
||||
Unit unit = Units.getClosest(player.getTeam(), Graphics.world(x, y).x, Graphics.world(x, y).y, 4f, u -> !u.isFlying() && u.getMass() <= player.mech.carryWeight);
|
||||
Unit unit = Units.getClosest(player.getTeam(), Core.input.mouseWorld(x, y).x, Core.input.mouseWorld(x, y).y, 4f, u -> !u.isFlying() && u.getMass() <= player.mech.carryWeight);
|
||||
|
||||
if(unit != null){
|
||||
consumed = true;
|
||||
@ -714,7 +714,7 @@ public class MobileInput extends InputHandler implements GestureListener{
|
||||
|
||||
@Override
|
||||
public boolean touchDown(float x, float y, int pointer, int button){
|
||||
canPan = !ui.hasMouse();
|
||||
canPan = !Core.scene.hasMouse();
|
||||
return false;
|
||||
}
|
||||
|
||||
|
@ -4,7 +4,7 @@ import io.anuke.arc.Core;
|
||||
import io.anuke.arc.files.FileHandle;
|
||||
import io.anuke.arc.util.I18NBundle;
|
||||
import io.anuke.mindustry.Vars;
|
||||
import io.anuke.arc.Timers;
|
||||
import io.anuke.arc.util.Time;
|
||||
import io.anuke.arc.util.Log;
|
||||
|
||||
import java.util.Locale;
|
||||
|
@ -20,7 +20,7 @@ import io.anuke.mindustry.type.*;
|
||||
import io.anuke.mindustry.world.Block;
|
||||
import io.anuke.mindustry.world.Pos;
|
||||
import io.anuke.mindustry.world.Tile;
|
||||
import io.anuke.arc.Effects;
|
||||
import io.anuke.arc.entities.Effects;
|
||||
import io.anuke.arc.entities.Effects.Effect;
|
||||
import io.anuke.arc.entities.Entities;
|
||||
|
||||
|
@ -2,9 +2,9 @@ package io.anuke.mindustry.maps.missions;
|
||||
|
||||
import io.anuke.mindustry.graphics.Palette;
|
||||
import io.anuke.mindustry.world.Block;
|
||||
import io.anuke.arc.Timers;
|
||||
import io.anuke.arc.graphics.Draw;
|
||||
import io.anuke.arc.graphics.Lines;
|
||||
import io.anuke.arc.util.Time;
|
||||
import io.anuke.arc.graphics.g2d.Draw;
|
||||
import io.anuke.arc.graphics.g2d.Lines;
|
||||
import io.anuke.arc.util.Angles;
|
||||
import io.anuke.arc.util.Bundles;
|
||||
import io.anuke.arc.math.Mathf;
|
||||
|
@ -7,7 +7,7 @@ import io.anuke.mindustry.game.SpawnGroup;
|
||||
import io.anuke.mindustry.game.UnlockableContent;
|
||||
import io.anuke.mindustry.maps.Sector;
|
||||
import io.anuke.mindustry.maps.generation.Generation;
|
||||
import io.anuke.arc.Timers;
|
||||
import io.anuke.arc.util.Time;
|
||||
import io.anuke.arc.scene.ui.layout.Table;
|
||||
import io.anuke.arc.util.Bundles;
|
||||
|
||||
|
@ -4,22 +4,21 @@ import io.anuke.arc.Core;
|
||||
import io.anuke.arc.Net.HttpRequest;
|
||||
import io.anuke.arc.Net.HttpResponse;
|
||||
import io.anuke.arc.Net.HttpResponseListener;
|
||||
import io.anuke.arc.net.HttpRequestBuilder;
|
||||
import io.anuke.arc.collection.Array;
|
||||
import io.anuke.arc.util.IntMap;
|
||||
import io.anuke.arc.collection.IntMap;
|
||||
import io.anuke.arc.collection.ObjectMap;
|
||||
import io.anuke.arc.function.BiConsumer;
|
||||
import io.anuke.arc.function.Consumer;
|
||||
import io.anuke.arc.net.HttpRequestBuilder;
|
||||
import io.anuke.arc.util.Log;
|
||||
import io.anuke.arc.util.Time;
|
||||
import io.anuke.arc.util.pooling.Pools;
|
||||
import io.anuke.mindustry.core.Platform;
|
||||
import io.anuke.mindustry.gen.Call;
|
||||
import io.anuke.mindustry.net.Packets.KickReason;
|
||||
import io.anuke.mindustry.net.Packets.StreamBegin;
|
||||
import io.anuke.mindustry.net.Packets.StreamChunk;
|
||||
import io.anuke.mindustry.net.Streamable.StreamBuilder;
|
||||
import io.anuke.arc.Timers;
|
||||
import io.anuke.arc.function.BiConsumer;
|
||||
import io.anuke.arc.function.Consumer;
|
||||
import io.anuke.arc.util.Bundles;
|
||||
import io.anuke.arc.util.Log;
|
||||
import io.anuke.arc.util.Pooling;
|
||||
|
||||
import java.io.IOException;
|
||||
|
||||
@ -262,12 +261,12 @@ public class Net{
|
||||
if(clientLoaded || ((object instanceof Packet) && ((Packet) object).isImportant())){
|
||||
if(clientListeners.get(object.getClass()) != null)
|
||||
clientListeners.get(object.getClass()).accept(object);
|
||||
Pooling.free(object);
|
||||
Pools.free(object);
|
||||
}else if(!((object instanceof Packet) && ((Packet) object).isUnimportant())){
|
||||
packetQueue.add(object);
|
||||
Log.info("Queuing packet {0}", object);
|
||||
}else{
|
||||
Pooling.free(object);
|
||||
Pools.free(object);
|
||||
}
|
||||
}else{
|
||||
Log.err("Unhandled packet type: '{0}'!", object);
|
||||
@ -282,7 +281,7 @@ public class Net{
|
||||
if(serverListeners.get(object.getClass()) != null){
|
||||
if(serverListeners.get(object.getClass()) != null)
|
||||
serverListeners.get(object.getClass()).accept(connection, object);
|
||||
Pooling.free(object);
|
||||
Pools.free(object);
|
||||
}else{
|
||||
Log.err("Unhandled packet type: '{0}'!", object.getClass());
|
||||
}
|
||||
|
@ -15,7 +15,7 @@ import io.anuke.mindustry.maps.MapMeta;
|
||||
import io.anuke.mindustry.world.Tile;
|
||||
import io.anuke.mindustry.world.blocks.BlockPart;
|
||||
import io.anuke.arc.Core;
|
||||
import io.anuke.arc.Timers;
|
||||
import io.anuke.arc.util.Time;
|
||||
import io.anuke.arc.entities.Entities;
|
||||
import io.anuke.arc.util.Bits;
|
||||
|
||||
|
@ -7,7 +7,7 @@ import io.anuke.mindustry.Vars;
|
||||
import io.anuke.mindustry.game.UnlockableContent;
|
||||
import io.anuke.mindustry.graphics.Palette;
|
||||
import io.anuke.mindustry.ui.ContentDisplay;
|
||||
import io.anuke.arc.graphics.Draw;
|
||||
import io.anuke.arc.graphics.g2d.Draw;
|
||||
import io.anuke.arc.scene.ui.layout.Table;
|
||||
import io.anuke.arc.util.Bundles;
|
||||
import io.anuke.arc.util.Log;
|
||||
|
@ -5,7 +5,7 @@ import io.anuke.arc.graphics.g2d.TextureRegion;
|
||||
import io.anuke.mindustry.content.StatusEffects;
|
||||
import io.anuke.mindustry.game.UnlockableContent;
|
||||
import io.anuke.mindustry.ui.ContentDisplay;
|
||||
import io.anuke.arc.graphics.Draw;
|
||||
import io.anuke.arc.graphics.g2d.Draw;
|
||||
import io.anuke.arc.scene.ui.layout.Table;
|
||||
import io.anuke.arc.util.Bundles;
|
||||
|
||||
|
@ -7,7 +7,7 @@ import io.anuke.mindustry.entities.Player;
|
||||
import io.anuke.mindustry.game.UnlockableContent;
|
||||
import io.anuke.mindustry.graphics.Palette;
|
||||
import io.anuke.mindustry.ui.ContentDisplay;
|
||||
import io.anuke.arc.graphics.Draw;
|
||||
import io.anuke.arc.graphics.g2d.Draw;
|
||||
import io.anuke.arc.scene.ui.layout.Table;
|
||||
import io.anuke.arc.util.Bundles;
|
||||
|
||||
|
@ -11,13 +11,13 @@ import io.anuke.mindustry.entities.traits.ShooterTrait;
|
||||
import io.anuke.mindustry.game.Content;
|
||||
import io.anuke.mindustry.gen.Call;
|
||||
import io.anuke.mindustry.net.Net;
|
||||
import io.anuke.arc.Effects;
|
||||
import io.anuke.arc.entities.Effects;
|
||||
import io.anuke.arc.entities.Effects.Effect;
|
||||
import io.anuke.arc.graphics.Draw;
|
||||
import io.anuke.arc.graphics.g2d.Draw;
|
||||
import io.anuke.arc.util.Angles;
|
||||
import io.anuke.arc.util.Log;
|
||||
import io.anuke.arc.math.Mathf;
|
||||
import io.anuke.arc.util.Translator;
|
||||
import io.anuke.arc.util.Vector2;
|
||||
|
||||
public class Weapon extends Content{
|
||||
public final String name;
|
||||
@ -49,7 +49,7 @@ public class Weapon extends Content{
|
||||
/**whether to shoot the weapons in different arms one after another, rather than all at once*/
|
||||
protected boolean roundrobin = false;
|
||||
/**translator for vector calulations*/
|
||||
protected Translator tr = new Translator();
|
||||
protected Vector2 tr = new Vector2();
|
||||
|
||||
public TextureRegion equipRegion, region;
|
||||
|
||||
|
@ -4,8 +4,8 @@ import io.anuke.arc.graphics.Texture;
|
||||
import io.anuke.arc.graphics.g2d.Batch;
|
||||
import io.anuke.arc.graphics.g2d.TextureRegion;
|
||||
import io.anuke.mindustry.graphics.Palette;
|
||||
import io.anuke.arc.graphics.Draw;
|
||||
import io.anuke.arc.graphics.Lines;
|
||||
import io.anuke.arc.graphics.g2d.Draw;
|
||||
import io.anuke.arc.graphics.g2d.Lines;
|
||||
import io.anuke.arc.scene.ui.Image;
|
||||
import io.anuke.arc.scene.ui.layout.Unit;
|
||||
|
||||
|
@ -13,7 +13,7 @@ import io.anuke.mindustry.world.meta.BlockStat;
|
||||
import io.anuke.mindustry.world.meta.BlockStats;
|
||||
import io.anuke.mindustry.world.meta.StatCategory;
|
||||
import io.anuke.mindustry.world.meta.StatValue;
|
||||
import io.anuke.arc.graphics.Draw;
|
||||
import io.anuke.arc.graphics.g2d.Draw;
|
||||
import io.anuke.arc.scene.ui.layout.Table;
|
||||
import io.anuke.arc.util.Bundles;
|
||||
import io.anuke.arc.util.Strings;
|
||||
|
@ -2,7 +2,7 @@ package io.anuke.mindustry.ui;
|
||||
|
||||
import io.anuke.arc.graphics.g2d.Batch;
|
||||
import io.anuke.arc.graphics.g2d.TextureRegion;
|
||||
import io.anuke.arc.graphics.Draw;
|
||||
import io.anuke.arc.graphics.g2d.Draw;
|
||||
import io.anuke.arc.scene.Element;
|
||||
|
||||
public class GridImage extends Element{
|
||||
|
@ -5,7 +5,7 @@ import io.anuke.arc.graphics.g2d.TextureRegion;
|
||||
import io.anuke.mindustry.graphics.Shaders;
|
||||
import io.anuke.arc.Core;
|
||||
import io.anuke.arc.Graphics;
|
||||
import io.anuke.arc.graphics.Draw;
|
||||
import io.anuke.arc.graphics.g2d.Draw;
|
||||
import io.anuke.arc.scene.Element;
|
||||
import io.anuke.arc.scene.event.InputEvent;
|
||||
import io.anuke.arc.scene.event.InputListener;
|
||||
@ -32,7 +32,7 @@ public class Minimap extends Container<Element>{
|
||||
if(showFog){
|
||||
renderer.fog.getTexture().setFilter(TextureFilter.Nearest, TextureFilter.Nearest);
|
||||
|
||||
r.setRegion(renderer.minimap.getRegion());
|
||||
r.set(renderer.minimap.getRegion());
|
||||
float pad = renderer.fog.getPadding();
|
||||
|
||||
float px = r.getU() * world.width() + pad;
|
||||
|
@ -10,7 +10,7 @@ import io.anuke.mindustry.io.Contributors.Contributor;
|
||||
import io.anuke.mindustry.ui.Links;
|
||||
import io.anuke.mindustry.ui.Links.LinkEntry;
|
||||
import io.anuke.arc.Core;
|
||||
import io.anuke.arc.Timers;
|
||||
import io.anuke.arc.util.Time;
|
||||
import io.anuke.arc.scene.ui.ScrollPane;
|
||||
import io.anuke.arc.scene.ui.layout.Cell;
|
||||
import io.anuke.arc.scene.ui.layout.Table;
|
||||
|
@ -7,7 +7,7 @@ import io.anuke.arc.util.Align;
|
||||
import io.anuke.arc.collection.Array;
|
||||
import io.anuke.mindustry.Vars;
|
||||
import io.anuke.mindustry.core.Platform;
|
||||
import io.anuke.arc.Timers;
|
||||
import io.anuke.arc.util.Time;
|
||||
import io.anuke.arc.function.Consumer;
|
||||
import io.anuke.arc.function.Predicate;
|
||||
import io.anuke.arc.scene.event.Touchable;
|
||||
@ -178,7 +178,7 @@ public class FileChooser extends FloatingDialog{
|
||||
//if is mac, don't display extra info since you can only ever go to downloads
|
||||
navigation.setText(OS.isMac ? directory.name() : directory.toString());
|
||||
|
||||
GlyphLayout layout = Pooling.obtain(GlyphLayout.class, GlyphLayout::new);
|
||||
GlyphLayout layout = Pools.obtain(GlyphLayout.class, GlyphLayout::new);
|
||||
|
||||
layout.setText(Core.font, navigation.getText());
|
||||
|
||||
@ -188,7 +188,7 @@ public class FileChooser extends FloatingDialog{
|
||||
navigation.setCursorPosition(navigation.getText().length());
|
||||
}
|
||||
|
||||
Pooling.free(layout);
|
||||
Pools.free(layout);
|
||||
|
||||
files.clearChildren();
|
||||
files.top().left();
|
||||
|
@ -11,7 +11,7 @@ import io.anuke.mindustry.game.Team;
|
||||
import io.anuke.mindustry.maps.generation.WorldGenerator.GenResult;
|
||||
import io.anuke.mindustry.type.Item;
|
||||
import io.anuke.mindustry.world.ColorMapper;
|
||||
import io.anuke.arc.graphics.Draw;
|
||||
import io.anuke.arc.graphics.g2d.Draw;
|
||||
import io.anuke.arc.scene.Element;
|
||||
import io.anuke.arc.scene.event.InputEvent;
|
||||
import io.anuke.arc.scene.event.InputListener;
|
||||
|
@ -5,7 +5,7 @@ import io.anuke.mindustry.Vars;
|
||||
import io.anuke.mindustry.entities.Player;
|
||||
import io.anuke.mindustry.net.Net;
|
||||
import io.anuke.arc.Settings;
|
||||
import io.anuke.arc.Timers;
|
||||
import io.anuke.arc.util.Time;
|
||||
import io.anuke.arc.scene.ui.ImageButton;
|
||||
import io.anuke.arc.util.Bundles;
|
||||
import io.anuke.arc.util.Strings;
|
||||
|
@ -11,7 +11,7 @@ import io.anuke.mindustry.game.Version;
|
||||
import io.anuke.mindustry.net.Host;
|
||||
import io.anuke.mindustry.net.Net;
|
||||
import io.anuke.arc.Settings;
|
||||
import io.anuke.arc.Timers;
|
||||
import io.anuke.arc.util.Time;
|
||||
import io.anuke.arc.scene.style.Drawable;
|
||||
import io.anuke.arc.scene.ui.*;
|
||||
import io.anuke.arc.scene.ui.layout.Cell;
|
||||
|
@ -9,7 +9,7 @@ import io.anuke.mindustry.core.Platform;
|
||||
import io.anuke.mindustry.io.SaveIO;
|
||||
import io.anuke.mindustry.game.Saves.SaveSlot;
|
||||
import io.anuke.arc.Core;
|
||||
import io.anuke.arc.Timers;
|
||||
import io.anuke.arc.util.Time;
|
||||
import io.anuke.arc.scene.ui.ScrollPane;
|
||||
import io.anuke.arc.scene.ui.TextButton;
|
||||
import io.anuke.arc.scene.ui.layout.Table;
|
||||
|
@ -2,7 +2,7 @@ package io.anuke.mindustry.ui.dialogs;
|
||||
|
||||
import io.anuke.arc.util.Scaling;
|
||||
import io.anuke.mindustry.entities.Player;
|
||||
import io.anuke.arc.graphics.Draw;
|
||||
import io.anuke.arc.graphics.g2d.Draw;
|
||||
import io.anuke.arc.scene.ui.Image;
|
||||
import io.anuke.arc.scene.ui.layout.Stack;
|
||||
import io.anuke.arc.scene.ui.layout.Table;
|
||||
|
@ -2,7 +2,7 @@ package io.anuke.mindustry.ui.dialogs;
|
||||
|
||||
import io.anuke.mindustry.core.GameState.State;
|
||||
import io.anuke.mindustry.game.Saves.SaveSlot;
|
||||
import io.anuke.arc.Timers;
|
||||
import io.anuke.arc.util.Time;
|
||||
import io.anuke.arc.scene.ui.TextButton;
|
||||
import io.anuke.arc.util.Bundles;
|
||||
|
||||
|
@ -9,7 +9,7 @@ import io.anuke.mindustry.Vars;
|
||||
import io.anuke.mindustry.graphics.Palette;
|
||||
import io.anuke.mindustry.maps.Sector;
|
||||
import io.anuke.arc.Graphics;
|
||||
import io.anuke.arc.graphics.Draw;
|
||||
import io.anuke.arc.graphics.g2d.Draw;
|
||||
import io.anuke.arc.scene.Element;
|
||||
import io.anuke.arc.scene.Group;
|
||||
import io.anuke.arc.scene.event.InputEvent;
|
||||
|
@ -7,7 +7,7 @@ import io.anuke.mindustry.graphics.Palette;
|
||||
import io.anuke.mindustry.graphics.Shaders;
|
||||
import io.anuke.arc.Core;
|
||||
import io.anuke.arc.Graphics;
|
||||
import io.anuke.arc.graphics.Draw;
|
||||
import io.anuke.arc.graphics.g2d.Draw;
|
||||
import io.anuke.arc.graphics.Fill;
|
||||
import io.anuke.arc.scene.Group;
|
||||
import io.anuke.arc.scene.ui.layout.Unit;
|
||||
@ -30,8 +30,8 @@ public class BackgroundFragment extends Fragment{
|
||||
boolean portrait = Core.graphics.getWidth() < Core.graphics.getHeight();
|
||||
float logoscl = (int) Unit.dp.scl(7) * (portrait ? 5f / 7f : 1f);
|
||||
TextureRegion logo = Core.skin.getRegion("logotext");
|
||||
float logow = logo.getRegionWidth() * logoscl;
|
||||
float logoh = logo.getRegionHeight() * logoscl;
|
||||
float logow = logo.getWidth() * logoscl;
|
||||
float logoh = logo.getHeight() * logoscl;
|
||||
|
||||
Draw.color();
|
||||
Core.batch.draw(logo, (int) (w / 2 - logow / 2), (int) (h - logoh + 15 - Unit.dp.scl(portrait ? 30f : 0)), logow, logoh);
|
||||
|
Some files were not shown because too many files have changed in this diff Show More
Loading…
Reference in New Issue
Block a user