From c978410cb31197dd6134d919c9e698cf14d3824b Mon Sep 17 00:00:00 2001 From: Anuken Date: Sun, 2 Feb 2020 13:59:24 -0500 Subject: [PATCH] Scale cleanup / Name cleanup --- .../annotations/impl/EntityProcess.java | 15 ++++-- core/src/mindustry/entities/Effects.java | 19 ++++---- .../mindustry/entities/def/EntityDefs.java | 47 ++++++++++--------- .../mindustry/entities/traits/ScaleTrait.java | 43 ----------------- .../mindustry/entities/traits/TimeTrait.java | 4 +- core/src/mindustry/entities/type/Bullet.java | 2 +- .../mindustry/entities/type/TimedEntity.java | 7 ++- 7 files changed, 52 insertions(+), 85 deletions(-) delete mode 100644 core/src/mindustry/entities/traits/ScaleTrait.java diff --git a/annotations/src/main/java/mindustry/annotations/impl/EntityProcess.java b/annotations/src/main/java/mindustry/annotations/impl/EntityProcess.java index f24c8c78af..664cf6a802 100644 --- a/annotations/src/main/java/mindustry/annotations/impl/EntityProcess.java +++ b/annotations/src/main/java/mindustry/annotations/impl/EntityProcess.java @@ -43,6 +43,9 @@ public class EntityProcess extends BaseProcessor{ allComponents.addAll(allComponents(type)); } + //add all components w/ dependencies + allComponents.addAll(types(Depends.class)); + //create component interfaces for(Stype component : allComponents){ TypeSpec.Builder inter = TypeSpec.interfaceBuilder(interfaceName(component)).addModifiers(Modifier.PUBLIC).addAnnotation(EntityInterface.class); @@ -78,7 +81,10 @@ public class EntityProcess extends BaseProcessor{ //look at each definition for(Stype type : allDefs){ - String name = type.name().replace("Def", "Gen"); + if(!type.name().endsWith("Def")){ + err("All entity def names must end with 'Def'", type.e); + } + String name = type.name().replace("Def", "Gen"); //TODO remove 'gen' TypeSpec.Builder builder = TypeSpec.classBuilder(name).addModifiers(Modifier.PUBLIC, Modifier.FINAL); Array components = allComponents(type); @@ -175,10 +181,11 @@ public class EntityProcess extends BaseProcessor{ } String interfaceName(Stype comp){ - if(!comp.name().endsWith("c")){ - err("All components must have names that end with 'c'.", comp.e); + String suffix = "Comp"; + if(!comp.name().endsWith(suffix)){ + err("All components must have names that end with 'Comp'.", comp.e); } - return comp.name().substring(0, comp.name().length() - 1) + "t"; + return comp.name().substring(0, comp.name().length() - suffix.length()) + "c"; } /** @return all components that a entity def has */ diff --git a/core/src/mindustry/entities/Effects.java b/core/src/mindustry/entities/Effects.java index 6f2a04033a..c1f85aceef 100644 --- a/core/src/mindustry/entities/Effects.java +++ b/core/src/mindustry/entities/Effects.java @@ -1,15 +1,14 @@ package mindustry.entities; -import arc.Core; -import arc.struct.Array; -import arc.func.Cons; -import arc.graphics.Color; +import arc.*; +import arc.func.*; +import arc.graphics.*; import arc.graphics.g2d.*; -import arc.math.Mathf; -import arc.math.geom.Position; -import arc.util.pooling.Pools; -import mindustry.entities.type.EffectEntity; -import mindustry.entities.traits.ScaleTrait; +import arc.math.*; +import arc.math.geom.*; +import arc.struct.*; +import arc.util.pooling.*; +import mindustry.entities.type.*; public class Effects{ private static final EffectContainer container = new EffectContainer(); @@ -126,7 +125,7 @@ public class Effects{ } } - public static class EffectContainer implements ScaleTrait{ + public static class EffectContainer implements Scaled{ public float x, y, time, lifetime, rotation; public Color color; public int id; diff --git a/core/src/mindustry/entities/def/EntityDefs.java b/core/src/mindustry/entities/def/EntityDefs.java index 8ed807f94a..fc59694193 100644 --- a/core/src/mindustry/entities/def/EntityDefs.java +++ b/core/src/mindustry/entities/def/EntityDefs.java @@ -1,7 +1,6 @@ package mindustry.entities.def; import arc.math.geom.*; -import arc.util.*; import mindustry.annotations.Annotations.*; import mindustry.entities.bullet.*; import mindustry.entities.units.*; @@ -10,18 +9,18 @@ import mindustry.net.*; class EntityDefs{ - @EntityDef({Unitc.class, Connectionc.class}) + @EntityDef({UnitComp.class, ConnectionComp.class}) class PlayerDef{} - @EntityDef({Bulletc.class, Velc.class}) + @EntityDef({BulletComp.class, VelComp.class}) class BulletDef{} - @Depends({Healthc.class, Velc.class, Statusc.class}) - class Unitc{ + @Depends({HealthComp.class, VelComp.class, StatusComp.class}) + class UnitComp{ } - class Healthc{ + class HealthComp{ float health, maxHealth; boolean dead; @@ -30,7 +29,7 @@ class EntityDefs{ } } - abstract class Posc implements Position{ + abstract class PosComp implements Position{ float x, y; void set(float x, float y){ @@ -39,8 +38,8 @@ class EntityDefs{ } } - @Depends(Posc.class) - class Velc{ + @Depends(PosComp.class) + class VelComp{ //transient fields act as imports from any other component clases; these are ignored by the generator transient float x, y; @@ -53,7 +52,19 @@ class EntityDefs{ } } - class Statusc{ + @Depends(PosComp.class) + class HitboxComp{ + transient float x, y; + + float hitSize; + + boolean collides(Hitboxc other){ + return Intersector.overlapsRect(x - hitSize/2f, y - hitSize/2f, hitSize, hitSize, + other.getX() - other.getHitSize()/2f, other.getY() - other.getHitSize()/2f, other.getHitSize(), other.getHitSize()); + } + } + + class StatusComp{ final Statuses statuses = new Statuses(); void update(){ @@ -61,11 +72,11 @@ class EntityDefs{ } } - class Connectionc{ + class ConnectionComp{ NetConnection connection; } - class Bulletc{ + class BulletComp{ BulletType bullet; void init(){ @@ -74,7 +85,7 @@ class EntityDefs{ } @BaseComponent - class Entityc{ + class EntityComp{ int id; void init(){} @@ -85,13 +96,7 @@ class EntityDefs{ } static void testing(){ - Entityt abullet = new BulletGen(); - Entityt aplayer = new PlayerGen(); - - if(abullet instanceof Post){ - Log.info("Pos: " + abullet.as(Post.class).getX()); - } - - Log.info(abullet.as(Post.class).dst(aplayer.as(Post.class))); + Entityc abullet = new BulletGen(); + Entityc aplayer = new PlayerGen(); } } diff --git a/core/src/mindustry/entities/traits/ScaleTrait.java b/core/src/mindustry/entities/traits/ScaleTrait.java deleted file mode 100644 index 2a572659b2..0000000000 --- a/core/src/mindustry/entities/traits/ScaleTrait.java +++ /dev/null @@ -1,43 +0,0 @@ -package mindustry.entities.traits; - -import 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/mindustry/entities/traits/TimeTrait.java b/core/src/mindustry/entities/traits/TimeTrait.java index cf89d7dca8..f6c3938e3d 100644 --- a/core/src/mindustry/entities/traits/TimeTrait.java +++ b/core/src/mindustry/entities/traits/TimeTrait.java @@ -1,9 +1,9 @@ package mindustry.entities.traits; -import arc.math.Mathf; +import arc.math.*; import arc.util.Time; -public interface TimeTrait extends ScaleTrait, Entity{ +public interface TimeTrait extends Scaled, Entity{ float lifetime(); diff --git a/core/src/mindustry/entities/type/Bullet.java b/core/src/mindustry/entities/type/Bullet.java index f7e676ecc9..6d9a6eb12e 100644 --- a/core/src/mindustry/entities/type/Bullet.java +++ b/core/src/mindustry/entities/type/Bullet.java @@ -16,7 +16,7 @@ import mindustry.world.*; import static mindustry.Vars.*; -public class Bullet extends SolidEntity implements DamageTrait, ScaleTrait, Poolable, DrawTrait, VelocityTrait, TimeTrait, TeamTrait, AbsorbTrait{ +public class Bullet extends SolidEntity implements DamageTrait, Scaled, Poolable, DrawTrait, VelocityTrait, TimeTrait, TeamTrait, AbsorbTrait{ public Interval timer = new Interval(3); private float lifeScl; diff --git a/core/src/mindustry/entities/type/TimedEntity.java b/core/src/mindustry/entities/type/TimedEntity.java index 413b1c3fd5..17b688002d 100644 --- a/core/src/mindustry/entities/type/TimedEntity.java +++ b/core/src/mindustry/entities/type/TimedEntity.java @@ -1,10 +1,9 @@ package mindustry.entities.type; -import arc.util.pooling.Pool.Poolable; -import mindustry.entities.traits.ScaleTrait; -import mindustry.entities.traits.TimeTrait; +import arc.util.pooling.Pool.*; +import mindustry.entities.traits.*; -public abstract class TimedEntity extends BaseEntity implements ScaleTrait, TimeTrait, Poolable{ +public abstract class TimedEntity extends BaseEntity implements TimeTrait, Poolable{ public float time; @Override