0% found this document useful (0 votes)
5 views10 pages

Base Activity

The document is a Java class for an Android application that manages a story-based game interface. It includes methods for updating the UI, handling user interactions, and retrieving data from Firebase databases for ranks and stories. The class also supports language localization and manages the game's progression based on user choices.

Uploaded by

gretatepanyan768
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as TXT, PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
5 views10 pages

Base Activity

The document is a Java class for an Android application that manages a story-based game interface. It includes methods for updating the UI, handling user interactions, and retrieving data from Firebase databases for ranks and stories. The class also supports language localization and manages the game's progression based on user choices.

Uploaded by

gretatepanyan768
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as TXT, PDF, TXT or read online on Scribd

package com.example.

iquestor;

import android.content.Intent;
import android.content.SharedPreferences;
import android.content.res.Configuration;
import android.content.res.Resources;
import android.os.Bundle;
import android.preference.PreferenceManager;
import android.util.Log;
import android.view.View;
import android.widget.Button;
import android.widget.ImageButton;
import android.widget.ImageView;
import android.widget.TextView;
import com.google.firebase.database.DataSnapshot;
import com.google.firebase.database.DatabaseError;
import com.google.firebase.database.DatabaseReference;
import com.google.firebase.database.FirebaseDatabase;
import com.google.firebase.database.ValueEventListener;

import androidx.annotation.LayoutRes;
import androidx.annotation.NonNull;
import androidx.annotation.Nullable;
import androidx.appcompat.app.AppCompatActivity;

import java.util.ArrayList;
import java.util.List;
import java.util.Locale;

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();
super.onCreate(savedInstanceState);
}

@Override
public void setContentView(@LayoutRes int layoutResID) {
super.setContentView(layoutResID);
updateUI();
}

public void updateUI() {


aboutUsBtn = findViewById(R.id.about_us_btn);
howToPlayBtn = findViewById(R.id.how_to_play_btn);
playBtn = findViewById(R.id.play_btn);
resetProgressBtn = findViewById(R.id.reset_btn);
setTextSafely(aboutUsBtn, R.string.act_main_about_us_res);
setTextSafely(howToPlayBtn, R.string.act_main_htp_res);
setTextSafely(playBtn, R.string.act_main_play_res);
setTextSafely(resetProgressBtn, R.string.act_main_reset_progress_res);

auMailBtn = findViewById(R.id.about_us_mail_text);
auTextBtn = findViewById(R.id.about_us_text);
setTextSafely(auMailBtn, R.string.about_us_mail_res);
setTextSafely(auTextBtn, R.string.about_us_text_res);

htpChangeLangBtn = findViewById(R.id.htp_change_lang_text);
htpChangeLangGuideBtn = findViewById(R.id.htp_change_lang_guide);
htpAccBtn = findViewById(R.id.htp_change_acc_text);
htpAccGuideBtn = findViewById(R.id.htp_change_acc_guide);
htpControlSoundsBtn = findViewById(R.id.htp_change_volume_text);
htpControlSoundsGuideBtn = findViewById(R.id.htp_change_volume_guide);
htpAboutBtn = findViewById(R.id.htp_about_us_text);
htpAboutGuideBtn = findViewById(R.id.htp_about_us_guide);
setTextSafely(htpChangeLangBtn, R.string.htp_ht_change_lang_res);
setTextSafely(htpChangeLangGuideBtn, R.string.htp_ht_change_lang_text_res);
setTextSafely(htpAccBtn, R.string.htp_ht_change_acc_res);
setTextSafely(htpAccGuideBtn, R.string.htp_ht_change_acc_text_res);
setTextSafely(htpControlSoundsBtn, R.string.htp_ht_control_sounds_res);
setTextSafely(htpControlSoundsGuideBtn,
R.string.htp_ht_control_sounds_text_res);
setTextSafely(htpAboutBtn, R.string.htp_ht_about_game_res);
setTextSafely(htpAboutGuideBtn, R.string.htp_ht_about_game_text_res);

TextView next_sit = findViewById(R.id.next_sit_button);


setTextSafely(next_sit, R.string.nextSitRes);

TextView finish_game = findViewById(R.id.finish_game_btn);


setTextSafely(finish_game, R.string.nextSitRes1);

setLocale(getCurrentLanguage());
}

