summaryrefslogtreecommitdiffstats
path: root/app/src/main/java/com
diff options
context:
space:
mode:
authorLeightonGinty <lxg184@student.bham.ac.uk>2024-11-17 02:02:17 +0000
committerLeightonGinty <lxg184@student.bham.ac.uk>2024-11-17 02:02:17 +0000
commit9293ee3d1a19b107f5f79d65828db714c8a1a0e7 (patch)
treeb496002d5ee36480bae7dc987a25a8eab7cbe51b /app/src/main/java/com
parentfcf2323a981f6bd20c04f32d844227da63529975 (diff)
Add purchase booze
Diffstat (limited to 'app/src/main/java/com')
-rw-r--r--app/src/main/java/com/example/alcagotchi/AlcoGotchi.kt14
-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() {
)
}
}
+