diff options
| author | LeightonGinty <lxg184@student.bham.ac.uk> | 2024-11-17 02:02:17 +0000 |
|---|---|---|
| committer | LeightonGinty <lxg184@student.bham.ac.uk> | 2024-11-17 02:02:17 +0000 |
| commit | 9293ee3d1a19b107f5f79d65828db714c8a1a0e7 (patch) | |
| tree | b496002d5ee36480bae7dc987a25a8eab7cbe51b /app/src/main | |
| parent | fcf2323a981f6bd20c04f32d844227da63529975 (diff) | |
Add purchase booze
Diffstat (limited to 'app/src/main')
| -rw-r--r-- | app/src/main/java/com/example/alcagotchi/AlcoGotchi.kt | 14 | ||||
| -rw-r--r-- | app/src/main/java/com/example/alcagotchi/ShopActivity.kt (renamed from app/src/main/java/com/example/alcagotchi/Shop.kt) | 75 |
2 files changed, 76 insertions, 13 deletions
diff --git a/app/src/main/java/com/example/alcagotchi/AlcoGotchi.kt b/app/src/main/java/com/example/alcagotchi/AlcoGotchi.kt index 0b7dbff..349eac9 100644 --- a/app/src/main/java/com/example/alcagotchi/AlcoGotchi.kt +++ b/app/src/main/java/com/example/alcagotchi/AlcoGotchi.kt @@ -92,4 +92,18 @@ class AlcoGotchi private constructor() { handleStateResponse(client.newCall(request).execute()) } } + suspend fun postBuy(choice: String) { + val body = JSONObject() + body.put("item", choice) + + val request = Request.Builder() + .url(buildUrl("buy")) + .post(body.toString().toRequestBody(jsonMediaType)) + .build() + + client.newCall(request).enqueue(basicCallback) + return withContext(Dispatchers.IO) { + handleStateResponse(client.newCall(request).execute()) + } + } } diff --git a/app/src/main/java/com/example/alcagotchi/Shop.kt b/app/src/main/java/com/example/alcagotchi/ShopActivity.kt index 7e66d0c..81a79a1 100644 --- a/app/src/main/java/com/example/alcagotchi/Shop.kt +++ b/app/src/main/java/com/example/alcagotchi/ShopActivity.kt @@ -1,5 +1,3 @@ -package com.example.alcagotchi - /* * Copyright (C) 2023 The Android Open Source Project * @@ -15,6 +13,11 @@ package com.example.alcagotchi * See the License for the specific language governing permissions and * limitations under the License. */ +package com.example.alcagotchi + +import android.app.Activity +import android.app.AlertDialog +import android.content.Context import android.os.Bundle import androidx.activity.ComponentActivity import androidx.activity.compose.setContent @@ -29,19 +32,23 @@ import androidx.compose.material3.MaterialTheme import androidx.compose.material3.Surface import androidx.compose.material3.Text import androidx.compose.runtime.Composable +import androidx.compose.runtime.getValue +import androidx.compose.runtime.mutableIntStateOf import androidx.compose.ui.Alignment import androidx.compose.ui.Modifier import androidx.compose.ui.graphics.Color import androidx.compose.ui.layout.ContentScale -import androidx.compose.ui.res.colorResource +import androidx.compose.ui.platform.LocalContext import androidx.compose.ui.res.painterResource import androidx.compose.ui.res.stringResource -import androidx.compose.ui.text.style.TextAlign import androidx.compose.ui.tooling.preview.Preview import androidx.compose.ui.unit.dp import androidx.compose.ui.unit.sp +import androidx.lifecycle.ViewModel +import androidx.lifecycle.viewModelScope import com.example.alcagotchi.ui.theme.AlcaGotchiTheme -import com.example.alcagotchi.ui.theme.AlcaGotchiTheme +import kotlinx.coroutines.launch +import kotlinx.coroutines.runBlocking class ShopActivity : ComponentActivity() { override fun onCreate(savedInstanceState: Bundle?) { @@ -61,31 +68,72 @@ class ShopActivity : ComponentActivity() { } } +class ShopViewModel : ViewModel() { + val coin = mutableIntStateOf(0) + + fun buy(choice: String, context: Context) { + val alcoGotchi = AlcoGotchi.getInstance() + viewModelScope.launch { + runBlocking { + try { + alcoGotchi.postBuy(choice) + } catch (e: Exception) { + val alertDialog = AlertDialog.Builder(context) + + alertDialog.apply { + setTitle("no") + setMessage(e.toString()) + + }.create().show() + } + + coin.intValue = alcoGotchi.coins + } + } + } +} + + @Composable -fun ShopOptions(modifier: Modifier = Modifier) { +fun ShopOptions(viewModel: ShopViewModel, modifier: Modifier = Modifier) { + val coin by viewModel.coin + Column( verticalArrangement = Arrangement.Center, horizontalAlignment = Alignment.CenterHorizontally ) { + val context = LocalContext.current as Activity + + Text( + text = "Your coins:", + fontSize = 36.sp, + color = Color(0xFF00FF00), + modifier = Modifier + .padding(top = 16.dp) + .padding(end = 16.dp) + ) Text( - text = "Your balance: many coin", + text = coin.toString(), fontSize = 36.sp, color = Color(0xFF00FF00), modifier = Modifier .padding(top = 16.dp) .padding(end = 16.dp) ) - Button(onClick = { /*TODO*/ }) { + Button(onClick = { viewModel.buy("beer", context) }) { Text("Buy beer") } - Button(onClick = { /*TODO*/ }) { + Button(onClick = { viewModel.buy("wine", context) }) { Text("Buy wine") } - Button(onClick = { /*TODO*/ }) { + Button(onClick = { viewModel.buy("whisky", context) }) { + Text("Buy whisky") + } + Button(onClick = { viewModel.buy("lemonade", context) }) { Text("Buy lemonade") } - Button(onClick = { /*TODO*/ }) { - Text("Buy whisky") + Button(onClick = { context.finish() }) { + Text("Exit Shop") } } } @@ -103,7 +151,7 @@ fun ShopGreeting(message: String, modifier: Modifier = Modifier) { ) - ShopOptions() + ShopOptions(viewModel = ShopViewModel()) } } @@ -116,3 +164,4 @@ private fun ShopPreview() { ) } } + |