public void updateStory(int situationIndex) {


currentSituationIndex = situation_Index;
once_upon = findViewById(R.id.situation_text_view);
ans_a = findViewById(R.id.version1_text_view);
ans_b = findViewById(R.id.version2_text_view);
ans_c = findViewById(R.id.version3_text_view);
next_sit = findViewById(R.id.next_sit_button);
rankTextView = findViewById(R.id.ranktext);
String[] ranks1 = getResources().getStringArray(R.array.ranks1);
rankTextView.setText(ranks1[0]);

DatabaseReference ranksRef =
FirebaseDatabase.getInstance().getReference().child("ranks1");
ranksRef.addListenerForSingleValueEvent(new ValueEventListener() {
@Override
public void onDataChange(@NonNull DataSnapshot dataSnapshot) {
List<String> ranksList = new ArrayList<>();
for (DataSnapshot snapshot : dataSnapshot.getChildren()) {
String rank = snapshot.getValue(String.class);
ranksList.add(rank);
}
String[] ranks = ranksList.toArray(new String[0]);

if (situationIndex == 0) {
// Если это начало игры, показываем начальный текст

once_upon.setText(getResources().getString(R.string.startGameStory));
ans_a.setVisibility(View.INVISIBLE);
ans_b.setVisibility(View.INVISIBLE);
ans_c.setVisibility(View.GONE);
next_sit.setVisibility(View.VISIBLE);
} else {
DatabaseReference storiesRef =
FirebaseDatabase.getInstance().getReference().child("stories" + situationIndex);
storiesRef.addListenerForSingleValueEvent(new
ValueEventListener() {
@Override
public void onDataChange(@NonNull DataSnapshot
dataSnapshot) {
List<String> storiesList = new ArrayList<>();
for (DataSnapshot snapshot :
dataSnapshot.getChildren()) {
String story = snapshot.getValue(String.class);
storiesList.add(story);
}
String[] stories = storiesList.toArray(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(View.VISIBLE);
ans_b.setVisibility(View.VISIBLE);
ans_c.setVisibility(View.VISIBLE);
next_sit.setVisibility(View.GONE);
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(R.id.finish_game_btn);

DatabaseReference ranksRef =
FirebaseDatabase.getInstance().getReference().child("ranks");
ranksRef.addListenerForSingleValueEvent(new ValueEventListener() {
@Override
public void onDataChange(@NonNull DataSnapshot dataSnapshot) {
List<String> ranksList = new ArrayList<>();
for (DataSnapshot snapshot : dataSnapshot.getChildren()) {
String rank = snapshot.getValue(String.class);
ranksList.add(rank);
}
String[] ranks = ranksList.toArray(new String[0]);

String currentLanguage = getCurrentLanguage();


switch (currentSituationIndex) {
case 1:
if (optionIndex == 1) {
rank = Math.min(rank + 1, ranks.length - 1);
}
break;
case 2:
if (optionIndex == 2) {
rank = Math.min(rank + 1, ranks.length - 1);
}
break;
case 3:
if (optionIndex == 1) {
rank = Math.min(rank + 1, ranks.length - 1);
}
break;
case 4:
if (optionIndex == 2) {
rank = Math.max(rank - 1, 0);
}
break;
case 5:
if (optionIndex == 2) {
rank = Math.min(rank + 1, ranks.length - 1);
}
break;
case 6:
if (optionIndex == 2 || optionIndex == 3) {
rank = Math.min(rank + 1, ranks.length - 1);
}
break;
case 7:
if (optionIndex == 1) {
rank = Math.max(rank - 1, 0);
} else if (optionIndex == 2) {
rank = Math.min(rank + 2, ranks.length - 1);
}
break;
case 8:
if (optionIndex == 2) {
rank = Math.min(rank + 1, ranks.length - 1);
} else if (optionIndex == 1) {
rank = Math.max(rank - 2, 0);
}
break;
case 9:
if (optionIndex == 2) {
rank = Math.min(rank + 1, ranks.length - 1);
} else if (optionIndex == 1) {
rank = Math.max(rank - 1, 0);
}
break;
case 10:
if (optionIndex == 1) {
rank = Math.min(rank + 1, ranks.length - 1);
} else if (optionIndex == 2) {
rank = Math.max(rank - 1, 0);
}
break;
case 11:
if (optionIndex == 1 || optionIndex == 2) {
rank = Math.min(rank + 1, ranks.length - 1);
}
break;
case 12:
if (optionIndex == 1) {
rank = Math.min(rank + 1, ranks.length - 1);
}
break;
case 13:
if (optionIndex == 2) {
rank = Math.min(rank + 1, ranks.length - 1);
}
break;
default:
break;
}

DatabaseReference storiesRef =
FirebaseDatabase.getInstance().getReference().child("stories" +
currentSituationIndex);
storiesRef.addListenerForSingleValueEvent(new ValueEventListener()
{
@Override
public void onDataChange(@NonNull DataSnapshot dataSnapshot) {
List<String> storiesList = new ArrayList<>();
for (DataSnapshot snapshot : dataSnapshot.getChildren()) {
String story = snapshot.getValue(String.class);
storiesList.add(story);
}
String[] stories = storiesList.toArray(new String[0]);

String storyResult;
if (currentLanguage.equals("ru")) {
storyResult = stories[optionIndex -
1].replace("{звание}", String.valueOf(ranks[rank]));
} else {
storyResult = stories[optionIndex -
1].replace("{rank}", String.valueOf(ranks[rank]));
}

optionCurrentIndex = optionIndex - 1;
once_upon.setText(storyResult);
ans_a.setVisibility(View.INVISIBLE);
ans_b.setVisibility(View.INVISIBLE);
ans_c.setVisibility(View.GONE);
next_sit.setVisibility(View.GONE);
finish_game.setVisibility(View.VISIBLE);
finish_game.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
startActivity(new Intent(PlayActivity.this,
PlayActivity.class));
}
});
}

@Override
public void onCancelled(@NonNull DatabaseError error) {
// Обработка ошибок базы данных для stories
}
});
}

@Override
public void onCancelled(@NonNull DatabaseError error) {
// Обработка ошибок базы данных для ranks
}
});
}

void nextBtnVisible() {
// Получение ссылки на вашу базу данных в Firebase для stories
DatabaseReference storiesRef =
FirebaseDatabase.getInstance().getReference().child("stories" +
currentSituationIndex);

// Получение данных из Firebase Realtime Database для stories


storiesRef.addListenerForSingleValueEvent(new ValueEventListener() {
@Override
public void onDataChange(@NonNull DataSnapshot dataSnapshot) {
// Парсинг данных из snapshot для stories
List<String> storiesList = new ArrayList<>();
for (DataSnapshot snapshot : dataSnapshot.getChildren()) {
String story = snapshot.getValue(String.class);
storiesList.add(story);
}

// Преобразование списка в массив строк для stories


String[] stories = storiesList.toArray(new String[0]);

// Получение ссылки на вашу базу данных в Firebase для ranks


DatabaseReference ranksRef =
FirebaseDatabase.getInstance().getReference().child("ranks");

// Получение данных из Firebase Realtime Database для ranks


ranksRef.addListenerForSingleValueEvent(new ValueEventListener() {
@Override
public void onDataChange(@NonNull DataSnapshot dataSnapshot) {
// Парсинг данных из snapshot для ranks
List<String> ranksList = new ArrayList<>();
for (DataSnapshot snapshot : dataSnapshot.getChildren()) {
String rank = snapshot.getValue(String.class);
ranksList.add(rank);
}

// Преобразование списка в массив строк для ranks


String[] ranks = ranksList.toArray(new String[0]);

// Получение текущего языка


String currentLanguage = getCurrentLanguage();

// Объявление переменной storyResult до блока if


String storyResult;

// Формирование итоговой истории в зависимости от выбора


языка
if (currentLanguage.equals("ru")) {
storyResult =
stories[optionCurrentIndex].replace("{звание}", String.valueOf(ranks[rank]));
} else {
storyResult =
stories[optionCurrentIndex].replace("{rank}", String.valueOf(ranks[rank]));
}

// Получение ссылки на вашу базу данных в Firebase для


ranks1
DatabaseReference ranks1Ref =
FirebaseDatabase.getInstance().getReference().child("ranks1");

// Получение данных из Firebase Realtime Database для


ranks1
ranks1Ref.addListenerForSingleValueEvent(new
ValueEventListener() {
@Override
public void onDataChange(@NonNull DataSnapshot
dataSnapshot) {
// Парсинг данных из snapshot для ranks1
List<String> ranks1List = new ArrayList<>();
for (DataSnapshot snapshot :
dataSnapshot.getChildren()) {
String rank = snapshot.getValue(String.class);
ranks1List.add(rank);
}

// Преобразование списка в массив строк для ranks1


String[] ranks1 = ranks1List.toArray(new
String[0]);

// Отображение истории и ранга в зависимости от


выбора
rankTextView.setText(ranks1[rank]);
once_upon.setText(storyResult);
ans_a.setVisibility(View.INVISIBLE);
ans_b.setVisibility(View.INVISIBLE);
ans_c.setVisibility(View.GONE);
next_sit.setVisibility(View.VISIBLE);
}

@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(R.id.finish_game_btn);

// Получение ссылки на вашу базу данных в Firebase для stories


DatabaseReference storiesRef =
FirebaseDatabase.getInstance().getReference().child("stories" +
currentSituationIndex);

// Получение данных из Firebase Realtime Database для stories


storiesRef.addListenerForSingleValueEvent(new ValueEventListener() {
@Override
public void onDataChange(@NonNull DataSnapshot dataSnapshot) {
// Парсинг данных из snapshot для stories
List<String> storiesList = new ArrayList<>();
for (DataSnapshot snapshot : dataSnapshot.getChildren()) {
String story = snapshot.getValue(String.class);
storiesList.add(story);
}

// Преобразование списка в массив строк для stories


String[] stories = storiesList.toArray(new String[0]);

// Отображение истории в зависимости от выбора


String storyResult = stories[optionCurrentIndex];

// Получение ссылки на вашу базу данных в Firebase для ranks1


DatabaseReference ranks1Ref =
FirebaseDatabase.getInstance().getReference().child("ranks1");

// Получение данных из Firebase Realtime Database для ranks1


ranks1Ref.addListenerForSingleValueEvent(new ValueEventListener() {
@Override
public void onDataChange(@NonNull DataSnapshot dataSnapshot) {
// Парсинг данных из snapshot для ranks1
List<String> ranks1List = new ArrayList<>();
for (DataSnapshot snapshot : dataSnapshot.getChildren()) {
String rank = snapshot.getValue(String.class);
ranks1List.add(rank);
}

// Преобразование списка в массив строк для ranks1


String[] ranks1 = ranks1List.toArray(new String[0]);

// Отображение истории и ранга в зависимости от выбора


rankTextView.setText(ranks1[rank]);
once_upon.setText(storyResult);
ans_a.setVisibility(View.INVISIBLE);
ans_b.setVisibility(View.INVISIBLE);
ans_c.setVisibility(View.GONE);
next_sit.setVisibility(View.GONE);
finish_btn.setVisibility(View.VISIBLE);
}

@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) {
textView.setText(getString(stringResId));
}
}
public void setLocale(String languageCode) {
Locale locale = new Locale(languageCode);
Locale.setDefault(locale);

Resources resources = getResources();


Configuration configuration = resources.getConfiguration();
configuration.locale = locale;

resources.updateConfiguration(configuration,
resources.getDisplayMetrics());

public void saveLanguage(String languageCode) {


SharedPreferences preferences =
PreferenceManager.getDefaultSharedPreferences(this);
SharedPreferences.Editor editor = preferences.edit();
editor.putString("language", languageCode);
editor.apply();
}

private void loadSavedLanguage() {


SharedPreferences preferences =
PreferenceManager.getDefaultSharedPreferences(this);
String savedLanguage = preferences.getString("language", "");

if (!savedLanguage.isEmpty()) {
setLocale(savedLanguage);
}
}

public String getCurrentLanguage() {


Configuration configuration = getResources().getConfiguration();
return configuration.locale.getLanguage();
}
}

You might also like