123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170 |
- package com.jyc.threegames.controller;
- import com.google.gson.Gson;
- import com.jyc.threegames.App;
- import com.jyc.threegames.bean.ControllerMessage;
- import com.jyc.threegames.bean.GameAnswer;
- import com.jyc.threegames.bean.GameInfo;
- import com.jyc.threegames.bean.PageInfo;
- import com.jyc.threegames.bean.ScaleLog;
- import com.jyc.threegames.bean.SearchInfo;
- import com.jyc.threegames.bean.result.ResGameInfo;
- import com.jyc.threegames.bean.result.ResGamePlayTime;
- import com.jyc.threegames.net.ResData;
- import com.jyc.threegames.net.RetrofitHelper;
- import com.jyc.threegames.net.api.GameService;
- import com.jyc.threegames.net.api.LoginService;
- import java.text.SimpleDateFormat;
- import java.util.ArrayList;
- import java.util.Date;
- import java.util.List;
- import java.util.Locale;
- import io.reactivex.Observable;
- import io.reactivex.functions.Function;
- import retrofit2.http.Field;
- public class GameController extends BaseController {
- private static GameController mInstance;
- private GameController(){}
- public static GameController getInstance(){
- if(mInstance == null){
- synchronized (GameController.class){
- if(mInstance == null)
- mInstance = new GameController();
- }
- }
- return mInstance;
- }
- private static GameService mService;
- protected static GameService getGameService(){
- if (mService == null){
- synchronized (GameController.class){
- if (mService == null)
- mService = RetrofitHelper.getDefaultRetrofit(App.SERVER_ADDRESS).create(GameService.class);
- }
- }
- return mService;
- }
- public Observable<ControllerMessage<List<ScaleLog>>> list(SearchInfo search, int pageIndex, int pageSize){
- return getGameService().list(new Gson().toJson(search), pageIndex, pageSize)
- .map(new Function<ResData<PageInfo<ScaleLog>>, ControllerMessage<List<ScaleLog>>>() {
- @Override
- public ControllerMessage<List<ScaleLog>> apply(ResData<PageInfo<ScaleLog>> data) throws Exception {
- return ControllerMessage.getSimpleMessage(data.isRequestSuccess(), data.message, data.data != null ? data.data.list : null);
- }
- });
- }
- public Observable<ControllerMessage<ResGameInfo>> needPlayGame(){
- return getGameService().questNeedPlayGame()
- .map(new SimpleDataHandleFunction<>());
- }
- public Observable<ControllerMessage<List<ResGamePlayTime>>> listOverDate(){
- return getGameService().listOverDate()
- .map(new SimpleDataHandleFunction<>());
- }
- public Observable<ControllerMessage<Object>> addScale(
- long gamePlayId,
- String startDate,
- String endDate,
- String eventDate,
- String contact,
- String dinner,
- String getUp,
- String sleep,
- String work
- ){
- return getGameService().addScale(gamePlayId, startDate, endDate, eventDate, contact, dinner, getUp, sleep, work, getDeviceId())
- .map(new SimpleDataHandleFunction<>());
- }
- public Observable<ControllerMessage<Object>> delayScale(long gamePlayTimeId, int delayMin){
- return getGameService().delayScale(gamePlayTimeId, delayMin, getDeviceId())
- .map(new SimpleDataHandleFunction<>());
- }
- public Observable<ControllerMessage<Object>> delayGame(long gamePlayTimeId, long gameConfigId, int delayMin){
- return getGameService().delayGame(gamePlayTimeId, gameConfigId, delayMin, getDeviceId())
- .map(new SimpleDataHandleFunction<>());
- }
- public Observable<ControllerMessage<Object>> enterGame(long gamePlayTimeId){
- return getGameService().enter(gamePlayTimeId, getDeviceId(), 1)
- .map(new SimpleDataHandleFunction<>());
- }
- public Observable<ControllerMessage<Object>> enterScale(long gamePlayTimeId){
- return getGameService().enter(gamePlayTimeId, getDeviceId(), 2)
- .map(new SimpleDataHandleFunction<>());
- }
- public Observable<ControllerMessage<Object>> addAnswer(
- long gamePlayId,
- Integer[] showNumbers,
- List<Integer> mRecordList,
- List<Long> mResponseList,
- List<Integer> mPressRecordList,
- int mSpecialNumberOne,
- int mSpecialNumberTwo,
- int gameVersion,
- long startTime,
- long endTime,
- int right,
- int grasp
- ){
- SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss", Locale.getDefault());
- return getGameService().addGameAnswer(
- gamePlayId,
- LoginController.getInstance().getCurrentLoginInfo().info.id,
- getRealCorrectRate(mRecordList),
- right,
- grasp,
- dateFormat.format(new Date(startTime)),
- dateFormat.format(new Date(endTime)),
- gameVersion == GameInfo.VERSION_GAME_ONE ? "A" : gameVersion == GameInfo.VERSION_GAME_TWO ? "B" : "C",
- gameVersion == GameInfo.VERSION_GAME_TWO ? mSpecialNumberOne + "," + mSpecialNumberTwo : mSpecialNumberOne + "",
- getGameAnswer(showNumbers, mRecordList, mResponseList, mPressRecordList),
- getDeviceId()).map(new SimpleDataHandleFunction<>());
- }
- private String getGameAnswer(
- Integer[] showNumbers,
- List<Integer> mRecordList,
- List<Long> mResponseList,
- List<Integer> mPressRecordList
- ){
- List<GameAnswer> result = new ArrayList<>();
- for (int i = 0; i < showNumbers.length; i ++){
- result.add(new GameAnswer(
- mPressRecordList.get(i),
- mRecordList.get(i),
- mResponseList.get(i),
- showNumbers[i]
- ));
- }
- return new Gson().toJson(result);
- }
- private float getRealCorrectRate(List<Integer> mRecordList){
- float right = 0;
- for (Integer integer : mRecordList)
- if (integer == GameInfo.CLICK_RIGHT)
- right++;
- return right / mRecordList.size();
- }
- }
|