summaryrefslogtreecommitdiffstats
path: root/app
diff options
context:
space:
mode:
authorLeonardo Bishop <me@leonardobishop.com>2024-11-17 03:12:49 +0000
committerLeonardo Bishop <me@leonardobishop.com>2024-11-17 03:15:17 +0000
commitde66bedf501cb31dff976b939159e819313299c9 (patch)
tree7d8fbe408ab3b5cf16dcc9ae89a77ba0374028ba /app
parentd2f09ad53eabf77a065e2b01076dc66091f43b3b (diff)
add coal mines
Diffstat (limited to 'app')
-rw-r--r--app/src/main/AndroidManifest.xml11
-rw-r--r--app/src/main/java/com/example/alcagotchi/AlcoGotchi.kt12
-rw-r--r--app/src/main/java/com/example/alcagotchi/CoalMineActivity.kt183
-rw-r--r--app/src/main/java/com/example/alcagotchi/MainActivity.kt6
-rw-r--r--app/src/main/res/drawable/coalmine.webpbin0 -> 14382 bytes
-rw-r--r--app/src/main/res/drawable/coalmine2.webpbin0 -> 21040 bytes
6 files changed, 212 insertions, 0 deletions
diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml
index 72a9b6e..d4a9b12 100644
--- a/app/src/main/AndroidManifest.xml
+++ b/app/src/main/AndroidManifest.xml
@@ -36,6 +36,17 @@
</intent-filter>
</activity>
<activity
+ android:name=".CoalMineActivity"
+ android:exported="true"
+ android:label="@string/app_name"
+ android:theme="@style/Theme.AlcaGotchi">
+ <intent-filter>
+ <action android:name="android.intent.action.MAIN" />
+
+ <category android:name="android.intent.category.LAUNCHER" />
+ </intent-filter>
+ </activity>
+ <activity
android:name=".DrinkingActivity"
android:exported="true"
android:label="@string/app_name"
diff --git a/app/src/main/java/com/example/alcagotchi/AlcoGotchi.kt b/app/src/main/java/com/example/alcagotchi/AlcoGotchi.kt
index ef20954..e8c0c61 100644
--- a/app/src/main/java/com/example/alcagotchi/AlcoGotchi.kt
+++ b/app/src/main/java/com/example/alcagotchi/AlcoGotchi.kt
@@ -20,6 +20,7 @@ class AlcoGotchi private constructor() {
var baseUrl = "http://192.168.4.1:80"
var coins = 100
var drunk = 0
+ var happiness = 0
companion object {
@Volatile private var instance: AlcoGotchi? = null
@@ -53,6 +54,7 @@ class AlcoGotchi private constructor() {
coins = json.getJSONObject("data").getInt("alco_coin")
drunk = json.getJSONObject("data").getInt("drunk")
+ happiness = json.getJSONObject("data").getInt("happiness")
}
suspend fun getState() {
@@ -106,6 +108,16 @@ class AlcoGotchi private constructor() {
handleStateResponse(client.newCall(request).execute())
}
}
+ suspend fun getMine() {
+ val request = Request.Builder()
+ .url(buildUrl("mine"))
+ .build()
+
+ client.newCall(request).enqueue(basicCallback)
+ return withContext(Dispatchers.IO) {
+ handleStateResponse(client.newCall(request).execute())
+ }
+ }
suspend fun postDrive() {
val body = JSONObject()
// body.put("drive", drink)
diff --git a/app/src/main/java/com/example/alcagotchi/CoalMineActivity.kt b/app/src/main/java/com/example/alcagotchi/CoalMineActivity.kt
new file mode 100644
index 0000000..9fb4617
--- /dev/null
+++ b/app/src/main/java/com/example/alcagotchi/CoalMineActivity.kt
@@ -0,0 +1,183 @@
+/*
+ * Copyright (C) 2023 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * https://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * 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
+import androidx.compose.foundation.Image
+import androidx.compose.foundation.layout.Arrangement
+import androidx.compose.foundation.layout.Box
+import androidx.compose.foundation.layout.Column
+import androidx.compose.foundation.layout.fillMaxSize
+import androidx.compose.foundation.layout.padding
+import androidx.compose.material3.Button
+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.runtime.mutableStateListOf
+import androidx.compose.runtime.mutableStateOf
+import androidx.compose.runtime.remember
+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.platform.LocalContext
+import androidx.compose.ui.res.colorResource
+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.MutableLiveData
+import androidx.lifecycle.ViewModel
+import androidx.lifecycle.viewModelScope
+import androidx.lifecycle.viewmodel.compose.viewModel
+import com.example.alcagotchi.ui.theme.AlcaGotchiTheme
+import com.example.alcagotchi.ui.theme.AlcaGotchiTheme
+import kotlinx.coroutines.launch
+import kotlinx.coroutines.runBlocking
+
+class CoalMineActivity : ComponentActivity() {
+ override fun onCreate(savedInstanceState: Bundle?) {
+ super.onCreate(savedInstanceState)
+ setContent {
+ AlcaGotchiTheme {
+ Surface(
+ modifier = Modifier.fillMaxSize(),
+ color = MaterialTheme.colorScheme.background
+ ) {
+ CoalMineGreeting()
+ }
+ }
+ }
+ }
+}
+
+class CoalMineViewModel : ViewModel() {
+ private val alcoGotchi = AlcoGotchi.getInstance()
+ val coin = mutableIntStateOf(alcoGotchi.coins)
+ val mining = mutableStateOf(false)
+
+ fun mine(context: Context) {
+ viewModelScope.launch {
+ run {
+ try {
+ mining.value = true
+ alcoGotchi.getMine()
+ } catch (e: Exception) {
+ val alertDialog = AlertDialog.Builder(context)
+
+ if (true == e.message?.contains("You're too sad to mine coin.")) {
+ alertDialog.apply {
+ setTitle(":(")
+ setMessage("your happiness is too low to work")
+ }.create().show()
+ } else {
+ alertDialog.apply {
+ setTitle("no")
+ setMessage("didn't work")
+ }.create().show()
+ }
+ } finally {
+ mining.value = false
+ }
+
+ coin.intValue = alcoGotchi.coins
+ }
+ }
+ }
+}
+
+
+@Composable
+fun CoalMineOptions(viewModel: CoalMineViewModel, modifier: Modifier = Modifier) {
+ val coin by viewModel.coin
+
+ Column(
+ verticalArrangement = Arrangement.Center,
+ horizontalAlignment = Alignment.CenterHorizontally
+ ) {
+ val context = LocalContext.current as Activity
+ val mining by remember { viewModel.mining }
+
+ Text(
+ text = "Welcome to your job",
+ fontSize = 36.sp,
+ color = Color(0xFF00FF00),
+ modifier = Modifier
+ .padding(top = 16.dp)
+ .padding(end = 16.dp)
+ )
+ Text(
+ text = "Your coins:",
+ fontSize = 36.sp,
+ color = Color(0xFF00FF00),
+ modifier = Modifier
+ .padding(top = 16.dp)
+ .padding(end = 16.dp)
+ )
+ Text(
+ text = coin.toString(),
+ fontSize = 36.sp,
+ color = Color(0xFF00FF00),
+ modifier = Modifier
+ .padding(top = 16.dp)
+ .padding(end = 16.dp)
+ )
+ Button(
+ onClick = { viewModel.mine(context) },
+ enabled = !mining
+ ) {
+ Text("Mine coal")
+ }
+ Button(onClick = { context.finish() }) {
+ Text("Leave coal mines")
+ }
+ }
+}
+
+@Composable
+fun CoalMineGreeting(modifier: Modifier = Modifier) {
+ // Create a box to overlap image and texts
+ Box(modifier) {
+ Image(
+ painter = painterResource(id = R.drawable.coalmine2),
+ contentDescription = null,
+ contentScale = ContentScale.Crop,
+ alpha = 1F,
+ modifier = Modifier.fillMaxSize()
+ )
+
+ CoalMineOptions(viewModel = CoalMineViewModel())
+ }
+}
+
+@Preview(showBackground = false)
+@Composable
+private fun CasinoPreview() {
+ AlcaGotchiTheme {
+ CoalMineGreeting()
+ }
+}
+
diff --git a/app/src/main/java/com/example/alcagotchi/MainActivity.kt b/app/src/main/java/com/example/alcagotchi/MainActivity.kt
index 8f87af0..c29f0bc 100644
--- a/app/src/main/java/com/example/alcagotchi/MainActivity.kt
+++ b/app/src/main/java/com/example/alcagotchi/MainActivity.kt
@@ -167,6 +167,12 @@ fun GreetingText(viewModel: MainViewModel, message: String, from: String, modifi
}) {
Text("Start Driving")
}
+ Button(onClick = {
+ val intent = Intent(context, CoalMineActivity::class.java)
+ context.startActivity(intent)
+ }) {
+ Text("Earn money")
+ }
} else {
Text(
text = "connecting... plz wait",
diff --git a/app/src/main/res/drawable/coalmine.webp b/app/src/main/res/drawable/coalmine.webp
new file mode 100644
index 0000000..511485e
--- /dev/null
+++ b/app/src/main/res/drawable/coalmine.webp
Binary files differ
diff --git a/app/src/main/res/drawable/coalmine2.webp b/app/src/main/res/drawable/coalmine2.webp
new file mode 100644
index 0000000..ca533c3
--- /dev/null
+++ b/app/src/main/res/drawable/coalmine2.webp
Binary files differ