diff --git a/app/src/main/java/my/neomer/sixtyseconds/MainActivity.java b/app/src/main/java/my/neomer/sixtyseconds/MainActivity.java index d0e1129..54ba702 100644 --- a/app/src/main/java/my/neomer/sixtyseconds/MainActivity.java +++ b/app/src/main/java/my/neomer/sixtyseconds/MainActivity.java @@ -51,6 +51,12 @@ protected void onStop() { super.onStop(); } + @Override + protected void onDestroy() { + gameMode.finish(); + super.onDestroy(); + } + /** * Сохраняет количество пропущенных вопросов для показа рекламы */ diff --git a/app/src/main/java/my/neomer/sixtyseconds/gamemodes/BaseGameMode.java b/app/src/main/java/my/neomer/sixtyseconds/gamemodes/BaseGameMode.java index 70985e4..412be6c 100644 --- a/app/src/main/java/my/neomer/sixtyseconds/gamemodes/BaseGameMode.java +++ b/app/src/main/java/my/neomer/sixtyseconds/gamemodes/BaseGameMode.java @@ -13,6 +13,7 @@ public abstract class BaseGameMode implements IGameMode, IStateFinishListener { private static final String LOG_TAG = "BaseGameMode"; private BaseGameContext gameContext; private Pipeline statePipeline; + private boolean finish = false; /** * Новая игра. @@ -46,16 +47,32 @@ public void onFinish(IState state) { public void run() { IState initialState = getCurrentState(); if (initialState != null) { - runState(initialState); + if (initialState.isOnPause()) { + initialState.proceed(); + } else { + runState(initialState); + } + } + } + + @Override + public void finish() { + IState state = getCurrentState(); + finish = true; + if (state != null) { + state.finish(); } } private void runState(@NonNull final IState state) { - final IStateFinishListener stateFinishListener = this; - state.prepareState(getGameContext(), stateFinishListener); - state.start(); + if (!finish) { + final IStateFinishListener stateFinishListener = this; + state.prepareState(getGameContext(), stateFinishListener); + state.start(); + } } + //region Parcelable protected BaseGameMode(Parcel in) { diff --git a/app/src/main/java/my/neomer/sixtyseconds/gamemodes/IGameMode.java b/app/src/main/java/my/neomer/sixtyseconds/gamemodes/IGameMode.java index 43af7b8..d5a592a 100644 --- a/app/src/main/java/my/neomer/sixtyseconds/gamemodes/IGameMode.java +++ b/app/src/main/java/my/neomer/sixtyseconds/gamemodes/IGameMode.java @@ -25,4 +25,9 @@ public interface IGameMode extends Parcelable { * Начать игру */ void run(); + + /** + * Закончить игру + */ + void finish(); } diff --git a/app/src/main/java/my/neomer/sixtyseconds/helpers/ApplicationResources.java b/app/src/main/java/my/neomer/sixtyseconds/helpers/ApplicationResources.java index 7545a09..194d71d 100644 --- a/app/src/main/java/my/neomer/sixtyseconds/helpers/ApplicationResources.java +++ b/app/src/main/java/my/neomer/sixtyseconds/helpers/ApplicationResources.java @@ -32,11 +32,11 @@ public static ApplicationResources getInstance() { return ourInstance; } + //endregion + private ApplicationResources() { } - //endregion - private IApiProvider questionProvider = new HttpApiProvider(); private IAdsProvider adsProvider = new AdMobAdProvider(); diff --git a/app/src/main/java/my/neomer/sixtyseconds/states/AdsDisplayingState.java b/app/src/main/java/my/neomer/sixtyseconds/states/AdsDisplayingState.java index bf0b9a0..39cda8f 100644 --- a/app/src/main/java/my/neomer/sixtyseconds/states/AdsDisplayingState.java +++ b/app/src/main/java/my/neomer/sixtyseconds/states/AdsDisplayingState.java @@ -44,16 +44,6 @@ public void start() { } } - @Override - public void pause() { - - } - - @Override - public void proceed() { - - } - //region IRewardedAdResultListener implementation @Override diff --git a/app/src/main/java/my/neomer/sixtyseconds/states/AnswerReceivingState.java b/app/src/main/java/my/neomer/sixtyseconds/states/AnswerReceivingState.java index 10ea2e8..c5fc8ea 100644 --- a/app/src/main/java/my/neomer/sixtyseconds/states/AnswerReceivingState.java +++ b/app/src/main/java/my/neomer/sixtyseconds/states/AnswerReceivingState.java @@ -76,7 +76,7 @@ public void start() { btnStart.setText(R.string.wait_countdown_text); txtTimeCountdown.setTextSize(TypedValue.COMPLEX_UNIT_PX, getGameContext().getActivity().getResources().getDimension(R.dimen.title_font_size)); - txtTimeCountdown.setText(R.string.updating_message); + txtTimeCountdown.setText(R.string.receiving_answer_message); questionFragment.clear(); ApplicationResources.getInstance() @@ -86,16 +86,6 @@ public void start() { this); } - @Override - public void pause() { - - } - - @Override - public void proceed() { - - } - @Override public void finish() { super.finish(); diff --git a/app/src/main/java/my/neomer/sixtyseconds/states/AnswerState.java b/app/src/main/java/my/neomer/sixtyseconds/states/AnswerState.java index 3448153..0d3ae8d 100644 --- a/app/src/main/java/my/neomer/sixtyseconds/states/AnswerState.java +++ b/app/src/main/java/my/neomer/sixtyseconds/states/AnswerState.java @@ -137,16 +137,6 @@ void showVoting() { } } - @Override - public void pause() { - - } - - @Override - public void proceed() { - - } - @OnClick(R.id.btnLike) void likeIt() { ApplicationResources.getInstance() diff --git a/app/src/main/java/my/neomer/sixtyseconds/states/BaseEscalationState.java b/app/src/main/java/my/neomer/sixtyseconds/states/BaseEscalationState.java index fd8f539..d28b529 100644 --- a/app/src/main/java/my/neomer/sixtyseconds/states/BaseEscalationState.java +++ b/app/src/main/java/my/neomer/sixtyseconds/states/BaseEscalationState.java @@ -49,10 +49,6 @@ private void StartTimer() escalationTimer.execute(); } - final void PauseTimer() { escalationTimer.pause(); } - - final void ProceedTimer() { escalationTimer.proceed(); } - final void CancelTimer() { Log.d(LOG_TAG, "BaseEscalationState.CancelTimer()"); @@ -61,16 +57,6 @@ final void CancelTimer() } } - @Override - public void pause() { - PauseTimer(); - } - - @Override - public void proceed() { - ProceedTimer(); - } - @Override public void finish() { escalationTimer.disableEvents(); diff --git a/app/src/main/java/my/neomer/sixtyseconds/states/BaseState.java b/app/src/main/java/my/neomer/sixtyseconds/states/BaseState.java index 4872043..cb14bdb 100644 --- a/app/src/main/java/my/neomer/sixtyseconds/states/BaseState.java +++ b/app/src/main/java/my/neomer/sixtyseconds/states/BaseState.java @@ -11,6 +11,7 @@ public abstract class BaseState implements IState { BaseState(Parcel in) { gameContext = (BaseGameContext) in.readSerializable(); stateFinishListener = (IStateFinishListener) in.readSerializable(); + paused = in.readInt() == 1; } @Override @@ -22,6 +23,7 @@ public int describeContents() { public void writeToParcel(Parcel dest, int flags) { dest.writeParcelable(getGameContext(), 0); dest.writeSerializable(stateFinishListener); + dest.writeInt(paused ? 1 : 0); } //endregion @@ -50,4 +52,20 @@ public void finish() { } } + private boolean paused = false; + + @Override + public void pause() { + paused = true; + } + + @Override + public void proceed() { + paused = false; + } + + @Override + public boolean isOnPause() { + return paused; + } } diff --git a/app/src/main/java/my/neomer/sixtyseconds/states/EscalationTimer.java b/app/src/main/java/my/neomer/sixtyseconds/states/EscalationTimer.java index 3882e01..1216a4d 100644 --- a/app/src/main/java/my/neomer/sixtyseconds/states/EscalationTimer.java +++ b/app/src/main/java/my/neomer/sixtyseconds/states/EscalationTimer.java @@ -11,7 +11,6 @@ class EscalationTimer extends AsyncTask private int escalationTime; private BaseEscalationState state; - private volatile boolean pause = false; private volatile boolean eventsDisabled = false; EscalationTimer(BaseEscalationState state, int escalationTime) { @@ -56,14 +55,6 @@ void enableEvents() { eventsDisabled = false; } - void proceed() { - pause = false; - } - - void pause() { - pause = true; - } - @Override protected Void doInBackground(Void... voids) { for (int time = this.escalationTime; time > 0; --time) { @@ -71,7 +62,7 @@ protected Void doInBackground(Void... voids) { publishProgress(time); do { TimeUnit.SECONDS.sleep(1); - } while (pause); + } while (state.isOnPause()); } catch (InterruptedException e) { return null; } diff --git a/app/src/main/java/my/neomer/sixtyseconds/states/IState.java b/app/src/main/java/my/neomer/sixtyseconds/states/IState.java index 854458e..3128f2e 100644 --- a/app/src/main/java/my/neomer/sixtyseconds/states/IState.java +++ b/app/src/main/java/my/neomer/sixtyseconds/states/IState.java @@ -37,4 +37,8 @@ public interface IState extends Parcelable { */ void finish(); + /** + * Состояние приостановлено + */ + boolean isOnPause(); } diff --git a/app/src/main/java/my/neomer/sixtyseconds/states/QuestionReceivingState.java b/app/src/main/java/my/neomer/sixtyseconds/states/QuestionReceivingState.java index f7bae5a..4f3574e 100644 --- a/app/src/main/java/my/neomer/sixtyseconds/states/QuestionReceivingState.java +++ b/app/src/main/java/my/neomer/sixtyseconds/states/QuestionReceivingState.java @@ -86,16 +86,6 @@ public void start() { .getNextQuestion(getGameContext().getDifficulty(), this); } - @Override - public void pause() { - - } - - @Override - public void proceed() { - - } - @Override public void finish() { super.finish(); diff --git a/app/src/main/java/my/neomer/sixtyseconds/states/QuestionSettingsState.java b/app/src/main/java/my/neomer/sixtyseconds/states/QuestionSettingsState.java index eb82928..94acb26 100644 --- a/app/src/main/java/my/neomer/sixtyseconds/states/QuestionSettingsState.java +++ b/app/src/main/java/my/neomer/sixtyseconds/states/QuestionSettingsState.java @@ -71,16 +71,6 @@ public void start() { } - @Override - public void pause() { - - } - - @Override - public void proceed() { - - } - @Override public void finish() { settingsLayout.setVisibility(View.INVISIBLE); diff --git a/app/src/main/res/layout/activity_main.xml b/app/src/main/res/layout/activity_main.xml index 708753f..4f8ede9 100644 --- a/app/src/main/res/layout/activity_main.xml +++ b/app/src/main/res/layout/activity_main.xml @@ -59,9 +59,11 @@ android:id="@+id/layoutVote" android:layout_width="wrap_content" android:layout_height="0dp" - android:layout_marginStart="8dp" - android:layout_marginEnd="8dp" + android:layout_marginStart="32dp" + android:layout_marginEnd="32dp" android:layout_marginBottom="8dp" + android:background="@color/background" + android:backgroundTint="@color/browser_actions_bg_grey" android:visibility="invisible" app:layout_constraintBottom_toTopOf="@+id/btnStart" app:layout_constraintEnd_toEndOf="parent" diff --git a/app/src/main/res/values-ru-rRU/strings.xml b/app/src/main/res/values-ru-rRU/strings.xml index b19a27a..3ffab7c 100644 --- a/app/src/main/res/values-ru-rRU/strings.xml +++ b/app/src/main/res/values-ru-rRU/strings.xml @@ -8,7 +8,8 @@ Время вышло Остановлено Ответ - Ищем вопрос... + Ищем вопрос… + Проверяем ответ… Следующий вопрос Вам понравился вопрос? Напишите ваш ответ: diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml index 577bc0c..08f362c 100644 --- a/app/src/main/res/values/strings.xml +++ b/app/src/main/res/values/strings.xml @@ -7,7 +7,8 @@ Finish! Stopped! Answer - Receiving question... + Receiving question… + Receiving answer… Next question Do you like this question? Type your variant: