diff --git a/core/src/com/riiablo/engine/client/ClientEntityFactory.java b/core/src/com/riiablo/engine/client/ClientEntityFactory.java index d5500050..95479fe5 100644 --- a/core/src/com/riiablo/engine/client/ClientEntityFactory.java +++ b/core/src/com/riiablo/engine/client/ClientEntityFactory.java @@ -1,11 +1,12 @@ package com.riiablo.engine.client; import com.artemis.ComponentMapper; + import com.badlogic.gdx.math.Interpolation; import com.badlogic.gdx.math.Vector2; import com.badlogic.gdx.utils.Align; import com.badlogic.gdx.utils.IntIntMap; -import com.riiablo.save.CharData; + import com.riiablo.Riiablo; import com.riiablo.ai.AI; import com.riiablo.ai.Npc; @@ -30,6 +31,7 @@ import com.riiablo.engine.server.component.SoundEmitter; import com.riiablo.engine.server.component.Warp; import com.riiablo.map.DT1; import com.riiablo.map.Map; +import com.riiablo.save.CharData; public class ClientEntityFactory extends ServerEntityFactory { private static final String TAG = "ClientEntityFactory"; @@ -202,6 +204,7 @@ public class ClientEntityFactory extends ServerEntityFactory { int id = super.createMissile(missileId, angle, position); Missile missileWrapper = mMissile.get(id); Riiablo.assets.load(missileWrapper.missileDescriptor); + mBox2DBody.create(id); Missiles.Entry missile = mMissile.get(id).missile; if (!missile.TravelSound.isEmpty()) { diff --git a/core/src/com/riiablo/engine/server/ServerEntityFactory.java b/core/src/com/riiablo/engine/server/ServerEntityFactory.java index ded2c79f..5bc6cc37 100644 --- a/core/src/com/riiablo/engine/server/ServerEntityFactory.java +++ b/core/src/com/riiablo/engine/server/ServerEntityFactory.java @@ -247,6 +247,7 @@ public class ServerEntityFactory extends EntityFactory { mPosition.create(id).position.set(position); mVelocity.create(id).velocity.set(angle).setLength(missile.Vel); mAngle.create(id).set(angle); + mSize.create(id).size = Size.SMALL; return id; } } diff --git a/core/src/com/riiablo/map/Box2DPhysics.java b/core/src/com/riiablo/map/Box2DPhysics.java index 9bcd76fb..8f4cc1f7 100644 --- a/core/src/com/riiablo/map/Box2DPhysics.java +++ b/core/src/com/riiablo/map/Box2DPhysics.java @@ -1,11 +1,15 @@ package com.riiablo.map; +import java.util.Arrays; +import org.apache.commons.lang3.Validate; + import com.artemis.Aspect; import com.artemis.ComponentMapper; import com.artemis.annotations.All; import com.artemis.annotations.Wire; import com.artemis.systems.IntervalSystem; import com.artemis.utils.IntBag; + import com.badlogic.gdx.Gdx; import com.badlogic.gdx.math.Vector2; import com.badlogic.gdx.physics.box2d.Body; @@ -18,6 +22,7 @@ import com.badlogic.gdx.physics.box2d.PolygonShape; import com.badlogic.gdx.physics.box2d.World; import com.badlogic.gdx.utils.Array; import com.badlogic.gdx.utils.IntMap; + import com.riiablo.camera.IsometricCamera; import com.riiablo.codec.excel.Objects; import com.riiablo.engine.server.component.Box2DBody; @@ -27,10 +32,6 @@ import com.riiablo.engine.server.component.Object; import com.riiablo.engine.server.component.Position; import com.riiablo.engine.server.component.Size; -import org.apache.commons.lang3.Validate; - -import java.util.Arrays; - @All({Class.class, Position.class, Size.class, Box2DBody.class}) public class Box2DPhysics extends IntervalSystem { private static final String TAG = "Box2DPhysicsSystem"; @@ -67,6 +68,10 @@ public class Box2DPhysics extends IntervalSystem { type = BodyDef.BodyType.DynamicBody; fixedRotation = true; }}; + private final BodyDef missileBodyDef = new BodyDef() {{ + type = BodyDef.BodyType.DynamicBody; + fixedRotation = true; + }}; private final BodyDef playerBodyDef = monsterBodyDef; public Box2DPhysics(float interval) { @@ -150,6 +155,16 @@ public class Box2DPhysics extends IntervalSystem { } shape.dispose(); } break; + case MIS: { + missileBodyDef.position.set(position); + body = box2d.createBody(missileBodyDef); + CircleShape shape = new CircleShape(); { + shape.setRadius(size / 2f); + Fixture fixture = body.createFixture(shape, 1f); + //fixture.setSensor(true); + } shape.dispose(); + } + break; case PLR: { playerBodyDef.position.set(position); body = box2d.createBody(playerBodyDef);