mirror of
https://github.com/collinsmith/riiablo.git
synced 2025-02-24 21:48:46 +07:00
Assigned missiles a physics body (see #113)
This commit is contained in:
parent
63bfa85173
commit
6cc41eb633
@ -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()) {
|
||||
|
@ -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;
|
||||
}
|
||||
}
|
||||
|
@ -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);
|
||||
|
Loading…
Reference in New Issue
Block a user