diff --git a/app/src/main/assets/bullet.obj b/app/src/main/assets/bullet.obj index d2df865..ed1b502 100644 --- a/app/src/main/assets/bullet.obj +++ b/app/src/main/assets/bullet.obj @@ -1,6 +1,6 @@ # Created by Metasequoia -mtllib bullet.mtl +mtllib myBullet.mtl v 0.000000 0.000000 0.000000 v 0.000000 -0.075890 0.381540 diff --git a/app/src/main/java/org/ntlab/radishforandroidstudio/cactusClient/connections/BulletCreateConnection.java b/app/src/main/java/org/ntlab/radishforandroidstudio/cactusClient/connections/BulletCreateConnection.java index ace9dbd..9a98ec0 100644 --- a/app/src/main/java/org/ntlab/radishforandroidstudio/cactusClient/connections/BulletCreateConnection.java +++ b/app/src/main/java/org/ntlab/radishforandroidstudio/cactusClient/connections/BulletCreateConnection.java @@ -4,6 +4,6 @@ public class BulletCreateConnection extends HttpAsyncConnection { public BulletCreateConnection(String instanceId, String playerId) { - super("http://nitta-lab-www.is.konan-u.ac.jp:8080/CactusServer/rest/instances/" + instanceId + "/bullet/" + playerId); + super("http://nitta-lab-www.is.konan-u.ac.jp:8080/CactusServer/rest/instances/" + instanceId + "/bullets/" + playerId); } } diff --git a/app/src/main/java/org/ntlab/radishforandroidstudio/cactusClient/connections/BulletGetConnection.java b/app/src/main/java/org/ntlab/radishforandroidstudio/cactusClient/connections/BulletGetConnection.java index 377955f..515ad36 100644 --- a/app/src/main/java/org/ntlab/radishforandroidstudio/cactusClient/connections/BulletGetConnection.java +++ b/app/src/main/java/org/ntlab/radishforandroidstudio/cactusClient/connections/BulletGetConnection.java @@ -4,6 +4,6 @@ public class BulletGetConnection extends HttpAsyncConnection { public BulletGetConnection(String instanceId) { - super("http://nitta-lab-www.is.konan-u.ac.jp:8080/CactusServer/rest/instances/" + instanceId + "/bullet"); + super("http://nitta-lab-www.is.konan-u.ac.jp:8080/CactusServer/rest/instances/" + instanceId + "/bullets"); } } diff --git a/app/src/main/java/org/ntlab/radishforandroidstudio/cactusClient/connections/BulletUpdateConnection.java b/app/src/main/java/org/ntlab/radishforandroidstudio/cactusClient/connections/BulletUpdateConnection.java index 7e88758..0d30246 100644 --- a/app/src/main/java/org/ntlab/radishforandroidstudio/cactusClient/connections/BulletUpdateConnection.java +++ b/app/src/main/java/org/ntlab/radishforandroidstudio/cactusClient/connections/BulletUpdateConnection.java @@ -4,6 +4,6 @@ public class BulletUpdateConnection extends HttpAsyncConnection { public BulletUpdateConnection(String instanceId, String playerId, String bulletId) { - super("http://nitta-lab-www.is.konan-u.ac.jp:8080/CactusServer/rest/instances/" + instanceId + "/bullet/" + playerId + "/" + bulletId); + super("http://nitta-lab-www.is.konan-u.ac.jp:8080/CactusServer/rest/instances/" + instanceId + "/bullets/" + playerId + "/" + bulletId); } } diff --git a/app/src/main/java/org/ntlab/radishforandroidstudio/cactusClient/factory/BulletFactory.java b/app/src/main/java/org/ntlab/radishforandroidstudio/cactusClient/factory/BulletFactory.java index f72b651..be6d8e7 100644 --- a/app/src/main/java/org/ntlab/radishforandroidstudio/cactusClient/factory/BulletFactory.java +++ b/app/src/main/java/org/ntlab/radishforandroidstudio/cactusClient/factory/BulletFactory.java @@ -2,16 +2,14 @@ import android.content.res.Resources; -import org.ntlab.radishforandroidstudio.cactusClient.models.Bullet; +import org.ntlab.radishforandroidstudio.cactusClient.models.MyBullet; import org.ntlab.radishforandroidstudio.framework.model3D.ModelFactory; import org.ntlab.radishforandroidstudio.framework.model3D.Object3D; -import org.ntlab.radishforandroidstudio.framework.physics.Velocity3D; import org.ntlab.radishforandroidstudio.java3d.Appearance; import org.ntlab.radishforandroidstudio.java3d.Material; -import org.ntlab.radishforandroidstudio.java3d.Vector3d; public abstract class BulletFactory { - public final Bullet create(Resources resources) { + public final MyBullet create(Resources resources) { Appearance ap1 = createAppearance(); ap1.setMaterial(createMaterial()); @@ -23,7 +21,7 @@ e.printStackTrace(); } - Bullet b = new Bullet(pochaBody, null); + MyBullet b = new MyBullet(pochaBody, null); return b; } diff --git a/app/src/main/java/org/ntlab/radishforandroidstudio/cactusClient/models/Bullet.java b/app/src/main/java/org/ntlab/radishforandroidstudio/cactusClient/models/Bullet.java deleted file mode 100644 index 6da721d..0000000 --- a/app/src/main/java/org/ntlab/radishforandroidstudio/cactusClient/models/Bullet.java +++ /dev/null @@ -1,149 +0,0 @@ -package org.ntlab.radishforandroidstudio.cactusClient.models; - -import android.telecom.Call; - -import org.ntlab.radishforandroidstudio.cactusClient.connections.BulletCreateConnection; -import org.ntlab.radishforandroidstudio.cactusClient.connections.BulletGetConnection; -import org.ntlab.radishforandroidstudio.cactusClient.connections.BulletUpdateConnection; -import org.ntlab.radishforandroidstudio.framework.animation.Animation3D; -import org.ntlab.radishforandroidstudio.framework.gameMain.Actor; -import org.ntlab.radishforandroidstudio.framework.gameMain.GameBaseModel; -import org.ntlab.radishforandroidstudio.framework.model3D.CollisionResult; -import org.ntlab.radishforandroidstudio.framework.model3D.Object3D; -import org.ntlab.radishforandroidstudio.framework.model3D.Placeable; -import org.ntlab.radishforandroidstudio.framework.model3D.Position3D; -import org.ntlab.radishforandroidstudio.framework.model3D.Quaternion3D; -import org.ntlab.radishforandroidstudio.framework.network.CallBack; -import org.ntlab.radishforandroidstudio.framework.physics.Force3D; -import org.ntlab.radishforandroidstudio.framework.physics.Solid3D; -import org.ntlab.radishforandroidstudio.framework.physics.Velocity3D; -import org.ntlab.radishforandroidstudio.java3d.Vector3d; - -import java.util.ArrayList; -import java.util.UUID; - -public class Bullet extends Actor implements GameBaseModel, CallBack { - private String instanceId; - private String playerId; - private String uuid; - private BulletGetConnection bulletGetConnection; - private BulletUpdateConnection bulletUpdateConnection; - private DummyBullet bullet; - final private int INIT_UPDATE_INTERVAL = 100; - private int updateInterval = INIT_UPDATE_INTERVAL; - private boolean isCreatedOnServer = false; - private boolean isDelete = false; - - public Bullet(Object3D body, Animation3D animation) { - super(body, animation); - initUuid(); - } - - public Bullet(Solid3D body, Animation3D animation) { - super(body, animation); - initUuid(); - } - - public void initUuid() { - if (uuid == null || uuid.equals("")) { - uuid = UUID.randomUUID().toString(); - } - } - - public String getUuid() { - return uuid; - } - - public boolean isDelete() { - return isDelete; - } - - @Override - public void onEndFall() { - - } - - @Override - public void onIntersect(CollisionResult normal, long interval) { - - } - - @Override - public void onEndAnimation() { - - } - - @Override - public void addCollidable(ArrayList pList) { - - } - - @Override - public void onCollisionEnter(Placeable p) { - - } - - @Override - public void onCollisionStay(Placeable p) { - - } - - @Override - public void onCollisionExit(Placeable p) { - - } - - @Override - public Force3D getGravity() { - return Force3D.ZERO; - } - - - @Override - final public void update(double interval) { - progress(interval); - // // サーバに弾を作成 -// if (!isCreatedOnServer && !instanceId.equals("") && !playerId.equals("")) { -// BulletCreateConnection con = new BulletCreateConnection(instanceId, playerId); -// // set parameter -// -// con.doPost(); -// } -// -// // サーバの弾の情報を更新 -// updateInterval -= interval; -// if (updateInterval <= 0 && isCreatedOnServer) { -// updateInterval = INIT_UPDATE_INTERVAL; -// bulletUpdateConnection = new BulletUpdateConnection(instanceId, playerId, uuid); -// // set parameter -// -// bulletUpdateConnection.doPut(); -// } - } - - public void progress(double interval) { - - } - - public void init(Position3D pos, Quaternion3D angle) { - setPosition(pos); - Vector3d v = new Vector3d(1.f, 0, 0); - v = v.rotate(angle); - setVelocity(new Velocity3D(v)); - } - - - @Override - public void setInstanceId(String id) { - instanceId = id; - } - - public void setPlayerid(String id) { - playerId = id; - } - - @Override - public void onResponse(String response) { - isCreatedOnServer = true; - } -} diff --git a/app/src/main/java/org/ntlab/radishforandroidstudio/cactusClient/models/BulletsManager.java b/app/src/main/java/org/ntlab/radishforandroidstudio/cactusClient/models/BulletsManager.java index 8b913e7..f619b03 100644 --- a/app/src/main/java/org/ntlab/radishforandroidstudio/cactusClient/models/BulletsManager.java +++ b/app/src/main/java/org/ntlab/radishforandroidstudio/cactusClient/models/BulletsManager.java @@ -62,10 +62,10 @@ public void update(double interval) { nextConnectRenaimdTime -= interval; if (nextConnectRenaimdTime <= 0) { -// nextConnectRenaimdTime = CONNECT_INTERVAL; -// con = new BulletGetConnection(instanceId); -// con.setCallBack(this); -// con.doGet(); + nextConnectRenaimdTime = CONNECT_INTERVAL; + con = new BulletGetConnection(instanceId); + con.setCallBack(this); + con.doGet(); } } @@ -80,7 +80,6 @@ for (Map.Entry entry : eachPlayerBullets.entrySet()) { visibleBullets.put(entry.getKey(), 1); ArrayList properties = new ArrayList<>(); - DummyBullet player = entry.getValue(); // 自分自身は無視する if (entry.getKey().equals(playerId)) { diff --git a/app/src/main/java/org/ntlab/radishforandroidstudio/cactusClient/models/MyBullet.java b/app/src/main/java/org/ntlab/radishforandroidstudio/cactusClient/models/MyBullet.java new file mode 100644 index 0000000..7994941 --- /dev/null +++ b/app/src/main/java/org/ntlab/radishforandroidstudio/cactusClient/models/MyBullet.java @@ -0,0 +1,156 @@ +package org.ntlab.radishforandroidstudio.cactusClient.models; + +import android.telecom.Call; + +import net.arnx.jsonic.JSON; + +import org.ntlab.radishforandroidstudio.cactusClient.connections.BulletCreateConnection; +import org.ntlab.radishforandroidstudio.cactusClient.connections.BulletGetConnection; +import org.ntlab.radishforandroidstudio.cactusClient.connections.BulletUpdateConnection; +import org.ntlab.radishforandroidstudio.framework.animation.Animation3D; +import org.ntlab.radishforandroidstudio.framework.gameMain.Actor; +import org.ntlab.radishforandroidstudio.framework.gameMain.GameBaseModel; +import org.ntlab.radishforandroidstudio.framework.model3D.CollisionResult; +import org.ntlab.radishforandroidstudio.framework.model3D.Object3D; +import org.ntlab.radishforandroidstudio.framework.model3D.Placeable; +import org.ntlab.radishforandroidstudio.framework.model3D.Position3D; +import org.ntlab.radishforandroidstudio.framework.model3D.Quaternion3D; +import org.ntlab.radishforandroidstudio.framework.network.CallBack; +import org.ntlab.radishforandroidstudio.framework.physics.Force3D; +import org.ntlab.radishforandroidstudio.framework.physics.Solid3D; +import org.ntlab.radishforandroidstudio.framework.physics.Velocity3D; +import org.ntlab.radishforandroidstudio.java3d.Vector3d; + +import java.util.ArrayList; +import java.util.UUID; + +public class MyBullet extends Actor implements GameBaseModel, CallBack { + private String instanceId; + private String playerId; + private String uuid; + private BulletGetConnection bulletGetConnection; + private DummyBullet bullet; + final private int INIT_UPDATE_INTERVAL = 100; + private int updateInterval = INIT_UPDATE_INTERVAL; + private boolean isCreatedOnServer = false; + private boolean isDelete = false; + + public MyBullet(Object3D body, Animation3D animation) { + super(body, animation); + initUuid(); + } + + public MyBullet(Solid3D body, Animation3D animation) { + super(body, animation); + initUuid(); + } + + public void initUuid() { + if (getUuid() == null || getUuid().equals("")) { + uuid = UUID.randomUUID().toString(); + } + } + + public String getUuid() { + return uuid; + } + + public boolean isDelete() { + return isDelete; + } + + @Override + public void onEndFall() { + + } + + @Override + public void onIntersect(CollisionResult normal, long interval) { + + } + + @Override + public void onEndAnimation() { + + } + + @Override + public void addCollidable(ArrayList pList) { + + } + + @Override + public void onCollisionEnter(Placeable p) { + + } + + @Override + public void onCollisionStay(Placeable p) { + + } + + @Override + public void onCollisionExit(Placeable p) { + + } + + @Override + public Force3D getGravity() { + return Force3D.ZERO; + } + + + @Override + final public void update(double interval) { + progress(interval); + // サーバに弾を作成 + if (!isCreatedOnServer && !instanceId.equals("") && !playerId.equals("")) { + JSON json = new JSON(); + Quaternion3D q = ((Solid3D)(getBody())).getQuaternion(); + BulletCreateConnection con = new BulletCreateConnection(instanceId, playerId); + con.addFormParam("bulletID", getUuid()); + con.addFormParam("position", json.encode(getPosition())); + con.addFormParam("angle", "{ \"x\":" + q.getX() + ", \"y\":" + q.getY() + ", \"z\":" + q.getZ() + ", \"w\":" + q.getW() + "}"); + con.doPost(); + } + else if (isCreatedOnServer) { + // サーバの弾の情報を更新 + updateInterval -= interval; + if (updateInterval <= 0 && isCreatedOnServer) { + JSON json = new JSON(); + Quaternion3D q = ((Solid3D)(getBody())).getQuaternion(); + updateInterval = INIT_UPDATE_INTERVAL; + BulletUpdateConnection con = new BulletUpdateConnection(instanceId, playerId, getUuid()); + con.addFormParam("position", json.encode(getPosition())); + con.addFormParam("angle", "{ \"x\":" + q.getX() + ", \"y\":" + q.getY() + ", \"z\":" + q.getZ() + ", \"w\":" + q.getW() + "}"); + con.doPut(); + } + } + } + + public void progress(double interval) { + + } + + public void init(Position3D pos, Quaternion3D angle) { + setPosition(pos); + Vector3d v = new Vector3d(1.f, 0, 0); + v = v.rotate(angle); + setVelocity(new Velocity3D(v)); + } + + + @Override + public void setInstanceId(String id) { + instanceId = id; + } + + public void setPlayerid(String id) { + playerId = id; + } + + @Override + public void onResponse(String response) { + isCreatedOnServer = true; + } +} diff --git a/app/src/main/java/org/ntlab/radishforandroidstudio/cactusClient/models/NormalBullet.java b/app/src/main/java/org/ntlab/radishforandroidstudio/cactusClient/models/NormalBullet.java index 5cbcc23..66e0a71 100644 --- a/app/src/main/java/org/ntlab/radishforandroidstudio/cactusClient/models/NormalBullet.java +++ b/app/src/main/java/org/ntlab/radishforandroidstudio/cactusClient/models/NormalBullet.java @@ -2,10 +2,9 @@ import org.ntlab.radishforandroidstudio.framework.animation.Animation3D; import org.ntlab.radishforandroidstudio.framework.model3D.Object3D; -import org.ntlab.radishforandroidstudio.framework.model3D.Position3D; import org.ntlab.radishforandroidstudio.framework.physics.Solid3D; -public class NormalBullet extends Bullet { +public class NormalBullet extends MyBullet { public NormalBullet(Object3D body, Animation3D animation) { super(body, animation); } diff --git a/app/src/main/java/org/ntlab/radishforandroidstudio/cactusClient/models/OwnBullets.java b/app/src/main/java/org/ntlab/radishforandroidstudio/cactusClient/models/OwnBullets.java index 52bb272..2545ed0 100644 --- a/app/src/main/java/org/ntlab/radishforandroidstudio/cactusClient/models/OwnBullets.java +++ b/app/src/main/java/org/ntlab/radishforandroidstudio/cactusClient/models/OwnBullets.java @@ -2,27 +2,18 @@ import android.content.res.Resources; -import org.ntlab.radishforandroidstudio.framework.animation.Animation3D; import org.ntlab.radishforandroidstudio.framework.event.BulletShotEvent; import org.ntlab.radishforandroidstudio.framework.gameMain.GameBaseModel; -import org.ntlab.radishforandroidstudio.framework.gameMain.OvergroundActor; import org.ntlab.radishforandroidstudio.framework.listener.BulletShotListener; -import org.ntlab.radishforandroidstudio.framework.model3D.ModelFactory; -import org.ntlab.radishforandroidstudio.framework.model3D.Object3D; import org.ntlab.radishforandroidstudio.framework.model3D.Position3D; import org.ntlab.radishforandroidstudio.framework.model3D.Quaternion3D; import org.ntlab.radishforandroidstudio.framework.model3D.Universe; -import org.ntlab.radishforandroidstudio.framework.physics.Velocity3D; import org.ntlab.radishforandroidstudio.framework.subject.BulletShotSubject; -import org.ntlab.radishforandroidstudio.java3d.Appearance; -import org.ntlab.radishforandroidstudio.java3d.Material; -import org.ntlab.radishforandroidstudio.java3d.Vector3d; import java.util.ArrayList; -import java.util.Iterator; public class OwnBullets implements GameBaseModel, BulletShotListener { - private ArrayList bullets = new ArrayList<>(); + private ArrayList bullets = new ArrayList<>(); private String playerId; private String instanceId; private Resources resources; @@ -50,15 +41,15 @@ playerAngle = angle; } - public void sendDeleteBulletForServer(Bullet bullet) { + public void sendDeleteBulletForServer(MyBullet myBullet) { // TODO: 弾消し情報を送信 } @Override public void update(double interval) { System.out.println("num of bullets:" + bullets.size()); -// for (Iterator bulletIterator = bullets.iterator(); bulletIterator.hasNext();) { -// Bullet bullet = bulletIterator.next(); +// for (Iterator bulletIterator = bullets.iterator(); bulletIterator.hasNext();) { +// MyBullet bullet = bulletIterator.next(); // bullet.update(interval); // // // 弾削除 @@ -70,8 +61,8 @@ } public void deleteBullets(ArrayList deletedBullets) { -// for (Iterator bulletIterator = bullets.iterator(); bulletIterator.hasNext();) { -// Bullet bullet = bulletIterator.next(); +// for (Iterator bulletIterator = bullets.iterator(); bulletIterator.hasNext();) { +// MyBullet bullet = bulletIterator.next(); // // for(String deleteBullet : deletedBullets) { // 弾削除 // if (bullet.getUuid().equals(bullets)) { @@ -101,10 +92,12 @@ */ @Override public boolean onEvent(BulletShotEvent event) { - if (playerPos == null || playerAngle == null) { + if (playerPos == null || playerAngle == null || playerId == null || instanceId == null) { return false; } - Bullet b = event.getBullet(); + MyBullet b = event.getBullet(); + b.setPlayerid(playerId); + b.setInstanceId(instanceId); b.init(playerPos, playerAngle); bullets.add(b); universe.place(b); diff --git a/app/src/main/java/org/ntlab/radishforandroidstudio/framework/RWT/RWTShotButton.java b/app/src/main/java/org/ntlab/radishforandroidstudio/framework/RWT/RWTShotButton.java index 866dee8..0b1181e 100644 --- a/app/src/main/java/org/ntlab/radishforandroidstudio/framework/RWT/RWTShotButton.java +++ b/app/src/main/java/org/ntlab/radishforandroidstudio/framework/RWT/RWTShotButton.java @@ -6,7 +6,6 @@ import android.view.MotionEvent; import org.ntlab.radishforandroidstudio.cactusClient.factory.NormalBulletFactory; -import org.ntlab.radishforandroidstudio.cactusClient.models.NormalBullet; import org.ntlab.radishforandroidstudio.framework.event.BulletShotEvent; import org.ntlab.radishforandroidstudio.framework.subject.BulletShotSubject; @@ -29,9 +28,13 @@ // 今は無し // 弾のモデルを作成 - NormalBulletFactory f = new NormalBulletFactory(); - BulletShotEvent e = new BulletShotEvent(event, f.create(getResources())); - BulletShotSubject.getInstance().notifyListeners(e); + if (event.getAction() == MotionEvent.ACTION_DOWN) { + NormalBulletFactory f = new NormalBulletFactory(); + BulletShotEvent e = new BulletShotEvent(event, f.create(getResources())); + BulletShotSubject.getInstance().notifyListeners(e); + System.out.println("shot!"); + } + invalidate(); return true; } } diff --git a/app/src/main/java/org/ntlab/radishforandroidstudio/framework/event/BulletShotEvent.java b/app/src/main/java/org/ntlab/radishforandroidstudio/framework/event/BulletShotEvent.java index d3f4b1c..26c14d3 100644 --- a/app/src/main/java/org/ntlab/radishforandroidstudio/framework/event/BulletShotEvent.java +++ b/app/src/main/java/org/ntlab/radishforandroidstudio/framework/event/BulletShotEvent.java @@ -2,17 +2,17 @@ import android.view.MotionEvent; -import org.ntlab.radishforandroidstudio.cactusClient.models.Bullet; +import org.ntlab.radishforandroidstudio.cactusClient.models.MyBullet; public class BulletShotEvent extends MyEvent { - private Bullet b; + private MyBullet b; - public BulletShotEvent(MotionEvent e, Bullet b) { + public BulletShotEvent(MotionEvent e, MyBullet b) { super(e); this.b = b; } - public Bullet getBullet() { + public MyBullet getBullet() { return b; } }