From 0dd9d2b460077f8dd62692a7ec3d241bd6709dcb Mon Sep 17 00:00:00 2001 From: Anuken Date: Sat, 2 Feb 2019 15:53:35 -0500 Subject: [PATCH] Moved entity package from Arc / Entity code cleanup --- .../annotations/RemoteReadGenerator.java | 4 +- .../annotations/RemoteWriteGenerator.java | 2 +- core/assets/bundles/bundle.properties | 2 +- core/build.gradle | 2 +- core/src/io/anuke/mindustry/Vars.java | 14 +- .../io/anuke/mindustry/ai/BlockIndexer.java | 2 +- .../io/anuke/mindustry/ai/WaveSpawner.java | 4 +- .../io/anuke/mindustry/content/Bullets.java | 4 +- core/src/io/anuke/mindustry/content/Fx.java | 4 +- .../src/io/anuke/mindustry/content/Mechs.java | 20 +- .../mindustry/content/StatusEffects.java | 2 +- .../io/anuke/mindustry/content/UnitTypes.java | 24 +- .../anuke/mindustry/core/ContentLoader.java | 2 +- core/src/io/anuke/mindustry/core/Control.java | 6 +- core/src/io/anuke/mindustry/core/Logic.java | 10 +- .../io/anuke/mindustry/core/NetClient.java | 6 +- .../io/anuke/mindustry/core/NetServer.java | 10 +- .../src/io/anuke/mindustry/core/Renderer.java | 22 +- core/src/io/anuke/mindustry/core/World.java | 2 +- .../io/anuke/mindustry/entities/Damage.java | 12 +- .../io/anuke/mindustry/entities/Effects.java | 166 +++++++++++ .../io/anuke/mindustry/entities/Entities.java | 66 +++++ .../mindustry/entities/EntityCollisions.java | 261 ++++++++++++++++++ .../anuke/mindustry/entities/EntityDraw.java | 49 ++++ .../anuke/mindustry/entities/EntityGroup.java | 194 +++++++++++++ .../anuke/mindustry/entities/EntityQuery.java | 95 +++++++ .../mindustry/entities/UnitInventory.java | 88 ------ .../io/anuke/mindustry/entities/Units.java | 23 +- .../entities/bullet/ArtilleryBulletType.java | 4 +- .../entities/bullet/BasicBulletType.java | 2 +- .../mindustry/entities/bullet/Bullet.java | 11 +- .../mindustry/entities/bullet/BulletType.java | 4 +- .../entities/bullet/LiquidBulletType.java | 2 +- .../entities/bullet/MassDriverBolt.java | 2 +- .../entities/bullet/MissileBulletType.java | 2 +- .../mindustry/entities/effect/Decal.java | 6 +- .../anuke/mindustry/entities/effect/Fire.java | 8 +- .../entities/effect/GroundEffectEntity.java | 8 +- .../entities/effect/ItemTransfer.java | 10 +- .../mindustry/entities/effect/Lightning.java | 11 +- .../mindustry/entities/effect/Puddle.java | 8 +- .../mindustry/entities/impl/BaseEntity.java | 61 ++++ .../entities/impl/DestructibleEntity.java | 45 +++ .../mindustry/entities/impl/EffectEntity.java | 72 +++++ .../mindustry/entities/impl/SolidEntity.java | 19 ++ .../mindustry/entities/impl/TimedEntity.java | 34 +++ .../entities/traits/AbsorbTrait.java | 3 - .../entities/traits/BuilderTrait.java | 45 +-- .../entities/traits/DamageTrait.java | 5 + .../mindustry/entities/traits/DrawTrait.java | 10 + .../mindustry/entities/traits/Entity.java | 46 +++ .../entities/traits/HealthTrait.java | 48 ++++ .../entities/traits/InventoryTrait.java | 7 - .../mindustry/entities/traits/MoveTrait.java | 20 ++ .../mindustry/entities/traits/SaveTrait.java | 2 - .../mindustry/entities/traits/ScaleTrait.java | 43 +++ .../entities/traits/ShooterTrait.java | 3 +- .../mindustry/entities/traits/SolidTrait.java | 43 +++ .../entities/traits/SpawnerTrait.java | 11 +- .../mindustry/entities/traits/SyncTrait.java | 1 - .../entities/traits/TargetTrait.java | 2 - .../mindustry/entities/traits/TeamTrait.java | 1 - .../mindustry/entities/traits/TimeTrait.java | 23 ++ .../entities/traits/VelocityTrait.java | 36 +++ .../entities/{units => type}/BaseUnit.java | 56 +--- .../entities/{units => type}/FlyingUnit.java | 3 +- .../entities/{units => type}/GroundUnit.java | 5 +- .../mindustry/entities/{ => type}/Player.java | 58 ++-- .../entities/{ => type}/TileEntity.java | 10 +- .../mindustry/entities/{ => type}/Unit.java | 81 ++++-- .../entities/type/types/Crawler.java | 6 + .../mindustry/entities/type/types/Dagger.java | 7 + .../entities/{units => type}/types/Drone.java | 32 +-- .../entities/type/types/Eruptor.java | 6 + .../{units => type}/types/Fortress.java | 4 +- .../mindustry/entities/type/types/Ghoul.java | 7 + .../entities/type/types/Phantom.java | 5 + .../entities/type/types/Revenant.java | 7 + .../mindustry/entities/type/types/Spirit.java | 4 + .../mindustry/entities/type/types/Titan.java | 7 + .../mindustry/entities/type/types/Wraith.java | 7 + .../entities/{ => units}/Statuses.java | 5 +- .../mindustry/entities/units/UnitDrops.java | 3 +- .../entities/units/types/Crawler.java | 6 - .../entities/units/types/Dagger.java | 7 - .../entities/units/types/Eruptor.java | 6 - .../mindustry/entities/units/types/Ghoul.java | 7 - .../entities/units/types/Phantom.java | 5 - .../entities/units/types/Revenant.java | 7 - .../entities/units/types/Spirit.java | 4 - .../mindustry/entities/units/types/Titan.java | 7 - .../entities/units/types/Wraith.java | 7 - .../io/anuke/mindustry/game/EventType.java | 2 +- .../io/anuke/mindustry/game/SpawnGroup.java | 8 +- .../mindustry/graphics/BlockRenderer.java | 6 +- .../mindustry/graphics/MinimapRenderer.java | 2 +- .../mindustry/graphics/OverlayRenderer.java | 6 +- .../anuke/mindustry/input/DesktopInput.java | 2 +- .../anuke/mindustry/input/InputHandler.java | 26 +- .../io/anuke/mindustry/input/MobileInput.java | 8 +- .../anuke/mindustry/io/SaveFileVersion.java | 6 +- core/src/io/anuke/mindustry/io/TypeIO.java | 12 +- .../src/io/anuke/mindustry/net/NetworkIO.java | 4 +- .../mindustry/net/ValidateException.java | 2 +- core/src/io/anuke/mindustry/type/Mech.java | 4 +- .../io/anuke/mindustry/type/StatusEffect.java | 8 +- .../{entities/units => type}/UnitType.java | 14 +- core/src/io/anuke/mindustry/type/Weapon.java | 6 +- .../io/anuke/mindustry/ui/ContentDisplay.java | 4 +- .../mindustry/ui/dialogs/HostDialog.java | 2 +- .../mindustry/ui/dialogs/JoinDialog.java | 2 +- .../ui/dialogs/LocalPlayerDialog.java | 2 +- .../ui/fragments/BlockInventoryFragment.java | 10 +- .../ui/fragments/PlacementFragment.java | 2 +- core/src/io/anuke/mindustry/world/Block.java | 6 +- .../anuke/mindustry/world/BlockStorage.java | 6 +- core/src/io/anuke/mindustry/world/Tile.java | 2 +- .../mindustry/world/blocks/BuildBlock.java | 8 +- .../anuke/mindustry/world/blocks/Floor.java | 4 +- .../world/blocks/defense/DeflectorWall.java | 2 +- .../mindustry/world/blocks/defense/Door.java | 8 +- .../world/blocks/defense/ForceProjector.java | 12 +- .../world/blocks/defense/MendProjector.java | 4 +- .../blocks/defense/OverdriveProjector.java | 2 +- .../world/blocks/defense/ShockMine.java | 2 +- .../world/blocks/defense/SurgeWall.java | 2 +- .../blocks/defense/turrets/ChargeTurret.java | 6 +- .../blocks/defense/turrets/CooledTurret.java | 4 +- .../blocks/defense/turrets/ItemTurret.java | 2 +- .../blocks/defense/turrets/LaserTurret.java | 4 +- .../blocks/defense/turrets/LiquidTurret.java | 2 +- .../world/blocks/defense/turrets/Turret.java | 6 +- .../distribution/BufferedItemBridge.java | 2 +- .../world/blocks/distribution/Conduit.java | 2 +- .../world/blocks/distribution/Conveyor.java | 4 +- .../world/blocks/distribution/ItemBridge.java | 4 +- .../world/blocks/distribution/Junction.java | 2 +- .../world/blocks/distribution/MassDriver.java | 8 +- .../world/blocks/distribution/Router.java | 2 +- .../world/blocks/distribution/Sorter.java | 4 +- .../world/blocks/power/FusionReactor.java | 2 +- .../blocks/power/ItemLiquidGenerator.java | 4 +- .../world/blocks/power/NuclearReactor.java | 4 +- .../world/blocks/power/PowerGenerator.java | 2 +- .../world/blocks/power/PowerNode.java | 4 +- .../world/blocks/power/SolarGenerator.java | 2 +- .../world/blocks/power/ThermalGenerator.java | 4 +- .../world/blocks/production/Cultivator.java | 2 +- .../world/blocks/production/Drill.java | 6 +- .../world/blocks/production/Fracker.java | 2 +- .../blocks/production/GenericCrafter.java | 6 +- .../world/blocks/production/Incinerator.java | 6 +- .../world/blocks/production/LiquidMixer.java | 2 +- .../world/blocks/production/PowerCrafter.java | 2 +- .../world/blocks/production/PowerSmelter.java | 6 +- .../world/blocks/production/Separator.java | 2 +- .../world/blocks/production/Smelter.java | 6 +- .../world/blocks/production/SolidPump.java | 6 +- .../world/blocks/sandbox/LiquidSource.java | 4 +- .../world/blocks/storage/CoreBlock.java | 23 +- .../world/blocks/storage/LaunchPad.java | 4 +- .../world/blocks/storage/SortedUnloader.java | 4 +- .../world/blocks/storage/StorageBlock.java | 2 +- .../mindustry/world/blocks/units/MechPad.java | 22 +- .../world/blocks/units/RepairPoint.java | 4 +- .../world/blocks/units/UnitFactory.java | 10 +- .../mindustry/world/consumers/Consume.java | 2 +- .../world/consumers/ConsumeItem.java | 2 +- .../world/consumers/ConsumeItemFilter.java | 2 +- .../world/consumers/ConsumeItems.java | 2 +- .../world/consumers/ConsumeLiquid.java | 2 +- .../world/consumers/ConsumeLiquidFilter.java | 2 +- .../world/consumers/ConsumePower.java | 2 +- .../world/modules/ConsumeModule.java | 2 +- .../anuke/mindustry/server/ServerControl.java | 4 +- tests/src/test/java/ApplicationTests.java | 4 +- tools/src/io/anuke/mindustry/Generators.java | 2 +- 177 files changed, 1872 insertions(+), 666 deletions(-) create mode 100644 core/src/io/anuke/mindustry/entities/Effects.java create mode 100755 core/src/io/anuke/mindustry/entities/Entities.java create mode 100644 core/src/io/anuke/mindustry/entities/EntityCollisions.java create mode 100644 core/src/io/anuke/mindustry/entities/EntityDraw.java create mode 100644 core/src/io/anuke/mindustry/entities/EntityGroup.java create mode 100644 core/src/io/anuke/mindustry/entities/EntityQuery.java delete mode 100644 core/src/io/anuke/mindustry/entities/UnitInventory.java create mode 100755 core/src/io/anuke/mindustry/entities/impl/BaseEntity.java create mode 100644 core/src/io/anuke/mindustry/entities/impl/DestructibleEntity.java create mode 100644 core/src/io/anuke/mindustry/entities/impl/EffectEntity.java create mode 100644 core/src/io/anuke/mindustry/entities/impl/SolidEntity.java create mode 100644 core/src/io/anuke/mindustry/entities/impl/TimedEntity.java create mode 100644 core/src/io/anuke/mindustry/entities/traits/DamageTrait.java create mode 100644 core/src/io/anuke/mindustry/entities/traits/DrawTrait.java create mode 100644 core/src/io/anuke/mindustry/entities/traits/Entity.java create mode 100644 core/src/io/anuke/mindustry/entities/traits/HealthTrait.java delete mode 100644 core/src/io/anuke/mindustry/entities/traits/InventoryTrait.java create mode 100644 core/src/io/anuke/mindustry/entities/traits/MoveTrait.java create mode 100644 core/src/io/anuke/mindustry/entities/traits/ScaleTrait.java create mode 100644 core/src/io/anuke/mindustry/entities/traits/SolidTrait.java create mode 100644 core/src/io/anuke/mindustry/entities/traits/TimeTrait.java create mode 100644 core/src/io/anuke/mindustry/entities/traits/VelocityTrait.java rename core/src/io/anuke/mindustry/entities/{units => type}/BaseUnit.java (83%) rename core/src/io/anuke/mindustry/entities/{units => type}/FlyingUnit.java (98%) rename core/src/io/anuke/mindustry/entities/{units => type}/GroundUnit.java (98%) rename core/src/io/anuke/mindustry/entities/{ => type}/Player.java (93%) rename core/src/io/anuke/mindustry/entities/{ => type}/TileEntity.java (97%) rename core/src/io/anuke/mindustry/entities/{ => type}/Unit.java (84%) create mode 100644 core/src/io/anuke/mindustry/entities/type/types/Crawler.java create mode 100644 core/src/io/anuke/mindustry/entities/type/types/Dagger.java rename core/src/io/anuke/mindustry/entities/{units => type}/types/Drone.java (91%) create mode 100644 core/src/io/anuke/mindustry/entities/type/types/Eruptor.java rename core/src/io/anuke/mindustry/entities/{units => type}/types/Fortress.java (78%) create mode 100644 core/src/io/anuke/mindustry/entities/type/types/Ghoul.java create mode 100644 core/src/io/anuke/mindustry/entities/type/types/Phantom.java create mode 100644 core/src/io/anuke/mindustry/entities/type/types/Revenant.java create mode 100644 core/src/io/anuke/mindustry/entities/type/types/Spirit.java create mode 100644 core/src/io/anuke/mindustry/entities/type/types/Titan.java create mode 100644 core/src/io/anuke/mindustry/entities/type/types/Wraith.java rename core/src/io/anuke/mindustry/entities/{ => units}/Statuses.java (96%) delete mode 100644 core/src/io/anuke/mindustry/entities/units/types/Crawler.java delete mode 100644 core/src/io/anuke/mindustry/entities/units/types/Dagger.java delete mode 100644 core/src/io/anuke/mindustry/entities/units/types/Eruptor.java delete mode 100644 core/src/io/anuke/mindustry/entities/units/types/Ghoul.java delete mode 100644 core/src/io/anuke/mindustry/entities/units/types/Phantom.java delete mode 100644 core/src/io/anuke/mindustry/entities/units/types/Revenant.java delete mode 100644 core/src/io/anuke/mindustry/entities/units/types/Spirit.java delete mode 100644 core/src/io/anuke/mindustry/entities/units/types/Titan.java delete mode 100644 core/src/io/anuke/mindustry/entities/units/types/Wraith.java rename core/src/io/anuke/mindustry/{entities/units => type}/UnitType.java (86%) diff --git a/annotations/src/main/java/io/anuke/annotations/RemoteReadGenerator.java b/annotations/src/main/java/io/anuke/annotations/RemoteReadGenerator.java index 61382d3f24..69dbe29f8b 100644 --- a/annotations/src/main/java/io/anuke/annotations/RemoteReadGenerator.java +++ b/annotations/src/main/java/io/anuke/annotations/RemoteReadGenerator.java @@ -2,8 +2,6 @@ package io.anuke.annotations; import com.squareup.javapoet.*; import io.anuke.annotations.IOFinder.ClassSerializer; -import io.anuke.annotations.MethodEntry; -import io.anuke.annotations.Utils; import javax.lang.model.element.Modifier; import javax.lang.model.element.TypeElement; @@ -52,7 +50,7 @@ public class RemoteReadGenerator{ Constructor cons = TypeName.class.getDeclaredConstructor(String.class); cons.setAccessible(true); - TypeName playerType = cons.newInstance("io.anuke.mindustry.entities.Player"); + TypeName playerType = cons.newInstance("io.anuke.mindustry.entities.type.Player"); //add player parameter readMethod.addParameter(playerType, "player"); } diff --git a/annotations/src/main/java/io/anuke/annotations/RemoteWriteGenerator.java b/annotations/src/main/java/io/anuke/annotations/RemoteWriteGenerator.java index 62cff1f25b..2f195aa896 100644 --- a/annotations/src/main/java/io/anuke/annotations/RemoteWriteGenerator.java +++ b/annotations/src/main/java/io/anuke/annotations/RemoteWriteGenerator.java @@ -80,7 +80,7 @@ public class RemoteWriteGenerator{ return; } - if(!elem.getParameters().get(0).asType().toString().equals("io.anuke.mindustry.entities.Player")){ + if(!elem.getParameters().get(0).asType().toString().equals("io.anuke.mindustry.entities.type.Player")){ Utils.messager.printMessage(Kind.ERROR, "Client invoke methods should have a first parameter of type Player.", elem); return; } diff --git a/core/assets/bundles/bundle.properties b/core/assets/bundles/bundle.properties index 8d534ce4fe..a6cc0bb1bc 100644 --- a/core/assets/bundles/bundle.properties +++ b/core/assets/bundles/bundle.properties @@ -501,7 +501,7 @@ item.radioactivity = [LIGHT_GRAY]Radioactivity: {0}% unit.health = [LIGHT_GRAY]Health: {0} unit.speed = [LIGHT_GRAY]Speed: {0} mech.weapon = [LIGHT_GRAY]Weapon: {0} -mech.armor = [LIGHT_GRAY]Armor: {0} +mech.health = [LIGHT_GRAY]Health: {0} mech.itemcapacity = [LIGHT_GRAY]Item Capacity: {0} mech.minespeed = [LIGHT_GRAY]Mining Speed: {0} mech.minepower = [LIGHT_GRAY]Mining Power: {0} diff --git a/core/build.gradle b/core/build.gradle index f4c5695bbb..3dddd0fae5 100644 --- a/core/build.gradle +++ b/core/build.gradle @@ -4,5 +4,5 @@ sourceCompatibility = 1.8 sourceSets.main.java.srcDirs = ["src/"] compileJava{ - options.compilerArgs << "-Xlint:unchecked" << "-Xlint:deprecation" +// options.compilerArgs << "-Xlint:unchecked" << "-Xlint:deprecation" } \ No newline at end of file diff --git a/core/src/io/anuke/mindustry/Vars.java b/core/src/io/anuke/mindustry/Vars.java index e21d3d414a..cade7d56df 100644 --- a/core/src/io/anuke/mindustry/Vars.java +++ b/core/src/io/anuke/mindustry/Vars.java @@ -2,21 +2,21 @@ package io.anuke.mindustry; import io.anuke.arc.Application.ApplicationType; import io.anuke.arc.Core; -import io.anuke.arc.entities.Entities; -import io.anuke.arc.entities.EntityGroup; -import io.anuke.arc.entities.impl.EffectEntity; -import io.anuke.arc.entities.trait.DrawTrait; +import io.anuke.mindustry.entities.Entities; +import io.anuke.mindustry.entities.EntityGroup; +import io.anuke.mindustry.entities.impl.EffectEntity; +import io.anuke.mindustry.entities.traits.DrawTrait; import io.anuke.arc.files.FileHandle; import io.anuke.arc.graphics.Color; import io.anuke.arc.util.Structs; import io.anuke.mindustry.core.*; -import io.anuke.mindustry.entities.Player; -import io.anuke.mindustry.entities.TileEntity; +import io.anuke.mindustry.entities.type.Player; +import io.anuke.mindustry.entities.type.TileEntity; import io.anuke.mindustry.entities.bullet.Bullet; import io.anuke.mindustry.entities.effect.Fire; import io.anuke.mindustry.entities.effect.Puddle; import io.anuke.mindustry.entities.traits.SyncTrait; -import io.anuke.mindustry.entities.units.BaseUnit; +import io.anuke.mindustry.entities.type.BaseUnit; import io.anuke.mindustry.game.GlobalData; import io.anuke.mindustry.game.Team; import io.anuke.mindustry.game.Version; diff --git a/core/src/io/anuke/mindustry/ai/BlockIndexer.java b/core/src/io/anuke/mindustry/ai/BlockIndexer.java index 892e9db28b..b20ef572a8 100644 --- a/core/src/io/anuke/mindustry/ai/BlockIndexer.java +++ b/core/src/io/anuke/mindustry/ai/BlockIndexer.java @@ -6,7 +6,7 @@ import io.anuke.arc.function.Predicate; import io.anuke.arc.math.Mathf; import io.anuke.arc.math.geom.Geometry; import io.anuke.mindustry.content.Blocks; -import io.anuke.mindustry.entities.TileEntity; +import io.anuke.mindustry.entities.type.TileEntity; import io.anuke.mindustry.game.EventType.TileChangeEvent; import io.anuke.mindustry.game.EventType.WorldLoadEvent; import io.anuke.mindustry.game.Team; diff --git a/core/src/io/anuke/mindustry/ai/WaveSpawner.java b/core/src/io/anuke/mindustry/ai/WaveSpawner.java index a7f01300bf..103e1a9563 100644 --- a/core/src/io/anuke/mindustry/ai/WaveSpawner.java +++ b/core/src/io/anuke/mindustry/ai/WaveSpawner.java @@ -3,7 +3,7 @@ package io.anuke.mindustry.ai; import io.anuke.arc.Events; import io.anuke.arc.collection.Array; import io.anuke.arc.collection.IntArray; -import io.anuke.arc.entities.Effects; +import io.anuke.mindustry.entities.Effects; import io.anuke.arc.math.Angles; import io.anuke.arc.math.Mathf; import io.anuke.arc.util.Time; @@ -11,7 +11,7 @@ import io.anuke.arc.util.Tmp; import io.anuke.mindustry.content.Blocks; import io.anuke.mindustry.content.Fx; import io.anuke.mindustry.entities.Damage; -import io.anuke.mindustry.entities.units.BaseUnit; +import io.anuke.mindustry.entities.type.BaseUnit; import io.anuke.mindustry.entities.units.Squad; import io.anuke.mindustry.game.EventType.WorldLoadEvent; import io.anuke.mindustry.game.SpawnGroup; diff --git a/core/src/io/anuke/mindustry/content/Bullets.java b/core/src/io/anuke/mindustry/content/Bullets.java index 59b2e9aa4d..67034c6525 100644 --- a/core/src/io/anuke/mindustry/content/Bullets.java +++ b/core/src/io/anuke/mindustry/content/Bullets.java @@ -1,6 +1,6 @@ package io.anuke.mindustry.content; -import io.anuke.arc.entities.Effects; +import io.anuke.mindustry.entities.Effects; import io.anuke.arc.graphics.Color; import io.anuke.arc.graphics.g2d.CapStyle; import io.anuke.arc.graphics.g2d.Draw; @@ -10,7 +10,7 @@ import io.anuke.arc.math.Mathf; import io.anuke.arc.util.Time; import io.anuke.arc.util.Tmp; import io.anuke.mindustry.entities.Damage; -import io.anuke.mindustry.entities.Unit; +import io.anuke.mindustry.entities.type.Unit; import io.anuke.mindustry.entities.bullet.*; import io.anuke.mindustry.entities.effect.Fire; import io.anuke.mindustry.entities.effect.Lightning; diff --git a/core/src/io/anuke/mindustry/content/Fx.java b/core/src/io/anuke/mindustry/content/Fx.java index b3c9b281e3..ba7145c80e 100644 --- a/core/src/io/anuke/mindustry/content/Fx.java +++ b/core/src/io/anuke/mindustry/content/Fx.java @@ -1,7 +1,7 @@ package io.anuke.mindustry.content; import io.anuke.arc.Core; -import io.anuke.arc.entities.Effects.Effect; +import io.anuke.mindustry.entities.Effects.Effect; import io.anuke.arc.graphics.Color; import io.anuke.arc.graphics.g2d.Draw; import io.anuke.arc.graphics.g2d.Fill; @@ -10,7 +10,7 @@ import io.anuke.arc.math.Angles; import io.anuke.arc.math.Mathf; import io.anuke.arc.util.Tmp; import io.anuke.mindustry.entities.effect.GroundEffectEntity.GroundEffect; -import io.anuke.mindustry.entities.units.BaseUnit; +import io.anuke.mindustry.entities.type.BaseUnit; import io.anuke.mindustry.game.ContentList; import io.anuke.mindustry.graphics.Palette; import io.anuke.mindustry.graphics.Shapes; diff --git a/core/src/io/anuke/mindustry/content/Mechs.java b/core/src/io/anuke/mindustry/content/Mechs.java index 59e654c357..68f9e63eb1 100644 --- a/core/src/io/anuke/mindustry/content/Mechs.java +++ b/core/src/io/anuke/mindustry/content/Mechs.java @@ -1,7 +1,7 @@ package io.anuke.mindustry.content; import io.anuke.arc.Core; -import io.anuke.arc.entities.Effects; +import io.anuke.mindustry.entities.Effects; import io.anuke.arc.graphics.Blending; import io.anuke.arc.graphics.Color; import io.anuke.arc.graphics.g2d.Draw; @@ -9,7 +9,7 @@ import io.anuke.arc.graphics.g2d.TextureRegion; import io.anuke.arc.math.Mathf; import io.anuke.arc.math.geom.Rectangle; import io.anuke.arc.util.Time; -import io.anuke.mindustry.entities.Player; +import io.anuke.mindustry.entities.type.Player; import io.anuke.mindustry.entities.Units; import io.anuke.mindustry.entities.effect.Lightning; import io.anuke.mindustry.game.ContentList; @@ -36,7 +36,7 @@ public class Mechs implements ContentList{ boostSpeed = 0.85f; weapon = Weapons.blaster; trailColorTo = Color.valueOf("ffd37f"); - armor = 20f; + health = 250f; } @Override @@ -54,7 +54,7 @@ public class Mechs implements ContentList{ boostSpeed = 0.95f; itemCapacity = 15; mass = 0.9f; - armor = 30f; + health = 220f; weaponOffsetX = -1; weaponOffsetY = -1; weapon = Weapons.shockgun; @@ -92,7 +92,7 @@ public class Mechs implements ContentList{ boostSpeed = 0.8f; canHeal = true; weapon = Weapons.healBlaster; - armor = 15f; + health = 200f; trailColorTo = Palette.heal; } @@ -135,7 +135,7 @@ public class Mechs implements ContentList{ weaponOffsetY = 0; weapon = Weapons.swarmer; trailColorTo = Color.valueOf("feb380"); - armor = 45f; + health = 300f; } @Override @@ -188,7 +188,7 @@ public class Mechs implements ContentList{ mineSpeed = 0.9f; speed = 0.4f; drag = 0.1f; - armor = 10f; + health = 180f; weapon = Weapons.blasterSmall; weaponOffsetX = -1; weaponOffsetY = -1; @@ -211,7 +211,7 @@ public class Mechs implements ContentList{ speed = 0.11f; drag = 0.01f; mass = 2f; - armor = 5f; + health = 170f; weapon = Weapons.missiles; trailColor = Color.valueOf("d3ddff"); cellTrnsY = 1f; @@ -266,7 +266,7 @@ public class Mechs implements ContentList{ drag = 0.034f; mass = 2.5f; turnCursor = false; - armor = 20f; + health = 220f; itemCapacity = 30; trailColor = Color.valueOf("84f491"); weapon = Weapons.bomberTrident; @@ -287,7 +287,7 @@ public class Mechs implements ContentList{ speed = 0.32f; drag = 0.06f; mass = 3f; - armor = 30f; + health = 240f; itemCapacity = 60; trailColor = Color.valueOf("feb380"); cellTrnsY = 1f; diff --git a/core/src/io/anuke/mindustry/content/StatusEffects.java b/core/src/io/anuke/mindustry/content/StatusEffects.java index fe676e591d..328a617c1f 100644 --- a/core/src/io/anuke/mindustry/content/StatusEffects.java +++ b/core/src/io/anuke/mindustry/content/StatusEffects.java @@ -1,6 +1,6 @@ package io.anuke.mindustry.content; -import io.anuke.arc.entities.Effects; +import io.anuke.mindustry.entities.Effects; import io.anuke.arc.math.Mathf; import io.anuke.mindustry.game.ContentList; import io.anuke.mindustry.type.StatusEffect; diff --git a/core/src/io/anuke/mindustry/content/UnitTypes.java b/core/src/io/anuke/mindustry/content/UnitTypes.java index 5e460c4617..55b37dcce8 100644 --- a/core/src/io/anuke/mindustry/content/UnitTypes.java +++ b/core/src/io/anuke/mindustry/content/UnitTypes.java @@ -1,8 +1,8 @@ package io.anuke.mindustry.content; import io.anuke.arc.collection.ObjectSet; -import io.anuke.mindustry.entities.units.UnitType; -import io.anuke.mindustry.entities.units.types.*; +import io.anuke.mindustry.entities.type.types.Crawler; +import io.anuke.mindustry.type.UnitType; import io.anuke.mindustry.game.ContentList; public class UnitTypes implements ContentList{ @@ -13,7 +13,7 @@ public class UnitTypes implements ContentList{ @Override public void load(){ - spirit = new UnitType("spirit", Spirit.class, Spirit::new){{ + spirit = new UnitType("spirit", io.anuke.mindustry.entities.type.types.Spirit.class, io.anuke.mindustry.entities.type.types.Spirit::new){{ weapon = Weapons.healBlasterDrone; isFlying = true; drag = 0.01f; @@ -23,7 +23,7 @@ public class UnitTypes implements ContentList{ health = 60; }}; - dagger = new UnitType("dagger", Dagger.class, Dagger::new){{ + dagger = new UnitType("dagger", io.anuke.mindustry.entities.type.types.Dagger.class, io.anuke.mindustry.entities.type.types.Dagger::new){{ maxVelocity = 1.1f; speed = 0.2f; drag = 0.4f; @@ -33,7 +33,7 @@ public class UnitTypes implements ContentList{ health = 130; }}; - crawler = new UnitType("crawler", Crawler.class, Crawler::new){{ + crawler = new UnitType("crawler", io.anuke.mindustry.entities.type.types.Crawler.class, Crawler::new){{ maxVelocity = 1.1f; speed = 0.22f; drag = 0.4f; @@ -43,7 +43,7 @@ public class UnitTypes implements ContentList{ health = 100; }}; - titan = new UnitType("titan", Titan.class, Titan::new){{ + titan = new UnitType("titan", io.anuke.mindustry.entities.type.types.Titan.class, io.anuke.mindustry.entities.type.types.Titan::new){{ maxVelocity = 0.8f; speed = 0.18f; drag = 0.4f; @@ -55,7 +55,7 @@ public class UnitTypes implements ContentList{ immunities.add(StatusEffects.burning); }}; - fortress = new UnitType("fortress", Fortress.class, Fortress::new){{ + fortress = new UnitType("fortress", io.anuke.mindustry.entities.type.types.Fortress.class, io.anuke.mindustry.entities.type.types.Fortress::new){{ maxVelocity = 0.78f; speed = 0.15f; drag = 0.4f; @@ -68,7 +68,7 @@ public class UnitTypes implements ContentList{ health = 800; }}; - eruptor = new UnitType("eruptor", Eruptor.class, Eruptor::new){{ + eruptor = new UnitType("eruptor", io.anuke.mindustry.entities.type.types.Eruptor.class, io.anuke.mindustry.entities.type.types.Eruptor::new){{ maxVelocity = 0.81f; speed = 0.16f; drag = 0.4f; @@ -82,7 +82,7 @@ public class UnitTypes implements ContentList{ immunities = ObjectSet.with(StatusEffects.burning, StatusEffects.melting); }}; - wraith = new UnitType("wraith", Wraith.class, Wraith::new){{ + wraith = new UnitType("wraith", io.anuke.mindustry.entities.type.types.Wraith.class, io.anuke.mindustry.entities.type.types.Wraith::new){{ speed = 0.3f; maxVelocity = 1.9f; drag = 0.01f; @@ -92,7 +92,7 @@ public class UnitTypes implements ContentList{ health = 70; }}; - ghoul = new UnitType("ghoul", Ghoul.class, Ghoul::new){{ + ghoul = new UnitType("ghoul", io.anuke.mindustry.entities.type.types.Ghoul.class, io.anuke.mindustry.entities.type.types.Ghoul::new){{ health = 250; speed = 0.2f; maxVelocity = 1.4f; @@ -103,7 +103,7 @@ public class UnitTypes implements ContentList{ weapon = Weapons.bomber; }}; - revenant = new UnitType("revenant", Revenant.class, Revenant::new){{ + revenant = new UnitType("revenant", io.anuke.mindustry.entities.type.types.Revenant.class, io.anuke.mindustry.entities.type.types.Revenant::new){{ health = 250; mass = 5f; hitsize = 12f; @@ -115,7 +115,7 @@ public class UnitTypes implements ContentList{ weapon = Weapons.laserBurster; }}; - phantom = new UnitType("phantom", Phantom.class, Phantom::new){{ + phantom = new UnitType("phantom", io.anuke.mindustry.entities.type.types.Phantom.class, io.anuke.mindustry.entities.type.types.Phantom::new){{ weapon = Weapons.healBlasterDrone2; isFlying = true; drag = 0.01f; diff --git a/core/src/io/anuke/mindustry/core/ContentLoader.java b/core/src/io/anuke/mindustry/core/ContentLoader.java index 819d9c9d60..51eb9d66a7 100644 --- a/core/src/io/anuke/mindustry/core/ContentLoader.java +++ b/core/src/io/anuke/mindustry/core/ContentLoader.java @@ -8,7 +8,7 @@ import io.anuke.arc.graphics.Color; import io.anuke.arc.graphics.Pixmap; import io.anuke.arc.util.Log; import io.anuke.mindustry.content.*; -import io.anuke.mindustry.entities.Player; +import io.anuke.mindustry.entities.type.Player; import io.anuke.mindustry.entities.bullet.Bullet; import io.anuke.mindustry.entities.bullet.BulletType; import io.anuke.mindustry.entities.effect.Fire; diff --git a/core/src/io/anuke/mindustry/core/Control.java b/core/src/io/anuke/mindustry/core/Control.java index 52d272f1f4..4b4c6be30e 100644 --- a/core/src/io/anuke/mindustry/core/Control.java +++ b/core/src/io/anuke/mindustry/core/Control.java @@ -3,8 +3,8 @@ package io.anuke.mindustry.core; import io.anuke.arc.ApplicationListener; import io.anuke.arc.Core; import io.anuke.arc.Events; -import io.anuke.arc.entities.Effects; -import io.anuke.arc.entities.EntityQuery; +import io.anuke.mindustry.entities.Effects; +import io.anuke.mindustry.entities.EntityQuery; import io.anuke.arc.graphics.Color; import io.anuke.arc.graphics.g2d.Draw; import io.anuke.arc.graphics.g2d.TextureAtlas; @@ -15,7 +15,7 @@ import io.anuke.arc.util.Strings; import io.anuke.arc.util.Time; import io.anuke.mindustry.content.Mechs; import io.anuke.mindustry.core.GameState.State; -import io.anuke.mindustry.entities.Player; +import io.anuke.mindustry.entities.type.Player; import io.anuke.mindustry.game.Content; import io.anuke.mindustry.game.EventType.*; import io.anuke.mindustry.game.GlobalData; diff --git a/core/src/io/anuke/mindustry/core/Logic.java b/core/src/io/anuke/mindustry/core/Logic.java index 5acf296536..cbfa9c3d62 100644 --- a/core/src/io/anuke/mindustry/core/Logic.java +++ b/core/src/io/anuke/mindustry/core/Logic.java @@ -5,14 +5,14 @@ import io.anuke.annotations.Annotations.Remote; import io.anuke.arc.ApplicationListener; import io.anuke.arc.Events; import io.anuke.arc.collection.ObjectSet.ObjectSetIterator; -import io.anuke.arc.entities.Effects; -import io.anuke.arc.entities.Entities; -import io.anuke.arc.entities.EntityGroup; -import io.anuke.arc.entities.EntityQuery; +import io.anuke.mindustry.entities.Effects; +import io.anuke.mindustry.entities.Entities; +import io.anuke.mindustry.entities.EntityGroup; +import io.anuke.mindustry.entities.EntityQuery; import io.anuke.arc.util.Time; import io.anuke.mindustry.content.Fx; import io.anuke.mindustry.core.GameState.State; -import io.anuke.mindustry.entities.TileEntity; +import io.anuke.mindustry.entities.type.TileEntity; import io.anuke.mindustry.game.EventType.*; import io.anuke.mindustry.game.*; import io.anuke.mindustry.net.Net; diff --git a/core/src/io/anuke/mindustry/core/NetClient.java b/core/src/io/anuke/mindustry/core/NetClient.java index 86a4fb4735..d4b31bdaff 100644 --- a/core/src/io/anuke/mindustry/core/NetClient.java +++ b/core/src/io/anuke/mindustry/core/NetClient.java @@ -7,8 +7,8 @@ import io.anuke.annotations.Annotations.Variant; import io.anuke.arc.ApplicationListener; import io.anuke.arc.Core; import io.anuke.arc.collection.IntSet; -import io.anuke.arc.entities.Entities; -import io.anuke.arc.entities.EntityGroup; +import io.anuke.mindustry.entities.Entities; +import io.anuke.mindustry.entities.EntityGroup; import io.anuke.arc.graphics.Color; import io.anuke.arc.util.Interval; import io.anuke.arc.util.Log; @@ -17,7 +17,7 @@ import io.anuke.arc.util.io.ReusableByteArrayInputStream; import io.anuke.arc.util.serialization.Base64Coder; import io.anuke.mindustry.Vars; import io.anuke.mindustry.core.GameState.State; -import io.anuke.mindustry.entities.Player; +import io.anuke.mindustry.entities.type.Player; import io.anuke.mindustry.entities.traits.BuilderTrait.BuildRequest; import io.anuke.mindustry.entities.traits.SyncTrait; import io.anuke.mindustry.entities.traits.TypeTrait; diff --git a/core/src/io/anuke/mindustry/core/NetServer.java b/core/src/io/anuke/mindustry/core/NetServer.java index 015332d60a..a938df21a3 100644 --- a/core/src/io/anuke/mindustry/core/NetServer.java +++ b/core/src/io/anuke/mindustry/core/NetServer.java @@ -7,10 +7,10 @@ import io.anuke.arc.Events; import io.anuke.arc.collection.Array; import io.anuke.arc.collection.IntMap; import io.anuke.arc.collection.ObjectSet; -import io.anuke.arc.entities.Entities; -import io.anuke.arc.entities.EntityGroup; -import io.anuke.arc.entities.EntityQuery; -import io.anuke.arc.entities.trait.Entity; +import io.anuke.mindustry.entities.Entities; +import io.anuke.mindustry.entities.EntityGroup; +import io.anuke.mindustry.entities.EntityQuery; +import io.anuke.mindustry.entities.traits.Entity; import io.anuke.arc.graphics.Color; import io.anuke.arc.graphics.Colors; import io.anuke.arc.math.Mathf; @@ -24,7 +24,7 @@ import io.anuke.arc.util.io.CountableByteArrayOutputStream; import io.anuke.mindustry.content.Mechs; import io.anuke.mindustry.content.Blocks; import io.anuke.mindustry.core.GameState.State; -import io.anuke.mindustry.entities.Player; +import io.anuke.mindustry.entities.type.Player; import io.anuke.mindustry.entities.traits.BuilderTrait.BuildRequest; import io.anuke.mindustry.entities.traits.SyncTrait; import io.anuke.mindustry.game.EventType.WorldLoadEvent; diff --git a/core/src/io/anuke/mindustry/core/Renderer.java b/core/src/io/anuke/mindustry/core/Renderer.java index f8eda41fce..467da73cb3 100644 --- a/core/src/io/anuke/mindustry/core/Renderer.java +++ b/core/src/io/anuke/mindustry/core/Renderer.java @@ -2,12 +2,12 @@ package io.anuke.mindustry.core; import io.anuke.arc.ApplicationListener; import io.anuke.arc.Core; -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.mindustry.entities.Effects; +import io.anuke.mindustry.entities.EntityDraw; +import io.anuke.mindustry.entities.EntityGroup; +import io.anuke.mindustry.entities.impl.EffectEntity; +import io.anuke.mindustry.entities.traits.DrawTrait; +import io.anuke.mindustry.entities.traits.Entity; import io.anuke.arc.function.Consumer; import io.anuke.arc.function.Predicate; import io.anuke.arc.graphics.Camera; @@ -23,13 +23,13 @@ import io.anuke.arc.util.Time; import io.anuke.arc.util.pooling.Pools; import io.anuke.mindustry.content.Fx; import io.anuke.mindustry.core.GameState.State; -import io.anuke.mindustry.entities.Player; -import io.anuke.mindustry.entities.TileEntity; -import io.anuke.mindustry.entities.Unit; +import io.anuke.mindustry.entities.type.Player; +import io.anuke.mindustry.entities.type.TileEntity; +import io.anuke.mindustry.entities.type.Unit; import io.anuke.mindustry.entities.effect.GroundEffectEntity; import io.anuke.mindustry.entities.effect.GroundEffectEntity.GroundEffect; import io.anuke.mindustry.entities.traits.BelowLiquidTrait; -import io.anuke.mindustry.entities.units.BaseUnit; +import io.anuke.mindustry.entities.type.BaseUnit; import io.anuke.mindustry.game.Team; import io.anuke.mindustry.graphics.*; @@ -116,7 +116,7 @@ public class Renderer implements ApplicationListener{ if(players[0].isDead()){ TileEntity core = players[0].getClosestCore(); - if(core != null && players[0].spawner == Unit.noSpawner){ + if(core != null && players[0].spawner == null){ camera.position.lerpDelta(core.x, core.y, 0.08f); }else{ camera.position.lerpDelta(position, 0.08f); diff --git a/core/src/io/anuke/mindustry/core/World.java b/core/src/io/anuke/mindustry/core/World.java index dc1efe74ae..ebd7c616c8 100644 --- a/core/src/io/anuke/mindustry/core/World.java +++ b/core/src/io/anuke/mindustry/core/World.java @@ -5,7 +5,7 @@ import io.anuke.arc.Core; import io.anuke.arc.Events; import io.anuke.arc.collection.Array; import io.anuke.arc.collection.IntArray; -import io.anuke.arc.entities.EntityQuery; +import io.anuke.mindustry.entities.EntityQuery; import io.anuke.arc.math.Mathf; import io.anuke.arc.math.geom.Geometry; import io.anuke.arc.math.geom.Point2; diff --git a/core/src/io/anuke/mindustry/entities/Damage.java b/core/src/io/anuke/mindustry/entities/Damage.java index e8b51dbf35..5bb2074534 100644 --- a/core/src/io/anuke/mindustry/entities/Damage.java +++ b/core/src/io/anuke/mindustry/entities/Damage.java @@ -1,7 +1,6 @@ package io.anuke.mindustry.entities; -import io.anuke.arc.entities.Effects; -import io.anuke.arc.entities.Effects.Effect; +import io.anuke.mindustry.entities.Effects.Effect; import io.anuke.arc.function.Consumer; import io.anuke.arc.function.Predicate; import io.anuke.arc.graphics.Color; @@ -15,6 +14,7 @@ import io.anuke.mindustry.content.Fx; import io.anuke.mindustry.entities.bullet.Bullet; import io.anuke.mindustry.entities.effect.Fire; import io.anuke.mindustry.entities.effect.Lightning; +import io.anuke.mindustry.entities.type.Unit; import io.anuke.mindustry.game.Team; import io.anuke.mindustry.gen.Call; import io.anuke.mindustry.graphics.Palette; @@ -109,7 +109,7 @@ public class Damage{ rect.width += expand * 2; rect.height += expand * 2; - Consumer cons = e -> { + Consumer cons = e -> { e.hitbox(hitrect); Rectangle other = hitrect; other.y -= expand; @@ -130,8 +130,8 @@ public class Damage{ } /**Damages all entities and blocks in a radius that are enemies of the team.*/ - public static void damageUnits(Team team, float x, float y, float size, float damage, Predicate predicate, Consumer acceptor){ - Consumer cons = entity -> { + public static void damageUnits(Team team, float x, float y, float size, float damage, Predicate predicate, Consumer acceptor){ + Consumer cons = entity -> { if(!predicate.test(entity)) return; entity.hitbox(hitrect); @@ -158,7 +158,7 @@ public class Damage{ /**Damages all entities and blocks in a radius that are enemies of the team.*/ public static void damage(Team team, float x, float y, float radius, float damage){ Consumer cons = entity -> { - if(entity.team == team || entity.dst(x, y) > radius){ + if(entity.getTeam() == team || entity.dst(x, y) > radius){ return; } float amount = calculateDamage(x, y, entity.x, entity.y, radius, damage); diff --git a/core/src/io/anuke/mindustry/entities/Effects.java b/core/src/io/anuke/mindustry/entities/Effects.java new file mode 100644 index 0000000000..576d5cc56e --- /dev/null +++ b/core/src/io/anuke/mindustry/entities/Effects.java @@ -0,0 +1,166 @@ +package io.anuke.mindustry.entities; + +import io.anuke.arc.Core; +import io.anuke.arc.collection.Array; +import io.anuke.arc.function.Consumer; +import io.anuke.arc.graphics.Color; +import io.anuke.arc.math.Mathf; +import io.anuke.arc.math.geom.Position; +import io.anuke.arc.util.pooling.Pools; +import io.anuke.mindustry.entities.impl.EffectEntity; +import io.anuke.mindustry.entities.traits.ScaleTrait; + +public class Effects{ + private static final EffectContainer container = new EffectContainer(); + private static Array effects = new Array<>(); + private static ScreenshakeProvider shakeProvider; + private static float shakeFalloff = 1000f; + private static EffectProvider provider = (effect, color, x, y, rotation, data) -> { + EffectEntity entity = Pools.obtain(EffectEntity.class, EffectEntity::new); + entity.effect = effect; + entity.color = color; + entity.rotation = rotation; + entity.data = data; + entity.set(x, y); + entity.add(); + }; + + public static void setEffectProvider(EffectProvider prov){ + provider = prov; + } + + public static void setScreenShakeProvider(ScreenshakeProvider provider){ + shakeProvider = provider; + } + + public static void renderEffect(int id, Effect render, Color color, float life, float rotation, float x, float y, Object data){ + container.set(id, color, life, render.lifetime, rotation, x, y, data); + render.draw.render(container); + } + + public static Effect getEffect(int id){ + if(id >= effects.size || id < 0) + throw new IllegalArgumentException("The effect with ID \"" + id + "\" does not exist!"); + return effects.get(id); + } + + public static Array all(){ + return effects; + } + + public static void effect(Effect effect, float x, float y, float rotation){ + provider.createEffect(effect, Color.WHITE, x, y, rotation, null); + } + + public static void effect(Effect effect, float x, float y){ + effect(effect, x, y, 0); + } + + public static void effect(Effect effect, Color color, float x, float y){ + provider.createEffect(effect, color, x, y, 0f, null); + } + + public static void effect(Effect effect, Position loc){ + provider.createEffect(effect, Color.WHITE, loc.getX(), loc.getY(), 0f, null); + } + + public static void effect(Effect effect, Color color, float x, float y, float rotation){ + provider.createEffect(effect, color, x, y, rotation, null); + } + + public static void effect(Effect effect, Color color, float x, float y, float rotation, Object data){ + provider.createEffect(effect, color, x, y, rotation, data); + } + + public static void effect(Effect effect, float x, float y, float rotation, Object data){ + provider.createEffect(effect, Color.WHITE, x, y, rotation, data); + } + + /** Default value is 1000. Higher numbers mean more powerful shake (less falloff). */ + public static void setShakeFalloff(float falloff){ + shakeFalloff = falloff; + } + + private static void shake(float intensity, float duration){ + if(shakeProvider == null) throw new RuntimeException("Screenshake provider is null! Set it first."); + shakeProvider.accept(intensity, duration); + } + + public static void shake(float intensity, float duration, float x, float y){ + if(Core.camera == null) return; + + float distance = Core.camera.position.dst(x, y); + if(distance < 1) distance = 1; + + shake(Mathf.clamp(1f / (distance * distance / shakeFalloff)) * intensity, duration); + } + + public static void shake(float intensity, float duration, Position loc){ + shake(intensity, duration, loc.getX(), loc.getY()); + } + + public interface ScreenshakeProvider{ + void accept(float intensity, float duration); + } + + public static class Effect{ + private static int lastid = 0; + public final int id; + public final EffectRenderer draw; + public final float lifetime; + /** Clip size. */ + public float size; + + public Effect(float life, float clipsize, EffectRenderer draw){ + this.id = lastid++; + this.lifetime = life; + this.draw = draw; + this.size = clipsize; + effects.add(this); + } + + public Effect(float life, EffectRenderer draw){ + this(life, 28f, draw); + } + } + + public static class EffectContainer implements ScaleTrait{ + public float x, y, time, lifetime, rotation; + public Color color; + public int id; + public Object data; + private EffectContainer innerContainer; + + public void set(int id, Color color, float life, float lifetime, float rotation, float x, float y, Object data){ + this.x = x; + this.y = y; + this.color = color; + this.time = life; + this.lifetime = lifetime; + this.id = id; + this.rotation = rotation; + this.data = data; + } + + public void scaled(float lifetime, Consumer cons){ + if(innerContainer == null) innerContainer = new EffectContainer(); + if(time <= lifetime){ + innerContainer.set(id, color, time, lifetime, rotation, x, y, data); + cons.accept(innerContainer); + } + } + + @Override + public float fin(){ + return time / lifetime; + } + } + + public static interface EffectProvider{ + void createEffect(Effect effect, Color color, float x, float y, float rotation, Object data); + } + + public static interface EffectRenderer{ + void render(EffectContainer effect); + } +} diff --git a/core/src/io/anuke/mindustry/entities/Entities.java b/core/src/io/anuke/mindustry/entities/Entities.java new file mode 100755 index 0000000000..94a2baa629 --- /dev/null +++ b/core/src/io/anuke/mindustry/entities/Entities.java @@ -0,0 +1,66 @@ +package io.anuke.mindustry.entities; + +import io.anuke.arc.collection.Array; +import io.anuke.arc.collection.IntMap; +import io.anuke.mindustry.entities.traits.Entity; + +public class Entities{ + public static final int maxLeafObjects = 5; + private static final EntityGroup defaultGroup; + private static final Array> groupArray = new Array<>(); + private static final IntMap> groups = new IntMap<>(); + + static{ + defaultGroup = addGroup(Entity.class); + } + + public static void clear(){ + for(EntityGroup group : groupArray){ + group.clear(); + } + } + + public static Iterable all(){ + return defaultGroup.all(); + } + + public static EntityGroup getGroup(int id){ + return groups.get(id); + } + + public static Iterable> getAllGroups(){ + return groups.values(); + } + + public static EntityGroup defaultGroup(){ + return defaultGroup; + } + + public static EntityGroup addGroup(Class type){ + return addGroup(type, true); + } + + public static EntityGroup addGroup(Class type, boolean useTree){ + EntityGroup group = new EntityGroup<>(type, useTree); + groups.put(group.getID(), group); + groupArray.add(group); + return group; + } + + public static void update(){ + update(defaultGroup()); + EntityQuery.collideGroups(defaultGroup(), defaultGroup()); + } + + public static void update(EntityGroup group){ + group.updateEvents(); + + if(group.useTree()){ + EntityQuery.collisions().updatePhysics(group); + } + + for(Entity e : group.all()){ + e.update(); + } + } +} diff --git a/core/src/io/anuke/mindustry/entities/EntityCollisions.java b/core/src/io/anuke/mindustry/entities/EntityCollisions.java new file mode 100644 index 0000000000..62e5e214d6 --- /dev/null +++ b/core/src/io/anuke/mindustry/entities/EntityCollisions.java @@ -0,0 +1,261 @@ +package io.anuke.mindustry.entities; + +import io.anuke.arc.collection.Array; +import io.anuke.arc.collection.IntSet; +import io.anuke.arc.math.Mathf; +import io.anuke.arc.math.geom.Geometry; +import io.anuke.arc.math.geom.QuadTree; +import io.anuke.arc.math.geom.Rectangle; +import io.anuke.arc.math.geom.Vector2; +import io.anuke.mindustry.entities.traits.Entity; +import io.anuke.mindustry.entities.traits.SolidTrait; + +public class EntityCollisions{ + //range for tile collision scanning + private static final int r = 2; + //move in 1-unit chunks + private static final float seg = 1f; + + //tile collisions + private float tilesize; + private Rectangle tmp = new Rectangle(); + private TileCollider collider; + private TileHitboxProvider hitboxProvider; + private Vector2 vector = new Vector2(); + private Vector2 l1 = new Vector2(); + private Rectangle r1 = new Rectangle(); + private Rectangle r2 = new Rectangle(); + + //entity collisions + private IntSet collided = new IntSet(); + private Array arrOut = new Array<>(); + + public void setCollider(float tilesize, TileCollider collider, TileHitboxProvider hitbox){ + this.tilesize = tilesize; + this.collider = collider; + this.hitboxProvider = hitbox; + } + + public void setCollider(float tilesize, TileCollider collider){ + setCollider(tilesize, collider, (x, y, out) -> out.setSize(tilesize).setCenter(x * tilesize, y * tilesize)); + } + + public void move(SolidTrait entity, float deltax, float deltay){ + + boolean movedx = false; + + while(Math.abs(deltax) > 0 || !movedx){ + movedx = true; + moveInternal(entity, Math.min(Math.abs(deltax), seg) * Mathf.sign(deltax), 0, true); + + if(Math.abs(deltax) >= seg){ + deltax -= seg * Mathf.sign(deltax); + }else{ + deltax = 0f; + } + } + + boolean movedy = false; + + while(Math.abs(deltay) > 0 || !movedy){ + movedy = true; + moveInternal(entity, 0, Math.min(Math.abs(deltay), seg) * Mathf.sign(deltay), false); + + if(Math.abs(deltay) >= seg){ + deltay -= seg * Mathf.sign(deltay); + }else{ + deltay = 0f; + } + } + } + + public void moveInternal(SolidTrait entity, float deltax, float deltay, boolean x){ + if(collider == null) + throw new IllegalArgumentException("No tile collider specified! Call setCollider() first."); + + Rectangle rect = r1; + entity.hitboxTile(rect); + entity.hitboxTile(r2); + rect.x += deltax; + rect.y += deltay; + + int tilex = Math.round((rect.x + rect.width / 2) / tilesize), tiley = Math.round((rect.y + rect.height / 2) / tilesize); + + for(int dx = -r; dx <= r; dx++){ + for(int dy = -r; dy <= r; dy++){ + int wx = dx + tilex, wy = dy + tiley; + if(collider.solid(wx, wy) && entity.collidesGrid(wx, wy)){ + + hitboxProvider.getHitbox(wx, wy, tmp); + + if(tmp.overlaps(rect)){ + Vector2 v = Geometry.overlap(rect, tmp, x); + rect.x += v.x; + rect.y += v.y; + } + } + } + } + + entity.setX(entity.getX() + rect.x - r2.x); + entity.setY(entity.getY() + rect.y - r2.y); + } + + public boolean overlapsTile(Rectangle rect){ + if(collider == null) + throw new IllegalArgumentException("No tile collider specified! Call setCollider() first."); + + rect.getCenter(vector); + int r = 1; + + //assumes tiles are centered + int tilex = Math.round(vector.x / tilesize); + int tiley = Math.round(vector.y / tilesize); + + for(int dx = -r; dx <= r; dx++){ + for(int dy = -r; dy <= r; dy++){ + int wx = dx + tilex, wy = dy + tiley; + if(collider.solid(wx, wy)){ + hitboxProvider.getHitbox(wx, wy, r2); + + if(r2.overlaps(rect)){ + return true; + } + } + } + } + return false; + } + + public void updatePhysics(EntityGroup group){ + collided.clear(); + + QuadTree tree = group.tree(); + tree.clear(); + + for(Entity entity : group.all()){ + if(entity instanceof SolidTrait){ + SolidTrait s = (SolidTrait) entity; + s.lastPosition().set(s.getX(), s.getY()); + tree.insert(s); + } + } + } + + private void checkCollide(Entity entity, Entity other){ + + SolidTrait a = (SolidTrait) entity; + SolidTrait b = (SolidTrait) other; + + a.hitbox(this.r1); + b.hitbox(this.r2); + + r1.x += (a.lastPosition().x - a.getX()); + r1.y += (a.lastPosition().y - a.getY()); + r2.x += (b.lastPosition().x - b.getX()); + r2.y += (b.lastPosition().y - b.getY()); + + float vax = a.getX() - a.lastPosition().x; + float vay = a.getY() - a.lastPosition().y; + float vbx = b.getX() - b.lastPosition().x; + float vby = b.getY() - b.lastPosition().y; + + if(a != b && a.collides(b) && b.collides(a)){ + l1.set(a.getX(), a.getY()); + boolean collide = r1.overlaps(r2) || collide(r1.x, r1.y, r1.width, r1.height, vax, vay, + r2.x, r2.y, r2.width, r2.height, vbx, vby, l1); + if(collide){ + a.collision(b, l1.x, l1.y); + b.collision(a, l1.x, l1.y); + } + } + } + + private boolean collide(float x1, float y1, float w1, float h1, float vx1, float vy1, + float x2, float y2, float w2, float h2, float vx2, float vy2, Vector2 out){ + float px = vx1, py = vy1; + + vx1 -= vx2; + vy1 -= vy2; + + float xInvEntry, yInvEntry; + float xInvExit, yInvExit; + + if(vx1 > 0.0f){ + xInvEntry = x2 - (x1 + w1); + xInvExit = (x2 + w2) - x1; + }else{ + xInvEntry = (x2 + w2) - x1; + xInvExit = x2 - (x1 + w1); + } + + if(vy1 > 0.0f){ + yInvEntry = y2 - (y1 + h1); + yInvExit = (y2 + h2) - y1; + }else{ + yInvEntry = (y2 + h2) - y1; + yInvExit = y2 - (y1 + h1); + } + + float xEntry, yEntry; + float xExit, yExit; + + xEntry = xInvEntry / vx1; + xExit = xInvExit / vx1; + + yEntry = yInvEntry / vy1; + yExit = yInvExit / vy1; + + float entryTime = Math.max(xEntry, yEntry); + float exitTime = Math.min(xExit, yExit); + + if(entryTime > exitTime || xExit < 0.0f || yExit < 0.0f || xEntry > 1.0f || yEntry > 1.0f){ + return false; + }else{ + float dx = x1 + w1 / 2f + px * entryTime; + float dy = y1 + h1 / 2f + py * entryTime; + + out.set(dx, dy); + + return true; + } + } + + public void collideGroups(EntityGroup groupa, EntityGroup groupb){ + collided.clear(); + + for(Entity entity : groupa.all()){ + if(!(entity instanceof SolidTrait) || collided.contains(entity.getID())) + continue; + + SolidTrait solid = (SolidTrait) entity; + + solid.hitbox(r1); + r1.x += (solid.lastPosition().x - solid.getX()); + r1.y += (solid.lastPosition().y - solid.getY()); + + solid.hitbox(r2); + r2.merge(r1); + + arrOut.clear(); + groupb.tree().getIntersect(arrOut, r2); + + for(SolidTrait sc : arrOut){ + sc.hitbox(r1); + if(r2.overlaps(r1) && !collided.contains(sc.getID())){ + checkCollide(entity, sc); + } + } + + collided.add(entity.getID()); + } + } + + public interface TileCollider{ + boolean solid(int x, int y); + } + + public interface TileHitboxProvider{ + void getHitbox(int x, int y, Rectangle out); + } +} diff --git a/core/src/io/anuke/mindustry/entities/EntityDraw.java b/core/src/io/anuke/mindustry/entities/EntityDraw.java new file mode 100644 index 0000000000..8addf4f9e2 --- /dev/null +++ b/core/src/io/anuke/mindustry/entities/EntityDraw.java @@ -0,0 +1,49 @@ +package io.anuke.mindustry.entities; + +import io.anuke.arc.Core; +import io.anuke.arc.function.Consumer; +import io.anuke.arc.function.Predicate; +import io.anuke.arc.graphics.Camera; +import io.anuke.arc.math.geom.Rectangle; +import io.anuke.mindustry.entities.traits.DrawTrait; + +public class EntityDraw{ + private static final Rectangle viewport = new Rectangle(); + private static final Rectangle rect = new Rectangle(); + private static boolean clip = true; + + public static void setClip(boolean clip){ + EntityDraw.clip = clip; + } + + public static void draw(){ + draw(Entities.defaultGroup()); + } + + public static void draw(EntityGroup group){ + draw(group, e -> true); + } + + public static void draw(EntityGroup group, Predicate toDraw){ + drawWith(group, toDraw, DrawTrait::draw); + } + + @SuppressWarnings("unchecked") + public static void drawWith(EntityGroup group, Predicate toDraw, Consumer cons){ + if(clip){ + Camera cam = Core.camera; + viewport.set(cam.position.x - cam.width / 2, cam.position.y - cam.height / 2, cam.width, cam.height); + } + + group.forEach(e -> { + if(!(e instanceof DrawTrait)) return; + T t = (T) e; + + if(!toDraw.test(t) || !e.isAdded()) return; + + if(!clip || rect.setSize(((DrawTrait) e).drawSize()).setCenter(e.getX(), e.getY()).overlaps(viewport)){ + cons.accept(t); + } + }); + } +} diff --git a/core/src/io/anuke/mindustry/entities/EntityGroup.java b/core/src/io/anuke/mindustry/entities/EntityGroup.java new file mode 100644 index 0000000000..2050535843 --- /dev/null +++ b/core/src/io/anuke/mindustry/entities/EntityGroup.java @@ -0,0 +1,194 @@ +package io.anuke.mindustry.entities; + +import io.anuke.arc.collection.Array; +import io.anuke.arc.collection.IntMap; +import io.anuke.arc.function.Consumer; +import io.anuke.arc.function.Predicate; +import io.anuke.arc.math.geom.QuadTree; +import io.anuke.arc.math.geom.Rectangle; +import io.anuke.mindustry.entities.traits.Entity; + +public class EntityGroup{ + private static int lastid; + private final boolean useTree; + private final int id; + private final Class type; + private final Array entityArray = new Array<>(false, 16); + private final Array entitiesToRemove = new Array<>(false, 16); + private final Array entitiesToAdd = new Array<>(false, 16); + private IntMap map; + private QuadTree tree; + private Consumer removeListener; + private Consumer addListener; + + public EntityGroup(Class type, boolean useTree){ + this.useTree = useTree; + this.id = lastid++; + this.type = type; + } + + public boolean useTree(){ + return useTree; + } + + public void setRemoveListener(Consumer removeListener){ + this.removeListener = removeListener; + } + + public void setAddListener(Consumer addListener){ + this.addListener = addListener; + } + + public EntityGroup enableMapping(){ + map = new IntMap<>(); + return this; + } + + public boolean mappingEnabled(){ + return map != null; + } + + public Class getType(){ + return type; + } + + public int getID(){ + return id; + } + + public void updateEvents(){ + + for(T e : entitiesToAdd){ + if(e == null) + continue; + entityArray.add(e); + e.added(); + + if(map != null){ + map.put(e.getID(), e); + } + } + + entitiesToAdd.clear(); + + for(T e : entitiesToRemove){ + entityArray.removeValue(e, true); + if(map != null){ + map.remove(e.getID()); + } + e.removed(); + } + + entitiesToRemove.clear(); + } + + public T getByID(int id){ + if(map == null) throw new RuntimeException("Mapping is not enabled for group " + id + "!"); + return map.get(id); + } + + public void removeByID(int id){ + if(map == null) throw new RuntimeException("Mapping is not enabled for group " + id + "!"); + T t = map.get(id); + if(t != null){ //remove if present in map already + remove(t); + }else{ //maybe it's being queued? + for(T check : entitiesToAdd){ + if(check.getID() == id){ //if it is indeed queued, remove it + entitiesToAdd.removeValue(check, true); + if(removeListener != null){ + removeListener.accept(check); + } + break; + } + } + } + } + + public QuadTree tree(){ + return tree; + } + + public void setTree(float x, float y, float w, float h){ + tree = new QuadTree<>(Entities.maxLeafObjects, new Rectangle(x, y, w, h)); + } + + public boolean isEmpty(){ + return entityArray.size == 0; + } + + public int size(){ + return entityArray.size; + } + + public int count(Predicate pred){ + int count = 0; + for(int i = 0; i < entityArray.size; i++){ + if(pred.test(entityArray.get(i))) count++; + } + return count; + } + + public void add(T type){ + if(type == null) throw new RuntimeException("Cannot add a null entity!"); + if(type.getGroup() != null) return; + type.setGroup(this); + entitiesToAdd.add(type); + + if(mappingEnabled()){ + map.put(type.getID(), type); + } + + if(addListener != null){ + addListener.accept(type); + } + } + + public void remove(T type){ + if(type == null) throw new RuntimeException("Cannot remove a null entity!"); + type.setGroup(null); + entitiesToRemove.add(type); + + if(removeListener != null){ + removeListener.accept(type); + } + } + + public void clear(){ + for(T entity : entityArray) + entity.setGroup(null); + + for(T entity : entitiesToAdd) + entity.setGroup(null); + + for(T entity : entitiesToRemove) + entity.setGroup(null); + + entitiesToAdd.clear(); + entitiesToRemove.clear(); + entityArray.clear(); + if(map != null) + map.clear(); + } + + public T find(Predicate pred){ + + for(int i = 0; i < entityArray.size; i++){ + if(pred.test(entityArray.get(i))) return entityArray.get(i); + } + + return null; + } + + /**Returns the logic-only array for iteration.*/ + public Array all(){ + return entityArray; + } + + public void forEach(Consumer cons){ + + for(T t : entityArray){ + cons.accept(t); + } + } +} diff --git a/core/src/io/anuke/mindustry/entities/EntityQuery.java b/core/src/io/anuke/mindustry/entities/EntityQuery.java new file mode 100644 index 0000000000..8e25527400 --- /dev/null +++ b/core/src/io/anuke/mindustry/entities/EntityQuery.java @@ -0,0 +1,95 @@ +package io.anuke.mindustry.entities; + +import io.anuke.arc.collection.Array; +import io.anuke.arc.function.Consumer; +import io.anuke.arc.function.Predicate; +import io.anuke.arc.math.Mathf; +import io.anuke.arc.math.geom.Rectangle; +import io.anuke.mindustry.entities.traits.Entity; +import io.anuke.mindustry.entities.traits.SolidTrait; + +import static io.anuke.mindustry.entities.Entities.defaultGroup; + +public class EntityQuery{ + private static final EntityCollisions collisions = new EntityCollisions(); + private static final Array array = new Array<>(); + private static final Rectangle r1 = new Rectangle(); + + public static EntityCollisions collisions(){ + return collisions; + } + + public static void init(float x, float y, float w, float h){ + + for(EntityGroup group : Entities.getAllGroups()){ + if(group.useTree()){ + group.setTree(x, y, w, h); + } + } + } + + public static void init(){ + init(0, 0, 0, 0); + } + + public static void resizeTree(float x, float y, float w, float h){ + init(x, y, w, h); + } + + public static void getNearby(EntityGroup group, Rectangle rect, Consumer out){ + + if(!group.useTree()) + throw new RuntimeException("This group does not support quadtrees! Enable quadtrees when creating it."); + group.tree().getIntersect(out, rect); + } + + public static Array getNearby(EntityGroup group, Rectangle rect){ + + array.clear(); + if(!group.useTree()) + throw new RuntimeException("This group does not support quadtrees! Enable quadtrees when creating it."); + group.tree().getIntersect(array, rect); + return array; + } + + public static void getNearby(float x, float y, float size, Consumer out){ + getNearby(defaultGroup(), r1.setSize(size).setCenter(x, y), out); + } + + public static void getNearby(EntityGroup group, float x, float y, float size, Consumer out){ + getNearby(group, r1.setSize(size).setCenter(x, y), out); + } + + public static Array getNearby(float x, float y, float size){ + return getNearby(defaultGroup(), r1.setSize(size).setCenter(x, y)); + } + + public static Array getNearby(EntityGroup group, float x, float y, float size){ + return getNearby(group, r1.setSize(size).setCenter(x, y)); + } + + public static T getClosest(EntityGroup group, float x, float y, float range, Predicate pred){ + + T closest = null; + float cdist = 0f; + Array entities = getNearby(group, x, y, range * 2f); + for(int i = 0; i < entities.size; i++){ + T e = (T) entities.get(i); + if(!pred.test(e)) + continue; + + float dist = Mathf.dst(e.getX(), e.getY(), x, y); + if(dist < range) + if(closest == null || dist < cdist){ + closest = e; + cdist = dist; + } + } + + return closest; + } + + public static void collideGroups(EntityGroup groupa, EntityGroup groupb){ + collisions().collideGroups(groupa, groupb); + } +} diff --git a/core/src/io/anuke/mindustry/entities/UnitInventory.java b/core/src/io/anuke/mindustry/entities/UnitInventory.java deleted file mode 100644 index d4d27d3a3d..0000000000 --- a/core/src/io/anuke/mindustry/entities/UnitInventory.java +++ /dev/null @@ -1,88 +0,0 @@ -package io.anuke.mindustry.entities; - -import io.anuke.mindustry.entities.traits.Saveable; -import io.anuke.mindustry.type.Item; -import io.anuke.mindustry.type.ItemStack; - -import java.io.DataInput; -import java.io.DataOutput; -import java.io.IOException; - -import static io.anuke.mindustry.Vars.content; - -public class UnitInventory implements Saveable{ - private final Unit unit; - private ItemStack item = new ItemStack(content.item(0), 0); - - public UnitInventory(Unit unit){ - this.unit = unit; - } - - public boolean isFull(){ - return item != null && item.amount >= unit.getItemCapacity(); - } - - @Override - public void writeSave(DataOutput stream) throws IOException{ - stream.writeByte(item.amount); - stream.writeByte(item.item.id); - } - - @Override - public void readSave(DataInput stream) throws IOException{ - int iamount = stream.readUnsignedByte(); - byte iid = stream.readByte(); - - item.item = content.item(iid); - item.amount = iamount; - } - - public void clear(){ - item.amount = 0; - } - - public int capacity(){ - return unit.getItemCapacity(); - } - - public boolean isEmpty(){ - return item.amount == 0; - } - - public int itemCapacityUsed(Item type){ - if(canAcceptItem(type)){ - return !hasItem() ? unit.getItemCapacity() : (unit.getItemCapacity() - item.amount); - }else{ - return unit.getItemCapacity(); - } - } - - public boolean canAcceptItem(Item type){ - return (!hasItem() && 1 <= unit.getItemCapacity()) || (item.item == type && unit.getItemCapacity() - item.amount > 0); - } - - public boolean canAcceptItem(Item type, int amount){ - return (!hasItem() && amount <= unit.getItemCapacity()) || (item.item == type && item.amount + amount <= unit.getItemCapacity()); - } - - public void clearItem(){ - item.amount = 0; - } - - public boolean hasItem(){ - return item.amount > 0; - } - - public boolean hasItem(Item i, int amount){ - return item.item == i && item.amount >= amount; - } - - public void addItem(Item item, int amount){ - getItem().amount = getItem().item == item ? getItem().amount + amount : amount; - getItem().item = item; - } - - public ItemStack getItem(){ - return item; - } -} diff --git a/core/src/io/anuke/mindustry/entities/Units.java b/core/src/io/anuke/mindustry/entities/Units.java index 6305989c72..b7112930f7 100644 --- a/core/src/io/anuke/mindustry/entities/Units.java +++ b/core/src/io/anuke/mindustry/entities/Units.java @@ -1,15 +1,16 @@ package io.anuke.mindustry.entities; import io.anuke.arc.collection.EnumSet; -import io.anuke.arc.entities.EntityGroup; -import io.anuke.arc.entities.EntityQuery; import io.anuke.arc.function.Consumer; 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.Rectangle; import io.anuke.mindustry.entities.traits.TargetTrait; -import io.anuke.mindustry.entities.units.BaseUnit; +import io.anuke.mindustry.entities.type.Player; +import io.anuke.mindustry.entities.type.TileEntity; +import io.anuke.mindustry.entities.type.BaseUnit; +import io.anuke.mindustry.entities.type.Unit; import io.anuke.mindustry.game.Team; import io.anuke.mindustry.world.Block; import io.anuke.mindustry.world.Tile; @@ -47,7 +48,7 @@ public class Units{ /**See {@link #invalidateTarget(TargetTrait, Team, float, float, float)}*/ public static boolean invalidateTarget(TargetTrait target, Unit targeter){ - return invalidateTarget(target, targeter.team, targeter.x, targeter.y, targeter.getWeapon().getAmmo().range()); + return invalidateTarget(target, targeter.getTeam(), targeter.x, targeter.y, targeter.getWeapon().getAmmo().range()); } /**Returns whether there are any entities on this tile.*/ @@ -100,18 +101,18 @@ public class Units{ } /**Returns the neareset damaged tile.*/ - public static TileEntity findDamagedTile(Team team, float x, float y){ + public static io.anuke.mindustry.entities.type.TileEntity findDamagedTile(Team team, float x, float y){ Tile tile = Geometry.findClosest(x, y, world.indexer.getDamaged(team)); return tile == null ? null : tile.entity; } /**Returns the neareset ally tile in a range.*/ - public static TileEntity findAllyTile(Team team, float x, float y, float range, Predicate pred){ + public static io.anuke.mindustry.entities.type.TileEntity findAllyTile(Team team, float x, float y, float range, Predicate pred){ return world.indexer.findTile(team, x, y, range, pred); } /**Returns the neareset enemy tile in a range.*/ - public static TileEntity findEnemyTile(Team team, float x, float y, float range, Predicate pred){ + public static io.anuke.mindustry.entities.type.TileEntity findEnemyTile(Team team, float x, float y, float range, Predicate pred){ for(Team enemy : state.teams.enemiesOf(team)){ TileEntity entity = world.indexer.findTile(enemy, x, y, range, pred); if(entity != null){ @@ -133,7 +134,7 @@ public class Units{ } //then check all player groups - for(Player player : playerGroup.all()){ + for(io.anuke.mindustry.entities.type.Player player : playerGroup.all()){ cons.accept(player); } } @@ -209,7 +210,7 @@ public class Units{ //now check all players EntityQuery.getNearby(playerGroup, rect, player -> { - if(((Unit) player).team == team) cons.accept((Unit) player); + if(((Unit) player).getTeam() == team) cons.accept((Unit) player); }); } @@ -228,7 +229,7 @@ public class Units{ //now check all players EntityQuery.getNearby(playerGroup, rect, player -> { - if(((Unit) player).team == team && player.dst(x, y) <= radius){ + if(((Unit) player).getTeam() == team && player.dst(x, y) <= radius){ cons.accept((Unit) player); } }); @@ -261,7 +262,7 @@ public class Units{ //now check all enemy players EntityQuery.getNearby(playerGroup, rect, player -> { - if(targets.contains(((Player) player).team)){ + if(targets.contains(((Player) player).getTeam())){ cons.accept((Unit) player); } }); diff --git a/core/src/io/anuke/mindustry/entities/bullet/ArtilleryBulletType.java b/core/src/io/anuke/mindustry/entities/bullet/ArtilleryBulletType.java index ee5237a2c8..5c74a9f9f7 100644 --- a/core/src/io/anuke/mindustry/entities/bullet/ArtilleryBulletType.java +++ b/core/src/io/anuke/mindustry/entities/bullet/ArtilleryBulletType.java @@ -1,7 +1,7 @@ package io.anuke.mindustry.entities.bullet; -import io.anuke.arc.entities.Effects; -import io.anuke.arc.entities.Effects.Effect; +import io.anuke.mindustry.entities.Effects; +import io.anuke.mindustry.entities.Effects.Effect; import io.anuke.arc.graphics.g2d.Draw; import io.anuke.mindustry.content.Fx; diff --git a/core/src/io/anuke/mindustry/entities/bullet/BasicBulletType.java b/core/src/io/anuke/mindustry/entities/bullet/BasicBulletType.java index 6152de43fa..1221d642b7 100644 --- a/core/src/io/anuke/mindustry/entities/bullet/BasicBulletType.java +++ b/core/src/io/anuke/mindustry/entities/bullet/BasicBulletType.java @@ -1,7 +1,7 @@ package io.anuke.mindustry.entities.bullet; import io.anuke.arc.Core; -import io.anuke.arc.entities.Effects; +import io.anuke.mindustry.entities.Effects; import io.anuke.arc.graphics.Color; import io.anuke.arc.graphics.g2d.Draw; import io.anuke.arc.graphics.g2d.TextureRegion; diff --git a/core/src/io/anuke/mindustry/entities/bullet/Bullet.java b/core/src/io/anuke/mindustry/entities/bullet/Bullet.java index f784e7322a..9206c8d6c3 100644 --- a/core/src/io/anuke/mindustry/entities/bullet/Bullet.java +++ b/core/src/io/anuke/mindustry/entities/bullet/Bullet.java @@ -2,9 +2,8 @@ package io.anuke.mindustry.entities.bullet; import io.anuke.annotations.Annotations.Loc; import io.anuke.annotations.Annotations.Remote; -import io.anuke.arc.entities.EntityGroup; -import io.anuke.arc.entities.impl.SolidEntity; -import io.anuke.arc.entities.trait.*; +import io.anuke.mindustry.entities.EntityGroup; +import io.anuke.mindustry.entities.impl.SolidEntity; import io.anuke.arc.math.Mathf; import io.anuke.arc.math.geom.Rectangle; import io.anuke.arc.math.geom.Vector2; @@ -13,11 +12,9 @@ import io.anuke.arc.util.Time; import io.anuke.arc.util.Tmp; import io.anuke.arc.util.pooling.Pool.Poolable; import io.anuke.arc.util.pooling.Pools; -import io.anuke.mindustry.entities.Unit; +import io.anuke.mindustry.entities.traits.*; +import io.anuke.mindustry.entities.type.Unit; import io.anuke.mindustry.entities.effect.Lightning; -import io.anuke.mindustry.entities.traits.AbsorbTrait; -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; diff --git a/core/src/io/anuke/mindustry/entities/bullet/BulletType.java b/core/src/io/anuke/mindustry/entities/bullet/BulletType.java index fcc5a63bf3..198adaaf37 100644 --- a/core/src/io/anuke/mindustry/entities/bullet/BulletType.java +++ b/core/src/io/anuke/mindustry/entities/bullet/BulletType.java @@ -1,7 +1,7 @@ package io.anuke.mindustry.entities.bullet; -import io.anuke.arc.entities.Effects; -import io.anuke.arc.entities.Effects.Effect; +import io.anuke.mindustry.entities.Effects; +import io.anuke.mindustry.entities.Effects.Effect; import io.anuke.mindustry.content.StatusEffects; import io.anuke.mindustry.content.Fx; import io.anuke.mindustry.game.Content; diff --git a/core/src/io/anuke/mindustry/entities/bullet/LiquidBulletType.java b/core/src/io/anuke/mindustry/entities/bullet/LiquidBulletType.java index 3a61265bde..b600b8ef2d 100644 --- a/core/src/io/anuke/mindustry/entities/bullet/LiquidBulletType.java +++ b/core/src/io/anuke/mindustry/entities/bullet/LiquidBulletType.java @@ -1,6 +1,6 @@ package io.anuke.mindustry.entities.bullet; -import io.anuke.arc.entities.Effects; +import io.anuke.mindustry.entities.Effects; import io.anuke.arc.graphics.Color; import io.anuke.arc.graphics.g2d.Draw; import io.anuke.arc.graphics.g2d.Fill; diff --git a/core/src/io/anuke/mindustry/entities/bullet/MassDriverBolt.java b/core/src/io/anuke/mindustry/entities/bullet/MassDriverBolt.java index a10421113a..578f20708b 100644 --- a/core/src/io/anuke/mindustry/entities/bullet/MassDriverBolt.java +++ b/core/src/io/anuke/mindustry/entities/bullet/MassDriverBolt.java @@ -1,6 +1,6 @@ package io.anuke.mindustry.entities.bullet; -import io.anuke.arc.entities.Effects; +import io.anuke.mindustry.entities.Effects; import io.anuke.arc.graphics.Color; import io.anuke.arc.graphics.g2d.Draw; import io.anuke.arc.math.Angles; diff --git a/core/src/io/anuke/mindustry/entities/bullet/MissileBulletType.java b/core/src/io/anuke/mindustry/entities/bullet/MissileBulletType.java index 6200666f1f..033be6e4e1 100644 --- a/core/src/io/anuke/mindustry/entities/bullet/MissileBulletType.java +++ b/core/src/io/anuke/mindustry/entities/bullet/MissileBulletType.java @@ -3,7 +3,7 @@ package io.anuke.mindustry.entities.bullet; import io.anuke.arc.graphics.Color; import io.anuke.mindustry.content.Fx; import io.anuke.mindustry.graphics.Palette; -import io.anuke.arc.entities.Effects; +import io.anuke.mindustry.entities.Effects; import io.anuke.arc.util.Time; import io.anuke.arc.math.Mathf; diff --git a/core/src/io/anuke/mindustry/entities/effect/Decal.java b/core/src/io/anuke/mindustry/entities/effect/Decal.java index 9bcaf7a2c3..1cb773a3cc 100644 --- a/core/src/io/anuke/mindustry/entities/effect/Decal.java +++ b/core/src/io/anuke/mindustry/entities/effect/Decal.java @@ -2,9 +2,9 @@ package io.anuke.mindustry.entities.effect; import io.anuke.arc.graphics.Color; 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.mindustry.entities.EntityGroup; +import io.anuke.mindustry.entities.impl.TimedEntity; +import io.anuke.mindustry.entities.traits.DrawTrait; import io.anuke.arc.graphics.g2d.Draw; import io.anuke.arc.math.Mathf; diff --git a/core/src/io/anuke/mindustry/entities/effect/Fire.java b/core/src/io/anuke/mindustry/entities/effect/Fire.java index e15a37d8e5..9689824893 100644 --- a/core/src/io/anuke/mindustry/entities/effect/Fire.java +++ b/core/src/io/anuke/mindustry/entities/effect/Fire.java @@ -3,9 +3,9 @@ package io.anuke.mindustry.entities.effect; import io.anuke.annotations.Annotations.Loc; import io.anuke.annotations.Annotations.Remote; import io.anuke.arc.collection.IntMap; -import io.anuke.arc.entities.Effects; -import io.anuke.arc.entities.EntityGroup; -import io.anuke.arc.entities.impl.TimedEntity; +import io.anuke.mindustry.entities.Effects; +import io.anuke.mindustry.entities.EntityGroup; +import io.anuke.mindustry.entities.impl.TimedEntity; import io.anuke.arc.math.Mathf; import io.anuke.arc.math.geom.Geometry; import io.anuke.arc.math.geom.Point2; @@ -17,7 +17,7 @@ import io.anuke.mindustry.content.Bullets; import io.anuke.mindustry.content.StatusEffects; import io.anuke.mindustry.content.Fx; import io.anuke.mindustry.entities.Damage; -import io.anuke.mindustry.entities.TileEntity; +import io.anuke.mindustry.entities.type.TileEntity; import io.anuke.mindustry.entities.traits.SaveTrait; import io.anuke.mindustry.entities.traits.SyncTrait; import io.anuke.mindustry.gen.Call; diff --git a/core/src/io/anuke/mindustry/entities/effect/GroundEffectEntity.java b/core/src/io/anuke/mindustry/entities/effect/GroundEffectEntity.java index 812cbd0db4..bc98f1619a 100644 --- a/core/src/io/anuke/mindustry/entities/effect/GroundEffectEntity.java +++ b/core/src/io/anuke/mindustry/entities/effect/GroundEffectEntity.java @@ -1,9 +1,9 @@ package io.anuke.mindustry.entities.effect; -import io.anuke.arc.entities.Effects; -import io.anuke.arc.entities.Effects.Effect; -import io.anuke.arc.entities.Effects.EffectRenderer; -import io.anuke.arc.entities.impl.EffectEntity; +import io.anuke.mindustry.entities.Effects; +import io.anuke.mindustry.entities.Effects.Effect; +import io.anuke.mindustry.entities.Effects.EffectRenderer; +import io.anuke.mindustry.entities.impl.EffectEntity; import io.anuke.arc.math.Mathf; import io.anuke.arc.util.Time; import io.anuke.mindustry.Vars; diff --git a/core/src/io/anuke/mindustry/entities/effect/ItemTransfer.java b/core/src/io/anuke/mindustry/entities/effect/ItemTransfer.java index 8c32ccde94..77ebb457e6 100644 --- a/core/src/io/anuke/mindustry/entities/effect/ItemTransfer.java +++ b/core/src/io/anuke/mindustry/entities/effect/ItemTransfer.java @@ -2,9 +2,9 @@ package io.anuke.mindustry.entities.effect; import io.anuke.annotations.Annotations.Loc; 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.mindustry.entities.EntityGroup; +import io.anuke.mindustry.entities.impl.TimedEntity; +import io.anuke.mindustry.entities.traits.DrawTrait; import io.anuke.arc.graphics.g2d.Draw; import io.anuke.arc.graphics.g2d.Fill; import io.anuke.arc.graphics.g2d.Lines; @@ -14,7 +14,7 @@ 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.entities.type.Unit; import io.anuke.mindustry.graphics.Palette; import io.anuke.mindustry.type.Item; import io.anuke.mindustry.world.Tile; @@ -43,7 +43,7 @@ public class ItemTransfer extends TimedEntity implements DrawTrait{ @Remote(called = Loc.server, unreliable = true) public static void transferItemToUnit(Item item, float x, float y, Unit to){ if(to == null) return; - create(item, x, y, to, () -> to.inventory.addItem(item, 1)); + create(item, x, y, to, () -> to.addItem(item)); } @Remote(called = Loc.server) diff --git a/core/src/io/anuke/mindustry/entities/effect/Lightning.java b/core/src/io/anuke/mindustry/entities/effect/Lightning.java index 7ee5e771af..56e3844461 100644 --- a/core/src/io/anuke/mindustry/entities/effect/Lightning.java +++ b/core/src/io/anuke/mindustry/entities/effect/Lightning.java @@ -4,13 +4,12 @@ import io.anuke.annotations.Annotations.Loc; import io.anuke.annotations.Annotations.Remote; import io.anuke.arc.collection.Array; import io.anuke.arc.collection.IntSet; -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.TimeTrait; +import io.anuke.mindustry.entities.EntityGroup; +import io.anuke.mindustry.entities.impl.TimedEntity; +import io.anuke.mindustry.entities.traits.DrawTrait; +import io.anuke.mindustry.entities.traits.TimeTrait; import io.anuke.arc.graphics.Color; import io.anuke.arc.graphics.g2d.Draw; -import io.anuke.arc.graphics.g2d.Lines; import io.anuke.arc.math.Angles; import io.anuke.arc.math.Mathf; import io.anuke.arc.math.RandomXS128; @@ -20,7 +19,7 @@ import io.anuke.arc.math.geom.Rectangle; import io.anuke.arc.math.geom.Vector2; import io.anuke.arc.util.pooling.Pools; import io.anuke.mindustry.content.Bullets; -import io.anuke.mindustry.entities.Unit; +import io.anuke.mindustry.entities.type.Unit; import io.anuke.mindustry.entities.Units; import io.anuke.mindustry.entities.bullet.Bullet; import io.anuke.mindustry.entities.traits.SyncTrait; diff --git a/core/src/io/anuke/mindustry/entities/effect/Puddle.java b/core/src/io/anuke/mindustry/entities/effect/Puddle.java index b821d968d2..8c3eb67ff7 100644 --- a/core/src/io/anuke/mindustry/entities/effect/Puddle.java +++ b/core/src/io/anuke/mindustry/entities/effect/Puddle.java @@ -3,10 +3,10 @@ package io.anuke.mindustry.entities.effect; import io.anuke.annotations.Annotations.Loc; import io.anuke.annotations.Annotations.Remote; import io.anuke.arc.collection.IntMap; -import io.anuke.arc.entities.Effects; -import io.anuke.arc.entities.EntityGroup; -import io.anuke.arc.entities.impl.SolidEntity; -import io.anuke.arc.entities.trait.DrawTrait; +import io.anuke.mindustry.entities.Effects; +import io.anuke.mindustry.entities.EntityGroup; +import io.anuke.mindustry.entities.impl.SolidEntity; +import io.anuke.mindustry.entities.traits.DrawTrait; import io.anuke.arc.graphics.Color; import io.anuke.arc.graphics.g2d.Draw; import io.anuke.arc.graphics.g2d.Fill; diff --git a/core/src/io/anuke/mindustry/entities/impl/BaseEntity.java b/core/src/io/anuke/mindustry/entities/impl/BaseEntity.java new file mode 100755 index 0000000000..4fb4462c03 --- /dev/null +++ b/core/src/io/anuke/mindustry/entities/impl/BaseEntity.java @@ -0,0 +1,61 @@ +package io.anuke.mindustry.entities.impl; + +import io.anuke.mindustry.entities.EntityGroup; +import io.anuke.mindustry.entities.traits.Entity; + +public abstract class BaseEntity implements Entity{ + private static int lastid; + /** Do not modify. Used for network operations and mapping. */ + public int id; + public float x, y; + protected transient EntityGroup group; + + public BaseEntity(){ + id = lastid++; + } + + @Override + public int getID(){ + return id; + } + + @Override + public void resetID(int id){ + this.id = id; + } + + @Override + public EntityGroup getGroup(){ + return group; + } + + @Override + public void setGroup(EntityGroup group){ + this.group = group; + } + + @Override + public float getX(){ + return x; + } + + @Override + public void setX(float x){ + this.x = x; + } + + @Override + public float getY(){ + return y; + } + + @Override + public void setY(float y){ + this.y = y; + } + + @Override + public String toString(){ + return getClass() + " " + id; + } +} diff --git a/core/src/io/anuke/mindustry/entities/impl/DestructibleEntity.java b/core/src/io/anuke/mindustry/entities/impl/DestructibleEntity.java new file mode 100644 index 0000000000..fdb22094c6 --- /dev/null +++ b/core/src/io/anuke/mindustry/entities/impl/DestructibleEntity.java @@ -0,0 +1,45 @@ +package io.anuke.mindustry.entities.impl; + + +import io.anuke.mindustry.entities.traits.DamageTrait; +import io.anuke.mindustry.entities.traits.HealthTrait; +import io.anuke.mindustry.entities.traits.SolidTrait; + +public abstract class DestructibleEntity extends SolidEntity implements HealthTrait{ + public transient boolean dead; + public float health; + + @Override + public boolean collides(SolidTrait other){ + return other instanceof DamageTrait; + } + + @Override + public void collision(SolidTrait other, float x, float y){ + if(other instanceof DamageTrait){ + onHit(other); + damage(((DamageTrait) other).damage()); + } + } + + @Override + public void health(float health){ + this.health = health; + } + + @Override + public float health(){ + return health; + } + + @Override + public boolean isDead(){ + return dead; + } + + @Override + public void setDead(boolean dead){ + this.dead = dead; + } + +} diff --git a/core/src/io/anuke/mindustry/entities/impl/EffectEntity.java b/core/src/io/anuke/mindustry/entities/impl/EffectEntity.java new file mode 100644 index 0000000000..e678f29964 --- /dev/null +++ b/core/src/io/anuke/mindustry/entities/impl/EffectEntity.java @@ -0,0 +1,72 @@ +package io.anuke.mindustry.entities.impl; + +import io.anuke.arc.graphics.Color; +import io.anuke.arc.util.pooling.Pool.Poolable; +import io.anuke.arc.util.pooling.Pools; +import io.anuke.mindustry.entities.Effects; +import io.anuke.mindustry.entities.Effects.Effect; +import io.anuke.mindustry.entities.traits.DrawTrait; +import io.anuke.mindustry.entities.traits.Entity; + +public class EffectEntity extends TimedEntity implements Poolable, DrawTrait{ + public Effect effect; + public Color color = new Color(Color.WHITE); + public Object data; + public float rotation = 0f; + + public Entity parent; + public float poffsetx, poffsety; + + /** For pooling use only! */ + public EffectEntity(){ + } + + public void setParent(Entity parent){ + this.parent = parent; + this.poffsetx = x - parent.getX(); + this.poffsety = y - parent.getY(); + } + + @Override + public float lifetime(){ + return effect.lifetime; + } + + @Override + public float drawSize(){ + return effect.size; + } + + @Override + public void update(){ + if(effect == null){ + remove(); + return; + } + + super.update(); + if(parent != null){ + x = parent.getX() + poffsetx; + y = parent.getY() + poffsety; + } + } + + @Override + public void reset(){ + effect = null; + color.set(Color.WHITE); + rotation = time = poffsetx = poffsety = 0f; + parent = null; + data = null; + } + + @Override + public void draw(){ + Effects.renderEffect(id, effect, color, time, rotation, x, y, data); + } + + @Override + public void removed(){ + Pools.free(this); + } +} diff --git a/core/src/io/anuke/mindustry/entities/impl/SolidEntity.java b/core/src/io/anuke/mindustry/entities/impl/SolidEntity.java new file mode 100644 index 0000000000..544abdbefa --- /dev/null +++ b/core/src/io/anuke/mindustry/entities/impl/SolidEntity.java @@ -0,0 +1,19 @@ +package io.anuke.mindustry.entities.impl; + +import io.anuke.arc.math.geom.Vector2; +import io.anuke.mindustry.entities.traits.SolidTrait; + +public abstract class SolidEntity extends BaseEntity implements SolidTrait{ + protected transient Vector2 velocity = new Vector2(0f, 0.0001f); + private transient Vector2 lastPosition = new Vector2(); + + @Override + public Vector2 lastPosition(){ + return lastPosition; + } + + @Override + public Vector2 velocity(){ + return velocity; + } +} diff --git a/core/src/io/anuke/mindustry/entities/impl/TimedEntity.java b/core/src/io/anuke/mindustry/entities/impl/TimedEntity.java new file mode 100644 index 0000000000..e4007a5c4b --- /dev/null +++ b/core/src/io/anuke/mindustry/entities/impl/TimedEntity.java @@ -0,0 +1,34 @@ +package io.anuke.mindustry.entities.impl; + +import io.anuke.arc.util.pooling.Pool.Poolable; +import io.anuke.mindustry.entities.traits.ScaleTrait; +import io.anuke.mindustry.entities.traits.TimeTrait; + +public abstract class TimedEntity extends BaseEntity implements ScaleTrait, TimeTrait, Poolable{ + public float time; + + @Override + public void time(float time){ + this.time = time; + } + + @Override + public float time(){ + return time; + } + + @Override + public void update(){ + updateTime(); + } + + @Override + public void reset(){ + time = 0f; + } + + @Override + public float fin(){ + return time() / lifetime(); + } +} diff --git a/core/src/io/anuke/mindustry/entities/traits/AbsorbTrait.java b/core/src/io/anuke/mindustry/entities/traits/AbsorbTrait.java index dedffc5203..d408296c7c 100644 --- a/core/src/io/anuke/mindustry/entities/traits/AbsorbTrait.java +++ b/core/src/io/anuke/mindustry/entities/traits/AbsorbTrait.java @@ -1,8 +1,5 @@ package io.anuke.mindustry.entities.traits; -import io.anuke.arc.entities.trait.DamageTrait; -import io.anuke.arc.entities.trait.Entity; - public interface AbsorbTrait extends Entity, TeamTrait, DamageTrait{ void absorb(); diff --git a/core/src/io/anuke/mindustry/entities/traits/BuilderTrait.java b/core/src/io/anuke/mindustry/entities/traits/BuilderTrait.java index 503f5d780e..51b89a99d0 100644 --- a/core/src/io/anuke/mindustry/entities/traits/BuilderTrait.java +++ b/core/src/io/anuke/mindustry/entities/traits/BuilderTrait.java @@ -4,8 +4,7 @@ import io.anuke.arc.Core; import io.anuke.arc.Events; import io.anuke.arc.collection.Array; import io.anuke.arc.collection.Queue; -import io.anuke.arc.entities.Effects; -import io.anuke.arc.entities.trait.Entity; +import io.anuke.mindustry.entities.Effects; import io.anuke.arc.graphics.Color; import io.anuke.arc.graphics.g2d.Draw; import io.anuke.arc.graphics.g2d.Fill; @@ -17,9 +16,9 @@ import io.anuke.arc.util.Time; import io.anuke.mindustry.Vars; import io.anuke.mindustry.content.Blocks; import io.anuke.mindustry.content.Fx; -import io.anuke.mindustry.entities.Player; -import io.anuke.mindustry.entities.TileEntity; -import io.anuke.mindustry.entities.Unit; +import io.anuke.mindustry.entities.type.Player; +import io.anuke.mindustry.entities.type.TileEntity; +import io.anuke.mindustry.entities.type.Unit; import io.anuke.mindustry.game.EventType.BuildSelectEvent; import io.anuke.mindustry.gen.Call; import io.anuke.mindustry.graphics.Palette; @@ -43,7 +42,7 @@ import static io.anuke.mindustry.Vars.*; /** * Interface for units that build, break or mine things. */ -public interface BuilderTrait extends Entity{ +public interface BuilderTrait extends Entity, TeamTrait{ //these are not instance variables! Vector2[] tmptr = new Vector2[]{new Vector2(), new Vector2(), new Vector2(), new Vector2()}; float placeDistance = 150f; @@ -172,7 +171,8 @@ public interface BuilderTrait extends Entity{ * Update building mechanism for this unit. * This includes mining. */ - default void updateBuilding(Unit unit){ + default void updateBuilding(){ + Unit unit = (Unit)this; //remove already completed build requests removal.clear(); for(BuildRequest req : getPlaceQueue()){ @@ -195,7 +195,7 @@ public interface BuilderTrait extends Entity{ //update mining here if(current == null){ if(getMineTile() != null){ - updateMining(unit); + updateMining(); } return; }else{ @@ -204,15 +204,15 @@ public interface BuilderTrait extends Entity{ Tile tile = world.tile(current.x, current.y); - if(unit.dst(tile) > placeDistance){ + if(dst(tile) > placeDistance){ return; } if(!(tile.block() instanceof BuildBlock)){ - if(canCreateBlocks() && !current.breaking && Build.validPlace(unit.getTeam(), current.x, current.y, current.block, current.rotation)){ - Build.beginPlace(unit.getTeam(), current.x, current.y, current.block, current.rotation); - }else if(canCreateBlocks() && current.breaking && Build.validBreak(unit.getTeam(), current.x, current.y)){ - Build.beginBreak(unit.getTeam(), current.x, current.y); + if(canCreateBlocks() && !current.breaking && Build.validPlace(getTeam(), current.x, current.y, current.block, current.rotation)){ + Build.beginPlace(getTeam(), current.x, current.y, current.block, current.rotation); + }else if(canCreateBlocks() && current.breaking && Build.validBreak(getTeam(), current.x, current.y)){ + Build.beginBreak(getTeam(), current.x, current.y); }else{ getPlaceQueue().removeFirst(); return; @@ -259,12 +259,13 @@ public interface BuilderTrait extends Entity{ } /**Do not call directly.*/ - default void updateMining(Unit unit){ + default void updateMining(){ + Unit unit = (Unit)this; Tile tile = getMineTile(); TileEntity core = unit.getClosestCore(); - if(core == null || tile.block() != Blocks.air || unit.dst(tile.worldx(), tile.worldy()) > mineDistance - || tile.floor().itemDrop == null || !unit.inventory.canAcceptItem(tile.floor().itemDrop) || !canMine(tile.floor().itemDrop)){ + if(core == null || tile.block() != Blocks.air || dst(tile.worldx(), tile.worldy()) > mineDistance + || tile.floor().itemDrop == null || !unit.acceptsItem(tile.floor().itemDrop) || !canMine(tile.floor().itemDrop)){ setMineTile(null); }else{ Item item = tile.floor().itemDrop; @@ -276,7 +277,7 @@ public interface BuilderTrait extends Entity{ Call.transferItemTo(item, 1, tile.worldx() + Mathf.range(tilesize / 2f), tile.worldy() + Mathf.range(tilesize / 2f), core.tile); - }else if(unit.inventory.canAcceptItem(item)){ + }else if(unit.acceptsItem(item)){ Call.transferItemToUnit(item, tile.worldx() + Mathf.range(tilesize / 2f), tile.worldy() + Mathf.range(tilesize / 2f), @@ -293,11 +294,12 @@ public interface BuilderTrait extends Entity{ } /**Draw placement effects for an entity. This includes mining*/ - default void drawBuilding(Unit unit){ + default void drawBuilding(){ + Unit unit = (Unit)this; BuildRequest request; if(!isBuilding()){ if(getMineTile() != null){ - drawMining(unit); + drawMining(); } return; } @@ -306,7 +308,7 @@ public interface BuilderTrait extends Entity{ Tile tile = world.tile(request.x, request.y); - if(unit.dst(tile) > placeDistance){ + if(dst(tile) > placeDistance){ return; } @@ -340,7 +342,8 @@ public interface BuilderTrait extends Entity{ } /**Internal use only.*/ - default void drawMining(Unit unit){ + default void drawMining(){ + Unit unit = (Unit)this; Tile tile = getMineTile(); if(tile == null) return; diff --git a/core/src/io/anuke/mindustry/entities/traits/DamageTrait.java b/core/src/io/anuke/mindustry/entities/traits/DamageTrait.java new file mode 100644 index 0000000000..3f009687d6 --- /dev/null +++ b/core/src/io/anuke/mindustry/entities/traits/DamageTrait.java @@ -0,0 +1,5 @@ +package io.anuke.mindustry.entities.traits; + +public interface DamageTrait{ + float damage(); +} diff --git a/core/src/io/anuke/mindustry/entities/traits/DrawTrait.java b/core/src/io/anuke/mindustry/entities/traits/DrawTrait.java new file mode 100644 index 0000000000..648d9797b3 --- /dev/null +++ b/core/src/io/anuke/mindustry/entities/traits/DrawTrait.java @@ -0,0 +1,10 @@ +package io.anuke.mindustry.entities.traits; + +public interface DrawTrait extends Entity{ + + default float drawSize(){ + return 20f; + } + + void draw(); +} diff --git a/core/src/io/anuke/mindustry/entities/traits/Entity.java b/core/src/io/anuke/mindustry/entities/traits/Entity.java new file mode 100644 index 0000000000..582880beac --- /dev/null +++ b/core/src/io/anuke/mindustry/entities/traits/Entity.java @@ -0,0 +1,46 @@ +package io.anuke.mindustry.entities.traits; + +import io.anuke.mindustry.entities.Entities; +import io.anuke.mindustry.entities.EntityGroup; + +public interface Entity extends MoveTrait{ + + int getID(); + + void resetID(int id); + + default void update(){ + } + + default void removed(){ + } + + default void added(){ + } + + default EntityGroup targetGroup(){ + return Entities.defaultGroup(); + } + + @SuppressWarnings("unchecked") + default void add(){ + targetGroup().add(this); + } + + @SuppressWarnings("unchecked") + default void remove(){ + if(getGroup() != null){ + getGroup().remove(this); + } + + setGroup(null); + } + + EntityGroup getGroup(); + + void setGroup(EntityGroup group); + + default boolean isAdded(){ + return getGroup() != null; + } +} diff --git a/core/src/io/anuke/mindustry/entities/traits/HealthTrait.java b/core/src/io/anuke/mindustry/entities/traits/HealthTrait.java new file mode 100644 index 0000000000..536b6caad2 --- /dev/null +++ b/core/src/io/anuke/mindustry/entities/traits/HealthTrait.java @@ -0,0 +1,48 @@ +package io.anuke.mindustry.entities.traits; + +import io.anuke.arc.math.Mathf; + +public interface HealthTrait{ + + void health(float health); + + float health(); + + float maxHealth(); + + boolean isDead(); + + void setDead(boolean dead); + + default void onHit(SolidTrait entity){ + } + + default void onDeath(){ + } + + default void damage(float amount){ + health(health() - amount); + if(health() <= 0 && !isDead()){ + onDeath(); + setDead(true); + } + } + + default void clampHealth(){ + health(Mathf.clamp(health(), 0, maxHealth())); + } + + default float healthf(){ + return health() / maxHealth(); + } + + default void healBy(float amount){ + health(health() + amount); + clampHealth(); + } + + default void heal(){ + health(maxHealth()); + setDead(false); + } +} diff --git a/core/src/io/anuke/mindustry/entities/traits/InventoryTrait.java b/core/src/io/anuke/mindustry/entities/traits/InventoryTrait.java deleted file mode 100644 index c84eaea6b4..0000000000 --- a/core/src/io/anuke/mindustry/entities/traits/InventoryTrait.java +++ /dev/null @@ -1,7 +0,0 @@ -package io.anuke.mindustry.entities.traits; - -import io.anuke.mindustry.entities.UnitInventory; - -public interface InventoryTrait{ - UnitInventory getInventory(); -} diff --git a/core/src/io/anuke/mindustry/entities/traits/MoveTrait.java b/core/src/io/anuke/mindustry/entities/traits/MoveTrait.java new file mode 100644 index 0000000000..561c7a76bd --- /dev/null +++ b/core/src/io/anuke/mindustry/entities/traits/MoveTrait.java @@ -0,0 +1,20 @@ +package io.anuke.mindustry.entities.traits; + +import io.anuke.arc.math.geom.Position; + +public interface MoveTrait extends Position{ + + void setX(float x); + + void setY(float y); + + default void moveBy(float x, float y){ + setX(getX() + x); + setY(getY() + y); + } + + default void set(float x, float y){ + setX(x); + setY(y); + } +} diff --git a/core/src/io/anuke/mindustry/entities/traits/SaveTrait.java b/core/src/io/anuke/mindustry/entities/traits/SaveTrait.java index bcf357f4e5..dfaf8011aa 100644 --- a/core/src/io/anuke/mindustry/entities/traits/SaveTrait.java +++ b/core/src/io/anuke/mindustry/entities/traits/SaveTrait.java @@ -1,7 +1,5 @@ package io.anuke.mindustry.entities.traits; -import io.anuke.arc.entities.trait.Entity; - /** * Marks an entity as serializable. */ diff --git a/core/src/io/anuke/mindustry/entities/traits/ScaleTrait.java b/core/src/io/anuke/mindustry/entities/traits/ScaleTrait.java new file mode 100644 index 0000000000..9975bb12a8 --- /dev/null +++ b/core/src/io/anuke/mindustry/entities/traits/ScaleTrait.java @@ -0,0 +1,43 @@ +package io.anuke.mindustry.entities.traits; + +import io.anuke.arc.math.Interpolation; + +public interface ScaleTrait{ + /** 0 to 1. */ + float fin(); + + /** 1 to 0 */ + default float fout(){ + return 1f - fin(); + } + + /** 1 to 0 */ + default float fout(Interpolation i){ + return i.apply(fout()); + } + + /** 1 to 0, ending at the specified margin */ + default float fout(float margin){ + float f = fin(); + if(f >= 1f - margin){ + return 1f - (f - (1f - margin)) / margin; + }else{ + return 1f; + } + } + + /** 0 to 1 **/ + default float fin(Interpolation i){ + return i.apply(fin()); + } + + /** 0 to 1 */ + default float finpow(){ + return Interpolation.pow3Out.apply(fin()); + } + + /** 0 to 1 to 0 */ + default float fslope(){ + return (0.5f - Math.abs(fin() - 0.5f)) * 2f; + } +} diff --git a/core/src/io/anuke/mindustry/entities/traits/ShooterTrait.java b/core/src/io/anuke/mindustry/entities/traits/ShooterTrait.java index 22072cfd64..ca3010eec3 100644 --- a/core/src/io/anuke/mindustry/entities/traits/ShooterTrait.java +++ b/core/src/io/anuke/mindustry/entities/traits/ShooterTrait.java @@ -1,10 +1,9 @@ package io.anuke.mindustry.entities.traits; -import io.anuke.arc.entities.trait.VelocityTrait; import io.anuke.arc.util.Interval; import io.anuke.mindustry.type.Weapon; -public interface ShooterTrait extends VelocityTrait, TeamTrait, InventoryTrait{ +public interface ShooterTrait extends VelocityTrait, TeamTrait{ Interval getTimer(); diff --git a/core/src/io/anuke/mindustry/entities/traits/SolidTrait.java b/core/src/io/anuke/mindustry/entities/traits/SolidTrait.java new file mode 100644 index 0000000000..83f5a70524 --- /dev/null +++ b/core/src/io/anuke/mindustry/entities/traits/SolidTrait.java @@ -0,0 +1,43 @@ +package io.anuke.mindustry.entities.traits; + + +import io.anuke.mindustry.entities.EntityQuery; +import io.anuke.arc.math.geom.Position; +import io.anuke.arc.math.geom.QuadTree.QuadTreeObject; +import io.anuke.arc.math.geom.Rectangle; +import io.anuke.arc.math.geom.Vector2; + +public interface SolidTrait extends QuadTreeObject, MoveTrait, VelocityTrait, Entity, Position{ + + void hitbox(Rectangle rectangle); + + void hitboxTile(Rectangle rectangle); + + Vector2 lastPosition(); + + default boolean collidesGrid(int x, int y){ + return true; + } + + default float getDeltaX(){ + return getX() - lastPosition().x; + } + + default float getDeltaY(){ + return getY() - lastPosition().y; + } + + default boolean movable(){ + return false; + } + + default boolean collides(SolidTrait other){ + return true; + } + + default void collision(SolidTrait other, float x, float y){} + + default void move(float x, float y){ + EntityQuery.collisions().move(this, x, y); + } +} diff --git a/core/src/io/anuke/mindustry/entities/traits/SpawnerTrait.java b/core/src/io/anuke/mindustry/entities/traits/SpawnerTrait.java index 55c1763b1f..cb98c0086a 100644 --- a/core/src/io/anuke/mindustry/entities/traits/SpawnerTrait.java +++ b/core/src/io/anuke/mindustry/entities/traits/SpawnerTrait.java @@ -1,12 +1,15 @@ package io.anuke.mindustry.entities.traits; -import io.anuke.mindustry.entities.Unit; +import io.anuke.mindustry.entities.type.Player; import io.anuke.mindustry.world.Tile; -public interface SpawnerTrait{ +public interface SpawnerTrait extends TargetTrait{ Tile getTile(); - void updateSpawning(Unit unit); + void updateSpawning(Player unit); - float getSpawnProgress(); + @Override + default boolean isValid(){ + return getTile().entity instanceof SpawnerTrait; + } } diff --git a/core/src/io/anuke/mindustry/entities/traits/SyncTrait.java b/core/src/io/anuke/mindustry/entities/traits/SyncTrait.java index 38bbe23088..cbcc0317ee 100644 --- a/core/src/io/anuke/mindustry/entities/traits/SyncTrait.java +++ b/core/src/io/anuke/mindustry/entities/traits/SyncTrait.java @@ -3,7 +3,6 @@ package io.anuke.mindustry.entities.traits; import io.anuke.mindustry.core.NetClient; import io.anuke.mindustry.net.Interpolator; import io.anuke.arc.Core; -import io.anuke.arc.entities.trait.Entity; import io.anuke.arc.util.Tmp; import java.io.DataInput; diff --git a/core/src/io/anuke/mindustry/entities/traits/TargetTrait.java b/core/src/io/anuke/mindustry/entities/traits/TargetTrait.java index f59ed37091..dcc7a876b9 100644 --- a/core/src/io/anuke/mindustry/entities/traits/TargetTrait.java +++ b/core/src/io/anuke/mindustry/entities/traits/TargetTrait.java @@ -1,7 +1,5 @@ package io.anuke.mindustry.entities.traits; -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; diff --git a/core/src/io/anuke/mindustry/entities/traits/TeamTrait.java b/core/src/io/anuke/mindustry/entities/traits/TeamTrait.java index 6954258423..5f800b2098 100644 --- a/core/src/io/anuke/mindustry/entities/traits/TeamTrait.java +++ b/core/src/io/anuke/mindustry/entities/traits/TeamTrait.java @@ -1,7 +1,6 @@ package io.anuke.mindustry.entities.traits; import io.anuke.mindustry.game.Team; -import io.anuke.arc.entities.trait.Entity; public interface TeamTrait extends Entity{ Team getTeam(); diff --git a/core/src/io/anuke/mindustry/entities/traits/TimeTrait.java b/core/src/io/anuke/mindustry/entities/traits/TimeTrait.java new file mode 100644 index 0000000000..47dc7dfe48 --- /dev/null +++ b/core/src/io/anuke/mindustry/entities/traits/TimeTrait.java @@ -0,0 +1,23 @@ +package io.anuke.mindustry.entities.traits; + +import io.anuke.arc.math.Mathf; +import io.anuke.arc.util.Time; + +public interface TimeTrait extends ScaleTrait, Entity{ + + float lifetime(); + + void time(float time); + + float time(); + + default void updateTime(){ + time(Mathf.clamp(time() + Time.delta(), 0, lifetime())); + + if(time() >= lifetime()){ + remove(); + } + } + + //fin() is not implemented due to compiler issues with iOS/RoboVM +} diff --git a/core/src/io/anuke/mindustry/entities/traits/VelocityTrait.java b/core/src/io/anuke/mindustry/entities/traits/VelocityTrait.java new file mode 100644 index 0000000000..c836154f9c --- /dev/null +++ b/core/src/io/anuke/mindustry/entities/traits/VelocityTrait.java @@ -0,0 +1,36 @@ +package io.anuke.mindustry.entities.traits; + +import io.anuke.arc.math.geom.Vector2; +import io.anuke.arc.util.Time; + +public interface VelocityTrait extends MoveTrait{ + + Vector2 velocity(); + + default void applyImpulse(float x, float y){ + velocity().x += x / mass(); + velocity().y += y / mass(); + } + + default float maxVelocity(){ + return Float.MAX_VALUE; + } + + default float mass(){ + return 1f; + } + + default float drag(){ + return 0f; + } + + default void updateVelocity(){ + velocity().scl(1f - drag() * Time.delta()); + + if(this instanceof SolidTrait){ + ((SolidTrait) this).move(velocity().x * Time.delta(), velocity().y * Time.delta()); + }else{ + moveBy(velocity().x * Time.delta(), velocity().y * Time.delta()); + } + } +} diff --git a/core/src/io/anuke/mindustry/entities/units/BaseUnit.java b/core/src/io/anuke/mindustry/entities/type/BaseUnit.java similarity index 83% rename from core/src/io/anuke/mindustry/entities/units/BaseUnit.java rename to core/src/io/anuke/mindustry/entities/type/BaseUnit.java index 695f875864..bb17c6aa14 100644 --- a/core/src/io/anuke/mindustry/entities/units/BaseUnit.java +++ b/core/src/io/anuke/mindustry/entities/type/BaseUnit.java @@ -1,10 +1,8 @@ -package io.anuke.mindustry.entities.units; +package io.anuke.mindustry.entities.type; import io.anuke.annotations.Annotations.Loc; import io.anuke.annotations.Annotations.Remote; import io.anuke.arc.Core; -import io.anuke.arc.entities.Effects; -import io.anuke.arc.entities.EntityGroup; import io.anuke.arc.graphics.g2d.Draw; import io.anuke.arc.graphics.g2d.TextureRegion; import io.anuke.arc.math.Angles; @@ -14,22 +12,20 @@ import io.anuke.arc.math.geom.Rectangle; import io.anuke.arc.util.Interval; import io.anuke.arc.util.Time; import io.anuke.mindustry.Vars; -import io.anuke.mindustry.content.Fx; -import io.anuke.mindustry.entities.Damage; -import io.anuke.mindustry.entities.TileEntity; -import io.anuke.mindustry.entities.Unit; +import io.anuke.mindustry.entities.EntityGroup; import io.anuke.mindustry.entities.Units; -import io.anuke.mindustry.entities.effect.ScorchDecal; import io.anuke.mindustry.entities.traits.ShooterTrait; -import io.anuke.mindustry.entities.traits.SpawnerTrait; import io.anuke.mindustry.entities.traits.TargetTrait; +import io.anuke.mindustry.entities.units.Squad; +import io.anuke.mindustry.entities.units.StateMachine; +import io.anuke.mindustry.entities.units.UnitDrops; +import io.anuke.mindustry.entities.units.UnitState; import io.anuke.mindustry.game.Team; import io.anuke.mindustry.gen.Call; -import io.anuke.mindustry.graphics.Palette; import io.anuke.mindustry.net.Net; import io.anuke.mindustry.type.ContentType; -import io.anuke.mindustry.type.ItemStack; import io.anuke.mindustry.type.StatusEffect; +import io.anuke.mindustry.type.UnitType; import io.anuke.mindustry.type.Weapon; import io.anuke.mindustry.world.Tile; import io.anuke.mindustry.world.meta.BlockFlag; @@ -70,16 +66,8 @@ public abstract class BaseUnit extends Unit implements ShooterTrait{ UnitDrops.dropItems(unit); } - float explosiveness = 2f + (unit.inventory.hasItem() ? unit.inventory.getItem().item.explosiveness * unit.inventory.getItem().amount : 0f); - float flammability = (unit.inventory.hasItem() ? unit.inventory.getItem().item.flammability * unit.inventory.getItem().amount : 0f); - Damage.dynamicExplosion(unit.x, unit.y, flammability, explosiveness, 0f, unit.getSize() / 2f, Palette.darkFlame); - unit.onSuperDeath(); - ScorchDecal.create(unit.x, unit.y); - Effects.effect(Fx.explosion, unit); - Effects.shake(2f, 2f, unit); - //must run afterwards so the unit's group is not null when sending the removal packet Core.app.post(unit::remove); } @@ -123,19 +111,6 @@ public abstract class BaseUnit extends Unit implements ShooterTrait{ return target instanceof TileEntity && ((TileEntity) target).tile.block().flags.contains(flag); } - public void updateRespawning(){ - if(spawner == noSpawner) return; - - Tile tile = world.tile(spawner); - if(tile != null && tile.entity != null){ - if(tile.entity instanceof SpawnerTrait){ - ((SpawnerTrait) tile.entity).updateSpawning(this); - } - }else{ - spawner = noSpawner; - } - } - public void setState(UnitState state){ this.state.set(state); } @@ -190,14 +165,13 @@ public abstract class BaseUnit extends Unit implements ShooterTrait{ protected void drawItems(){ float backTrns = 4f, itemSize = 5f; - if(inventory.hasItem()){ - ItemStack stack = inventory.getItem(); - int stored = Mathf.clamp(stack.amount / 6, 1, 8); + if(item.amount > 0){ + int stored = Mathf.clamp(item.amount / 6, 1, 8); for(int i = 0; i < stored; i++){ float angT = i == 0 ? 0 : Mathf.randomSeedRange(i + 2, 60f); float lenT = i == 0 ? 0 : Mathf.randomSeedRange(i + 3, 1f) - 1f; - Draw.rect(stack.item.region, + Draw.rect(item.item.region, x + Angles.trnsx(rotation + 180f + angT, backTrns + lenT), y + Angles.trnsy(rotation + 180f + angT, backTrns + lenT), itemSize, itemSize, rotation); @@ -254,11 +228,6 @@ public abstract class BaseUnit extends Unit implements ShooterTrait{ return type.health; } - @Override - public float getArmor(){ - return type.armor; - } - @Override public float getSize(){ return 8; @@ -279,7 +248,6 @@ public abstract class BaseUnit extends Unit implements ShooterTrait{ hitTime -= Time.delta(); if(isDead()){ - updateRespawning(); return; } @@ -295,10 +263,6 @@ public abstract class BaseUnit extends Unit implements ShooterTrait{ damage(health); } - if(squad != null){ - squad.update(); - } - updateTargeting(); state.update(); diff --git a/core/src/io/anuke/mindustry/entities/units/FlyingUnit.java b/core/src/io/anuke/mindustry/entities/type/FlyingUnit.java similarity index 98% rename from core/src/io/anuke/mindustry/entities/units/FlyingUnit.java rename to core/src/io/anuke/mindustry/entities/type/FlyingUnit.java index 0182dd9de6..cdacb528fc 100644 --- a/core/src/io/anuke/mindustry/entities/units/FlyingUnit.java +++ b/core/src/io/anuke/mindustry/entities/type/FlyingUnit.java @@ -1,4 +1,4 @@ -package io.anuke.mindustry.entities.units; +package io.anuke.mindustry.entities.type; import io.anuke.arc.graphics.g2d.Draw; import io.anuke.arc.math.Angles; @@ -9,6 +9,7 @@ import io.anuke.arc.util.Time; import io.anuke.mindustry.entities.Predict; import io.anuke.mindustry.entities.Units; import io.anuke.mindustry.entities.bullet.BulletType; +import io.anuke.mindustry.entities.units.UnitState; import io.anuke.mindustry.graphics.Shaders; import io.anuke.mindustry.net.Net; import io.anuke.mindustry.world.Tile; diff --git a/core/src/io/anuke/mindustry/entities/units/GroundUnit.java b/core/src/io/anuke/mindustry/entities/type/GroundUnit.java similarity index 98% rename from core/src/io/anuke/mindustry/entities/units/GroundUnit.java rename to core/src/io/anuke/mindustry/entities/type/GroundUnit.java index ae278c9c36..8aca0f254d 100644 --- a/core/src/io/anuke/mindustry/entities/units/GroundUnit.java +++ b/core/src/io/anuke/mindustry/entities/type/GroundUnit.java @@ -1,4 +1,4 @@ -package io.anuke.mindustry.entities.units; +package io.anuke.mindustry.entities.type; import io.anuke.arc.graphics.Color; import io.anuke.arc.graphics.g2d.Draw; @@ -8,9 +8,10 @@ import io.anuke.arc.math.geom.Vector2; import io.anuke.arc.util.Time; import io.anuke.mindustry.Vars; import io.anuke.mindustry.entities.Predict; -import io.anuke.mindustry.entities.TileEntity; import io.anuke.mindustry.entities.Units; import io.anuke.mindustry.entities.bullet.BulletType; +import io.anuke.mindustry.entities.units.UnitState; +import io.anuke.mindustry.type.UnitType; import io.anuke.mindustry.game.Team; import io.anuke.mindustry.graphics.Shaders; import io.anuke.mindustry.type.ContentType; diff --git a/core/src/io/anuke/mindustry/entities/Player.java b/core/src/io/anuke/mindustry/entities/type/Player.java similarity index 93% rename from core/src/io/anuke/mindustry/entities/Player.java rename to core/src/io/anuke/mindustry/entities/type/Player.java index e0ff36e456..43867b4440 100644 --- a/core/src/io/anuke/mindustry/entities/Player.java +++ b/core/src/io/anuke/mindustry/entities/type/Player.java @@ -1,12 +1,9 @@ -package io.anuke.mindustry.entities; +package io.anuke.mindustry.entities.type; import io.anuke.annotations.Annotations.Loc; import io.anuke.annotations.Annotations.Remote; import io.anuke.arc.Core; import io.anuke.arc.collection.Queue; -import io.anuke.arc.entities.Effects; -import io.anuke.arc.entities.EntityGroup; -import io.anuke.arc.entities.EntityQuery; import io.anuke.arc.graphics.Color; import io.anuke.arc.graphics.g2d.*; import io.anuke.arc.math.Angles; @@ -21,7 +18,7 @@ import io.anuke.arc.util.Time; import io.anuke.arc.util.pooling.Pools; import io.anuke.mindustry.content.Fx; import io.anuke.mindustry.content.Mechs; -import io.anuke.mindustry.entities.effect.ScorchDecal; +import io.anuke.mindustry.entities.*; import io.anuke.mindustry.entities.traits.BuilderTrait; import io.anuke.mindustry.entities.traits.ShooterTrait; import io.anuke.mindustry.entities.traits.SpawnerTrait; @@ -67,7 +64,7 @@ public class Player extends Unit implements BuilderTrait, ShooterTrait{ public boolean achievedFlight; public Color color = new Color(); public Mech mech; - public int spawner = noSpawner; + public SpawnerTrait spawner; public NetConnection con; public int playerIndex = 0; @@ -92,12 +89,6 @@ public class Player extends Unit implements BuilderTrait, ShooterTrait{ player.dead = true; player.placeQueue.clear(); - - float explosiveness = 2f + (player.inventory.hasItem() ? player.inventory.getItem().item.explosiveness * player.inventory.getItem().amount : 0f); - float flammability = (player.inventory.hasItem() ? player.inventory.getItem().item.flammability * player.inventory.getItem().amount : 0f); - Damage.dynamicExplosion(player.x, player.y, flammability, explosiveness, 0f, player.getSize() / 2f, Palette.darkFlame); - - ScorchDecal.create(player.x, player.y); player.onDeath(); } @@ -187,7 +178,7 @@ public class Player extends Unit implements BuilderTrait, ShooterTrait{ @Override public float maxHealth(){ - return 200; + return mech.health; } @Override @@ -206,8 +197,8 @@ public class Player extends Unit implements BuilderTrait, ShooterTrait{ } @Override - public float getArmor(){ - return mech.armor + mech.getExtraArmor(this); + public float calculateDamage(float amount){ + return amount * Mathf.clamp(1f - (status.getArmorMultiplier() + mech.getExtraArmor(this)) / 100f); } @Override @@ -356,8 +347,8 @@ public class Player extends Unit implements BuilderTrait, ShooterTrait{ } float backTrns = 4f, itemSize = 5f; - if(inventory.hasItem()){ - ItemStack stack = inventory.getItem(); + if(item.amount > 0){ + ItemStack stack = item; int stored = Mathf.clamp(stack.amount / 6, 1, 8); for(int i = 0; i < stored; i++){ @@ -385,7 +376,7 @@ public class Player extends Unit implements BuilderTrait, ShooterTrait{ public void drawOver(){ if(dead) return; - drawBuilding(this); + drawBuilding(); } public void drawName(){ @@ -505,7 +496,7 @@ public class Player extends Unit implements BuilderTrait, ShooterTrait{ updateRespawning(); return; }else{ - spawner = noSpawner; + spawner = null; } avoidOthers(1f); @@ -533,7 +524,7 @@ public class Player extends Unit implements BuilderTrait, ShooterTrait{ if(!isLocal){ interpolate(); - updateBuilding(this); //building happens even with non-locals + updateBuilding(); //building happens even with non-locals status.update(this); //status effect updating also happens with non locals for effect purposes updateVelocityStatus(); //velocity too, for visual purposes @@ -552,7 +543,7 @@ public class Player extends Unit implements BuilderTrait, ShooterTrait{ updateMech(); } - updateBuilding(this); + updateBuilding(); if(!mech.flying){ clampPosition(); @@ -570,10 +561,6 @@ public class Player extends Unit implements BuilderTrait, ShooterTrait{ } float speed = isBoosting && !mech.flying ? mech.boostSpeed : mech.speed; - //fraction of speed when at max load - float carrySlowdown = 0.7f; - - speed *= ((inventory.hasItem() ? Mathf.lerp(1f, carrySlowdown, (float) inventory.getItem().amount / inventory.capacity()) : 1f)); if(mech.flying){ //prevent strafing backwards, have a penalty for doing so @@ -754,7 +741,7 @@ public class Player extends Unit implements BuilderTrait, ShooterTrait{ public void resetNoAdd(){ status.clear(); team = Team.blue; - inventory.clear(); + item.amount = 0; placeQueue.clear(); dead = true; target = null; @@ -771,23 +758,23 @@ public class Player extends Unit implements BuilderTrait, ShooterTrait{ public void updateRespawning(){ - if(spawner != noSpawner && world.tile(spawner) != null && world.tile(spawner).entity instanceof SpawnerTrait){ - ((SpawnerTrait) world.tile(spawner).entity).updateSpawning(this); + if(spawner != null && spawner.isValid()){ + spawner.updateSpawning(this); }else{ CoreEntity entity = (CoreEntity) getClosestCore(); if(entity != null && !netServer.isWaitingForPlayers()){ - this.spawner = entity.tile.pos(); + this.spawner = (SpawnerTrait)entity.tile.entity; } } } public void beginRespawning(SpawnerTrait spawner){ - this.spawner = spawner.getTile().pos(); + this.spawner = spawner; this.dead = true; } public void endRespawning(){ - spawner = noSpawner; + spawner = null; } //endregion @@ -844,7 +831,7 @@ public class Player extends Unit implements BuilderTrait, ShooterTrait{ buffer.writeInt(Color.rgba8888(color)); buffer.writeByte(mech.id); buffer.writeInt(mining == null ? -1 : mining.pos()); - buffer.writeInt(spawner); + buffer.writeInt(spawner == null ? noSpawner : spawner.getTile().pos()); buffer.writeShort((short) (baseRotation * 2)); writeBuilding(buffer); @@ -876,7 +863,12 @@ public class Player extends Unit implements BuilderTrait, ShooterTrait{ }else{ mining = world.tile(mine); isBoosting = boosting; - this.spawner = spawner; + Tile tile = world.tile(spawner); + if(tile != null && tile.entity instanceof SpawnerTrait){ + this.spawner = (SpawnerTrait)tile.entity; + }else{ + this.spawner = null; + } } } diff --git a/core/src/io/anuke/mindustry/entities/TileEntity.java b/core/src/io/anuke/mindustry/entities/type/TileEntity.java similarity index 97% rename from core/src/io/anuke/mindustry/entities/TileEntity.java rename to core/src/io/anuke/mindustry/entities/type/TileEntity.java index 4241a25db9..f21b0035bf 100644 --- a/core/src/io/anuke/mindustry/entities/TileEntity.java +++ b/core/src/io/anuke/mindustry/entities/type/TileEntity.java @@ -1,14 +1,14 @@ -package io.anuke.mindustry.entities; +package io.anuke.mindustry.entities.type; import io.anuke.annotations.Annotations.Loc; import io.anuke.annotations.Annotations.Remote; import io.anuke.arc.Events; import io.anuke.arc.collection.Array; import io.anuke.arc.collection.ObjectSet; -import io.anuke.arc.entities.Effects; -import io.anuke.arc.entities.EntityGroup; -import io.anuke.arc.entities.impl.BaseEntity; -import io.anuke.arc.entities.trait.HealthTrait; +import io.anuke.mindustry.entities.Effects; +import io.anuke.mindustry.entities.EntityGroup; +import io.anuke.mindustry.entities.impl.BaseEntity; +import io.anuke.mindustry.entities.traits.HealthTrait; import io.anuke.arc.math.Mathf; import io.anuke.arc.math.geom.Point2; import io.anuke.arc.math.geom.Vector2; diff --git a/core/src/io/anuke/mindustry/entities/Unit.java b/core/src/io/anuke/mindustry/entities/type/Unit.java similarity index 84% rename from core/src/io/anuke/mindustry/entities/Unit.java rename to core/src/io/anuke/mindustry/entities/type/Unit.java index 7d9de914d8..34acf67e52 100644 --- a/core/src/io/anuke/mindustry/entities/Unit.java +++ b/core/src/io/anuke/mindustry/entities/type/Unit.java @@ -1,15 +1,9 @@ -package io.anuke.mindustry.entities; +package io.anuke.mindustry.entities.type; import io.anuke.arc.Core; import io.anuke.arc.Events; -import io.anuke.arc.entities.Effects; -import io.anuke.arc.entities.impl.DestructibleEntity; -import io.anuke.arc.entities.trait.DamageTrait; -import io.anuke.arc.entities.trait.DrawTrait; -import io.anuke.arc.entities.trait.SolidTrait; import io.anuke.arc.graphics.Color; import io.anuke.arc.graphics.g2d.Draw; -import io.anuke.arc.graphics.g2d.Fill; import io.anuke.arc.graphics.g2d.TextureRegion; import io.anuke.arc.math.Mathf; import io.anuke.arc.math.geom.Geometry; @@ -17,12 +11,21 @@ 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.Blocks; +import io.anuke.mindustry.content.Fx; +import io.anuke.mindustry.entities.Damage; +import io.anuke.mindustry.entities.Effects; +import io.anuke.mindustry.entities.Units; +import io.anuke.mindustry.entities.effect.ScorchDecal; +import io.anuke.mindustry.entities.impl.DestructibleEntity; import io.anuke.mindustry.entities.traits.*; +import io.anuke.mindustry.entities.units.Statuses; import io.anuke.mindustry.game.EventType.UnitDestroyEvent; import io.anuke.mindustry.game.Team; import io.anuke.mindustry.game.Teams.TeamData; +import io.anuke.mindustry.graphics.Palette; import io.anuke.mindustry.net.Interpolator; import io.anuke.mindustry.net.Net; +import io.anuke.mindustry.type.Item; import io.anuke.mindustry.type.ItemStack; import io.anuke.mindustry.type.StatusEffect; import io.anuke.mindustry.type.Weapon; @@ -35,7 +38,6 @@ import java.io.DataOutput; import java.io.IOException; import static io.anuke.mindustry.Vars.*; -import static io.anuke.mindustry.Vars.tilesize; public abstract class Unit extends DestructibleEntity implements SaveTrait, TargetTrait, SyncTrait, DrawTrait, TeamTrait{ /**Total duration of hit flash effect*/ @@ -53,7 +55,7 @@ public abstract class Unit extends DestructibleEntity implements SaveTrait, Targ protected final Interpolator interpolator = new Interpolator(); protected final Statuses status = new Statuses(); - protected final ItemStack inventory = new ItemStack(content.item(0), 0); + protected final ItemStack item = new ItemStack(content.item(0), 0); protected Team team = Team.blue; protected float drownTime, hitTime; @@ -109,7 +111,15 @@ public abstract class Unit extends DestructibleEntity implements SaveTrait, Targ @Override public void onDeath(){ - inventory.amount = 0; + float explosiveness = 2f + item.item.explosiveness * item.amount; + float flammability = item.item.flammability * item.amount; + Damage.dynamicExplosion(x, y, flammability, explosiveness, 0f, getSize() / 2f, Palette.darkFlame); + + ScorchDecal.create(x, y); + Effects.effect(Fx.explosion, this); + Effects.shake(2f, 2f, this); + + item.amount = 0; drownTime = 0f; status.clear(); Events.fire(new UnitDestroyEvent(this)); @@ -129,6 +139,11 @@ public abstract class Unit extends DestructibleEntity implements SaveTrait, Targ } } + @Override + public boolean isValid(){ + return !isDead() && isAdded(); + } + @Override public void writeSave(DataOutput stream) throws IOException{ writeSave(stream, false); @@ -144,9 +159,12 @@ public abstract class Unit extends DestructibleEntity implements SaveTrait, Targ byte yv = stream.readByte(); float rotation = stream.readShort() / 2f; int health = stream.readShort(); + byte itemID = stream.readByte(); + short itemAmount = stream.readShort(); this.status.readSave(stream); - this.inventory.readSave(stream); + this.item.amount = itemAmount; + this.item.item = content.item(itemID); this.dead = dead; this.team = Team.all[team]; this.health = health; @@ -165,8 +183,9 @@ public abstract class Unit extends DestructibleEntity implements SaveTrait, Targ stream.writeByte((byte) (Mathf.clamp(velocity.y, -maxAbsVelocity, maxAbsVelocity) * velocityPercision)); stream.writeShort((short) (rotation * 2)); stream.writeShort((short) health); + stream.writeByte(item.item.id); + stream.writeShort((short)item.amount); status.writeSave(stream); - inventory.writeSave(stream); } protected void clampPosition(){ @@ -188,7 +207,7 @@ public abstract class Unit extends DestructibleEntity implements SaveTrait, Targ } public float calculateDamage(float amount){ - return amount * Mathf.clamp(1f - getArmor() / 100f * status.getArmorMultiplier()); + return amount * Mathf.clamp(1f - status.getArmorMultiplier() / 100f); } public float getDamageMultipler(){ @@ -229,11 +248,6 @@ public abstract class Unit extends DestructibleEntity implements SaveTrait, Targ public void onRespawn(Tile tile){} - @Override - public boolean isValid(){ - return !isDead() && isAdded(); - } - /**Updates velocity and status effects.*/ public void updateVelocityStatus(){ Floor floor = getFloorOn(); @@ -292,6 +306,31 @@ public abstract class Unit extends DestructibleEntity implements SaveTrait, Targ velocity.scl(Mathf.clamp(1f - drag() * (isFlying() ? 1f : floor.dragMultiplier) * Time.delta())); } + public boolean acceptsItem(Item item){ + return this.item.amount <= 0 || (this.item.item == item && this.item.amount <= getItemCapacity()); + } + + public void addItem(Item item){ + addItem(item, 1); + } + + public void addItem(Item item, int amount){ + this.item.amount = this.item.item == item ? this.item.amount + amount : amount; + this.item.item = item; + } + + public void clearItem(){ + item.amount = 0; + } + + public ItemStack item(){ + return item; + } + + public int maxAccepted(Item item){ + return this.item.item != item ? 0 : getItemCapacity() - this.item.amount; + } + public void applyEffect(StatusEffect effect, float duration){ if(dead || Net.client()) return; //effects are synced and thus not applied through clients status.handleApply(this, effect, duration); @@ -339,18 +378,12 @@ public abstract class Unit extends DestructibleEntity implements SaveTrait, Targ Draw.rect(getIconRegion(), x + offsetX, y + offsetY, rotation - 90); } - public float getViewDistance(){ - return 135f; - } - public abstract TextureRegion getIconRegion(); public abstract Weapon getWeapon(); public abstract int getItemCapacity(); - public abstract float getArmor(); - public abstract float mass(); public abstract boolean isFlying(); diff --git a/core/src/io/anuke/mindustry/entities/type/types/Crawler.java b/core/src/io/anuke/mindustry/entities/type/types/Crawler.java new file mode 100644 index 0000000000..6ff5d2167c --- /dev/null +++ b/core/src/io/anuke/mindustry/entities/type/types/Crawler.java @@ -0,0 +1,6 @@ +package io.anuke.mindustry.entities.type.types; + +import io.anuke.mindustry.entities.type.GroundUnit; + +public class Crawler extends GroundUnit{ +} diff --git a/core/src/io/anuke/mindustry/entities/type/types/Dagger.java b/core/src/io/anuke/mindustry/entities/type/types/Dagger.java new file mode 100644 index 0000000000..4f3ed898fa --- /dev/null +++ b/core/src/io/anuke/mindustry/entities/type/types/Dagger.java @@ -0,0 +1,7 @@ +package io.anuke.mindustry.entities.type.types; + +import io.anuke.mindustry.entities.type.GroundUnit; + +public class Dagger extends GroundUnit{ + +} diff --git a/core/src/io/anuke/mindustry/entities/units/types/Drone.java b/core/src/io/anuke/mindustry/entities/type/types/Drone.java similarity index 91% rename from core/src/io/anuke/mindustry/entities/units/types/Drone.java rename to core/src/io/anuke/mindustry/entities/type/types/Drone.java index 6a7306b950..845e05d8bb 100644 --- a/core/src/io/anuke/mindustry/entities/units/types/Drone.java +++ b/core/src/io/anuke/mindustry/entities/type/types/Drone.java @@ -1,18 +1,18 @@ -package io.anuke.mindustry.entities.units.types; +package io.anuke.mindustry.entities.type.types; import io.anuke.arc.Events; import io.anuke.arc.collection.Queue; -import io.anuke.arc.entities.EntityGroup; +import io.anuke.mindustry.entities.EntityGroup; import io.anuke.arc.math.Mathf; import io.anuke.arc.math.geom.Geometry; import io.anuke.arc.util.Structs; import io.anuke.mindustry.content.Blocks; -import io.anuke.mindustry.entities.Player; -import io.anuke.mindustry.entities.TileEntity; +import io.anuke.mindustry.entities.type.Player; +import io.anuke.mindustry.entities.type.TileEntity; import io.anuke.mindustry.entities.Units; import io.anuke.mindustry.entities.traits.BuilderTrait; -import io.anuke.mindustry.entities.units.BaseUnit; -import io.anuke.mindustry.entities.units.FlyingUnit; +import io.anuke.mindustry.entities.type.BaseUnit; +import io.anuke.mindustry.entities.type.FlyingUnit; import io.anuke.mindustry.entities.units.UnitState; import io.anuke.mindustry.game.EventType.BuildSelectEvent; import io.anuke.mindustry.gen.Call; @@ -135,10 +135,10 @@ public class Drone extends FlyingUnit implements BuilderTrait{ } //if inventory is full, drop it off. - if(inventory.isFull()){ + if(item.amount >= getItemCapacity()){ setState(drop); }else{ - if(targetItem != null && !inventory.canAcceptItem(targetItem)){ + if(targetItem != null && !acceptsItem(targetItem)){ setState(drop); return; } @@ -177,13 +177,13 @@ public class Drone extends FlyingUnit implements BuilderTrait{ } public void update(){ - if(inventory.isEmpty()){ + if(item.amount == 0){ setState(mine); return; } - if(inventory.getItem().item.type != ItemType.material){ - inventory.clearItem(); + if(item.item.type != ItemType.material){ + item.amount = 0; setState(mine); return; } @@ -195,9 +195,9 @@ public class Drone extends FlyingUnit implements BuilderTrait{ TileEntity tile = (TileEntity) target; if(dst(target) < type.range){ - if(tile.tile.block().acceptStack(inventory.getItem().item, inventory.getItem().amount, tile.tile, Drone.this) == inventory.getItem().amount){ - Call.transferItemTo(inventory.getItem().item, inventory.getItem().amount, x, y, tile.tile); - inventory.clearItem(); + if(tile.tile.block().acceptStack(item.item, item.amount, tile.tile, Drone.this) == item.amount){ + Call.transferItemTo(item.item, item.amount, x, y, tile.tile); + item.amount = 0; } setState(repair); @@ -299,7 +299,7 @@ public class Drone extends FlyingUnit implements BuilderTrait{ target = null; } - updateBuilding(this); + updateBuilding(); } @Override @@ -326,7 +326,7 @@ public class Drone extends FlyingUnit implements BuilderTrait{ @Override public void drawOver(){ - drawBuilding(this); + drawBuilding(); } @Override diff --git a/core/src/io/anuke/mindustry/entities/type/types/Eruptor.java b/core/src/io/anuke/mindustry/entities/type/types/Eruptor.java new file mode 100644 index 0000000000..4a3104afc6 --- /dev/null +++ b/core/src/io/anuke/mindustry/entities/type/types/Eruptor.java @@ -0,0 +1,6 @@ +package io.anuke.mindustry.entities.type.types; + +import io.anuke.mindustry.entities.type.GroundUnit; + +public class Eruptor extends GroundUnit{ +} diff --git a/core/src/io/anuke/mindustry/entities/units/types/Fortress.java b/core/src/io/anuke/mindustry/entities/type/types/Fortress.java similarity index 78% rename from core/src/io/anuke/mindustry/entities/units/types/Fortress.java rename to core/src/io/anuke/mindustry/entities/type/types/Fortress.java index c39e356586..8811d43910 100644 --- a/core/src/io/anuke/mindustry/entities/units/types/Fortress.java +++ b/core/src/io/anuke/mindustry/entities/type/types/Fortress.java @@ -1,7 +1,7 @@ -package io.anuke.mindustry.entities.units.types; +package io.anuke.mindustry.entities.type.types; import io.anuke.mindustry.entities.Units; -import io.anuke.mindustry.entities.units.GroundUnit; +import io.anuke.mindustry.entities.type.GroundUnit; public class Fortress extends GroundUnit{ diff --git a/core/src/io/anuke/mindustry/entities/type/types/Ghoul.java b/core/src/io/anuke/mindustry/entities/type/types/Ghoul.java new file mode 100644 index 0000000000..1bd26a6154 --- /dev/null +++ b/core/src/io/anuke/mindustry/entities/type/types/Ghoul.java @@ -0,0 +1,7 @@ +package io.anuke.mindustry.entities.type.types; + +import io.anuke.mindustry.entities.type.FlyingUnit; + +public class Ghoul extends FlyingUnit{ + +} diff --git a/core/src/io/anuke/mindustry/entities/type/types/Phantom.java b/core/src/io/anuke/mindustry/entities/type/types/Phantom.java new file mode 100644 index 0000000000..469ba1bad0 --- /dev/null +++ b/core/src/io/anuke/mindustry/entities/type/types/Phantom.java @@ -0,0 +1,5 @@ +package io.anuke.mindustry.entities.type.types; + +public class Phantom extends Drone{ + +} diff --git a/core/src/io/anuke/mindustry/entities/type/types/Revenant.java b/core/src/io/anuke/mindustry/entities/type/types/Revenant.java new file mode 100644 index 0000000000..1c30c1949a --- /dev/null +++ b/core/src/io/anuke/mindustry/entities/type/types/Revenant.java @@ -0,0 +1,7 @@ +package io.anuke.mindustry.entities.type.types; + +import io.anuke.mindustry.entities.type.FlyingUnit; + +public class Revenant extends FlyingUnit{ + +} diff --git a/core/src/io/anuke/mindustry/entities/type/types/Spirit.java b/core/src/io/anuke/mindustry/entities/type/types/Spirit.java new file mode 100644 index 0000000000..e95ca3bd8b --- /dev/null +++ b/core/src/io/anuke/mindustry/entities/type/types/Spirit.java @@ -0,0 +1,4 @@ +package io.anuke.mindustry.entities.type.types; + +public class Spirit extends Drone{ +} diff --git a/core/src/io/anuke/mindustry/entities/type/types/Titan.java b/core/src/io/anuke/mindustry/entities/type/types/Titan.java new file mode 100644 index 0000000000..b9e259d2fc --- /dev/null +++ b/core/src/io/anuke/mindustry/entities/type/types/Titan.java @@ -0,0 +1,7 @@ +package io.anuke.mindustry.entities.type.types; + +import io.anuke.mindustry.entities.type.GroundUnit; + +public class Titan extends GroundUnit{ + +} diff --git a/core/src/io/anuke/mindustry/entities/type/types/Wraith.java b/core/src/io/anuke/mindustry/entities/type/types/Wraith.java new file mode 100644 index 0000000000..0734008dd5 --- /dev/null +++ b/core/src/io/anuke/mindustry/entities/type/types/Wraith.java @@ -0,0 +1,7 @@ +package io.anuke.mindustry.entities.type.types; + +import io.anuke.mindustry.entities.type.FlyingUnit; + +public class Wraith extends FlyingUnit{ + +} diff --git a/core/src/io/anuke/mindustry/entities/Statuses.java b/core/src/io/anuke/mindustry/entities/units/Statuses.java similarity index 96% rename from core/src/io/anuke/mindustry/entities/Statuses.java rename to core/src/io/anuke/mindustry/entities/units/Statuses.java index dd7cf0f5af..90fc24b270 100644 --- a/core/src/io/anuke/mindustry/entities/Statuses.java +++ b/core/src/io/anuke/mindustry/entities/units/Statuses.java @@ -1,4 +1,4 @@ -package io.anuke.mindustry.entities; +package io.anuke.mindustry.entities.units; import io.anuke.arc.collection.Array; import io.anuke.arc.graphics.Color; @@ -7,6 +7,7 @@ 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.entities.type.Unit; import io.anuke.mindustry.type.ContentType; import io.anuke.mindustry.type.StatusEffect; @@ -26,7 +27,7 @@ public class Statuses implements Saveable{ private float damageMultiplier; private float armorMultiplier; - public void handleApply(Unit unit, StatusEffect effect, float duration){ + public void handleApply(io.anuke.mindustry.entities.type.Unit unit, StatusEffect effect, float duration){ if(effect == StatusEffects.none || unit.isImmune(effect)) return; //don't apply empty or immune effects if(statuses.size > 0){ diff --git a/core/src/io/anuke/mindustry/entities/units/UnitDrops.java b/core/src/io/anuke/mindustry/entities/units/UnitDrops.java index e06104cdd2..84c47a4457 100644 --- a/core/src/io/anuke/mindustry/entities/units/UnitDrops.java +++ b/core/src/io/anuke/mindustry/entities/units/UnitDrops.java @@ -2,7 +2,8 @@ package io.anuke.mindustry.entities.units; import io.anuke.mindustry.Vars; import io.anuke.mindustry.content.Items; -import io.anuke.mindustry.entities.TileEntity; +import io.anuke.mindustry.entities.type.BaseUnit; +import io.anuke.mindustry.entities.type.TileEntity; import io.anuke.mindustry.gen.Call; import io.anuke.mindustry.type.Item; import io.anuke.arc.math.Mathf; diff --git a/core/src/io/anuke/mindustry/entities/units/types/Crawler.java b/core/src/io/anuke/mindustry/entities/units/types/Crawler.java deleted file mode 100644 index 73ad2171cd..0000000000 --- a/core/src/io/anuke/mindustry/entities/units/types/Crawler.java +++ /dev/null @@ -1,6 +0,0 @@ -package io.anuke.mindustry.entities.units.types; - -import io.anuke.mindustry.entities.units.GroundUnit; - -public class Crawler extends GroundUnit{ -} diff --git a/core/src/io/anuke/mindustry/entities/units/types/Dagger.java b/core/src/io/anuke/mindustry/entities/units/types/Dagger.java deleted file mode 100644 index aab1b4161b..0000000000 --- a/core/src/io/anuke/mindustry/entities/units/types/Dagger.java +++ /dev/null @@ -1,7 +0,0 @@ -package io.anuke.mindustry.entities.units.types; - -import io.anuke.mindustry.entities.units.GroundUnit; - -public class Dagger extends GroundUnit{ - -} diff --git a/core/src/io/anuke/mindustry/entities/units/types/Eruptor.java b/core/src/io/anuke/mindustry/entities/units/types/Eruptor.java deleted file mode 100644 index e7daaf1273..0000000000 --- a/core/src/io/anuke/mindustry/entities/units/types/Eruptor.java +++ /dev/null @@ -1,6 +0,0 @@ -package io.anuke.mindustry.entities.units.types; - -import io.anuke.mindustry.entities.units.GroundUnit; - -public class Eruptor extends GroundUnit{ -} diff --git a/core/src/io/anuke/mindustry/entities/units/types/Ghoul.java b/core/src/io/anuke/mindustry/entities/units/types/Ghoul.java deleted file mode 100644 index bc026434ab..0000000000 --- a/core/src/io/anuke/mindustry/entities/units/types/Ghoul.java +++ /dev/null @@ -1,7 +0,0 @@ -package io.anuke.mindustry.entities.units.types; - -import io.anuke.mindustry.entities.units.FlyingUnit; - -public class Ghoul extends FlyingUnit{ - -} diff --git a/core/src/io/anuke/mindustry/entities/units/types/Phantom.java b/core/src/io/anuke/mindustry/entities/units/types/Phantom.java deleted file mode 100644 index 622a5f245c..0000000000 --- a/core/src/io/anuke/mindustry/entities/units/types/Phantom.java +++ /dev/null @@ -1,5 +0,0 @@ -package io.anuke.mindustry.entities.units.types; - -public class Phantom extends Drone{ - -} diff --git a/core/src/io/anuke/mindustry/entities/units/types/Revenant.java b/core/src/io/anuke/mindustry/entities/units/types/Revenant.java deleted file mode 100644 index b2de68bdce..0000000000 --- a/core/src/io/anuke/mindustry/entities/units/types/Revenant.java +++ /dev/null @@ -1,7 +0,0 @@ -package io.anuke.mindustry.entities.units.types; - -import io.anuke.mindustry.entities.units.FlyingUnit; - -public class Revenant extends FlyingUnit{ - -} diff --git a/core/src/io/anuke/mindustry/entities/units/types/Spirit.java b/core/src/io/anuke/mindustry/entities/units/types/Spirit.java deleted file mode 100644 index 1c535dc3ab..0000000000 --- a/core/src/io/anuke/mindustry/entities/units/types/Spirit.java +++ /dev/null @@ -1,4 +0,0 @@ -package io.anuke.mindustry.entities.units.types; - -public class Spirit extends Drone{ -} diff --git a/core/src/io/anuke/mindustry/entities/units/types/Titan.java b/core/src/io/anuke/mindustry/entities/units/types/Titan.java deleted file mode 100644 index e2c6a845bc..0000000000 --- a/core/src/io/anuke/mindustry/entities/units/types/Titan.java +++ /dev/null @@ -1,7 +0,0 @@ -package io.anuke.mindustry.entities.units.types; - -import io.anuke.mindustry.entities.units.GroundUnit; - -public class Titan extends GroundUnit{ - -} diff --git a/core/src/io/anuke/mindustry/entities/units/types/Wraith.java b/core/src/io/anuke/mindustry/entities/units/types/Wraith.java deleted file mode 100644 index 5033690101..0000000000 --- a/core/src/io/anuke/mindustry/entities/units/types/Wraith.java +++ /dev/null @@ -1,7 +0,0 @@ -package io.anuke.mindustry.entities.units.types; - -import io.anuke.mindustry.entities.units.FlyingUnit; - -public class Wraith extends FlyingUnit{ - -} diff --git a/core/src/io/anuke/mindustry/game/EventType.java b/core/src/io/anuke/mindustry/game/EventType.java index ef730a377a..91b2d05ff7 100644 --- a/core/src/io/anuke/mindustry/game/EventType.java +++ b/core/src/io/anuke/mindustry/game/EventType.java @@ -2,7 +2,7 @@ package io.anuke.mindustry.game; import io.anuke.arc.Events.Event; import io.anuke.mindustry.core.GameState.State; -import io.anuke.mindustry.entities.Unit; +import io.anuke.mindustry.entities.type.Unit; import io.anuke.mindustry.entities.traits.BuilderTrait; import io.anuke.mindustry.world.Tile; diff --git a/core/src/io/anuke/mindustry/game/SpawnGroup.java b/core/src/io/anuke/mindustry/game/SpawnGroup.java index 56347177c3..24ee565014 100644 --- a/core/src/io/anuke/mindustry/game/SpawnGroup.java +++ b/core/src/io/anuke/mindustry/game/SpawnGroup.java @@ -1,8 +1,8 @@ package io.anuke.mindustry.game; -import io.anuke.mindustry.entities.units.BaseUnit; -import io.anuke.mindustry.entities.units.GroundUnit; -import io.anuke.mindustry.entities.units.UnitType; +import io.anuke.mindustry.entities.type.BaseUnit; +import io.anuke.mindustry.entities.type.GroundUnit; +import io.anuke.mindustry.type.UnitType; import io.anuke.mindustry.type.ItemStack; import io.anuke.mindustry.type.StatusEffect; import io.anuke.mindustry.type.Weapon; @@ -66,7 +66,7 @@ public class SpawnGroup{ } if(items != null){ - unit.inventory.addItem(items.item, items.amount); + unit.addItem(items.item, items.amount); } return unit; diff --git a/core/src/io/anuke/mindustry/graphics/BlockRenderer.java b/core/src/io/anuke/mindustry/graphics/BlockRenderer.java index 631ad83ca5..35b0d9952e 100644 --- a/core/src/io/anuke/mindustry/graphics/BlockRenderer.java +++ b/core/src/io/anuke/mindustry/graphics/BlockRenderer.java @@ -4,8 +4,8 @@ import io.anuke.arc.Core; import io.anuke.arc.Events; import io.anuke.arc.collection.Array; import io.anuke.arc.collection.Sort; -import io.anuke.arc.entities.EntityDraw; -import io.anuke.arc.entities.EntityGroup; +import io.anuke.mindustry.entities.EntityDraw; +import io.anuke.mindustry.entities.EntityGroup; import io.anuke.arc.graphics.Color; import io.anuke.arc.graphics.Texture.TextureFilter; import io.anuke.arc.graphics.g2d.Draw; @@ -13,7 +13,7 @@ import io.anuke.arc.graphics.g2d.Fill; import io.anuke.arc.graphics.glutils.FrameBuffer; import io.anuke.arc.util.Tmp; import io.anuke.mindustry.content.Blocks; -import io.anuke.mindustry.entities.Unit; +import io.anuke.mindustry.entities.type.Unit; import io.anuke.mindustry.game.EventType.TileChangeEvent; import io.anuke.mindustry.game.EventType.WorldLoadEvent; import io.anuke.mindustry.game.Team; diff --git a/core/src/io/anuke/mindustry/graphics/MinimapRenderer.java b/core/src/io/anuke/mindustry/graphics/MinimapRenderer.java index dcd8261fc8..5c938d2b8c 100644 --- a/core/src/io/anuke/mindustry/graphics/MinimapRenderer.java +++ b/core/src/io/anuke/mindustry/graphics/MinimapRenderer.java @@ -14,7 +14,7 @@ import io.anuke.arc.graphics.g2d.TextureRegion; import io.anuke.arc.math.Mathf; import io.anuke.arc.math.geom.Rectangle; import io.anuke.arc.util.Disposable; -import io.anuke.mindustry.entities.Unit; +import io.anuke.mindustry.entities.type.Unit; import io.anuke.mindustry.entities.Units; import io.anuke.mindustry.game.EventType.TileChangeEvent; import io.anuke.mindustry.game.EventType.WorldLoadEvent; diff --git a/core/src/io/anuke/mindustry/graphics/OverlayRenderer.java b/core/src/io/anuke/mindustry/graphics/OverlayRenderer.java index 6211e4ee35..b646229875 100644 --- a/core/src/io/anuke/mindustry/graphics/OverlayRenderer.java +++ b/core/src/io/anuke/mindustry/graphics/OverlayRenderer.java @@ -10,7 +10,7 @@ import io.anuke.arc.math.geom.Vector2; import io.anuke.arc.util.Time; import io.anuke.arc.util.Tmp; import io.anuke.mindustry.content.Blocks; -import io.anuke.mindustry.entities.Player; +import io.anuke.mindustry.entities.type.Player; import io.anuke.mindustry.game.Team; import io.anuke.mindustry.input.InputHandler; import io.anuke.mindustry.world.Tile; @@ -102,14 +102,14 @@ public class OverlayRenderer{ if(input.isDroppingItem()){ 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.rect(player.item().item.region, v.x, v.y, size, size); Draw.color(Palette.accent); Lines.circle(v.x, v.y, 6 + Mathf.absin(Time.time(), 5f, 1f)); Draw.reset(); Tile tile = world.tileWorld(v.x, v.y); if(tile != null) tile = tile.target(); - if(tile != null && tile.getTeam() == player.getTeam() && tile.block().acceptStack(player.inventory.getItem().item, player.inventory.getItem().amount, tile, player) > 0){ + if(tile != null && tile.getTeam() == player.getTeam() && tile.block().acceptStack(player.item().item, player.item().amount, tile, player) > 0){ Draw.color(Palette.place); Lines.square(tile.drawx(), tile.drawy(), tile.block().size * tilesize / 2f + 1 + Mathf.absin(Time.time(), 5f, 1f)); Draw.color(); diff --git a/core/src/io/anuke/mindustry/input/DesktopInput.java b/core/src/io/anuke/mindustry/input/DesktopInput.java index 02c212da5c..18c11c62aa 100644 --- a/core/src/io/anuke/mindustry/input/DesktopInput.java +++ b/core/src/io/anuke/mindustry/input/DesktopInput.java @@ -9,7 +9,7 @@ import io.anuke.arc.graphics.g2d.TextureRegion; import io.anuke.arc.math.Mathf; import io.anuke.mindustry.content.Blocks; import io.anuke.mindustry.core.GameState.State; -import io.anuke.mindustry.entities.Player; +import io.anuke.mindustry.entities.type.Player; import io.anuke.mindustry.graphics.Palette; import io.anuke.mindustry.input.PlaceUtils.NormalizeDrawResult; import io.anuke.mindustry.input.PlaceUtils.NormalizeResult; diff --git a/core/src/io/anuke/mindustry/input/InputHandler.java b/core/src/io/anuke/mindustry/input/InputHandler.java index 69934a354a..c9551a5a5d 100644 --- a/core/src/io/anuke/mindustry/input/InputHandler.java +++ b/core/src/io/anuke/mindustry/input/InputHandler.java @@ -3,7 +3,7 @@ package io.anuke.mindustry.input; import io.anuke.annotations.Annotations.Loc; import io.anuke.annotations.Annotations.Remote; import io.anuke.arc.Core; -import io.anuke.arc.entities.Effects; +import io.anuke.mindustry.entities.Effects; import io.anuke.arc.graphics.Color; import io.anuke.arc.input.InputProcessor; import io.anuke.arc.math.Angles; @@ -13,7 +13,7 @@ import io.anuke.arc.scene.ui.layout.Table; import io.anuke.arc.util.Time; import io.anuke.mindustry.content.Blocks; import io.anuke.mindustry.content.Fx; -import io.anuke.mindustry.entities.Player; +import io.anuke.mindustry.entities.type.Player; import io.anuke.mindustry.entities.effect.ItemTransfer; import io.anuke.mindustry.entities.traits.BuilderTrait.BuildRequest; import io.anuke.mindustry.game.Team; @@ -53,17 +53,17 @@ public abstract class InputHandler implements InputProcessor{ @Remote(targets = Loc.client, called = Loc.server) public static void dropItem(Player player, float angle){ - if(Net.server() && !player.inventory.hasItem()){ + if(Net.server() && player.item().amount <= 0){ throw new ValidateException(player, "Player cannot drop an item."); } - Effects.effect(Fx.dropItem, Color.WHITE, player.x, player.y, angle, player.inventory.getItem().item); - player.inventory.clearItem(); + Effects.effect(Fx.dropItem, Color.WHITE, player.x, player.y, angle, player.item().item); + player.clearItem(); } @Remote(targets = Loc.both, forward = true, called = Loc.server) public static void transferInventory(Player player, Tile tile){ - if(Net.server() && (!player.inventory.hasItem() || player.isTransferring)){ + if(Net.server() && (player.item().amount <= 0 || player.isTransferring)){ throw new ValidateException(player, "Player cannot transfer an item."); } @@ -71,10 +71,10 @@ public abstract class InputHandler implements InputProcessor{ player.isTransferring = true; - Item item = player.inventory.getItem().item; - int amount = player.inventory.getItem().amount; + Item item = player.item().item; + int amount = player.item().amount; int accepted = tile.block().acceptStack(item, amount, tile, player); - player.inventory.getItem().amount -= accepted; + player.item().amount -= accepted; int sent = Mathf.clamp(accepted / 4, 1, 8); int removed = accepted / sent; @@ -216,7 +216,7 @@ public abstract class InputHandler implements InputProcessor{ } boolean canTapPlayer(float x, float y){ - return Mathf.dst(x, y, player.x, player.y) <= playerSelectRange && player.inventory.hasItem(); + return Mathf.dst(x, y, player.x, player.y) <= playerSelectRange && player.item().amount > 0; } /**Tries to begin mining a tile, returns true if successful.*/ @@ -233,7 +233,7 @@ public abstract class InputHandler implements InputProcessor{ return !Core.scene.hasMouse() && tile.floor().itemDrop != null && tile.floor().itemDrop.hardness <= player.mech.drillPower && !tile.floor().playerUnmineable - && player.inventory.canAcceptItem(tile.floor().itemDrop) + && player.acceptsItem(tile.floor().itemDrop) && tile.block() == Blocks.air && player.dst(tile.worldx(), tile.worldy()) <= Player.mineDistance; } @@ -288,14 +288,14 @@ public abstract class InputHandler implements InputProcessor{ } public void tryDropItems(Tile tile, float x, float y){ - if(!droppingItem || !player.inventory.hasItem() || canTapPlayer(x, y)){ + if(!droppingItem || player.item().amount <= 0 || canTapPlayer(x, y)){ droppingItem = false; return; } droppingItem = false; - ItemStack stack = player.inventory.getItem(); + ItemStack stack = player.item(); if(tile.block().acceptStack(stack.item, stack.amount, tile, player) > 0 && tile.getTeam() == player.getTeam() && tile.block().hasItems){ Call.transferInventory(player, tile); diff --git a/core/src/io/anuke/mindustry/input/MobileInput.java b/core/src/io/anuke/mindustry/input/MobileInput.java index 4878cb84ee..b7af9dace3 100644 --- a/core/src/io/anuke/mindustry/input/MobileInput.java +++ b/core/src/io/anuke/mindustry/input/MobileInput.java @@ -3,7 +3,7 @@ package io.anuke.mindustry.input; import io.anuke.arc.Core; import io.anuke.arc.collection.Array; import io.anuke.arc.collection.ObjectSet; -import io.anuke.arc.entities.Effects; +import io.anuke.mindustry.entities.Effects; import io.anuke.arc.graphics.Color; import io.anuke.arc.graphics.g2d.Draw; import io.anuke.arc.graphics.g2d.Lines; @@ -21,9 +21,9 @@ import io.anuke.arc.util.Time; import io.anuke.mindustry.content.Blocks; import io.anuke.mindustry.content.Fx; import io.anuke.mindustry.core.GameState.State; -import io.anuke.mindustry.entities.Player; -import io.anuke.mindustry.entities.TileEntity; -import io.anuke.mindustry.entities.Unit; +import io.anuke.mindustry.entities.type.Player; +import io.anuke.mindustry.entities.type.TileEntity; +import io.anuke.mindustry.entities.type.Unit; import io.anuke.mindustry.entities.Units; import io.anuke.mindustry.entities.traits.TargetTrait; import io.anuke.mindustry.graphics.Palette; diff --git a/core/src/io/anuke/mindustry/io/SaveFileVersion.java b/core/src/io/anuke/mindustry/io/SaveFileVersion.java index b7f3c2784e..eebe565662 100644 --- a/core/src/io/anuke/mindustry/io/SaveFileVersion.java +++ b/core/src/io/anuke/mindustry/io/SaveFileVersion.java @@ -1,9 +1,9 @@ package io.anuke.mindustry.io; import io.anuke.arc.collection.Array; -import io.anuke.arc.entities.Entities; -import io.anuke.arc.entities.EntityGroup; -import io.anuke.arc.entities.trait.Entity; +import io.anuke.mindustry.entities.Entities; +import io.anuke.mindustry.entities.EntityGroup; +import io.anuke.mindustry.entities.traits.Entity; import io.anuke.arc.util.Pack; import io.anuke.mindustry.content.Blocks; import io.anuke.mindustry.entities.traits.SaveTrait; diff --git a/core/src/io/anuke/mindustry/io/TypeIO.java b/core/src/io/anuke/mindustry/io/TypeIO.java index f3903208af..06142ecf75 100644 --- a/core/src/io/anuke/mindustry/io/TypeIO.java +++ b/core/src/io/anuke/mindustry/io/TypeIO.java @@ -2,17 +2,17 @@ package io.anuke.mindustry.io; import io.anuke.annotations.Annotations.ReadClass; import io.anuke.annotations.Annotations.WriteClass; -import io.anuke.arc.entities.Effects; -import io.anuke.arc.entities.Effects.Effect; -import io.anuke.arc.entities.Entities; +import io.anuke.mindustry.entities.Effects; +import io.anuke.mindustry.entities.Effects.Effect; +import io.anuke.mindustry.entities.Entities; import io.anuke.arc.graphics.Color; -import io.anuke.mindustry.entities.Player; -import io.anuke.mindustry.entities.Unit; +import io.anuke.mindustry.entities.type.Player; +import io.anuke.mindustry.entities.type.Unit; import io.anuke.mindustry.entities.bullet.Bullet; import io.anuke.mindustry.entities.bullet.BulletType; import io.anuke.mindustry.entities.traits.BuilderTrait.BuildRequest; import io.anuke.mindustry.entities.traits.ShooterTrait; -import io.anuke.mindustry.entities.units.BaseUnit; +import io.anuke.mindustry.entities.type.BaseUnit; import io.anuke.mindustry.game.Team; import io.anuke.mindustry.net.Packets.AdminAction; import io.anuke.mindustry.net.Packets.KickReason; diff --git a/core/src/io/anuke/mindustry/net/NetworkIO.java b/core/src/io/anuke/mindustry/net/NetworkIO.java index 09183f4049..5d1312db55 100644 --- a/core/src/io/anuke/mindustry/net/NetworkIO.java +++ b/core/src/io/anuke/mindustry/net/NetworkIO.java @@ -3,9 +3,9 @@ package io.anuke.mindustry.net; import io.anuke.arc.Core; import io.anuke.arc.collection.ObjectMap; import io.anuke.arc.collection.ObjectMap.Entry; -import io.anuke.arc.entities.Entities; +import io.anuke.mindustry.entities.Entities; import io.anuke.arc.util.Time; -import io.anuke.mindustry.entities.Player; +import io.anuke.mindustry.entities.type.Player; import io.anuke.mindustry.game.Team; import io.anuke.mindustry.game.Teams; import io.anuke.mindustry.game.Teams.TeamData; diff --git a/core/src/io/anuke/mindustry/net/ValidateException.java b/core/src/io/anuke/mindustry/net/ValidateException.java index 89923702de..08f3f70483 100644 --- a/core/src/io/anuke/mindustry/net/ValidateException.java +++ b/core/src/io/anuke/mindustry/net/ValidateException.java @@ -1,6 +1,6 @@ package io.anuke.mindustry.net; -import io.anuke.mindustry.entities.Player; +import io.anuke.mindustry.entities.type.Player; /** * Thrown when a client sends invalid information. diff --git a/core/src/io/anuke/mindustry/type/Mech.java b/core/src/io/anuke/mindustry/type/Mech.java index e2f281b425..7bf30223a7 100644 --- a/core/src/io/anuke/mindustry/type/Mech.java +++ b/core/src/io/anuke/mindustry/type/Mech.java @@ -5,7 +5,7 @@ import io.anuke.arc.graphics.Color; import io.anuke.arc.graphics.g2d.TextureRegion; import io.anuke.arc.scene.ui.layout.Table; import io.anuke.mindustry.content.Weapons; -import io.anuke.mindustry.entities.Player; +import io.anuke.mindustry.entities.type.Player; import io.anuke.mindustry.game.UnlockableContent; import io.anuke.mindustry.graphics.Palette; import io.anuke.mindustry.ui.ContentDisplay; @@ -21,7 +21,7 @@ public class Mech extends UnlockableContent{ public float drag = 0.4f; public float mass = 1f; public float shake = 0f; - public float armor = 1f; + public float health = 200f; public float hitsize = 6f; public float cellTrnsY = 0f; diff --git a/core/src/io/anuke/mindustry/type/StatusEffect.java b/core/src/io/anuke/mindustry/type/StatusEffect.java index db977b6b48..3852f0a38e 100644 --- a/core/src/io/anuke/mindustry/type/StatusEffect.java +++ b/core/src/io/anuke/mindustry/type/StatusEffect.java @@ -2,15 +2,15 @@ package io.anuke.mindustry.type; import io.anuke.arc.collection.Array; import io.anuke.arc.collection.ObjectMap; -import io.anuke.arc.entities.Effects; -import io.anuke.arc.entities.Effects.Effect; +import io.anuke.mindustry.entities.Effects; +import io.anuke.mindustry.entities.Effects.Effect; import io.anuke.arc.function.Supplier; import io.anuke.arc.graphics.Color; import io.anuke.arc.math.Mathf; import io.anuke.arc.util.Time; import io.anuke.mindustry.content.Fx; -import io.anuke.mindustry.entities.Statuses.StatusEntry; -import io.anuke.mindustry.entities.Unit; +import io.anuke.mindustry.entities.units.Statuses.StatusEntry; +import io.anuke.mindustry.entities.type.Unit; import io.anuke.mindustry.game.Content; public class StatusEffect extends Content{ diff --git a/core/src/io/anuke/mindustry/entities/units/UnitType.java b/core/src/io/anuke/mindustry/type/UnitType.java similarity index 86% rename from core/src/io/anuke/mindustry/entities/units/UnitType.java rename to core/src/io/anuke/mindustry/type/UnitType.java index 07b7495426..d02174bf4c 100644 --- a/core/src/io/anuke/mindustry/entities/units/UnitType.java +++ b/core/src/io/anuke/mindustry/type/UnitType.java @@ -1,4 +1,4 @@ -package io.anuke.mindustry.entities.units; +package io.anuke.mindustry.type; import io.anuke.arc.Core; import io.anuke.arc.collection.ObjectSet; @@ -10,16 +10,13 @@ import io.anuke.arc.util.Strings; import io.anuke.mindustry.content.Items; import io.anuke.mindustry.content.Weapons; import io.anuke.mindustry.entities.traits.TypeTrait; +import io.anuke.mindustry.entities.type.BaseUnit; import io.anuke.mindustry.game.Team; import io.anuke.mindustry.game.UnlockableContent; -import io.anuke.mindustry.type.ContentType; -import io.anuke.mindustry.type.Item; -import io.anuke.mindustry.type.StatusEffect; -import io.anuke.mindustry.type.Weapon; import io.anuke.mindustry.ui.ContentDisplay; public class UnitType extends UnlockableContent{ - protected final Supplier constructor; + protected final Supplier constructor; public final String name; public final String description; @@ -36,7 +33,6 @@ public class UnitType extends UnlockableContent{ public float drag = 0.1f; public float maxVelocity = 5f; public float retreatPercent = 0.2f; - public float armor = 0f; public int itemCapacity = 30; public ObjectSet toMine = ObjectSet.with(Items.lead, Items.copper); public float buildPower = 0.3f, minePower = 0.7f; @@ -46,7 +42,7 @@ public class UnitType extends UnlockableContent{ public TextureRegion iconRegion, legRegion, baseRegion, region; - public UnitType(String name, Class type, Supplier mainConstructor){ + public UnitType(String name, Class type, Supplier mainConstructor){ this.name = name; this.constructor = mainConstructor; this.description = Core.bundle.getOrNull("unit." + name + ".description"); @@ -95,7 +91,7 @@ public class UnitType extends UnlockableContent{ return name; } - public BaseUnit create(Team team){ + public io.anuke.mindustry.entities.type.BaseUnit create(Team team){ BaseUnit unit = constructor.get(); unit.init(this, team); return unit; diff --git a/core/src/io/anuke/mindustry/type/Weapon.java b/core/src/io/anuke/mindustry/type/Weapon.java index dda242a463..a5e357e2f0 100644 --- a/core/src/io/anuke/mindustry/type/Weapon.java +++ b/core/src/io/anuke/mindustry/type/Weapon.java @@ -3,15 +3,15 @@ package io.anuke.mindustry.type; import io.anuke.annotations.Annotations.Loc; import io.anuke.annotations.Annotations.Remote; import io.anuke.arc.Core; -import io.anuke.arc.entities.Effects; -import io.anuke.arc.entities.Effects.Effect; +import io.anuke.mindustry.entities.Effects; +import io.anuke.mindustry.entities.Effects.Effect; import io.anuke.arc.graphics.g2d.TextureRegion; import io.anuke.arc.math.Angles; import io.anuke.arc.math.Mathf; import io.anuke.arc.math.geom.Vector2; import io.anuke.mindustry.Vars; import io.anuke.mindustry.content.Fx; -import io.anuke.mindustry.entities.Player; +import io.anuke.mindustry.entities.type.Player; import io.anuke.mindustry.entities.bullet.Bullet; import io.anuke.mindustry.entities.bullet.BulletType; import io.anuke.mindustry.entities.traits.ShooterTrait; diff --git a/core/src/io/anuke/mindustry/ui/ContentDisplay.java b/core/src/io/anuke/mindustry/ui/ContentDisplay.java index c5b033e2c9..4dce150c26 100644 --- a/core/src/io/anuke/mindustry/ui/ContentDisplay.java +++ b/core/src/io/anuke/mindustry/ui/ContentDisplay.java @@ -5,7 +5,7 @@ import io.anuke.arc.collection.OrderedMap; import io.anuke.arc.graphics.Color; import io.anuke.arc.scene.ui.layout.Table; import io.anuke.arc.util.Strings; -import io.anuke.mindustry.entities.units.UnitType; +import io.anuke.mindustry.type.UnitType; import io.anuke.mindustry.graphics.Palette; import io.anuke.mindustry.type.Item; import io.anuke.mindustry.type.Liquid; @@ -159,7 +159,7 @@ public class ContentDisplay{ table.add(Core.bundle.format("mech.ability", Core.bundle.get("mech." + mech.name + ".ability"))); table.row(); } - table.add(Core.bundle.format("mech.armor", mech.armor)); + table.add(Core.bundle.format("mech.health", (int)mech.health)); table.row(); table.add(Core.bundle.format("mech.itemcapacity", mech.itemCapacity)); table.row(); diff --git a/core/src/io/anuke/mindustry/ui/dialogs/HostDialog.java b/core/src/io/anuke/mindustry/ui/dialogs/HostDialog.java index 9b4a3cee80..8771012793 100644 --- a/core/src/io/anuke/mindustry/ui/dialogs/HostDialog.java +++ b/core/src/io/anuke/mindustry/ui/dialogs/HostDialog.java @@ -6,7 +6,7 @@ import io.anuke.arc.scene.ui.ImageButton; import io.anuke.arc.util.Strings; import io.anuke.arc.util.Time; import io.anuke.mindustry.Vars; -import io.anuke.mindustry.entities.Player; +import io.anuke.mindustry.entities.type.Player; import io.anuke.mindustry.net.Net; import java.io.IOException; diff --git a/core/src/io/anuke/mindustry/ui/dialogs/JoinDialog.java b/core/src/io/anuke/mindustry/ui/dialogs/JoinDialog.java index 964fc1bf6d..91a263aa7c 100644 --- a/core/src/io/anuke/mindustry/ui/dialogs/JoinDialog.java +++ b/core/src/io/anuke/mindustry/ui/dialogs/JoinDialog.java @@ -14,7 +14,7 @@ import io.anuke.arc.util.Strings; import io.anuke.arc.util.Time; import io.anuke.mindustry.Vars; import io.anuke.mindustry.core.Platform; -import io.anuke.mindustry.entities.Player; +import io.anuke.mindustry.entities.type.Player; import io.anuke.mindustry.game.Version; import io.anuke.mindustry.net.Host; import io.anuke.mindustry.net.Net; diff --git a/core/src/io/anuke/mindustry/ui/dialogs/LocalPlayerDialog.java b/core/src/io/anuke/mindustry/ui/dialogs/LocalPlayerDialog.java index 78640d7c2d..59f23e65ec 100644 --- a/core/src/io/anuke/mindustry/ui/dialogs/LocalPlayerDialog.java +++ b/core/src/io/anuke/mindustry/ui/dialogs/LocalPlayerDialog.java @@ -5,7 +5,7 @@ import io.anuke.arc.scene.ui.Image; import io.anuke.arc.scene.ui.layout.Stack; import io.anuke.arc.scene.ui.layout.Table; import io.anuke.arc.util.Scaling; -import io.anuke.mindustry.entities.Player; +import io.anuke.mindustry.entities.type.Player; import static io.anuke.mindustry.Vars.control; import static io.anuke.mindustry.Vars.players; diff --git a/core/src/io/anuke/mindustry/ui/fragments/BlockInventoryFragment.java b/core/src/io/anuke/mindustry/ui/fragments/BlockInventoryFragment.java index e127f8db10..31acb045d5 100644 --- a/core/src/io/anuke/mindustry/ui/fragments/BlockInventoryFragment.java +++ b/core/src/io/anuke/mindustry/ui/fragments/BlockInventoryFragment.java @@ -20,7 +20,7 @@ import io.anuke.arc.util.Align; import io.anuke.arc.util.Strings; import io.anuke.arc.util.Time; import io.anuke.mindustry.core.GameState.State; -import io.anuke.mindustry.entities.Player; +import io.anuke.mindustry.entities.type.Player; import io.anuke.mindustry.gen.Call; import io.anuke.mindustry.input.InputHandler; import io.anuke.mindustry.type.Item; @@ -49,7 +49,7 @@ public class BlockInventoryFragment extends Fragment{ int removed = tile.block().removeStack(tile, item, amount); - player.inventory.addItem(item, removed); + player.addItem(item, removed); for(int j = 0; j < Mathf.clamp(removed / 3, 1, 8); j++){ Time.run(j * 3f, () -> Call.transferItemEffect(item, tile.drawx(), tile.drawy(), player)); } @@ -97,7 +97,7 @@ public class BlockInventoryFragment extends Fragment{ holdTime += Time.delta(); if(holdTime >= holdWithdraw){ - int amount = Math.min(tile.entity.items.get(lastItem), player.inventory.itemCapacityUsed(lastItem)); + int amount = Math.min(tile.entity.items.get(lastItem), player.maxAccepted(lastItem)); Call.requestItem(player, tile, lastItem, amount); holding = false; holdTime = 0f; @@ -130,7 +130,7 @@ public class BlockInventoryFragment extends Fragment{ container.add(i); - BooleanProvider canPick = () -> player.inventory.canAcceptItem(item); + BooleanProvider canPick = () -> player.acceptsItem(item); HandCursorListener l = new HandCursorListener(); l.setEnabled(canPick); @@ -147,7 +147,7 @@ public class BlockInventoryFragment extends Fragment{ @Override public boolean touchDown(InputEvent event, float x, float y, int pointer, KeyCode button){ if(!canPick.get() || !tile.entity.items.has(item)) return false; - int amount = Math.min(1, player.inventory.itemCapacityUsed(item)); + int amount = Math.min(1, player.maxAccepted(item)); Call.requestItem(player, tile, item, amount); lastItem = item; holding = true; diff --git a/core/src/io/anuke/mindustry/ui/fragments/PlacementFragment.java b/core/src/io/anuke/mindustry/ui/fragments/PlacementFragment.java index 32a3fa7ecb..c398780de0 100644 --- a/core/src/io/anuke/mindustry/ui/fragments/PlacementFragment.java +++ b/core/src/io/anuke/mindustry/ui/fragments/PlacementFragment.java @@ -15,7 +15,7 @@ import io.anuke.arc.scene.ui.Image; import io.anuke.arc.scene.ui.ImageButton; import io.anuke.arc.scene.ui.layout.Table; import io.anuke.mindustry.core.GameState.State; -import io.anuke.mindustry.entities.TileEntity; +import io.anuke.mindustry.entities.type.TileEntity; import io.anuke.mindustry.game.EventType.WorldLoadEvent; import io.anuke.mindustry.graphics.Palette; import io.anuke.mindustry.input.Binding; diff --git a/core/src/io/anuke/mindustry/world/Block.java b/core/src/io/anuke/mindustry/world/Block.java index fb89c710a4..ad3848aa0d 100644 --- a/core/src/io/anuke/mindustry/world/Block.java +++ b/core/src/io/anuke/mindustry/world/Block.java @@ -16,9 +16,9 @@ import io.anuke.arc.util.Log; import io.anuke.arc.util.Strings; import io.anuke.arc.util.Time; import io.anuke.mindustry.entities.Damage; -import io.anuke.mindustry.entities.Player; -import io.anuke.mindustry.entities.TileEntity; -import io.anuke.mindustry.entities.Unit; +import io.anuke.mindustry.entities.type.Player; +import io.anuke.mindustry.entities.type.TileEntity; +import io.anuke.mindustry.entities.type.Unit; import io.anuke.mindustry.entities.bullet.Bullet; import io.anuke.mindustry.entities.effect.Puddle; import io.anuke.mindustry.entities.effect.RubbleDecal; diff --git a/core/src/io/anuke/mindustry/world/BlockStorage.java b/core/src/io/anuke/mindustry/world/BlockStorage.java index 573aad8593..bd458782c9 100644 --- a/core/src/io/anuke/mindustry/world/BlockStorage.java +++ b/core/src/io/anuke/mindustry/world/BlockStorage.java @@ -1,14 +1,14 @@ package io.anuke.mindustry.world; import io.anuke.arc.collection.Array; -import io.anuke.arc.entities.Effects; +import io.anuke.mindustry.entities.Effects; import io.anuke.arc.math.Mathf; import io.anuke.arc.math.geom.Vector2; import io.anuke.arc.util.Time; import io.anuke.mindustry.Vars; import io.anuke.mindustry.content.Fx; -import io.anuke.mindustry.entities.TileEntity; -import io.anuke.mindustry.entities.Unit; +import io.anuke.mindustry.entities.type.TileEntity; +import io.anuke.mindustry.entities.type.Unit; import io.anuke.mindustry.entities.effect.Puddle; import io.anuke.mindustry.game.UnlockableContent; import io.anuke.mindustry.type.Item; diff --git a/core/src/io/anuke/mindustry/world/Tile.java b/core/src/io/anuke/mindustry/world/Tile.java index 530306ca2f..2f35604c31 100644 --- a/core/src/io/anuke/mindustry/world/Tile.java +++ b/core/src/io/anuke/mindustry/world/Tile.java @@ -9,7 +9,7 @@ import io.anuke.arc.math.geom.Position; import io.anuke.arc.math.geom.Vector2; import io.anuke.arc.util.Pack; import io.anuke.mindustry.content.Blocks; -import io.anuke.mindustry.entities.TileEntity; +import io.anuke.mindustry.entities.type.TileEntity; import io.anuke.mindustry.entities.traits.TargetTrait; import io.anuke.mindustry.game.Team; import io.anuke.mindustry.world.blocks.BlockPart; diff --git a/core/src/io/anuke/mindustry/world/blocks/BuildBlock.java b/core/src/io/anuke/mindustry/world/blocks/BuildBlock.java index a6ca205ce3..d1e0ab6132 100644 --- a/core/src/io/anuke/mindustry/world/blocks/BuildBlock.java +++ b/core/src/io/anuke/mindustry/world/blocks/BuildBlock.java @@ -6,14 +6,14 @@ import io.anuke.arc.Core; import io.anuke.arc.Events; import io.anuke.arc.Graphics.Cursor; import io.anuke.arc.Graphics.Cursor.SystemCursor; -import io.anuke.arc.entities.Effects; +import io.anuke.mindustry.entities.Effects; import io.anuke.arc.graphics.g2d.Draw; import io.anuke.arc.graphics.g2d.TextureRegion; import io.anuke.arc.math.Mathf; import io.anuke.mindustry.content.Fx; -import io.anuke.mindustry.entities.Player; -import io.anuke.mindustry.entities.TileEntity; -import io.anuke.mindustry.entities.Unit; +import io.anuke.mindustry.entities.type.Player; +import io.anuke.mindustry.entities.type.TileEntity; +import io.anuke.mindustry.entities.type.Unit; import io.anuke.mindustry.entities.effect.RubbleDecal; import io.anuke.mindustry.entities.traits.BuilderTrait.BuildRequest; import io.anuke.mindustry.game.EventType.BlockBuildEndEvent; diff --git a/core/src/io/anuke/mindustry/world/blocks/Floor.java b/core/src/io/anuke/mindustry/world/blocks/Floor.java index 9792fcdf53..84ed8fc01b 100644 --- a/core/src/io/anuke/mindustry/world/blocks/Floor.java +++ b/core/src/io/anuke/mindustry/world/blocks/Floor.java @@ -1,8 +1,8 @@ package io.anuke.mindustry.world.blocks; import io.anuke.arc.Core; -import io.anuke.arc.entities.Effects; -import io.anuke.arc.entities.Effects.Effect; +import io.anuke.mindustry.entities.Effects; +import io.anuke.mindustry.entities.Effects.Effect; import io.anuke.arc.graphics.Color; import io.anuke.arc.graphics.g2d.Draw; import io.anuke.arc.graphics.g2d.TextureRegion; diff --git a/core/src/io/anuke/mindustry/world/blocks/defense/DeflectorWall.java b/core/src/io/anuke/mindustry/world/blocks/defense/DeflectorWall.java index 08392d7d32..5d9b9080b9 100644 --- a/core/src/io/anuke/mindustry/world/blocks/defense/DeflectorWall.java +++ b/core/src/io/anuke/mindustry/world/blocks/defense/DeflectorWall.java @@ -8,7 +8,7 @@ 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.entities.TileEntity; +import io.anuke.mindustry.entities.type.TileEntity; import io.anuke.mindustry.entities.bullet.Bullet; import io.anuke.mindustry.game.Team; import io.anuke.mindustry.world.Tile; diff --git a/core/src/io/anuke/mindustry/world/blocks/defense/Door.java b/core/src/io/anuke/mindustry/world/blocks/defense/Door.java index a85545453c..d4c6fd75cc 100644 --- a/core/src/io/anuke/mindustry/world/blocks/defense/Door.java +++ b/core/src/io/anuke/mindustry/world/blocks/defense/Door.java @@ -3,14 +3,14 @@ package io.anuke.mindustry.world.blocks.defense; import io.anuke.arc.Core; import io.anuke.arc.Graphics.Cursor; import io.anuke.arc.Graphics.Cursor.SystemCursor; -import io.anuke.arc.entities.Effects; -import io.anuke.arc.entities.Effects.Effect; +import io.anuke.mindustry.entities.Effects; +import io.anuke.mindustry.entities.Effects.Effect; import io.anuke.arc.graphics.g2d.Draw; import io.anuke.arc.graphics.g2d.TextureRegion; import io.anuke.arc.math.geom.Rectangle; import io.anuke.mindustry.content.Fx; -import io.anuke.mindustry.entities.Player; -import io.anuke.mindustry.entities.TileEntity; +import io.anuke.mindustry.entities.type.Player; +import io.anuke.mindustry.entities.type.TileEntity; import io.anuke.mindustry.entities.Units; import io.anuke.mindustry.world.Tile; diff --git a/core/src/io/anuke/mindustry/world/blocks/defense/ForceProjector.java b/core/src/io/anuke/mindustry/world/blocks/defense/ForceProjector.java index 84e5213329..1ce1f0d4d6 100644 --- a/core/src/io/anuke/mindustry/world/blocks/defense/ForceProjector.java +++ b/core/src/io/anuke/mindustry/world/blocks/defense/ForceProjector.java @@ -1,11 +1,11 @@ package io.anuke.mindustry.world.blocks.defense; import io.anuke.arc.Core; -import io.anuke.arc.entities.Effects; -import io.anuke.arc.entities.EntityGroup; -import io.anuke.arc.entities.EntityQuery; -import io.anuke.arc.entities.impl.BaseEntity; -import io.anuke.arc.entities.trait.DrawTrait; +import io.anuke.mindustry.entities.Effects; +import io.anuke.mindustry.entities.EntityGroup; +import io.anuke.mindustry.entities.EntityQuery; +import io.anuke.mindustry.entities.impl.BaseEntity; +import io.anuke.mindustry.entities.traits.DrawTrait; import io.anuke.arc.graphics.Blending; import io.anuke.arc.graphics.Color; import io.anuke.arc.graphics.g2d.Draw; @@ -14,7 +14,7 @@ import io.anuke.arc.graphics.g2d.TextureRegion; import io.anuke.arc.math.Mathf; import io.anuke.arc.util.Time; import io.anuke.mindustry.content.Fx; -import io.anuke.mindustry.entities.TileEntity; +import io.anuke.mindustry.entities.type.TileEntity; import io.anuke.mindustry.entities.traits.AbsorbTrait; import io.anuke.mindustry.graphics.Palette; import io.anuke.mindustry.world.Block; diff --git a/core/src/io/anuke/mindustry/world/blocks/defense/MendProjector.java b/core/src/io/anuke/mindustry/world/blocks/defense/MendProjector.java index 199d859358..1419f6fd30 100644 --- a/core/src/io/anuke/mindustry/world/blocks/defense/MendProjector.java +++ b/core/src/io/anuke/mindustry/world/blocks/defense/MendProjector.java @@ -2,7 +2,7 @@ package io.anuke.mindustry.world.blocks.defense; import io.anuke.arc.Core; import io.anuke.arc.collection.IntSet; -import io.anuke.arc.entities.Effects; +import io.anuke.mindustry.entities.Effects; import io.anuke.arc.graphics.Blending; import io.anuke.arc.graphics.Color; import io.anuke.arc.graphics.g2d.Draw; @@ -12,7 +12,7 @@ import io.anuke.arc.math.Mathf; import io.anuke.arc.util.Time; import io.anuke.arc.util.Tmp; import io.anuke.mindustry.content.Fx; -import io.anuke.mindustry.entities.TileEntity; +import io.anuke.mindustry.entities.type.TileEntity; import io.anuke.mindustry.world.Block; import io.anuke.mindustry.world.Tile; diff --git a/core/src/io/anuke/mindustry/world/blocks/defense/OverdriveProjector.java b/core/src/io/anuke/mindustry/world/blocks/defense/OverdriveProjector.java index 28beb4280f..e8ce6425a9 100644 --- a/core/src/io/anuke/mindustry/world/blocks/defense/OverdriveProjector.java +++ b/core/src/io/anuke/mindustry/world/blocks/defense/OverdriveProjector.java @@ -9,7 +9,7 @@ import io.anuke.arc.graphics.g2d.Lines; import io.anuke.arc.graphics.g2d.TextureRegion; import io.anuke.arc.math.Mathf; import io.anuke.arc.util.Time; -import io.anuke.mindustry.entities.TileEntity; +import io.anuke.mindustry.entities.type.TileEntity; import io.anuke.mindustry.world.Block; import io.anuke.mindustry.world.Tile; diff --git a/core/src/io/anuke/mindustry/world/blocks/defense/ShockMine.java b/core/src/io/anuke/mindustry/world/blocks/defense/ShockMine.java index 83f7d406d1..ae637a578a 100644 --- a/core/src/io/anuke/mindustry/world/blocks/defense/ShockMine.java +++ b/core/src/io/anuke/mindustry/world/blocks/defense/ShockMine.java @@ -3,7 +3,7 @@ package io.anuke.mindustry.world.blocks.defense; import io.anuke.arc.graphics.g2d.Draw; import io.anuke.arc.graphics.g2d.Fill; import io.anuke.arc.math.Mathf; -import io.anuke.mindustry.entities.Unit; +import io.anuke.mindustry.entities.type.Unit; import io.anuke.mindustry.entities.effect.Lightning; import io.anuke.mindustry.graphics.Layer; import io.anuke.mindustry.graphics.Palette; diff --git a/core/src/io/anuke/mindustry/world/blocks/defense/SurgeWall.java b/core/src/io/anuke/mindustry/world/blocks/defense/SurgeWall.java index 5316227bfc..adf8ddbaf1 100644 --- a/core/src/io/anuke/mindustry/world/blocks/defense/SurgeWall.java +++ b/core/src/io/anuke/mindustry/world/blocks/defense/SurgeWall.java @@ -1,6 +1,6 @@ package io.anuke.mindustry.world.blocks.defense; -import io.anuke.mindustry.entities.TileEntity; +import io.anuke.mindustry.entities.type.TileEntity; import io.anuke.mindustry.entities.bullet.Bullet; import io.anuke.mindustry.entities.effect.Lightning; import io.anuke.mindustry.graphics.Palette; diff --git a/core/src/io/anuke/mindustry/world/blocks/defense/turrets/ChargeTurret.java b/core/src/io/anuke/mindustry/world/blocks/defense/turrets/ChargeTurret.java index 855dc67fb2..47faa0bd91 100644 --- a/core/src/io/anuke/mindustry/world/blocks/defense/turrets/ChargeTurret.java +++ b/core/src/io/anuke/mindustry/world/blocks/defense/turrets/ChargeTurret.java @@ -1,11 +1,11 @@ package io.anuke.mindustry.world.blocks.defense.turrets; -import io.anuke.arc.entities.Effects; -import io.anuke.arc.entities.Effects.Effect; +import io.anuke.mindustry.entities.Effects; +import io.anuke.mindustry.entities.Effects.Effect; import io.anuke.arc.math.Mathf; import io.anuke.arc.util.Time; import io.anuke.mindustry.content.Fx; -import io.anuke.mindustry.entities.TileEntity; +import io.anuke.mindustry.entities.type.TileEntity; import io.anuke.mindustry.entities.bullet.BulletType; import io.anuke.mindustry.world.Tile; diff --git a/core/src/io/anuke/mindustry/world/blocks/defense/turrets/CooledTurret.java b/core/src/io/anuke/mindustry/world/blocks/defense/turrets/CooledTurret.java index 65053c9284..d81805a721 100644 --- a/core/src/io/anuke/mindustry/world/blocks/defense/turrets/CooledTurret.java +++ b/core/src/io/anuke/mindustry/world/blocks/defense/turrets/CooledTurret.java @@ -4,8 +4,8 @@ import io.anuke.mindustry.content.Fx; import io.anuke.mindustry.type.Liquid; import io.anuke.mindustry.world.Tile; import io.anuke.mindustry.world.consumers.ConsumeLiquidFilter; -import io.anuke.arc.entities.Effects; -import io.anuke.arc.entities.Effects.Effect; +import io.anuke.mindustry.entities.Effects; +import io.anuke.mindustry.entities.Effects.Effect; import io.anuke.arc.util.Time; import io.anuke.arc.math.Mathf; diff --git a/core/src/io/anuke/mindustry/world/blocks/defense/turrets/ItemTurret.java b/core/src/io/anuke/mindustry/world/blocks/defense/turrets/ItemTurret.java index f2f41708aa..b8c96b4777 100644 --- a/core/src/io/anuke/mindustry/world/blocks/defense/turrets/ItemTurret.java +++ b/core/src/io/anuke/mindustry/world/blocks/defense/turrets/ItemTurret.java @@ -2,7 +2,7 @@ package io.anuke.mindustry.world.blocks.defense.turrets; import io.anuke.arc.collection.ObjectMap; import io.anuke.mindustry.Vars; -import io.anuke.mindustry.entities.Unit; +import io.anuke.mindustry.entities.type.Unit; import io.anuke.mindustry.entities.bullet.BulletType; import io.anuke.mindustry.type.Item; import io.anuke.mindustry.world.Tile; diff --git a/core/src/io/anuke/mindustry/world/blocks/defense/turrets/LaserTurret.java b/core/src/io/anuke/mindustry/world/blocks/defense/turrets/LaserTurret.java index ce6414f4ea..3796103fe3 100644 --- a/core/src/io/anuke/mindustry/world/blocks/defense/turrets/LaserTurret.java +++ b/core/src/io/anuke/mindustry/world/blocks/defense/turrets/LaserTurret.java @@ -1,10 +1,10 @@ package io.anuke.mindustry.world.blocks.defense.turrets; -import io.anuke.arc.entities.Effects; +import io.anuke.mindustry.entities.Effects; import io.anuke.arc.math.Angles; import io.anuke.arc.math.Mathf; import io.anuke.arc.util.Time; -import io.anuke.mindustry.entities.TileEntity; +import io.anuke.mindustry.entities.type.TileEntity; import io.anuke.mindustry.entities.bullet.Bullet; import io.anuke.mindustry.entities.bullet.BulletType; import io.anuke.mindustry.type.Liquid; diff --git a/core/src/io/anuke/mindustry/world/blocks/defense/turrets/LiquidTurret.java b/core/src/io/anuke/mindustry/world/blocks/defense/turrets/LiquidTurret.java index e368901395..4d925f9856 100644 --- a/core/src/io/anuke/mindustry/world/blocks/defense/turrets/LiquidTurret.java +++ b/core/src/io/anuke/mindustry/world/blocks/defense/turrets/LiquidTurret.java @@ -1,7 +1,7 @@ package io.anuke.mindustry.world.blocks.defense.turrets; import io.anuke.arc.collection.ObjectMap; -import io.anuke.arc.entities.Effects; +import io.anuke.mindustry.entities.Effects; import io.anuke.mindustry.Vars; import io.anuke.mindustry.entities.bullet.BulletType; import io.anuke.mindustry.entities.effect.Fire; diff --git a/core/src/io/anuke/mindustry/world/blocks/defense/turrets/Turret.java b/core/src/io/anuke/mindustry/world/blocks/defense/turrets/Turret.java index 5b6e97a40f..ae308b87d5 100644 --- a/core/src/io/anuke/mindustry/world/blocks/defense/turrets/Turret.java +++ b/core/src/io/anuke/mindustry/world/blocks/defense/turrets/Turret.java @@ -3,8 +3,8 @@ package io.anuke.mindustry.world.blocks.defense.turrets; import io.anuke.arc.Core; import io.anuke.arc.collection.Array; import io.anuke.arc.collection.EnumSet; -import io.anuke.arc.entities.Effects; -import io.anuke.arc.entities.Effects.Effect; +import io.anuke.mindustry.entities.Effects; +import io.anuke.mindustry.entities.Effects.Effect; import io.anuke.arc.function.BiConsumer; import io.anuke.arc.graphics.Blending; import io.anuke.arc.graphics.Color; @@ -17,7 +17,7 @@ import io.anuke.arc.math.geom.Vector2; import io.anuke.arc.util.Time; import io.anuke.mindustry.content.Fx; import io.anuke.mindustry.entities.Predict; -import io.anuke.mindustry.entities.TileEntity; +import io.anuke.mindustry.entities.type.TileEntity; import io.anuke.mindustry.entities.Units; import io.anuke.mindustry.entities.bullet.Bullet; import io.anuke.mindustry.entities.bullet.BulletType; diff --git a/core/src/io/anuke/mindustry/world/blocks/distribution/BufferedItemBridge.java b/core/src/io/anuke/mindustry/world/blocks/distribution/BufferedItemBridge.java index 1980195b30..6e833659c5 100644 --- a/core/src/io/anuke/mindustry/world/blocks/distribution/BufferedItemBridge.java +++ b/core/src/io/anuke/mindustry/world/blocks/distribution/BufferedItemBridge.java @@ -1,6 +1,6 @@ package io.anuke.mindustry.world.blocks.distribution; -import io.anuke.mindustry.entities.TileEntity; +import io.anuke.mindustry.entities.type.TileEntity; import io.anuke.mindustry.type.Item; import io.anuke.mindustry.world.ItemBuffer; import io.anuke.mindustry.world.Tile; diff --git a/core/src/io/anuke/mindustry/world/blocks/distribution/Conduit.java b/core/src/io/anuke/mindustry/world/blocks/distribution/Conduit.java index 0115340429..22d9c2e873 100644 --- a/core/src/io/anuke/mindustry/world/blocks/distribution/Conduit.java +++ b/core/src/io/anuke/mindustry/world/blocks/distribution/Conduit.java @@ -2,7 +2,7 @@ package io.anuke.mindustry.world.blocks.distribution; import io.anuke.arc.Core; import io.anuke.arc.graphics.g2d.TextureRegion; -import io.anuke.mindustry.entities.TileEntity; +import io.anuke.mindustry.entities.type.TileEntity; import io.anuke.mindustry.type.Liquid; import io.anuke.mindustry.world.Tile; import io.anuke.mindustry.world.blocks.LiquidBlock; diff --git a/core/src/io/anuke/mindustry/world/blocks/distribution/Conveyor.java b/core/src/io/anuke/mindustry/world/blocks/distribution/Conveyor.java index 814352f1bd..bc4e4a9275 100644 --- a/core/src/io/anuke/mindustry/world/blocks/distribution/Conveyor.java +++ b/core/src/io/anuke/mindustry/world/blocks/distribution/Conveyor.java @@ -10,8 +10,8 @@ import io.anuke.arc.math.geom.Vector2; import io.anuke.arc.util.Log; import io.anuke.arc.util.Pack; import io.anuke.arc.util.Time; -import io.anuke.mindustry.entities.TileEntity; -import io.anuke.mindustry.entities.Unit; +import io.anuke.mindustry.entities.type.TileEntity; +import io.anuke.mindustry.entities.type.Unit; import io.anuke.mindustry.graphics.Layer; import io.anuke.mindustry.type.Item; import io.anuke.mindustry.world.Block; diff --git a/core/src/io/anuke/mindustry/world/blocks/distribution/ItemBridge.java b/core/src/io/anuke/mindustry/world/blocks/distribution/ItemBridge.java index 59319a54a3..4f5b117365 100644 --- a/core/src/io/anuke/mindustry/world/blocks/distribution/ItemBridge.java +++ b/core/src/io/anuke/mindustry/world/blocks/distribution/ItemBridge.java @@ -14,8 +14,8 @@ import io.anuke.arc.graphics.g2d.TextureRegion; import io.anuke.arc.math.Mathf; import io.anuke.arc.math.geom.Geometry; import io.anuke.arc.util.Time; -import io.anuke.mindustry.entities.Player; -import io.anuke.mindustry.entities.TileEntity; +import io.anuke.mindustry.entities.type.Player; +import io.anuke.mindustry.entities.type.TileEntity; import io.anuke.mindustry.gen.Call; import io.anuke.mindustry.graphics.Layer; import io.anuke.mindustry.graphics.Palette; diff --git a/core/src/io/anuke/mindustry/world/blocks/distribution/Junction.java b/core/src/io/anuke/mindustry/world/blocks/distribution/Junction.java index 6663da7469..3aa50c6d4d 100644 --- a/core/src/io/anuke/mindustry/world/blocks/distribution/Junction.java +++ b/core/src/io/anuke/mindustry/world/blocks/distribution/Junction.java @@ -3,7 +3,7 @@ package io.anuke.mindustry.world.blocks.distribution; import io.anuke.arc.util.NumberUtils; import io.anuke.arc.util.Pack; import io.anuke.arc.util.Time; -import io.anuke.mindustry.entities.TileEntity; +import io.anuke.mindustry.entities.type.TileEntity; import io.anuke.mindustry.type.Item; import io.anuke.mindustry.world.Block; import io.anuke.mindustry.world.Tile; diff --git a/core/src/io/anuke/mindustry/world/blocks/distribution/MassDriver.java b/core/src/io/anuke/mindustry/world/blocks/distribution/MassDriver.java index fda9e44c40..3597372ea4 100644 --- a/core/src/io/anuke/mindustry/world/blocks/distribution/MassDriver.java +++ b/core/src/io/anuke/mindustry/world/blocks/distribution/MassDriver.java @@ -4,8 +4,8 @@ import io.anuke.annotations.Annotations.Loc; import io.anuke.annotations.Annotations.Remote; import io.anuke.arc.Core; import io.anuke.arc.collection.ObjectSet; -import io.anuke.arc.entities.Effects; -import io.anuke.arc.entities.Effects.Effect; +import io.anuke.mindustry.entities.Effects; +import io.anuke.mindustry.entities.Effects.Effect; import io.anuke.arc.graphics.Color; import io.anuke.arc.graphics.g2d.Draw; import io.anuke.arc.graphics.g2d.Lines; @@ -17,8 +17,8 @@ import io.anuke.arc.util.pooling.Pool.Poolable; import io.anuke.arc.util.pooling.Pools; import io.anuke.mindustry.content.Bullets; import io.anuke.mindustry.content.Fx; -import io.anuke.mindustry.entities.Player; -import io.anuke.mindustry.entities.TileEntity; +import io.anuke.mindustry.entities.type.Player; +import io.anuke.mindustry.entities.type.TileEntity; import io.anuke.mindustry.entities.bullet.Bullet; import io.anuke.mindustry.gen.Call; import io.anuke.mindustry.graphics.Layer; diff --git a/core/src/io/anuke/mindustry/world/blocks/distribution/Router.java b/core/src/io/anuke/mindustry/world/blocks/distribution/Router.java index fe9ba5f5d5..fd1e3cc499 100644 --- a/core/src/io/anuke/mindustry/world/blocks/distribution/Router.java +++ b/core/src/io/anuke/mindustry/world/blocks/distribution/Router.java @@ -1,7 +1,7 @@ package io.anuke.mindustry.world.blocks.distribution; import io.anuke.arc.collection.Array; -import io.anuke.mindustry.entities.TileEntity; +import io.anuke.mindustry.entities.type.TileEntity; import io.anuke.mindustry.type.Item; import io.anuke.mindustry.world.Block; import io.anuke.mindustry.world.Edges; diff --git a/core/src/io/anuke/mindustry/world/blocks/distribution/Sorter.java b/core/src/io/anuke/mindustry/world/blocks/distribution/Sorter.java index f4b3697c09..fada43be00 100644 --- a/core/src/io/anuke/mindustry/world/blocks/distribution/Sorter.java +++ b/core/src/io/anuke/mindustry/world/blocks/distribution/Sorter.java @@ -3,8 +3,8 @@ package io.anuke.mindustry.world.blocks.distribution; import io.anuke.annotations.Annotations.Loc; import io.anuke.annotations.Annotations.Remote; import io.anuke.arc.Core; -import io.anuke.mindustry.entities.Player; -import io.anuke.mindustry.entities.TileEntity; +import io.anuke.mindustry.entities.type.Player; +import io.anuke.mindustry.entities.type.TileEntity; import io.anuke.mindustry.gen.Call; import io.anuke.mindustry.type.Item; import io.anuke.mindustry.world.Block; diff --git a/core/src/io/anuke/mindustry/world/blocks/power/FusionReactor.java b/core/src/io/anuke/mindustry/world/blocks/power/FusionReactor.java index 77d36761cd..d5d80b92a0 100644 --- a/core/src/io/anuke/mindustry/world/blocks/power/FusionReactor.java +++ b/core/src/io/anuke/mindustry/world/blocks/power/FusionReactor.java @@ -7,7 +7,7 @@ import io.anuke.arc.graphics.g2d.Draw; import io.anuke.arc.graphics.g2d.TextureRegion; import io.anuke.arc.math.Mathf; import io.anuke.arc.util.Time; -import io.anuke.mindustry.entities.TileEntity; +import io.anuke.mindustry.entities.type.TileEntity; import io.anuke.mindustry.world.Tile; import java.io.DataInput; diff --git a/core/src/io/anuke/mindustry/world/blocks/power/ItemLiquidGenerator.java b/core/src/io/anuke/mindustry/world/blocks/power/ItemLiquidGenerator.java index 2392765e58..2a096dd3d0 100644 --- a/core/src/io/anuke/mindustry/world/blocks/power/ItemLiquidGenerator.java +++ b/core/src/io/anuke/mindustry/world/blocks/power/ItemLiquidGenerator.java @@ -1,14 +1,14 @@ package io.anuke.mindustry.world.blocks.power; import io.anuke.arc.Core; -import io.anuke.arc.entities.Effects; +import io.anuke.mindustry.entities.Effects; 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.Mathf; import io.anuke.arc.util.Time; import io.anuke.mindustry.content.Fx; -import io.anuke.mindustry.entities.TileEntity; +import io.anuke.mindustry.entities.type.TileEntity; import io.anuke.mindustry.type.Item; import io.anuke.mindustry.type.Liquid; import io.anuke.mindustry.world.Tile; diff --git a/core/src/io/anuke/mindustry/world/blocks/power/NuclearReactor.java b/core/src/io/anuke/mindustry/world/blocks/power/NuclearReactor.java index 3085ec4209..f6e548ff60 100644 --- a/core/src/io/anuke/mindustry/world/blocks/power/NuclearReactor.java +++ b/core/src/io/anuke/mindustry/world/blocks/power/NuclearReactor.java @@ -1,7 +1,7 @@ package io.anuke.mindustry.world.blocks.power; import io.anuke.arc.Core; -import io.anuke.arc.entities.Effects; +import io.anuke.mindustry.entities.Effects; import io.anuke.arc.graphics.Color; import io.anuke.arc.graphics.g2d.Draw; import io.anuke.arc.graphics.g2d.TextureRegion; @@ -11,7 +11,7 @@ import io.anuke.arc.util.Time; import io.anuke.mindustry.content.Fx; import io.anuke.mindustry.content.Items; import io.anuke.mindustry.entities.Damage; -import io.anuke.mindustry.entities.TileEntity; +import io.anuke.mindustry.entities.type.TileEntity; import io.anuke.mindustry.type.Liquid; import io.anuke.mindustry.world.Tile; import io.anuke.mindustry.world.meta.BlockStat; diff --git a/core/src/io/anuke/mindustry/world/blocks/power/PowerGenerator.java b/core/src/io/anuke/mindustry/world/blocks/power/PowerGenerator.java index 25efd56123..5b5e675558 100644 --- a/core/src/io/anuke/mindustry/world/blocks/power/PowerGenerator.java +++ b/core/src/io/anuke/mindustry/world/blocks/power/PowerGenerator.java @@ -1,7 +1,7 @@ package io.anuke.mindustry.world.blocks.power; import io.anuke.arc.collection.EnumSet; -import io.anuke.mindustry.entities.TileEntity; +import io.anuke.mindustry.entities.type.TileEntity; import io.anuke.mindustry.world.Tile; import io.anuke.mindustry.world.meta.BlockFlag; import io.anuke.mindustry.world.meta.BlockStat; diff --git a/core/src/io/anuke/mindustry/world/blocks/power/PowerNode.java b/core/src/io/anuke/mindustry/world/blocks/power/PowerNode.java index c98c9fb952..fae04a5a34 100644 --- a/core/src/io/anuke/mindustry/world/blocks/power/PowerNode.java +++ b/core/src/io/anuke/mindustry/world/blocks/power/PowerNode.java @@ -9,8 +9,8 @@ import io.anuke.arc.math.Mathf; import io.anuke.arc.math.geom.Vector2; import io.anuke.arc.math.Angles; import io.anuke.arc.util.Time; -import io.anuke.mindustry.entities.Player; -import io.anuke.mindustry.entities.TileEntity; +import io.anuke.mindustry.entities.type.Player; +import io.anuke.mindustry.entities.type.TileEntity; import io.anuke.mindustry.gen.Call; import io.anuke.mindustry.graphics.Layer; import io.anuke.mindustry.graphics.Palette; diff --git a/core/src/io/anuke/mindustry/world/blocks/power/SolarGenerator.java b/core/src/io/anuke/mindustry/world/blocks/power/SolarGenerator.java index 3090c389f3..96f3109fc9 100644 --- a/core/src/io/anuke/mindustry/world/blocks/power/SolarGenerator.java +++ b/core/src/io/anuke/mindustry/world/blocks/power/SolarGenerator.java @@ -1,6 +1,6 @@ package io.anuke.mindustry.world.blocks.power; -import io.anuke.mindustry.entities.TileEntity; +import io.anuke.mindustry.entities.type.TileEntity; import io.anuke.mindustry.world.meta.StatUnit; import io.anuke.arc.collection.EnumSet; diff --git a/core/src/io/anuke/mindustry/world/blocks/power/ThermalGenerator.java b/core/src/io/anuke/mindustry/world/blocks/power/ThermalGenerator.java index 217bbb593c..b0f79b0035 100644 --- a/core/src/io/anuke/mindustry/world/blocks/power/ThermalGenerator.java +++ b/core/src/io/anuke/mindustry/world/blocks/power/ThermalGenerator.java @@ -1,7 +1,7 @@ package io.anuke.mindustry.world.blocks.power; -import io.anuke.arc.entities.Effects; -import io.anuke.arc.entities.Effects.Effect; +import io.anuke.mindustry.entities.Effects; +import io.anuke.mindustry.entities.Effects.Effect; import io.anuke.arc.math.Mathf; import io.anuke.mindustry.content.Fx; import io.anuke.mindustry.world.Tile; diff --git a/core/src/io/anuke/mindustry/world/blocks/production/Cultivator.java b/core/src/io/anuke/mindustry/world/blocks/production/Cultivator.java index 017993ffa5..857ab635a3 100644 --- a/core/src/io/anuke/mindustry/world/blocks/production/Cultivator.java +++ b/core/src/io/anuke/mindustry/world/blocks/production/Cultivator.java @@ -9,7 +9,7 @@ import io.anuke.arc.math.Mathf; import io.anuke.arc.math.RandomXS128; import io.anuke.arc.util.Time; import io.anuke.mindustry.content.Fx; -import io.anuke.mindustry.entities.TileEntity; +import io.anuke.mindustry.entities.type.TileEntity; import io.anuke.mindustry.world.Tile; import java.io.DataInput; diff --git a/core/src/io/anuke/mindustry/world/blocks/production/Drill.java b/core/src/io/anuke/mindustry/world/blocks/production/Drill.java index 61600aa5fe..bdd3279187 100644 --- a/core/src/io/anuke/mindustry/world/blocks/production/Drill.java +++ b/core/src/io/anuke/mindustry/world/blocks/production/Drill.java @@ -3,8 +3,8 @@ package io.anuke.mindustry.world.blocks.production; import io.anuke.arc.Core; import io.anuke.arc.collection.Array; import io.anuke.arc.collection.ObjectIntMap; -import io.anuke.arc.entities.Effects; -import io.anuke.arc.entities.Effects.Effect; +import io.anuke.mindustry.entities.Effects; +import io.anuke.mindustry.entities.Effects.Effect; import io.anuke.arc.graphics.Blending; import io.anuke.arc.graphics.Color; import io.anuke.arc.graphics.g2d.Draw; @@ -13,7 +13,7 @@ import io.anuke.arc.math.Mathf; import io.anuke.arc.util.Time; import io.anuke.mindustry.content.Fx; import io.anuke.mindustry.content.Liquids; -import io.anuke.mindustry.entities.TileEntity; +import io.anuke.mindustry.entities.type.TileEntity; import io.anuke.mindustry.graphics.Layer; import io.anuke.mindustry.type.Item; import io.anuke.mindustry.world.Block; diff --git a/core/src/io/anuke/mindustry/world/blocks/production/Fracker.java b/core/src/io/anuke/mindustry/world/blocks/production/Fracker.java index cc1e4c4830..2f6e2609a0 100644 --- a/core/src/io/anuke/mindustry/world/blocks/production/Fracker.java +++ b/core/src/io/anuke/mindustry/world/blocks/production/Fracker.java @@ -2,7 +2,7 @@ package io.anuke.mindustry.world.blocks.production; import io.anuke.arc.Core; import io.anuke.arc.graphics.g2d.TextureRegion; -import io.anuke.mindustry.entities.TileEntity; +import io.anuke.mindustry.entities.type.TileEntity; import io.anuke.mindustry.type.Item; import io.anuke.mindustry.world.Tile; import io.anuke.mindustry.world.consumers.ConsumeItem; diff --git a/core/src/io/anuke/mindustry/world/blocks/production/GenericCrafter.java b/core/src/io/anuke/mindustry/world/blocks/production/GenericCrafter.java index c606b611ca..09ea091647 100644 --- a/core/src/io/anuke/mindustry/world/blocks/production/GenericCrafter.java +++ b/core/src/io/anuke/mindustry/world/blocks/production/GenericCrafter.java @@ -1,12 +1,12 @@ package io.anuke.mindustry.world.blocks.production; -import io.anuke.arc.entities.Effects; -import io.anuke.arc.entities.Effects.Effect; +import io.anuke.mindustry.entities.Effects; +import io.anuke.mindustry.entities.Effects.Effect; import io.anuke.arc.graphics.g2d.Draw; import io.anuke.arc.math.Mathf; import io.anuke.arc.util.Time; import io.anuke.mindustry.content.Fx; -import io.anuke.mindustry.entities.TileEntity; +import io.anuke.mindustry.entities.type.TileEntity; import io.anuke.mindustry.type.Item; import io.anuke.mindustry.world.Block; import io.anuke.mindustry.world.Tile; diff --git a/core/src/io/anuke/mindustry/world/blocks/production/Incinerator.java b/core/src/io/anuke/mindustry/world/blocks/production/Incinerator.java index de8985b3cb..23825bf5a8 100644 --- a/core/src/io/anuke/mindustry/world/blocks/production/Incinerator.java +++ b/core/src/io/anuke/mindustry/world/blocks/production/Incinerator.java @@ -1,14 +1,14 @@ package io.anuke.mindustry.world.blocks.production; -import io.anuke.arc.entities.Effects; -import io.anuke.arc.entities.Effects.Effect; +import io.anuke.mindustry.entities.Effects; +import io.anuke.mindustry.entities.Effects.Effect; import io.anuke.arc.graphics.Color; import io.anuke.arc.graphics.g2d.Draw; import io.anuke.arc.graphics.g2d.Fill; import io.anuke.arc.math.Mathf; import io.anuke.arc.util.Time; import io.anuke.mindustry.content.Fx; -import io.anuke.mindustry.entities.TileEntity; +import io.anuke.mindustry.entities.type.TileEntity; import io.anuke.mindustry.type.Item; import io.anuke.mindustry.type.Liquid; import io.anuke.mindustry.world.Block; diff --git a/core/src/io/anuke/mindustry/world/blocks/production/LiquidMixer.java b/core/src/io/anuke/mindustry/world/blocks/production/LiquidMixer.java index 00767ef304..9f0cb76b22 100644 --- a/core/src/io/anuke/mindustry/world/blocks/production/LiquidMixer.java +++ b/core/src/io/anuke/mindustry/world/blocks/production/LiquidMixer.java @@ -1,6 +1,6 @@ package io.anuke.mindustry.world.blocks.production; -import io.anuke.mindustry.entities.TileEntity; +import io.anuke.mindustry.entities.type.TileEntity; import io.anuke.mindustry.type.Liquid; import io.anuke.mindustry.world.Tile; import io.anuke.mindustry.world.blocks.LiquidBlock; diff --git a/core/src/io/anuke/mindustry/world/blocks/production/PowerCrafter.java b/core/src/io/anuke/mindustry/world/blocks/production/PowerCrafter.java index 844f0d309a..c57831f628 100644 --- a/core/src/io/anuke/mindustry/world/blocks/production/PowerCrafter.java +++ b/core/src/io/anuke/mindustry/world/blocks/production/PowerCrafter.java @@ -1,6 +1,6 @@ package io.anuke.mindustry.world.blocks.production; -import io.anuke.mindustry.entities.TileEntity; +import io.anuke.mindustry.entities.type.TileEntity; import io.anuke.mindustry.type.Item; import io.anuke.mindustry.type.Liquid; import io.anuke.mindustry.world.Block; diff --git a/core/src/io/anuke/mindustry/world/blocks/production/PowerSmelter.java b/core/src/io/anuke/mindustry/world/blocks/production/PowerSmelter.java index d33f0702a6..b6d39ad5f9 100644 --- a/core/src/io/anuke/mindustry/world/blocks/production/PowerSmelter.java +++ b/core/src/io/anuke/mindustry/world/blocks/production/PowerSmelter.java @@ -1,8 +1,8 @@ package io.anuke.mindustry.world.blocks.production; import io.anuke.arc.Core; -import io.anuke.arc.entities.Effects; -import io.anuke.arc.entities.Effects.Effect; +import io.anuke.mindustry.entities.Effects; +import io.anuke.mindustry.entities.Effects.Effect; import io.anuke.arc.graphics.Color; import io.anuke.arc.graphics.g2d.Draw; import io.anuke.arc.graphics.g2d.Fill; @@ -10,7 +10,7 @@ import io.anuke.arc.graphics.g2d.TextureRegion; import io.anuke.arc.math.Mathf; import io.anuke.arc.util.Time; import io.anuke.mindustry.content.Fx; -import io.anuke.mindustry.entities.TileEntity; +import io.anuke.mindustry.entities.type.TileEntity; import io.anuke.mindustry.type.Item; import io.anuke.mindustry.type.ItemStack; import io.anuke.mindustry.world.Tile; diff --git a/core/src/io/anuke/mindustry/world/blocks/production/Separator.java b/core/src/io/anuke/mindustry/world/blocks/production/Separator.java index d1cdccf51a..251429e2ea 100644 --- a/core/src/io/anuke/mindustry/world/blocks/production/Separator.java +++ b/core/src/io/anuke/mindustry/world/blocks/production/Separator.java @@ -6,7 +6,7 @@ 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.math.Mathf; -import io.anuke.mindustry.entities.TileEntity; +import io.anuke.mindustry.entities.type.TileEntity; import io.anuke.mindustry.type.Item; import io.anuke.mindustry.type.ItemStack; import io.anuke.mindustry.world.Block; diff --git a/core/src/io/anuke/mindustry/world/blocks/production/Smelter.java b/core/src/io/anuke/mindustry/world/blocks/production/Smelter.java index 59dee05ac3..40d3ea3268 100644 --- a/core/src/io/anuke/mindustry/world/blocks/production/Smelter.java +++ b/core/src/io/anuke/mindustry/world/blocks/production/Smelter.java @@ -1,14 +1,14 @@ package io.anuke.mindustry.world.blocks.production; -import io.anuke.arc.entities.Effects; -import io.anuke.arc.entities.Effects.Effect; +import io.anuke.mindustry.entities.Effects; +import io.anuke.mindustry.entities.Effects.Effect; import io.anuke.arc.graphics.Color; import io.anuke.arc.graphics.g2d.Draw; import io.anuke.arc.graphics.g2d.Fill; import io.anuke.arc.math.Mathf; import io.anuke.arc.util.Time; import io.anuke.mindustry.content.Fx; -import io.anuke.mindustry.entities.TileEntity; +import io.anuke.mindustry.entities.type.TileEntity; import io.anuke.mindustry.type.Item; import io.anuke.mindustry.type.ItemStack; import io.anuke.mindustry.world.Block; diff --git a/core/src/io/anuke/mindustry/world/blocks/production/SolidPump.java b/core/src/io/anuke/mindustry/world/blocks/production/SolidPump.java index 89d0635583..7af581fa66 100644 --- a/core/src/io/anuke/mindustry/world/blocks/production/SolidPump.java +++ b/core/src/io/anuke/mindustry/world/blocks/production/SolidPump.java @@ -4,12 +4,12 @@ import io.anuke.arc.Core; import io.anuke.arc.graphics.g2d.TextureRegion; import io.anuke.mindustry.content.Liquids; import io.anuke.mindustry.content.Fx; -import io.anuke.mindustry.entities.TileEntity; +import io.anuke.mindustry.entities.type.TileEntity; import io.anuke.mindustry.type.Liquid; import io.anuke.mindustry.world.Tile; import io.anuke.mindustry.world.meta.BlockStat; -import io.anuke.arc.entities.Effects; -import io.anuke.arc.entities.Effects.Effect; +import io.anuke.mindustry.entities.Effects; +import io.anuke.mindustry.entities.Effects.Effect; import io.anuke.arc.graphics.g2d.Draw; import io.anuke.arc.math.Mathf; diff --git a/core/src/io/anuke/mindustry/world/blocks/sandbox/LiquidSource.java b/core/src/io/anuke/mindustry/world/blocks/sandbox/LiquidSource.java index 26cb7fd389..2cca14d88f 100644 --- a/core/src/io/anuke/mindustry/world/blocks/sandbox/LiquidSource.java +++ b/core/src/io/anuke/mindustry/world/blocks/sandbox/LiquidSource.java @@ -8,8 +8,8 @@ import io.anuke.arc.scene.ui.ButtonGroup; import io.anuke.arc.scene.ui.ImageButton; import io.anuke.arc.scene.ui.layout.Table; import io.anuke.mindustry.content.Liquids; -import io.anuke.mindustry.entities.Player; -import io.anuke.mindustry.entities.TileEntity; +import io.anuke.mindustry.entities.type.Player; +import io.anuke.mindustry.entities.type.TileEntity; import io.anuke.mindustry.type.Liquid; import io.anuke.mindustry.world.Block; import io.anuke.mindustry.world.Tile; diff --git a/core/src/io/anuke/mindustry/world/blocks/storage/CoreBlock.java b/core/src/io/anuke/mindustry/world/blocks/storage/CoreBlock.java index 43dcf09532..57279d76ee 100644 --- a/core/src/io/anuke/mindustry/world/blocks/storage/CoreBlock.java +++ b/core/src/io/anuke/mindustry/world/blocks/storage/CoreBlock.java @@ -4,16 +4,16 @@ import io.anuke.annotations.Annotations.Loc; import io.anuke.annotations.Annotations.Remote; import io.anuke.arc.Core; import io.anuke.arc.collection.EnumSet; -import io.anuke.arc.entities.Effects; +import io.anuke.mindustry.entities.Effects; 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.math.Mathf; import io.anuke.mindustry.Vars; import io.anuke.mindustry.content.Fx; -import io.anuke.mindustry.entities.Player; -import io.anuke.mindustry.entities.TileEntity; -import io.anuke.mindustry.entities.Unit; +import io.anuke.mindustry.entities.type.Player; +import io.anuke.mindustry.entities.type.TileEntity; +import io.anuke.mindustry.entities.type.Unit; import io.anuke.mindustry.entities.traits.SpawnerTrait; import io.anuke.mindustry.gen.Call; import io.anuke.mindustry.graphics.Palette; @@ -38,7 +38,7 @@ public class CoreBlock extends StorageBlock{ } @Remote(called = Loc.server) - public static void onUnitRespawn(Tile tile, Unit player){ + public static void onUnitRespawn(Tile tile, Player player){ if(player == null || tile.entity == null) return; CoreEntity entity = tile.entity(); @@ -53,9 +53,7 @@ public class CoreBlock extends StorageBlock{ entity.currentUnit.add(); entity.currentUnit = null; - if(player instanceof Player){ - ((Player) player).endRespawning(); - } + player.endRespawning(); } @Override @@ -168,23 +166,18 @@ public class CoreBlock extends StorageBlock{ } public class CoreEntity extends TileEntity implements SpawnerTrait{ - public Unit currentUnit; + public Player currentUnit; float progress; float time; float heat; @Override - public void updateSpawning(Unit unit){ + public void updateSpawning(Player unit){ if(!netServer.isWaitingForPlayers() && currentUnit == null){ currentUnit = unit; progress = 0f; unit.set(tile.drawx(), tile.drawy()); } } - - @Override - public float getSpawnProgress(){ - return progress; - } } } diff --git a/core/src/io/anuke/mindustry/world/blocks/storage/LaunchPad.java b/core/src/io/anuke/mindustry/world/blocks/storage/LaunchPad.java index 5647974149..d896bbcb65 100644 --- a/core/src/io/anuke/mindustry/world/blocks/storage/LaunchPad.java +++ b/core/src/io/anuke/mindustry/world/blocks/storage/LaunchPad.java @@ -1,9 +1,9 @@ package io.anuke.mindustry.world.blocks.storage; -import io.anuke.arc.entities.Effects; +import io.anuke.mindustry.entities.Effects; import io.anuke.mindustry.Vars; import io.anuke.mindustry.content.Fx; -import io.anuke.mindustry.entities.TileEntity; +import io.anuke.mindustry.entities.type.TileEntity; import io.anuke.mindustry.type.Item; import io.anuke.mindustry.type.ItemType; import io.anuke.mindustry.world.Tile; diff --git a/core/src/io/anuke/mindustry/world/blocks/storage/SortedUnloader.java b/core/src/io/anuke/mindustry/world/blocks/storage/SortedUnloader.java index 90b0ca917f..510fb22d66 100644 --- a/core/src/io/anuke/mindustry/world/blocks/storage/SortedUnloader.java +++ b/core/src/io/anuke/mindustry/world/blocks/storage/SortedUnloader.java @@ -4,8 +4,8 @@ import io.anuke.arc.Core; import io.anuke.arc.graphics.Color; import io.anuke.annotations.Annotations.Loc; import io.anuke.annotations.Annotations.Remote; -import io.anuke.mindustry.entities.Player; -import io.anuke.mindustry.entities.TileEntity; +import io.anuke.mindustry.entities.type.Player; +import io.anuke.mindustry.entities.type.TileEntity; import io.anuke.mindustry.gen.Call; import io.anuke.mindustry.type.Item; import io.anuke.mindustry.world.Block; diff --git a/core/src/io/anuke/mindustry/world/blocks/storage/StorageBlock.java b/core/src/io/anuke/mindustry/world/blocks/storage/StorageBlock.java index 08148c65e6..58739c63c5 100644 --- a/core/src/io/anuke/mindustry/world/blocks/storage/StorageBlock.java +++ b/core/src/io/anuke/mindustry/world/blocks/storage/StorageBlock.java @@ -1,6 +1,6 @@ package io.anuke.mindustry.world.blocks.storage; -import io.anuke.mindustry.entities.TileEntity; +import io.anuke.mindustry.entities.type.TileEntity; import io.anuke.mindustry.type.Item; import io.anuke.mindustry.world.Block; import io.anuke.mindustry.world.Tile; diff --git a/core/src/io/anuke/mindustry/world/blocks/units/MechPad.java b/core/src/io/anuke/mindustry/world/blocks/units/MechPad.java index 38257657d4..dceb83c884 100644 --- a/core/src/io/anuke/mindustry/world/blocks/units/MechPad.java +++ b/core/src/io/anuke/mindustry/world/blocks/units/MechPad.java @@ -3,7 +3,6 @@ package io.anuke.mindustry.world.blocks.units; import io.anuke.annotations.Annotations.Loc; import io.anuke.annotations.Annotations.Remote; import io.anuke.arc.Core; -import io.anuke.arc.entities.Effects; import io.anuke.arc.graphics.g2d.Draw; import io.anuke.arc.graphics.g2d.Lines; import io.anuke.arc.graphics.g2d.TextureRegion; @@ -11,13 +10,13 @@ import io.anuke.arc.math.Mathf; import io.anuke.arc.math.geom.Geometry; import io.anuke.arc.util.Time; import io.anuke.mindustry.Vars; -import io.anuke.mindustry.content.Mechs; import io.anuke.mindustry.content.Fx; -import io.anuke.mindustry.entities.Player; -import io.anuke.mindustry.entities.TileEntity; -import io.anuke.mindustry.entities.Unit; +import io.anuke.mindustry.content.Mechs; +import io.anuke.mindustry.entities.Effects; import io.anuke.mindustry.entities.Units; import io.anuke.mindustry.entities.traits.SpawnerTrait; +import io.anuke.mindustry.entities.type.Player; +import io.anuke.mindustry.entities.type.TileEntity; import io.anuke.mindustry.gen.Call; import io.anuke.mindustry.graphics.Palette; import io.anuke.mindustry.graphics.Shaders; @@ -92,7 +91,7 @@ public class MechPad extends Block{ entity.player.endRespawning(); entity.open = true; entity.player.setDead(false); - entity.player.inventory.clear(); + entity.player.clearItem(); entity.player = null; } @@ -212,13 +211,11 @@ public class MechPad extends Block{ boolean open; @Override - public void updateSpawning(Unit unit){ - if(!(unit instanceof Player)) - throw new IllegalArgumentException("Mech factories only accept player respawners."); + public void updateSpawning(Player unit){ if(player == null){ progress = 0f; - player = (Player) unit; + player = unit; player.rotation = 90f; player.baseRotation = 90f; @@ -227,11 +224,6 @@ public class MechPad extends Block{ } } - @Override - public float getSpawnProgress(){ - return progress; - } - @Override public void write(DataOutput stream) throws IOException{ stream.writeFloat(progress); diff --git a/core/src/io/anuke/mindustry/world/blocks/units/RepairPoint.java b/core/src/io/anuke/mindustry/world/blocks/units/RepairPoint.java index f213ebf15a..2c361cfa1b 100644 --- a/core/src/io/anuke/mindustry/world/blocks/units/RepairPoint.java +++ b/core/src/io/anuke/mindustry/world/blocks/units/RepairPoint.java @@ -10,8 +10,8 @@ import io.anuke.arc.math.Angles; import io.anuke.arc.math.Mathf; import io.anuke.arc.math.geom.Rectangle; import io.anuke.arc.util.Time; -import io.anuke.mindustry.entities.TileEntity; -import io.anuke.mindustry.entities.Unit; +import io.anuke.mindustry.entities.type.TileEntity; +import io.anuke.mindustry.entities.type.Unit; import io.anuke.mindustry.entities.Units; import io.anuke.mindustry.graphics.Layer; import io.anuke.mindustry.graphics.Palette; diff --git a/core/src/io/anuke/mindustry/world/blocks/units/UnitFactory.java b/core/src/io/anuke/mindustry/world/blocks/units/UnitFactory.java index c9a8823fba..7731aaafe1 100644 --- a/core/src/io/anuke/mindustry/world/blocks/units/UnitFactory.java +++ b/core/src/io/anuke/mindustry/world/blocks/units/UnitFactory.java @@ -4,17 +4,17 @@ import io.anuke.annotations.Annotations.Loc; import io.anuke.annotations.Annotations.Remote; import io.anuke.arc.Core; import io.anuke.arc.collection.EnumSet; -import io.anuke.arc.entities.Effects; +import io.anuke.mindustry.entities.Effects; 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.math.Mathf; import io.anuke.mindustry.Vars; import io.anuke.mindustry.content.Fx; -import io.anuke.mindustry.entities.TileEntity; -import io.anuke.mindustry.entities.Unit; -import io.anuke.mindustry.entities.units.BaseUnit; -import io.anuke.mindustry.entities.units.UnitType; +import io.anuke.mindustry.entities.type.TileEntity; +import io.anuke.mindustry.entities.type.Unit; +import io.anuke.mindustry.entities.type.BaseUnit; +import io.anuke.mindustry.type.UnitType; import io.anuke.mindustry.gen.Call; import io.anuke.mindustry.graphics.Palette; import io.anuke.mindustry.graphics.Shaders; diff --git a/core/src/io/anuke/mindustry/world/consumers/Consume.java b/core/src/io/anuke/mindustry/world/consumers/Consume.java index 48f6262c14..07a9239bf7 100644 --- a/core/src/io/anuke/mindustry/world/consumers/Consume.java +++ b/core/src/io/anuke/mindustry/world/consumers/Consume.java @@ -1,7 +1,7 @@ package io.anuke.mindustry.world.consumers; import io.anuke.arc.graphics.Color; -import io.anuke.mindustry.entities.TileEntity; +import io.anuke.mindustry.entities.type.TileEntity; import io.anuke.mindustry.graphics.Palette; import io.anuke.mindustry.world.Block; import io.anuke.mindustry.world.meta.BlockStats; diff --git a/core/src/io/anuke/mindustry/world/consumers/ConsumeItem.java b/core/src/io/anuke/mindustry/world/consumers/ConsumeItem.java index 76e659759a..ef5823913d 100644 --- a/core/src/io/anuke/mindustry/world/consumers/ConsumeItem.java +++ b/core/src/io/anuke/mindustry/world/consumers/ConsumeItem.java @@ -1,6 +1,6 @@ package io.anuke.mindustry.world.consumers; -import io.anuke.mindustry.entities.TileEntity; +import io.anuke.mindustry.entities.type.TileEntity; import io.anuke.mindustry.type.Item; import io.anuke.mindustry.type.ItemStack; import io.anuke.mindustry.ui.ItemImage; diff --git a/core/src/io/anuke/mindustry/world/consumers/ConsumeItemFilter.java b/core/src/io/anuke/mindustry/world/consumers/ConsumeItemFilter.java index 155a54e6ec..dea054826d 100644 --- a/core/src/io/anuke/mindustry/world/consumers/ConsumeItemFilter.java +++ b/core/src/io/anuke/mindustry/world/consumers/ConsumeItemFilter.java @@ -1,7 +1,7 @@ package io.anuke.mindustry.world.consumers; import io.anuke.arc.collection.Array; -import io.anuke.mindustry.entities.TileEntity; +import io.anuke.mindustry.entities.type.TileEntity; import io.anuke.mindustry.type.Item; import io.anuke.mindustry.world.Block; import io.anuke.mindustry.world.meta.BlockStat; diff --git a/core/src/io/anuke/mindustry/world/consumers/ConsumeItems.java b/core/src/io/anuke/mindustry/world/consumers/ConsumeItems.java index 8ba9fdbb64..822632e8a0 100644 --- a/core/src/io/anuke/mindustry/world/consumers/ConsumeItems.java +++ b/core/src/io/anuke/mindustry/world/consumers/ConsumeItems.java @@ -1,6 +1,6 @@ package io.anuke.mindustry.world.consumers; -import io.anuke.mindustry.entities.TileEntity; +import io.anuke.mindustry.entities.type.TileEntity; import io.anuke.mindustry.type.ItemStack; import io.anuke.mindustry.ui.ItemImage; import io.anuke.mindustry.world.Block; diff --git a/core/src/io/anuke/mindustry/world/consumers/ConsumeLiquid.java b/core/src/io/anuke/mindustry/world/consumers/ConsumeLiquid.java index c5ee119a8f..2e4785d631 100644 --- a/core/src/io/anuke/mindustry/world/consumers/ConsumeLiquid.java +++ b/core/src/io/anuke/mindustry/world/consumers/ConsumeLiquid.java @@ -1,6 +1,6 @@ package io.anuke.mindustry.world.consumers; -import io.anuke.mindustry.entities.TileEntity; +import io.anuke.mindustry.entities.type.TileEntity; import io.anuke.mindustry.type.Liquid; import io.anuke.mindustry.world.Block; import io.anuke.mindustry.world.meta.BlockStat; diff --git a/core/src/io/anuke/mindustry/world/consumers/ConsumeLiquidFilter.java b/core/src/io/anuke/mindustry/world/consumers/ConsumeLiquidFilter.java index 9a663b4c6d..521c1f932e 100644 --- a/core/src/io/anuke/mindustry/world/consumers/ConsumeLiquidFilter.java +++ b/core/src/io/anuke/mindustry/world/consumers/ConsumeLiquidFilter.java @@ -1,7 +1,7 @@ package io.anuke.mindustry.world.consumers; import io.anuke.arc.collection.Array; -import io.anuke.mindustry.entities.TileEntity; +import io.anuke.mindustry.entities.type.TileEntity; import io.anuke.mindustry.type.Liquid; import io.anuke.mindustry.world.Block; import io.anuke.mindustry.world.meta.BlockStat; diff --git a/core/src/io/anuke/mindustry/world/consumers/ConsumePower.java b/core/src/io/anuke/mindustry/world/consumers/ConsumePower.java index 83231c82c1..e215c75f4e 100644 --- a/core/src/io/anuke/mindustry/world/consumers/ConsumePower.java +++ b/core/src/io/anuke/mindustry/world/consumers/ConsumePower.java @@ -2,7 +2,7 @@ package io.anuke.mindustry.world.consumers; import io.anuke.arc.math.Mathf; import io.anuke.arc.scene.ui.layout.Table; -import io.anuke.mindustry.entities.TileEntity; +import io.anuke.mindustry.entities.type.TileEntity; import io.anuke.mindustry.world.Block; import io.anuke.mindustry.world.meta.BlockStat; import io.anuke.mindustry.world.meta.BlockStats; diff --git a/core/src/io/anuke/mindustry/world/modules/ConsumeModule.java b/core/src/io/anuke/mindustry/world/modules/ConsumeModule.java index 68f8585b55..027027938c 100644 --- a/core/src/io/anuke/mindustry/world/modules/ConsumeModule.java +++ b/core/src/io/anuke/mindustry/world/modules/ConsumeModule.java @@ -1,6 +1,6 @@ package io.anuke.mindustry.world.modules; -import io.anuke.mindustry.entities.TileEntity; +import io.anuke.mindustry.entities.type.TileEntity; import io.anuke.mindustry.world.consumers.Consume; import java.io.DataInput; diff --git a/server/src/io/anuke/mindustry/server/ServerControl.java b/server/src/io/anuke/mindustry/server/ServerControl.java index cf07759145..a35e56cce4 100644 --- a/server/src/io/anuke/mindustry/server/ServerControl.java +++ b/server/src/io/anuke/mindustry/server/ServerControl.java @@ -5,7 +5,7 @@ import io.anuke.arc.Core; import io.anuke.arc.Events; import io.anuke.arc.collection.Array; import io.anuke.arc.collection.ObjectSet; -import io.anuke.arc.entities.Effects; +import io.anuke.mindustry.entities.Effects; import io.anuke.arc.files.FileHandle; import io.anuke.arc.util.*; import io.anuke.arc.util.CommandHandler.Command; @@ -13,7 +13,7 @@ import io.anuke.arc.util.CommandHandler.Response; import io.anuke.arc.util.CommandHandler.ResponseType; import io.anuke.arc.util.Timer.Task; import io.anuke.mindustry.core.GameState.State; -import io.anuke.mindustry.entities.Player; +import io.anuke.mindustry.entities.type.Player; import io.anuke.mindustry.game.Difficulty; import io.anuke.mindustry.game.EventType.GameOverEvent; import io.anuke.mindustry.game.RulePreset; diff --git a/tests/src/test/java/ApplicationTests.java b/tests/src/test/java/ApplicationTests.java index 5b54f30a11..9a001f8a62 100644 --- a/tests/src/test/java/ApplicationTests.java +++ b/tests/src/test/java/ApplicationTests.java @@ -13,8 +13,8 @@ import io.anuke.mindustry.core.Logic; import io.anuke.mindustry.core.NetServer; import io.anuke.mindustry.core.World; import io.anuke.mindustry.entities.traits.BuilderTrait.BuildRequest; -import io.anuke.mindustry.entities.units.BaseUnit; -import io.anuke.mindustry.entities.units.types.Spirit; +import io.anuke.mindustry.entities.type.BaseUnit; +import io.anuke.mindustry.entities.type.types.Spirit; import io.anuke.mindustry.game.Content; import io.anuke.mindustry.game.Team; import io.anuke.mindustry.io.BundleLoader; diff --git a/tools/src/io/anuke/mindustry/Generators.java b/tools/src/io/anuke/mindustry/Generators.java index b6b8d0d8bc..4c027e4b17 100644 --- a/tools/src/io/anuke/mindustry/Generators.java +++ b/tools/src/io/anuke/mindustry/Generators.java @@ -3,7 +3,7 @@ package io.anuke.mindustry; import io.anuke.arc.graphics.Color; import io.anuke.arc.graphics.g2d.TextureRegion; import io.anuke.arc.util.Log; -import io.anuke.mindustry.entities.units.UnitType; +import io.anuke.mindustry.type.UnitType; import io.anuke.mindustry.type.ContentType; import io.anuke.mindustry.type.Item; import io.anuke.mindustry.type.Mech;