second commit

This commit is contained in:
Михаил Дуплин
2026-04-07 17:07:56 +03:00
parent b1d7efc034
commit d69fe7e21f
62 changed files with 2519 additions and 1817 deletions
@@ -0,0 +1,174 @@
package com.example.myserver
import android.os.Bundle
import androidx.activity.ComponentActivity
import androidx.activity.compose.setContent
import androidx.compose.foundation.BorderStroke
import androidx.compose.foundation.background
import androidx.compose.foundation.layout.*
import androidx.compose.foundation.shape.RoundedCornerShape
import androidx.compose.material.icons.Icons
import androidx.compose.material.icons.filled.ArrowBack
import androidx.compose.material3.*
import androidx.compose.runtime.Composable
import androidx.compose.ui.Alignment
import androidx.compose.ui.Modifier
import androidx.compose.ui.graphics.Color
import androidx.compose.ui.platform.LocalContext
import androidx.compose.ui.text.font.FontWeight
import androidx.compose.ui.tooling.preview.Preview
import androidx.compose.ui.unit.dp
import androidx.compose.ui.unit.sp
import dagger.hilt.android.AndroidEntryPoint
@AndroidEntryPoint
class ProfileActivity : ComponentActivity() {
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
// Получаем имя игрока, которое передали из списка
val playerName = intent.getStringExtra("PLAYER_NAME") ?: "Неизвестный игрок"
setContent {
// Важно: MaterialTheme должен быть корневым
MaterialTheme {
ViewProfileScreen(
name = playerName,
onBackClick = { finish() }
)
}
}
}
}
@Composable
fun ViewProfileScreen(
name: String,
onBackClick: () -> Unit
) {
Surface(
modifier = Modifier.fillMaxSize(),
color = Color(0xFF3E4B54) // Фирменный фон
) {
Column(
modifier = Modifier
.fillMaxSize()
.padding(16.dp)
) {
// Верхняя панель с кнопкой назад и заголовком
ProfileTopBar(
onBackClick = onBackClick
)
Spacer(modifier = Modifier.height(24.dp))
// Заголовок (можно убрать, если он уже есть в TopBar)
Text(
text = "Профиль игрока",
color = Color.White,
fontSize = 28.sp,
fontWeight = FontWeight.Bold,
modifier = Modifier.padding(bottom = 32.dp)
)
// Карточка с именем (в твоем стиле с белой обводкой)
InfoCard(
label = "Игровой ник",
value = name
)
Spacer(modifier = Modifier.height(16.dp))
// Карточка со статусом
InfoCard(
label = "Статус",
value = "В игре"
)
Spacer(modifier = Modifier.height(16.dp))
// Карточка с информацией
InfoCard(
label = "Ранг",
value = "Игрок"
)
// Добавим немного места внизу для красоты
Spacer(modifier = Modifier.weight(1f))
}
}
}
@Composable
fun ProfileTopBar(
onBackClick: () -> Unit
) {
Row(
modifier = Modifier.fillMaxWidth(),
verticalAlignment = Alignment.CenterVertically
) {
IconButton(
onClick = onBackClick,
modifier = Modifier.size(48.dp)
) {
Icon(
imageVector = Icons.Default.ArrowBack,
contentDescription = "Назад",
tint = Color.White
)
}
Text(
text = "Информация об игроке",
color = Color.White,
fontSize = 20.sp,
fontWeight = FontWeight.Medium,
modifier = Modifier.padding(start = 8.dp)
)
}
}
@Composable
fun InfoCard(
label: String,
value: String
) {
Card(
modifier = Modifier.fillMaxWidth(),
shape = RoundedCornerShape(20.dp),
border = BorderStroke(2.dp, Color.White),
colors = CardDefaults.cardColors(
containerColor = Color(0xFF3E4B54)
)
) {
Column(
modifier = Modifier.padding(20.dp)
) {
Text(
text = label,
color = Color.LightGray,
fontSize = 12.sp
)
Text(
text = value,
color = Color.White,
fontSize = 20.sp,
fontWeight = FontWeight.Bold,
modifier = Modifier.padding(top = 4.dp)
)
}
}
}
// Предпросмотр для разработки
@Composable
@Preview(showBackground = true)
fun ViewProfileScreenPreview() {
MaterialTheme {
ViewProfileScreen(
name = "Steve",
onBackClick = {}
)
}
}