1
0
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:
Anuken 2018-12-22 22:17:28 -05:00
parent 3abfaf1bca
commit 44e4ffbe62
175 changed files with 666 additions and 688 deletions

View File

@ -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'
}
}

View File

@ -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();

View File

@ -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;

View File

@ -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;

View File

@ -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}};
}

View File

@ -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;

View File

@ -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;

View File

@ -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{

View File

@ -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"){{

View File

@ -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;

View File

@ -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();
};
}};

View File

@ -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{

View File

@ -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;

View File

@ -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;

View File

@ -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;

View File

@ -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;

View File

@ -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;

View File

@ -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;

View File

@ -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;

View File

@ -188,7 +188,7 @@ public class Control implements ApplicationListener{
}
inputs[index] = input;
Core.input.addInputProcessor(input);
Core.input.addProcessor(input);
}
public void removePlayer(){

View File

@ -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();
});
}

View File

@ -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;

View File

@ -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;

View File

@ -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);

View File

@ -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;

View File

@ -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));
}
}

View File

@ -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());
}
}

View File

@ -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");

View File

@ -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);
}

View File

@ -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;

View File

@ -22,7 +22,7 @@ public class OperationStack{
stack.add(action);
if(stack.size > maxSize){
stack.removeIndex(0);
stack.removeAt(0);
}
}

View File

@ -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);

View File

@ -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;

View File

@ -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.

View File

@ -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);
}

View File

@ -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

View File

@ -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{

View File

@ -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;

View File

@ -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

View File

@ -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;

View File

@ -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();

View File

@ -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;

View File

@ -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{

View File

@ -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;

View File

@ -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());

View File

@ -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;

View File

@ -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);

View File

@ -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

View File

@ -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;

View File

@ -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{

View File

@ -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;

View File

@ -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;

View File

@ -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{

View File

@ -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();

View File

@ -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;

View File

@ -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);

View File

@ -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;

View File

@ -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;

View File

@ -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;

View File

@ -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;

View File

@ -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();
}

View File

@ -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")),

View File

@ -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];

View File

@ -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()]);
}

View File

@ -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;

View File

@ -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;

View File

@ -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;

View File

@ -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;

View File

@ -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;

View File

@ -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;

View File

@ -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);

View File

@ -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;

View File

@ -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;
/**

View File

@ -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();
}
}
}

View File

@ -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(){

View File

@ -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;
}

View File

@ -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;

View File

@ -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;

View File

@ -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;

View File

@ -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;

View File

@ -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());
}

View File

@ -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;

View File

@ -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;

View File

@ -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;

View File

@ -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;

View File

@ -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;

View File

@ -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;

View File

@ -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;

View File

@ -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{

View File

@ -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;

View File

@ -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;

View File

@ -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();

View File

@ -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;

View File

@ -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;

View File

@ -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;

View File

@ -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;

View File

@ -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;

View File

@ -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;

View File

@ -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;

View File

@ -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