diff --git a/app/src/main/java/org/ntlab/radishforandroidstudio/cactusClient/UseCases/UpdateBoundary.java b/app/src/main/java/org/ntlab/radishforandroidstudio/cactusClient/UseCases/UpdateBoundary.java new file mode 100644 index 0000000..b73c2ec --- /dev/null +++ b/app/src/main/java/org/ntlab/radishforandroidstudio/cactusClient/UseCases/UpdateBoundary.java @@ -0,0 +1,6 @@ +package org.ntlab.radishforandroidstudio.cactusClient.UseCases; + +public interface UpdateBoundary { + + void onUpdate(long interval); +} diff --git a/app/src/main/java/org/ntlab/radishforandroidstudio/cactusClient/UseCases/UpdateUseCase.java b/app/src/main/java/org/ntlab/radishforandroidstudio/cactusClient/UseCases/UpdateUseCase.java new file mode 100644 index 0000000..4925fd7 --- /dev/null +++ b/app/src/main/java/org/ntlab/radishforandroidstudio/cactusClient/UseCases/UpdateUseCase.java @@ -0,0 +1,15 @@ +package org.ntlab.radishforandroidstudio.cactusClient.UseCases; + +import org.ntlab.radishforandroidstudio.cactusClient.models.model.CactusRepository; + +public class UpdateUseCase implements UpdateBoundary { + + CactusRepository cactusRepository = new CactusRepository(); + + + @Override + public void onUpdate(long interval) { + cactusRepository.update(interval); + + } +} diff --git a/app/src/main/java/org/ntlab/radishforandroidstudio/cactusClient/models/model/CactusModels.java b/app/src/main/java/org/ntlab/radishforandroidstudio/cactusClient/models/model/CactusModels.java deleted file mode 100644 index d6f5bc6..0000000 --- a/app/src/main/java/org/ntlab/radishforandroidstudio/cactusClient/models/model/CactusModels.java +++ /dev/null @@ -1,35 +0,0 @@ -package org.ntlab.radishforandroidstudio.cactusClient.models.model; - -import org.ntlab.radishforandroidstudio.framework.gameMain.GameBaseModel; -import org.ntlab.radishforandroidstudio.framework.gameMain.OnlineModel; -import org.ntlab.radishforandroidstudio.framework.gameMain.GameBaseModelManager; - -/** - * モデルを管理する - * - * singleton - * - * @author s.iwatani - */ -public class CactusModels extends GameBaseModelManager implements OnlineModel { - private String instanceId = ""; - - public CactusModels() { - super(); - } - - public void setInstanceId(String id) { - for(GameBaseModel model : models) { - model.setInstanceId(id); - } - for(GameBaseModel model : nextAddModels) { - model.setInstanceId(id); - } - instanceId = id; - } - - @Override - public void onResponse(String response) { - - } -} diff --git a/app/src/main/java/org/ntlab/radishforandroidstudio/cactusClient/models/model/CactusRepository.java b/app/src/main/java/org/ntlab/radishforandroidstudio/cactusClient/models/model/CactusRepository.java new file mode 100644 index 0000000..af986b2 --- /dev/null +++ b/app/src/main/java/org/ntlab/radishforandroidstudio/cactusClient/models/model/CactusRepository.java @@ -0,0 +1,42 @@ +package org.ntlab.radishforandroidstudio.cactusClient.models.model; + +import org.ntlab.radishforandroidstudio.cactusClient.UseCases.UpdateUseCase; +import org.ntlab.radishforandroidstudio.framework.gameMain.GameBaseModel; +import org.ntlab.radishforandroidstudio.framework.gameMain.OnlineModel; +import org.ntlab.radishforandroidstudio.framework.gameMain.GameBaseModelContainer; + +/** + * モデルを管理する + * + * singleton + * + * @author s.iwatani + */ +public class CactusRepository extends GameBaseModelContainer implements OnlineModel { + private String instanceId = ""; + UpdateUseCase updateUseCase = new UpdateUseCase(); + + public CactusRepository() { + super(); + } + + public void setInstanceId(String id) { + for(GameBaseModel model : models) { + model.setInstanceId(id); + } + for(GameBaseModel model : nextAddModels) { + model.setInstanceId(id); + } + instanceId = id; + } + + @Override + public void update(double interval) { + super.update(interval); + } + + @Override + public void onResponse(String response) { + + } +} diff --git a/app/src/main/java/org/ntlab/radishforandroidstudio/cactusClient/views/PlayerFragment.java b/app/src/main/java/org/ntlab/radishforandroidstudio/cactusClient/views/PlayerFragment.java index b926942..8a0c4a8 100644 --- a/app/src/main/java/org/ntlab/radishforandroidstudio/cactusClient/views/PlayerFragment.java +++ b/app/src/main/java/org/ntlab/radishforandroidstudio/cactusClient/views/PlayerFragment.java @@ -13,7 +13,7 @@ import org.ntlab.radishforandroidstudio.R; import org.ntlab.radishforandroidstudio.cactusClient.controller.bullet.BulletsModel; -import org.ntlab.radishforandroidstudio.cactusClient.models.model.CactusModels; +import org.ntlab.radishforandroidstudio.cactusClient.models.model.CactusRepository; import org.ntlab.radishforandroidstudio.cactusClient.controller.object.MovableObjectModel; import org.ntlab.radishforandroidstudio.cactusClient.controller.player.OtherPlayerCharactersModel; import org.ntlab.radishforandroidstudio.cactusClient.controller.bullet.OwnBulletsModel; @@ -44,6 +44,8 @@ private float touchX = 0.0f; private float touchY = 0.0f; + CactusRepository modelManager;//とりあえずエラーを消すために配置 + public PlayerFragment() { // Required empty public constructor } @@ -51,7 +53,9 @@ @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); - modelManager = new CactusModels(); + // TODO: 2019/01/10 CactusRepositoryを変えたことによるエラー + + modelManager = new CactusRepository(); modelManager.setFragment(this); modelManager.setUniverse(universe); diff --git a/app/src/main/java/org/ntlab/radishforandroidstudio/framework/gameMain/GameBaseModelContainer.java b/app/src/main/java/org/ntlab/radishforandroidstudio/framework/gameMain/GameBaseModelContainer.java new file mode 100644 index 0000000..e2707a2 --- /dev/null +++ b/app/src/main/java/org/ntlab/radishforandroidstudio/framework/gameMain/GameBaseModelContainer.java @@ -0,0 +1,68 @@ +package org.ntlab.radishforandroidstudio.framework.gameMain; + +import org.ntlab.radishforandroidstudio.framework.model3D.Universe; + +import java.util.ArrayList; +import java.util.Iterator; + +public abstract class GameBaseModelContainer implements GameBaseModel { + protected ArrayList models = new ArrayList<>(); + protected ArrayList nextAddModels = new ArrayList<>(); + protected ArrayList nextRemoveModels = new ArrayList<>(); + public void setFragment(RealTime3DFragment fragment) { + this.fragment = fragment; + } + + public void setUniverse(Universe universe) { + this.universe = universe; + } + + protected RealTime3DFragment fragment = null; + protected Universe universe = null; + + protected GameBaseModelContainer() { + } + + /** + * GameBaseModelを追加 + * instanceIDのセットなどは実行されないことを注意 + * + * @param model 追加したいGameBaseModel + */ + public void addModel(GameBaseModel model) { + nextAddModels.add(model); + } + + public void removeModel(GameBaseModel model) { nextRemoveModels.add(model); } + + /** + * モデルの状態を更新する + * + * @author s.iwatani + * @param interval 前回の更新からの時間差 + */ + @Override + public void update(double interval) { + for (GameBaseModel model: models) { + model.update(interval); + } + + for (GameBaseModel model : nextAddModels) { + models.add(model); + } + nextAddModels.clear(); + + // モデルの消去 + Iterator it = nextRemoveModels.iterator(); + while(it.hasNext()) { + GameBaseModel model = it.next(); + for(GameBaseModel removeModel : nextRemoveModels) { + if (model.equals(removeModel)) { + it.remove(); + break; + } + } + } + nextRemoveModels.clear(); + } +} 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 deleted file mode 100644 index d4f617a..0000000 --- a/app/src/main/java/org/ntlab/radishforandroidstudio/framework/gameMain/GameBaseModelManager.java +++ /dev/null @@ -1,68 +0,0 @@ -package org.ntlab.radishforandroidstudio.framework.gameMain; - -import org.ntlab.radishforandroidstudio.framework.model3D.Universe; - -import java.util.ArrayList; -import java.util.Iterator; - -public abstract class GameBaseModelManager implements GameBaseModel { - protected ArrayList models = new ArrayList<>(); - protected ArrayList nextAddModels = new ArrayList<>(); - protected ArrayList nextRemoveModels = new ArrayList<>(); - public void setFragment(RealTime3DFragment fragment) { - this.fragment = fragment; - } - - public void setUniverse(Universe universe) { - this.universe = universe; - } - - protected RealTime3DFragment fragment = null; - protected Universe universe = null; - - protected GameBaseModelManager() { - } - - /** - * GameBaseModelを追加 - * instanceIDのセットなどは実行されないことを注意 - * - * @param model 追加したいGameBaseModel - */ - public void addModel(GameBaseModel model) { - nextAddModels.add(model); - } - - public void removeModel(GameBaseModel model) { nextRemoveModels.add(model); } - - /** - * モデルの状態を更新する - * - * @author s.iwatani - * @param interval 前回の更新からの時間差 - */ - @Override - public void update(double interval) { - for (GameBaseModel model: models) { - model.update(interval); - } - - for (GameBaseModel model : nextAddModels) { - models.add(model); - } - nextAddModels.clear(); - - // モデルの消去 - Iterator it = nextRemoveModels.iterator(); - while(it.hasNext()) { - GameBaseModel model = it.next(); - for(GameBaseModel removeModel : nextRemoveModels) { - if (model.equals(removeModel)) { - it.remove(); - break; - } - } - } - nextRemoveModels.clear(); - } -} 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 e283424..4c8cbab 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 @@ -10,6 +10,7 @@ import android.widget.LinearLayout; import org.ntlab.radishforandroidstudio.R; +import org.ntlab.radishforandroidstudio.cactusClient.UseCases.UpdateBoundary; import org.ntlab.radishforandroidstudio.framework.RWT.RWTSurfaceView; import org.ntlab.radishforandroidstudio.framework.model3D.Universe; import org.ntlab.radishforandroidstudio.framework.view3D.Camera3D; @@ -19,7 +20,8 @@ protected Camera3D camera; protected RWTSurfaceView view; protected View parentView = null; - protected GameBaseModelManager modelManager = null; +// protected GameBaseModelContainer modelManager = null; + protected UpdateBoundary updateBoundary = null; @Override public void onCreate(@Nullable Bundle savedInstanceState) { @@ -44,8 +46,11 @@ @Override protected void update(long interval) { progress(interval); - if (modelManager != null) { - modelManager.update(interval); +// if (modelManager != null) { +// modelManager.update(interval); +// } + if (updateBoundary != null) { + updateBoundary.onUpdate(interval); } universe.update(interval); camera.adjust(interval);