diff --git a/app/src/main/java/org/ntlab/radishforandroidstudio/cactusClient/models/CactusModel.java b/app/src/main/java/org/ntlab/radishforandroidstudio/cactusClient/models/CactusModel.java deleted file mode 100644 index c6efb0b..0000000 --- a/app/src/main/java/org/ntlab/radishforandroidstudio/cactusClient/models/CactusModel.java +++ /dev/null @@ -1,26 +0,0 @@ -package org.ntlab.radishforandroidstudio.cactusClient.models; - -/** - * モデルの基底インターフェース - * - * @author s.iwatani - */ -public interface CactusModel { - int MAX_CONNECTION_CONTINUITY_TIME = 5000; // ミリ秒 - - /** - * モデルの状態を更新する - * - * @author s.iwatani - * @param interval 前回の更新からの時間差 - */ - void update(double interval); - - /** - * instanceのIDをセットする - * - * @author s.iwatani - * @param id InstanceのID - */ - void setInstanceId(String id); -} diff --git a/app/src/main/java/org/ntlab/radishforandroidstudio/cactusClient/models/CactusModels.java b/app/src/main/java/org/ntlab/radishforandroidstudio/cactusClient/models/CactusModels.java index 5d0696d..ada4dfb 100644 --- a/app/src/main/java/org/ntlab/radishforandroidstudio/cactusClient/models/CactusModels.java +++ b/app/src/main/java/org/ntlab/radishforandroidstudio/cactusClient/models/CactusModels.java @@ -1,57 +1,32 @@ package org.ntlab.radishforandroidstudio.cactusClient.models; +import org.ntlab.radishforandroidstudio.framework.gameMain.GameBaseModel; import org.ntlab.radishforandroidstudio.framework.gameMain.RealTime3DFragment; +import org.ntlab.radishforandroidstudio.framework.gameMain.GameBaseModelManager; import org.ntlab.radishforandroidstudio.framework.model3D.Universe; -import java.util.ArrayList; - /** * モデルを管理する * * @author s.iwatani */ -public class CactusModels implements CactusModel { - private ArrayList models = new ArrayList<>(); - private RealTime3DFragment fragment = null; - private Universe universe = null; +public class CactusModels extends GameBaseModelManager implements GameBaseModel { private String instanceId = ""; public CactusModels() { + super(); } public CactusModels(RealTime3DFragment fragment, Universe universe) { + super(fragment, universe); models.add(new OtherPlayerCharactersModel(fragment, universe)); - this.fragment = fragment; } - /** - * CactusModelを追加 - * instanceIDのセットなどは実行されないことを注意 - * - * @param model 追加したいCactusModel - */ - public void addModel(CactusModel model) { - models.add(model); - } public void setInstanceId(String id) { - for(CactusModel model : models) { + for(GameBaseModel model : models) { model.setInstanceId(id); } instanceId = id; } - - /** - * モデルの状態を更新する - * - * @author s.iwatani - * @param interval 前回の更新からの時間差 - */ - @Override - public void update(double interval) { - System.out.println("Update"); - for (CactusModel model: models) { - model.update(interval); - } - } } diff --git a/app/src/main/java/org/ntlab/radishforandroidstudio/cactusClient/models/OtherPlayerCharactersModel.java b/app/src/main/java/org/ntlab/radishforandroidstudio/cactusClient/models/OtherPlayerCharactersModel.java index 68a5844..aa4b816 100644 --- a/app/src/main/java/org/ntlab/radishforandroidstudio/cactusClient/models/OtherPlayerCharactersModel.java +++ b/app/src/main/java/org/ntlab/radishforandroidstudio/cactusClient/models/OtherPlayerCharactersModel.java @@ -1,26 +1,14 @@ package org.ntlab.radishforandroidstudio.cactusClient.models; -import net.arnx.jsonic.JSON; - import org.ntlab.radishforandroidstudio.cactusClient.connections.CharactersConnection; -import org.ntlab.radishforandroidstudio.framework.animation.Animation3D; import org.ntlab.radishforandroidstudio.framework.gameMain.Actor; -import org.ntlab.radishforandroidstudio.framework.gameMain.OvergroundActor; +import org.ntlab.radishforandroidstudio.framework.gameMain.GameBaseModel; import org.ntlab.radishforandroidstudio.framework.gameMain.RealTime3DFragment; -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.Property3D; -import org.ntlab.radishforandroidstudio.framework.model3D.Quaternion3D; import org.ntlab.radishforandroidstudio.framework.model3D.Universe; import org.ntlab.radishforandroidstudio.framework.network.CallBack; -import org.ntlab.radishforandroidstudio.java3d.Appearance; -import org.ntlab.radishforandroidstudio.java3d.Material; -import java.math.BigDecimal; import java.util.ArrayList; import java.util.HashMap; -import java.util.List; import java.util.Map; /** @@ -28,7 +16,7 @@ * * @author s.iwatani */ -public class OtherPlayerCharactersModel implements CactusModel, CallBack { +public class OtherPlayerCharactersModel implements GameBaseModel, CallBack { private Universe universe; private RealTime3DFragment fragment; private ArrayList otherCharacters = new ArrayList<>(); diff --git a/app/src/main/java/org/ntlab/radishforandroidstudio/cactusClient/models/OwnPlayer.java b/app/src/main/java/org/ntlab/radishforandroidstudio/cactusClient/models/OwnPlayer.java index d8a76a4..22a6a07 100644 --- a/app/src/main/java/org/ntlab/radishforandroidstudio/cactusClient/models/OwnPlayer.java +++ b/app/src/main/java/org/ntlab/radishforandroidstudio/cactusClient/models/OwnPlayer.java @@ -3,27 +3,24 @@ import android.content.res.Resources; import android.view.MotionEvent; -import net.arnx.jsonic.JSON; - import org.ntlab.radishforandroidstudio.cactusClient.connections.CharacterConnection; import org.ntlab.radishforandroidstudio.framework.animation.Animation3D; import org.ntlab.radishforandroidstudio.framework.event.PadEvent; +import org.ntlab.radishforandroidstudio.framework.gameMain.GameBaseModel; import org.ntlab.radishforandroidstudio.framework.gameMain.OvergroundActor; import org.ntlab.radishforandroidstudio.framework.listener.PadListener; 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.network.CallBack; -import org.ntlab.radishforandroidstudio.framework.physics.Solid3D; import org.ntlab.radishforandroidstudio.framework.physics.Velocity3D; import org.ntlab.radishforandroidstudio.framework.view3D.Camera3D; import org.ntlab.radishforandroidstudio.java3d.Appearance; import org.ntlab.radishforandroidstudio.java3d.Material; import org.ntlab.radishforandroidstudio.java3d.Vector3d; -public class OwnPlayer implements PadListener, CactusModel, CallBack { +public class OwnPlayer implements PadListener, GameBaseModel, CallBack { private boolean isTouched = false; private float touchX = 0.0f; private float touchY = 0.0f; diff --git a/app/src/main/java/org/ntlab/radishforandroidstudio/framework/gameMain/GameBaseModel.java b/app/src/main/java/org/ntlab/radishforandroidstudio/framework/gameMain/GameBaseModel.java new file mode 100644 index 0000000..fcbdc04 --- /dev/null +++ b/app/src/main/java/org/ntlab/radishforandroidstudio/framework/gameMain/GameBaseModel.java @@ -0,0 +1,26 @@ +package org.ntlab.radishforandroidstudio.framework.gameMain; + +/** + * モデルの基底インターフェース + * + * @author s.iwatani + */ +public interface GameBaseModel { + int MAX_CONNECTION_CONTINUITY_TIME = 5000; // ミリ秒 + + /** + * モデルの状態を更新する + * + * @author s.iwatani + * @param interval 前回の更新からの時間差 + */ + void update(double interval); + + /** + * instanceのIDをセットする + * + * @author s.iwatani + * @param id InstanceのID + */ + void setInstanceId(String id); +} diff --git a/app/src/main/java/org/ntlab/radishforandroidstudio/framework/gameMain/GameBaseModelManager.java b/app/src/main/java/org/ntlab/radishforandroidstudio/framework/gameMain/GameBaseModelManager.java new file mode 100644 index 0000000..ad6c799 --- /dev/null +++ b/app/src/main/java/org/ntlab/radishforandroidstudio/framework/gameMain/GameBaseModelManager.java @@ -0,0 +1,42 @@ +package org.ntlab.radishforandroidstudio.framework.gameMain; + +import org.ntlab.radishforandroidstudio.framework.model3D.Universe; + +import java.util.ArrayList; + +public abstract class GameBaseModelManager implements GameBaseModel { + protected ArrayList models = new ArrayList<>(); + protected RealTime3DFragment fragment = null; + protected Universe universe = null; + + public GameBaseModelManager() { + } + + public GameBaseModelManager(RealTime3DFragment fragment, Universe universe) { + this.universe = universe; + this.fragment = fragment; + } + + + /** + * GameBaseModelを追加 + * instanceIDのセットなどは実行されないことを注意 + * + * @param model 追加したいGameBaseModel + */ + public void addModel(GameBaseModel model) { + models.add(model); + } + + /** + * モデルの状態を更新する + * + * @author s.iwatani + * @param interval 前回の更新からの時間差 + */ + public void update(double interval) { + for (GameBaseModel model: models) { + model.update(interval); + } + } +} diff --git a/app/src/main/java/org/ntlab/radishforandroidstudio/framework/gameMain/RealTime3DFragment.java b/app/src/main/java/org/ntlab/radishforandroidstudio/framework/gameMain/RealTime3DFragment.java index f777fad..508a37e 100644 --- a/app/src/main/java/org/ntlab/radishforandroidstudio/framework/gameMain/RealTime3DFragment.java +++ b/app/src/main/java/org/ntlab/radishforandroidstudio/framework/gameMain/RealTime3DFragment.java @@ -1,6 +1,5 @@ package org.ntlab.radishforandroidstudio.framework.gameMain; -import android.content.res.Resources; import android.os.Bundle; import android.support.annotation.NonNull; import android.support.annotation.Nullable; @@ -11,7 +10,6 @@ import android.widget.LinearLayout; import org.ntlab.radishforandroidstudio.R; -import org.ntlab.radishforandroidstudio.cactusClient.models.CactusModel; import org.ntlab.radishforandroidstudio.cactusClient.models.CactusModels; import org.ntlab.radishforandroidstudio.framework.RWT.RWTSurfaceView; import org.ntlab.radishforandroidstudio.framework.model3D.Universe; @@ -22,6 +20,7 @@ protected Camera3D camera; protected RWTSurfaceView view; protected View parentView = null; + protected GameBaseModelManager modelManager = null; @Override public void onCreate(@Nullable Bundle savedInstanceState) { @@ -46,6 +45,9 @@ @Override protected void update(long interval) { progress(interval); + if (modelManager != null) { + modelManager.update(interval); + } universe.update(interval); camera.adjust(interval); view.requestRender();