/
arti4
/
IndividualProject
Обзор
Документация
Войти
/
arti4
/
IndividualProject
Код
Запросы
0
Задачи
Вики
Пакеты
0
Релизы
0
CI/CD
Аналитика
Безопасность
master
MyGame/app/src/main/java/com/example/mygame/PauseMenuActivity.java
174 строки
6 KB
arti4
upload files
18 ноя 2025, 12:41
18 ноя 2025, 12:41
f3a2f8a
Код
Авторство
О чём код?
package com.example.mygame; import android.content.Context; import android.content.Intent; import android.content.SharedPreferences; import android.os.Bundle; import android.view.Window; import android.view.WindowManager; import android.widget.Button; import android.widget.SeekBar; import android.widget.TextView; import androidx.activity.OnBackPressedCallback; import androidx.appcompat.app.AppCompatActivity; public class PauseMenuActivity extends AppCompatActivity { private SeekBar musicVolumeSeekBar; private SeekBar effectsVolumeSeekBar; private TextView musicVolumeText; private TextView effectsVolumeText; private SoundManager soundManager; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); getWindow().setBackgroundDrawableResource(android.R.color.transparent); getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN, WindowManager.LayoutParams.FLAG_FULLSCREEN); overridePendingTransition(0, 0); setContentView(R.layout.activity_pause_menu); soundManager = createSoundManagerWithSettings(); initializeViews(); loadVolumeSettings(); setupButtons(); setupBackPressedHandler(); } private SoundManager createSoundManagerWithSettings() { SharedPreferences prefs = getSharedPreferences("SoundSettings", Context.MODE_PRIVATE); int musicVolume = prefs.getInt("music_volume", 50); int effectsVolume = prefs.getInt("effects_volume", 50); float musicVolumeFloat = musicVolume / 100.0f; float effectsVolumeFloat = effectsVolume / 100.0f; SoundManager manager = new SoundManager(this, musicVolumeFloat, effectsVolumeFloat); manager.stopSound(SoundManager.SOUND_GAME); return manager; } private void initializeViews() { musicVolumeSeekBar = findViewById(R.id.musicVolumeSeekBar); effectsVolumeSeekBar = findViewById(R.id.effectsVolumeSeekBar); musicVolumeText = findViewById(R.id.musicVolumeText); effectsVolumeText = findViewById(R.id.effectsVolumeText); musicVolumeSeekBar.setOnSeekBarChangeListener(new SeekBar.OnSeekBarChangeListener() { @Override public void onProgressChanged(SeekBar seekBar, int progress, boolean fromUser) { musicVolumeText.setText(progress + "%"); if (soundManager != null) { soundManager.setMusicVolume(progress / 100.0f); } saveVolumeSettings(); applyVolumeToGame(progress, effectsVolumeSeekBar.getProgress()); } @Override public void onStartTrackingTouch(SeekBar seekBar) {} @Override public void onStopTrackingTouch(SeekBar seekBar) {} }); effectsVolumeSeekBar.setOnSeekBarChangeListener(new SeekBar.OnSeekBarChangeListener() { @Override public void onProgressChanged(SeekBar seekBar, int progress, boolean fromUser) { effectsVolumeText.setText(progress + "%"); if (soundManager != null) { soundManager.setEffectsVolume(progress / 100.0f); } saveVolumeSettings(); applyVolumeToGame(musicVolumeSeekBar.getProgress(), progress); } @Override public void onStartTrackingTouch(SeekBar seekBar) {} @Override public void onStopTrackingTouch(SeekBar seekBar) {} }); } private void applyVolumeToGame(int musicVolume, int effectsVolume) { SharedPreferences prefs = getSharedPreferences("SoundSettings", Context.MODE_PRIVATE); prefs.edit() .putInt("music_volume", musicVolume) .putInt("effects_volume", effectsVolume) .apply(); } private void loadVolumeSettings() { SharedPreferences prefs = getSharedPreferences("SoundSettings", Context.MODE_PRIVATE); int musicVolume = prefs.getInt("music_volume", 50); int effectsVolume = prefs.getInt("effects_volume", 50); musicVolumeSeekBar.setProgress(musicVolume); effectsVolumeSeekBar.setProgress(effectsVolume); musicVolumeText.setText(musicVolume + "%"); effectsVolumeText.setText(effectsVolume + "%"); } private void saveVolumeSettings() { SharedPreferences prefs = getSharedPreferences("SoundSettings", Context.MODE_PRIVATE); prefs.edit() .putInt("music_volume", musicVolumeSeekBar.getProgress()) .putInt("effects_volume", effectsVolumeSeekBar.getProgress()) .apply(); } private void setupButtons() { Button resumeButton = findViewById(R.id.resumeButton); Button exitToMenuButton = findViewById(R.id.exitToMenuButton); resumeButton.setOnClickListener(v -> { setResult(RESULT_OK); finish(); overridePendingTransition(0, 0); }); exitToMenuButton.setOnClickListener(v -> { exitToMainMenu(); }); } private void setupBackPressedHandler() { getOnBackPressedDispatcher().addCallback(this, new OnBackPressedCallback(true) { @Override public void handleOnBackPressed() { if (soundManager != null) { soundManager.playSound(SoundManager.SOUND_GAME); } setResult(RESULT_OK); finish(); overridePendingTransition(0, 0); } }); } private void exitToMainMenu() { if (soundManager != null) { soundManager.stopSound(SoundManager.SOUND_GAME); } Intent intent = new Intent(PauseMenuActivity.this, MainMenuActivity.class); intent.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP | Intent.FLAG_ACTIVITY_CLEAR_TASK); startActivity(intent); finish(); } @Override protected void onDestroy() { super.onDestroy(); if (soundManager != null) { soundManager.release(); } } @Override public void finish() { super.finish(); overridePendingTransition(0, 0); } }