package [Link].
iquestor;
import [Link];
import [Link];
import [Link];
import [Link];
import [Link];
import [Link];
import [Link];
import [Link];
import [Link];
import [Link];
import [Link];
import [Link];
import [Link];
import [Link];
import [Link];
import [Link];
import [Link];
import [Link];
import [Link];
import [Link];
import [Link];
import [Link];
import [Link];
import [Link];
public class BaseActivity extends AppCompatActivity {
int optionCurrentIndex;
TextView once_upon;
TextView ans_a;
TextView ans_b;
TextView ans_c;
TextView next_sit;
Button aboutUsBtn;
Button howToPlayBtn;
Button playBtn;
Button resetProgressBtn;
ImageView rankImageView;
TextView rankTextView;
int rank;
TextView auTextBtn;
TextView auMailBtn;
int situation_Index;
TextView htpChangeLangBtn;
TextView htpChangeLangGuideBtn;
TextView htpControlSoundsBtn;
TextView htpControlSoundsGuideBtn;
TextView htpAccBtn;
TextView htpAccGuideBtn;
TextView htpAboutBtn;
TextView htpAboutGuideBtn;
private int currentSituationIndex = 0;
@Override
protected void onCreate(@Nullable Bundle savedInstanceState) {
loadSavedLanguage();
[Link](savedInstanceState);
}
@Override
public void setContentView(@LayoutRes int layoutResID) {
[Link](layoutResID);
updateUI();
}
public void updateUI() {
aboutUsBtn = findViewById([Link].about_us_btn);
howToPlayBtn = findViewById([Link].how_to_play_btn);
playBtn = findViewById([Link].play_btn);
resetProgressBtn = findViewById([Link].reset_btn);
setTextSafely(aboutUsBtn, [Link].act_main_about_us_res);
setTextSafely(howToPlayBtn, [Link].act_main_htp_res);
setTextSafely(playBtn, [Link].act_main_play_res);
setTextSafely(resetProgressBtn, [Link].act_main_reset_progress_res);
auMailBtn = findViewById([Link].about_us_mail_text);
auTextBtn = findViewById([Link].about_us_text);
setTextSafely(auMailBtn, [Link].about_us_mail_res);
setTextSafely(auTextBtn, [Link].about_us_text_res);
htpChangeLangBtn = findViewById([Link].htp_change_lang_text);
htpChangeLangGuideBtn = findViewById([Link].htp_change_lang_guide);
htpAccBtn = findViewById([Link].htp_change_acc_text);
htpAccGuideBtn = findViewById([Link].htp_change_acc_guide);
htpControlSoundsBtn = findViewById([Link].htp_change_volume_text);
htpControlSoundsGuideBtn = findViewById([Link].htp_change_volume_guide);
htpAboutBtn = findViewById([Link].htp_about_us_text);
htpAboutGuideBtn = findViewById([Link].htp_about_us_guide);
setTextSafely(htpChangeLangBtn, [Link].htp_ht_change_lang_res);
setTextSafely(htpChangeLangGuideBtn, [Link].htp_ht_change_lang_text_res);
setTextSafely(htpAccBtn, [Link].htp_ht_change_acc_res);
setTextSafely(htpAccGuideBtn, [Link].htp_ht_change_acc_text_res);
setTextSafely(htpControlSoundsBtn, [Link].htp_ht_control_sounds_res);
setTextSafely(htpControlSoundsGuideBtn,
[Link].htp_ht_control_sounds_text_res);
setTextSafely(htpAboutBtn, [Link].htp_ht_about_game_res);
setTextSafely(htpAboutGuideBtn, [Link].htp_ht_about_game_text_res);
TextView next_sit = findViewById([Link].next_sit_button);
setTextSafely(next_sit, [Link]);
TextView finish_game = findViewById([Link].finish_game_btn);
setTextSafely(finish_game, [Link].nextSitRes1);
setLocale(getCurrentLanguage());
}
public void updateStory(int situationIndex) {
currentSituationIndex = situation_Index;
once_upon = findViewById([Link].situation_text_view);
ans_a = findViewById([Link].version1_text_view);
ans_b = findViewById([Link].version2_text_view);
ans_c = findViewById([Link].version3_text_view);
next_sit = findViewById([Link].next_sit_button);
rankTextView = findViewById([Link]);
String[] ranks1 = getResources().getStringArray([Link].ranks1);
[Link](ranks1[0]);
DatabaseReference ranksRef =
[Link]().getReference().child("ranks1");
[Link](new ValueEventListener() {
@Override
public void onDataChange(@NonNull DataSnapshot dataSnapshot) {
List<String> ranksList = new ArrayList<>();
for (DataSnapshot snapshot : [Link]()) {
String rank = [Link]([Link]);
[Link](rank);
}
String[] ranks = [Link](new String[0]);
if (situationIndex == 0) {
// Если это начало игры, показываем начальный текст
once_upon.setText(getResources().getString([Link]));
ans_a.setVisibility([Link]);
ans_b.setVisibility([Link]);
ans_c.setVisibility([Link]);
next_sit.setVisibility([Link]);
} else {
DatabaseReference storiesRef =
[Link]().getReference().child("stories" + situationIndex);
[Link](new
ValueEventListener() {
@Override
public void onDataChange(@NonNull DataSnapshot
dataSnapshot) {
List<String> storiesList = new ArrayList<>();
for (DataSnapshot snapshot :
[Link]()) {
String story = [Link]([Link]);
[Link](story);
}
String[] stories = [Link](new String[0]);
String[] scenarios =
getResources().getStringArray(getResources().getIdentifier("sit", "array",
getPackageName()));
String[] options =
getResources().getStringArray(getResources().getIdentifier("choices" +
situationIndex, "array", getPackageName()));
// Отображение сценария
once_upon.setText(scenarios[situationIndex - 1]);
ans_a.setVisibility([Link]);
ans_b.setVisibility([Link]);
ans_c.setVisibility([Link]);
next_sit.setVisibility([Link]);
ans_a.setText(options[0]);
ans_b.setText(options[1]);
ans_c.setText(options[2]);
situation_Index = situationIndex;
}
@Override
public void onCancelled(@NonNull DatabaseError error) {
// Обработка ошибок базы данных для stories
}
});
}
}
@Override
public void onCancelled(@NonNull DatabaseError error) {
// Обработка ошибок базы данных для ranks1
}
});
}
void handleOptionClick(int optionIndex) {
currentSituationIndex = situation_Index;
TextView finish_game = findViewById([Link].finish_game_btn);
DatabaseReference ranksRef =
[Link]().getReference().child("ranks");
[Link](new ValueEventListener() {
@Override
public void onDataChange(@NonNull DataSnapshot dataSnapshot) {
List<String> ranksList = new ArrayList<>();
for (DataSnapshot snapshot : [Link]()) {
String rank = [Link]([Link]);
[Link](rank);
}
String[] ranks = [Link](new String[0]);
String currentLanguage = getCurrentLanguage();
switch (currentSituationIndex) {
case 1:
if (optionIndex == 1) {
rank = [Link](rank + 1, [Link] - 1);
}
break;
case 2:
if (optionIndex == 2) {
rank = [Link](rank + 1, [Link] - 1);
}
break;
case 3:
if (optionIndex == 1) {
rank = [Link](rank + 1, [Link] - 1);
}
break;
case 4:
if (optionIndex == 2) {
rank = [Link](rank - 1, 0);
}
break;
case 5:
if (optionIndex == 2) {
rank = [Link](rank + 1, [Link] - 1);
}
break;
case 6:
if (optionIndex == 2 || optionIndex == 3) {
rank = [Link](rank + 1, [Link] - 1);
}
break;
case 7:
if (optionIndex == 1) {
rank = [Link](rank - 1, 0);
} else if (optionIndex == 2) {
rank = [Link](rank + 2, [Link] - 1);
}
break;
case 8:
if (optionIndex == 2) {
rank = [Link](rank + 1, [Link] - 1);
} else if (optionIndex == 1) {
rank = [Link](rank - 2, 0);
}
break;
case 9:
if (optionIndex == 2) {
rank = [Link](rank + 1, [Link] - 1);
} else if (optionIndex == 1) {
rank = [Link](rank - 1, 0);
}
break;
case 10:
if (optionIndex == 1) {
rank = [Link](rank + 1, [Link] - 1);
} else if (optionIndex == 2) {
rank = [Link](rank - 1, 0);
}
break;
case 11:
if (optionIndex == 1 || optionIndex == 2) {
rank = [Link](rank + 1, [Link] - 1);
}
break;
case 12:
if (optionIndex == 1) {
rank = [Link](rank + 1, [Link] - 1);
}
break;
case 13:
if (optionIndex == 2) {
rank = [Link](rank + 1, [Link] - 1);
}
break;
default:
break;
}
DatabaseReference storiesRef =
[Link]().getReference().child("stories" +
currentSituationIndex);
[Link](new ValueEventListener()
{
@Override
public void onDataChange(@NonNull DataSnapshot dataSnapshot) {
List<String> storiesList = new ArrayList<>();
for (DataSnapshot snapshot : [Link]()) {
String story = [Link]([Link]);
[Link](story);
}
String[] stories = [Link](new String[0]);
String storyResult;
if ([Link]("ru")) {
storyResult = stories[optionIndex -
1].replace("{звание}", [Link](ranks[rank]));
} else {
storyResult = stories[optionIndex -
1].replace("{rank}", [Link](ranks[rank]));
}
optionCurrentIndex = optionIndex - 1;
once_upon.setText(storyResult);
ans_a.setVisibility([Link]);
ans_b.setVisibility([Link]);
ans_c.setVisibility([Link]);
next_sit.setVisibility([Link]);
finish_game.setVisibility([Link]);
finish_game.setOnClickListener(new [Link]() {
@Override
public void onClick(View view) {
startActivity(new Intent([Link],
[Link]));
}
});
}
@Override
public void onCancelled(@NonNull DatabaseError error) {
// Обработка ошибок базы данных для stories
}
});
}
@Override
public void onCancelled(@NonNull DatabaseError error) {
// Обработка ошибок базы данных для ranks
}
});
}
void nextBtnVisible() {
// Получение ссылки на вашу базу данных в Firebase для stories
DatabaseReference storiesRef =
[Link]().getReference().child("stories" +
currentSituationIndex);
// Получение данных из Firebase Realtime Database для stories
[Link](new ValueEventListener() {
@Override
public void onDataChange(@NonNull DataSnapshot dataSnapshot) {
// Парсинг данных из snapshot для stories
List<String> storiesList = new ArrayList<>();
for (DataSnapshot snapshot : [Link]()) {
String story = [Link]([Link]);
[Link](story);
}
// Преобразование списка в массив строк для stories
String[] stories = [Link](new String[0]);
// Получение ссылки на вашу базу данных в Firebase для ranks
DatabaseReference ranksRef =
[Link]().getReference().child("ranks");
// Получение данных из Firebase Realtime Database для ranks
[Link](new ValueEventListener() {
@Override
public void onDataChange(@NonNull DataSnapshot dataSnapshot) {
// Парсинг данных из snapshot для ranks
List<String> ranksList = new ArrayList<>();
for (DataSnapshot snapshot : [Link]()) {
String rank = [Link]([Link]);
[Link](rank);
}
// Преобразование списка в массив строк для ranks
String[] ranks = [Link](new String[0]);
// Получение текущего языка
String currentLanguage = getCurrentLanguage();
// Объявление переменной storyResult до блока if
String storyResult;
// Формирование итоговой истории в зависимости от выбора
языка
if ([Link]("ru")) {
storyResult =
stories[optionCurrentIndex].replace("{звание}", [Link](ranks[rank]));
} else {
storyResult =
stories[optionCurrentIndex].replace("{rank}", [Link](ranks[rank]));
}
// Получение ссылки на вашу базу данных в Firebase для
ranks1
DatabaseReference ranks1Ref =
[Link]().getReference().child("ranks1");
// Получение данных из Firebase Realtime Database для
ranks1
[Link](new
ValueEventListener() {
@Override
public void onDataChange(@NonNull DataSnapshot
dataSnapshot) {
// Парсинг данных из snapshot для ranks1
List<String> ranks1List = new ArrayList<>();
for (DataSnapshot snapshot :
[Link]()) {
String rank = [Link]([Link]);
[Link](rank);
}
// Преобразование списка в массив строк для ranks1
String[] ranks1 = [Link](new
String[0]);
// Отображение истории и ранга в зависимости от
выбора
[Link](ranks1[rank]);
once_upon.setText(storyResult);
ans_a.setVisibility([Link]);
ans_b.setVisibility([Link]);
ans_c.setVisibility([Link]);
next_sit.setVisibility([Link]);
}
@Override
public void onCancelled(@NonNull DatabaseError error) {
// Обработка ошибок базы данных для ranks1
}
});
}
@Override
public void onCancelled(@NonNull DatabaseError error) {
// Обработка ошибок базы данных для ranks
}
});
}
@Override
public void onCancelled(@NonNull DatabaseError error) {
// Обработка ошибок базы данных для stories
}
});
}
void finishBtnVisible() {
TextView finish_btn = findViewById([Link].finish_game_btn);
// Получение ссылки на вашу базу данных в Firebase для stories
DatabaseReference storiesRef =
[Link]().getReference().child("stories" +
currentSituationIndex);
// Получение данных из Firebase Realtime Database для stories
[Link](new ValueEventListener() {
@Override
public void onDataChange(@NonNull DataSnapshot dataSnapshot) {
// Парсинг данных из snapshot для stories
List<String> storiesList = new ArrayList<>();
for (DataSnapshot snapshot : [Link]()) {
String story = [Link]([Link]);
[Link](story);
}
// Преобразование списка в массив строк для stories
String[] stories = [Link](new String[0]);
// Отображение истории в зависимости от выбора
String storyResult = stories[optionCurrentIndex];
// Получение ссылки на вашу базу данных в Firebase для ranks1
DatabaseReference ranks1Ref =
[Link]().getReference().child("ranks1");
// Получение данных из Firebase Realtime Database для ranks1
[Link](new ValueEventListener() {
@Override
public void onDataChange(@NonNull DataSnapshot dataSnapshot) {
// Парсинг данных из snapshot для ranks1
List<String> ranks1List = new ArrayList<>();
for (DataSnapshot snapshot : [Link]()) {
String rank = [Link]([Link]);
[Link](rank);
}
// Преобразование списка в массив строк для ranks1
String[] ranks1 = [Link](new String[0]);
// Отображение истории и ранга в зависимости от выбора
[Link](ranks1[rank]);
once_upon.setText(storyResult);
ans_a.setVisibility([Link]);
ans_b.setVisibility([Link]);
ans_c.setVisibility([Link]);
next_sit.setVisibility([Link]);
finish_btn.setVisibility([Link]);
}
@Override
public void onCancelled(@NonNull DatabaseError error) {
// Обработка ошибок базы данных для ranks1
}
});
}
@Override
public void onCancelled(@NonNull DatabaseError error) {
// Обработка ошибок базы данных для stories
}
});
}
private void setTextSafely(TextView textView, int stringResId) {
if (textView != null) {
[Link](getString(stringResId));
}
}
public void setLocale(String languageCode) {
Locale locale = new Locale(languageCode);
[Link](locale);
Resources resources = getResources();
Configuration configuration = [Link]();
[Link] = locale;
[Link](configuration,
[Link]());
public void saveLanguage(String languageCode) {
SharedPreferences preferences =
[Link](this);
[Link] editor = [Link]();
[Link]("language", languageCode);
[Link]();
}
private void loadSavedLanguage() {
SharedPreferences preferences =
[Link](this);
String savedLanguage = [Link]("language", "");
if (![Link]()) {
setLocale(savedLanguage);
}
}
public String getCurrentLanguage() {
Configuration configuration = getResources().getConfiguration();
return [Link]();
}
}