diff --git a/app/src/main/java/com/example/sprout/refactor/activity/RoomMainActivity.java b/app/src/main/java/com/example/sprout/refactor/activity/RoomMainActivity.java index 2eecb99..eb072dc 100644 --- a/app/src/main/java/com/example/sprout/refactor/activity/RoomMainActivity.java +++ b/app/src/main/java/com/example/sprout/refactor/activity/RoomMainActivity.java @@ -2,27 +2,25 @@ import android.databinding.DataBindingUtil; import android.os.Bundle; -import android.widget.Toast; import com.example.sprout.R; import com.example.sprout.databinding.RfActivityRoomMainBinding; import com.example.sprout.refactor.Constant; import com.example.sprout.refactor.adapter.RoomMainAdapter; -import com.example.sprout.refactor.common.ActivityEvent; -import com.example.sprout.refactor.contract.ViewContract; import com.example.sprout.refactor.viewmodel.RoomMainViewModel; import framework.gameMain.RealTimeActivity; -public class RoomMainActivity extends RealTimeActivity implements ViewContract { +public class RoomMainActivity extends RealTimeActivity { private RoomMainViewModel roomMainViewModel = null; + private RfActivityRoomMainBinding binding; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); - RfActivityRoomMainBinding binding = DataBindingUtil.setContentView(this, R.layout.rf_activity_room_main); - roomMainViewModel = new RoomMainViewModel(new RoomMainAdapter(this), (ViewContract) this); + binding = DataBindingUtil.setContentView(this, R.layout.rf_activity_room_main); + roomMainViewModel = new RoomMainViewModel(new RoomMainAdapter(this)); binding.setViewModel(roomMainViewModel); getLifecycle().addObserver(roomMainViewModel); } @@ -30,12 +28,14 @@ @Override protected void onResume() { super.onResume(); + addUiObserver(roomMainViewModel); this.start(Constant.ROOM_UPDATE_DELAY, Constant.ROOM_UPDATE_INTERVAL); } @Override protected void onPause() { super.onPause(); + removeUiObserver(roomMainViewModel); this.stop(); } @@ -43,24 +43,4 @@ protected void update(long interval) { roomMainViewModel.update(); } - - @Override - public void startActivity(ActivityEvent event) { - - } - - @Override - public void finishActivity() { - finish(); - } - - @Override - public void showShortToast(String message) { - Toast.makeText(this, message, Toast.LENGTH_SHORT).show(); - } - - @Override - public void showLongToast(String message) { - Toast.makeText(this, message, Toast.LENGTH_LONG).show(); - } } diff --git a/app/src/main/java/com/example/sprout/refactor/model/ModelLocator.java b/app/src/main/java/com/example/sprout/refactor/model/ModelLocator.java index 0dbbd25..6f11b9b 100644 --- a/app/src/main/java/com/example/sprout/refactor/model/ModelLocator.java +++ b/app/src/main/java/com/example/sprout/refactor/model/ModelLocator.java @@ -24,6 +24,7 @@ // Modelを管理するクラス群 private RegistrationModel registrationModel = new RegistrationModel(this.registrationRepository); private RoomsModel roomsModel = new RoomsModel(this.roomRepository); + private RoomModel roomModel = new RoomModel(this.roomRepository); private RoomResponseModel roomResponseModel = new RoomResponseModel(this.roomRepository); private ModelLocator() { @@ -68,6 +69,10 @@ return roomsModel; } + public RoomModel getRoomModel() { + return roomModel; + } + public RoomResponseModel getRoomResponseModel() { return roomResponseModel; } diff --git a/app/src/main/java/com/example/sprout/refactor/model/RoomModel.java b/app/src/main/java/com/example/sprout/refactor/model/RoomModel.java new file mode 100644 index 0000000..76e19e2 --- /dev/null +++ b/app/src/main/java/com/example/sprout/refactor/model/RoomModel.java @@ -0,0 +1,41 @@ +package com.example.sprout.refactor.model; + +import com.example.sprout.refactor.model.entity.Room; +import com.example.sprout.refactor.notification.Observable; +import com.example.sprout.refactor.notification.Observer; +import com.example.sprout.refactor.repository.RoomRepository; + +/** + * Created by matsumoto_k on 2017/12/22. + */ + +public class RoomModel { + + private RoomRepository roomRepository = null; + private Observable roomObservable = new Observable<>(); + + public RoomModel(RoomRepository roomRepository) { + this.roomRepository = roomRepository; + + Observer RoomObserver = new Observer() { + @Override + public void notify(Room room) { + roomObservable.notifyObservers(room); + } + + @Override + public void error(Throwable throwable) { + roomObservable.notifyError(throwable); + } + }; + this.roomRepository.getRoomObservable().addObserver(RoomObserver); + } + + public void get(int roomId) { + roomRepository.getRoom(roomId); + } + + public Observable getRoomObservable() { + return roomObservable; + } +} diff --git a/app/src/main/java/com/example/sprout/refactor/model/RoomResponseModel.java b/app/src/main/java/com/example/sprout/refactor/model/RoomResponseModel.java index ccd4e9e..20419e7 100644 --- a/app/src/main/java/com/example/sprout/refactor/model/RoomResponseModel.java +++ b/app/src/main/java/com/example/sprout/refactor/model/RoomResponseModel.java @@ -46,6 +46,10 @@ roomRepository.enterRoomWithKey(roomId, userId, key); } + public void updateRoomState(int roomId, int memberId, int role) { + roomRepository.updateRoomState(roomId, memberId, role); + } + public Observable getRoomResponseObservable() { return roomResponseObservable; } diff --git a/app/src/main/java/com/example/sprout/refactor/viewmodel/RoomMainViewModel.java b/app/src/main/java/com/example/sprout/refactor/viewmodel/RoomMainViewModel.java index 5c87215..2b323e8 100644 --- a/app/src/main/java/com/example/sprout/refactor/viewmodel/RoomMainViewModel.java +++ b/app/src/main/java/com/example/sprout/refactor/viewmodel/RoomMainViewModel.java @@ -9,8 +9,10 @@ import com.example.sprout.refactor.adapter.RoomMainAdapter; import com.example.sprout.refactor.common.MemberState; -import com.example.sprout.refactor.contract.ViewContract; +import com.example.sprout.refactor.messengers.NavigationMessage; import com.example.sprout.refactor.model.ModelLocator; +import com.example.sprout.refactor.model.RoomModel; +import com.example.sprout.refactor.model.RoomResponseModel; import com.example.sprout.refactor.model.entity.Member; import com.example.sprout.refactor.model.entity.Room; import com.example.sprout.refactor.model.entity.RoomResponse; @@ -26,23 +28,21 @@ public class RoomMainViewModel extends BaseViewModel { - private RoomRepository roomRepository = null; + private RoomRepository roomRepository = ModelLocator.get().getRoomRepository(); + private RoomModel roomModel = ModelLocator.get().getRoomModel(); + private RoomResponseModel roomResponseModel = ModelLocator.get().getRoomResponseModel(); private RoomMainAdapter adapter = null; - private ViewContract viewContract = null; private ObservableBoolean ready = new ObservableBoolean(false); private Observer roomObserver = null; private Observer updateRoomStateObserver = null; private Observer exitRoomObserver = null; - public RoomMainViewModel(RoomMainAdapter adapter, ViewContract viewContract) { - this.roomRepository = ModelLocator.getModel(ModelLocator.Tag.ROOM_REPOSITORY, RoomRepository.class); - this.viewContract = viewContract; + public RoomMainViewModel(RoomMainAdapter adapter) { this.adapter = adapter; roomObserver = new Observer() { @Override public void notify(Room room) { - ModelLocator.setModel(ModelLocator.Tag.Room, room); ArrayList items = new ArrayList<>(room.getMemberList().values()); RoomMainViewModel.this.adapter.setDataAndRefresh(items); } @@ -68,7 +68,7 @@ exitRoomObserver = new Observer() { @Override public void notify(Void aVoid) { - viewContract.finishActivity(); + navigationObservable.notifyObservers(new NavigationMessage(NavigationMessage.Type.Finish)); } @Override @@ -81,32 +81,32 @@ @Override public void onResume() { super.onResume(); - roomRepository.getRoomObservable().addObserver(roomObserver); - roomRepository.getRoomResponseObservable().addObserver(updateRoomStateObserver); + roomModel.getRoomObservable().addObserver(roomObserver); + roomResponseModel.getRoomResponseObservable().addObserver(updateRoomStateObserver); roomRepository.getVoidObservable().addObserver(exitRoomObserver); } @Override public void onPause() { super.onPause(); - roomRepository.getRoomObservable().removeObserver(roomObserver); - roomRepository.getRoomResponseObservable().removeObserver(updateRoomStateObserver); + roomModel.getRoomObservable().removeObserver(roomObserver); + roomResponseModel.getRoomResponseObservable().removeObserver(updateRoomStateObserver); roomRepository.getVoidObservable().removeObserver(exitRoomObserver); } public void update() { - roomRepository.getRoom(PreferenceUtil.getInstance().getInt(PreferenceUtil.Key.ROOM_ID)); + roomModel.get(PreferenceUtil.getInstance().getInt(PreferenceUtil.Key.ROOM_ID)); } public void onClickGunman() { - roomRepository.updateRoomState( + roomResponseModel.updateRoomState( PreferenceUtil.getInstance().getInt(PreferenceUtil.Key.ROOM_ID), PreferenceUtil.getInstance().getInt(PreferenceUtil.Key.MEMBER_ID), MemberState.GUNMAN.getValue()); } public void onClickWitch() { - roomRepository.updateRoomState( + roomResponseModel.updateRoomState( PreferenceUtil.getInstance().getInt(PreferenceUtil.Key.ROOM_ID), PreferenceUtil.getInstance().getInt(PreferenceUtil.Key.MEMBER_ID), MemberState.WITCH.getValue()); @@ -114,7 +114,7 @@ public void onClickReady() { ready.set(!ready.get()); - roomRepository.updateRoomState( + roomResponseModel.updateRoomState( PreferenceUtil.getInstance().getInt(PreferenceUtil.Key.ROOM_ID), PreferenceUtil.getInstance().getInt(PreferenceUtil.Key.MEMBER_ID), MemberState.READY.getValue()); diff --git a/app/src/main/java/framework/gameMain/RealTimeActivity.java b/app/src/main/java/framework/gameMain/RealTimeActivity.java index 837ef73..f60de72 100644 --- a/app/src/main/java/framework/gameMain/RealTimeActivity.java +++ b/app/src/main/java/framework/gameMain/RealTimeActivity.java @@ -3,11 +3,13 @@ import android.os.Bundle; import android.support.v7.app.AppCompatActivity; +import com.example.sprout.refactor.activity.BaseActivity; + import java.util.concurrent.ScheduledFuture; import java.util.concurrent.ScheduledThreadPoolExecutor; import java.util.concurrent.TimeUnit; -public abstract class RealTimeActivity extends AppCompatActivity implements Runnable { +public abstract class RealTimeActivity extends BaseActivity implements Runnable { //インターバル確認用変数 private long interval = 15L; private long prevTime = 0L;