Prepare LCDPet 1.1 update
This commit is contained in:
@@ -15,8 +15,8 @@ android {
|
|||||||
applicationId = "today.notfeelingit.lcdpet"
|
applicationId = "today.notfeelingit.lcdpet"
|
||||||
minSdk = 26
|
minSdk = 26
|
||||||
targetSdk = 36
|
targetSdk = 36
|
||||||
versionCode = 1
|
versionCode = 2
|
||||||
versionName = "1.0"
|
versionName = "1.1"
|
||||||
|
|
||||||
testInstrumentationRunner = "androidx.test.runner.AndroidJUnitRunner"
|
testInstrumentationRunner = "androidx.test.runner.AndroidJUnitRunner"
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -3,6 +3,7 @@
|
|||||||
xmlns:tools="http://schemas.android.com/tools">
|
xmlns:tools="http://schemas.android.com/tools">
|
||||||
|
|
||||||
<uses-permission android:name="android.permission.POST_NOTIFICATIONS" />
|
<uses-permission android:name="android.permission.POST_NOTIFICATIONS" />
|
||||||
|
<uses-permission android:name="android.permission.RECORD_AUDIO" />
|
||||||
|
|
||||||
<application
|
<application
|
||||||
android:allowBackup="true"
|
android:allowBackup="true"
|
||||||
|
|||||||
@@ -1,4 +1,17 @@
|
|||||||
LCDPet Audio Credits
|
LCDPet Credits / Licenses
|
||||||
|
|
||||||
|
LCDPet Software License
|
||||||
|
|
||||||
|
LCDPet is free software licensed under the GNU General Public License v3.0.
|
||||||
|
|
||||||
|
You may run, study, share, and modify LCDPet under the terms of that license.
|
||||||
|
|
||||||
|
Source code:
|
||||||
|
https://codeberg.org/KrisKS/LCDPet
|
||||||
|
|
||||||
|
The complete license text is included in the source repository's LICENSE file.
|
||||||
|
|
||||||
|
AUDIO CREDITS
|
||||||
|
|
||||||
Weather Channel music:
|
Weather Channel music:
|
||||||
“Calm Piano Jazz Loop” by ispeakwaves
|
“Calm Piano Jazz Loop” by ispeakwaves
|
||||||
|
|||||||
@@ -0,0 +1,223 @@
|
|||||||
|
LCDPET HOW TO
|
||||||
|
|
||||||
|
THE GOAL
|
||||||
|
|
||||||
|
LCDPet is a virtual pet that changes over time while you care for it.
|
||||||
|
|
||||||
|
Your goal is to build the strongest bond possible while keeping your pet healthy, happy, rested, clean, and cared for.
|
||||||
|
|
||||||
|
Pay attention to your pet's needs, respond at the right time, and avoid relying on the same action again and again.
|
||||||
|
|
||||||
|
Regular care matters. Your relationship with the pet grows through the choices you make over time.
|
||||||
|
|
||||||
|
CARING FOR YOUR PET
|
||||||
|
|
||||||
|
Watch the status bars and messages to see how your pet is doing.
|
||||||
|
|
||||||
|
When your pet needs something, choose the action that fits the situation.
|
||||||
|
|
||||||
|
Good care improves the Care record and helps Bond grow.
|
||||||
|
|
||||||
|
Missed needs, indoor accidents, overfeeding, sickness, and other harmful situations can increase Neglect and leave your pet in worse condition.
|
||||||
|
|
||||||
|
INSIDE AND OUTSIDE
|
||||||
|
|
||||||
|
Tap the Inside / Outside line near the top of the screen to change locations.
|
||||||
|
|
||||||
|
Inside is where most care and social actions happen.
|
||||||
|
|
||||||
|
Outside is where your pet can walk and safely use the bathroom.
|
||||||
|
|
||||||
|
Some situations are safe outside but can cause trouble indoors, so location matters.
|
||||||
|
|
||||||
|
CARE
|
||||||
|
|
||||||
|
BATHE
|
||||||
|
|
||||||
|
Bathing reduces Dirtiness and removes stains left by indoor accidents.
|
||||||
|
|
||||||
|
A pet with a stronger Bond accepts bathing more easily and may become fully clean.
|
||||||
|
|
||||||
|
Bathing also helps with recovery when extreme Dirtiness caused sickness.
|
||||||
|
|
||||||
|
FEED
|
||||||
|
|
||||||
|
Feeding lowers the Hunger value.
|
||||||
|
|
||||||
|
A high Hunger value means your pet needs food.
|
||||||
|
|
||||||
|
A very low Hunger value means your pet is already full.
|
||||||
|
|
||||||
|
Feeding an already full pet too many times can cause sickness from overfeeding, so pay attention to Hunger before feeding.
|
||||||
|
|
||||||
|
NAP
|
||||||
|
|
||||||
|
Napping restores Energy and helps your pet recover.
|
||||||
|
|
||||||
|
If Energy reaches zero, your pet may eventually fall asleep on its own.
|
||||||
|
|
||||||
|
Choosing an indoor nap is safer and calmer than letting your pet collapse from exhaustion.
|
||||||
|
|
||||||
|
SOCIALIZE
|
||||||
|
|
||||||
|
PET
|
||||||
|
|
||||||
|
Petting improves Happiness and can help Bond grow.
|
||||||
|
|
||||||
|
PLAY
|
||||||
|
|
||||||
|
Playing improves Happiness.
|
||||||
|
|
||||||
|
It can also use Energy and increase Hunger, so check the status bars afterward.
|
||||||
|
|
||||||
|
Using Play repeatedly can eventually increase Boredom instead of helping.
|
||||||
|
|
||||||
|
TALK
|
||||||
|
|
||||||
|
Press and hold TALK while speaking or making sounds.
|
||||||
|
|
||||||
|
The microphone reacts only to how loud the sound is.
|
||||||
|
|
||||||
|
LCDPet does not recognize words, create transcripts, save recordings, or upload audio.
|
||||||
|
|
||||||
|
Release TALK to finish.
|
||||||
|
|
||||||
|
OUTSIDE
|
||||||
|
|
||||||
|
WALK
|
||||||
|
|
||||||
|
Walking restores Health.
|
||||||
|
|
||||||
|
It also uses Energy and can increase Hunger and Dirtiness.
|
||||||
|
|
||||||
|
A pet that is exhausted, Weak, or Sick may not be able to walk.
|
||||||
|
|
||||||
|
POTTY
|
||||||
|
|
||||||
|
The Potty value increases over time and after meals.
|
||||||
|
|
||||||
|
Use Potty while outside to safely reset it.
|
||||||
|
|
||||||
|
If the value reaches its limit indoors, your pet can have an accident.
|
||||||
|
|
||||||
|
An indoor accident leaves a stain, increases Dirtiness, and adds Neglect.
|
||||||
|
|
||||||
|
Take your pet outside before the Potty value reaches its limit.
|
||||||
|
|
||||||
|
WANTS
|
||||||
|
|
||||||
|
Your pet may occasionally ask for something specific.
|
||||||
|
|
||||||
|
A Want can ask for Play, Pet, Talk, a Snack, a Bath, or a trip Outside.
|
||||||
|
|
||||||
|
Completing the request before it disappears gives extra Bond.
|
||||||
|
|
||||||
|
An ignored Want eventually expires, but it does not immediately harm your pet.
|
||||||
|
|
||||||
|
A Snack is a small treat and does not affect Hunger like a full meal.
|
||||||
|
|
||||||
|
BOND
|
||||||
|
|
||||||
|
Bond shows the strength of your relationship with your pet.
|
||||||
|
|
||||||
|
It grows through steady care, meeting Wants, and responding to needs.
|
||||||
|
|
||||||
|
Some Wants give more Bond than ordinary actions.
|
||||||
|
|
||||||
|
Using one action too many times can slow or reverse your progress.
|
||||||
|
|
||||||
|
The strongest Bond comes from understanding your pet and giving it balanced care.
|
||||||
|
|
||||||
|
STATUS BARS
|
||||||
|
|
||||||
|
HAPPINESS
|
||||||
|
|
||||||
|
Shows your pet's current mood.
|
||||||
|
|
||||||
|
ENERGY
|
||||||
|
|
||||||
|
Used by active actions such as Play and Walk.
|
||||||
|
|
||||||
|
Low Energy means your pet needs rest.
|
||||||
|
|
||||||
|
HUNGER
|
||||||
|
|
||||||
|
A high value means your pet needs food.
|
||||||
|
|
||||||
|
A low value means your pet is full.
|
||||||
|
|
||||||
|
DIRTINESS
|
||||||
|
|
||||||
|
Can increase through walking, outdoor time, rain, and accidents.
|
||||||
|
|
||||||
|
High Dirtiness creates a need for a bath and can eventually cause sickness.
|
||||||
|
|
||||||
|
POTTY
|
||||||
|
|
||||||
|
Increases over time and after meals.
|
||||||
|
|
||||||
|
Use Potty outdoors before an indoor accident happens.
|
||||||
|
|
||||||
|
BOREDOM
|
||||||
|
|
||||||
|
Can increase when the same action is used too many times.
|
||||||
|
|
||||||
|
Change activities and pay attention to what your pet needs.
|
||||||
|
|
||||||
|
HEALTH, SICKNESS, AND RECOVERY
|
||||||
|
|
||||||
|
Ignoring serious needs can make your pet Sick or Weak.
|
||||||
|
|
||||||
|
Possible causes include starvation, overfeeding, and extreme Dirtiness.
|
||||||
|
|
||||||
|
Messages near the pet tell you what is wrong.
|
||||||
|
|
||||||
|
Correct the cause before expecting the pet to recover.
|
||||||
|
|
||||||
|
Feed a starving pet.
|
||||||
|
|
||||||
|
Do not continue feeding an overfed pet.
|
||||||
|
|
||||||
|
Bathe a pet that became sick from Dirtiness.
|
||||||
|
|
||||||
|
Keep a Weak or recovering pet indoors.
|
||||||
|
|
||||||
|
Recovery takes time and may also require rest, food, and safe indoor conditions.
|
||||||
|
|
||||||
|
PET RECORD
|
||||||
|
|
||||||
|
The Pet Record shows:
|
||||||
|
|
||||||
|
Bond
|
||||||
|
The strength of your relationship.
|
||||||
|
|
||||||
|
Age
|
||||||
|
How long you have cared for your pet.
|
||||||
|
|
||||||
|
Care
|
||||||
|
The positive care you have provided.
|
||||||
|
|
||||||
|
Neglect
|
||||||
|
Missed needs and harmful situations.
|
||||||
|
|
||||||
|
Age means time together. It is not a countdown to death.
|
||||||
|
|
||||||
|
CARE JOURNAL
|
||||||
|
|
||||||
|
The Care Journal records important events in your pet's life.
|
||||||
|
|
||||||
|
It can show completed needs, missed needs, Wants, and other major care moments.
|
||||||
|
|
||||||
|
Read it to see how your pet has been treated over time.
|
||||||
|
|
||||||
|
CREDITS AND LICENSES
|
||||||
|
|
||||||
|
Tap Credits / Licenses near the top of the screen to view acknowledgements, sound credits, and license information.
|
||||||
|
|
||||||
|
HOW TO AND CREDITS CONTROLS
|
||||||
|
|
||||||
|
CLOSE returns to your pet.
|
||||||
|
|
||||||
|
MOVE places the MOVE and CLOSE buttons in another corner.
|
||||||
|
|
||||||
|
When you move the buttons in How To, they also move in Credits / Licenses, and vice versa.
|
||||||
File diff suppressed because it is too large
Load Diff
@@ -33,6 +33,7 @@ data class LCDPetRecordSave(
|
|||||||
val isTradingInPet: Boolean = false,
|
val isTradingInPet: Boolean = false,
|
||||||
val isFindingNewPet: Boolean = false,
|
val isFindingNewPet: Boolean = false,
|
||||||
val tradeInProgress: Int = 0,
|
val tradeInProgress: Int = 0,
|
||||||
|
val tradeInStartedAtMs: Long = 0L,
|
||||||
val currentWant: String = "",
|
val currentWant: String = "",
|
||||||
val petName: String = "",
|
val petName: String = "",
|
||||||
val petTemplateId: String = "classic",
|
val petTemplateId: String = "classic",
|
||||||
@@ -65,6 +66,7 @@ private object LCDPetSaveKeys {
|
|||||||
val IS_TRADING_IN_PET = booleanPreferencesKey("is_trading_in_pet")
|
val IS_TRADING_IN_PET = booleanPreferencesKey("is_trading_in_pet")
|
||||||
val IS_FINDING_NEW_PET = booleanPreferencesKey("is_finding_new_pet")
|
val IS_FINDING_NEW_PET = booleanPreferencesKey("is_finding_new_pet")
|
||||||
val TRADE_IN_PROGRESS = intPreferencesKey("trade_in_progress")
|
val TRADE_IN_PROGRESS = intPreferencesKey("trade_in_progress")
|
||||||
|
val TRADE_IN_STARTED_AT_MS = longPreferencesKey("trade_in_started_at_ms")
|
||||||
val CURRENT_WANT = stringPreferencesKey("current_want")
|
val CURRENT_WANT = stringPreferencesKey("current_want")
|
||||||
val PET_NAME = stringPreferencesKey("pet_name")
|
val PET_NAME = stringPreferencesKey("pet_name")
|
||||||
val PET_TEMPLATE_ID = stringPreferencesKey("pet_template_id")
|
val PET_TEMPLATE_ID = stringPreferencesKey("pet_template_id")
|
||||||
@@ -99,6 +101,7 @@ val Context.lcdPetRecordSaveFlow: Flow<LCDPetRecordSave>
|
|||||||
isTradingInPet = preferences[LCDPetSaveKeys.IS_TRADING_IN_PET] ?: false,
|
isTradingInPet = preferences[LCDPetSaveKeys.IS_TRADING_IN_PET] ?: false,
|
||||||
isFindingNewPet = preferences[LCDPetSaveKeys.IS_FINDING_NEW_PET] ?: false,
|
isFindingNewPet = preferences[LCDPetSaveKeys.IS_FINDING_NEW_PET] ?: false,
|
||||||
tradeInProgress = preferences[LCDPetSaveKeys.TRADE_IN_PROGRESS] ?: 0,
|
tradeInProgress = preferences[LCDPetSaveKeys.TRADE_IN_PROGRESS] ?: 0,
|
||||||
|
tradeInStartedAtMs = preferences[LCDPetSaveKeys.TRADE_IN_STARTED_AT_MS] ?: 0L,
|
||||||
currentWant = preferences[LCDPetSaveKeys.CURRENT_WANT] ?: "",
|
currentWant = preferences[LCDPetSaveKeys.CURRENT_WANT] ?: "",
|
||||||
petName = preferences[LCDPetSaveKeys.PET_NAME] ?: "",
|
petName = preferences[LCDPetSaveKeys.PET_NAME] ?: "",
|
||||||
petTemplateId = preferences[LCDPetSaveKeys.PET_TEMPLATE_ID] ?: "classic",
|
petTemplateId = preferences[LCDPetSaveKeys.PET_TEMPLATE_ID] ?: "classic",
|
||||||
@@ -132,6 +135,7 @@ suspend fun Context.saveLCDPetStats(
|
|||||||
isTradingInPet: Boolean,
|
isTradingInPet: Boolean,
|
||||||
isFindingNewPet: Boolean,
|
isFindingNewPet: Boolean,
|
||||||
tradeInProgress: Int,
|
tradeInProgress: Int,
|
||||||
|
tradeInStartedAtMs: Long = 0L,
|
||||||
currentWant: String,
|
currentWant: String,
|
||||||
petName: String,
|
petName: String,
|
||||||
petTemplateId: String = "classic",
|
petTemplateId: String = "classic",
|
||||||
@@ -162,6 +166,7 @@ suspend fun Context.saveLCDPetStats(
|
|||||||
preferences[LCDPetSaveKeys.IS_TRADING_IN_PET] = isTradingInPet
|
preferences[LCDPetSaveKeys.IS_TRADING_IN_PET] = isTradingInPet
|
||||||
preferences[LCDPetSaveKeys.IS_FINDING_NEW_PET] = isFindingNewPet
|
preferences[LCDPetSaveKeys.IS_FINDING_NEW_PET] = isFindingNewPet
|
||||||
preferences[LCDPetSaveKeys.TRADE_IN_PROGRESS] = tradeInProgress
|
preferences[LCDPetSaveKeys.TRADE_IN_PROGRESS] = tradeInProgress
|
||||||
|
preferences[LCDPetSaveKeys.TRADE_IN_STARTED_AT_MS] = tradeInStartedAtMs
|
||||||
preferences[LCDPetSaveKeys.CURRENT_WANT] = currentWant
|
preferences[LCDPetSaveKeys.CURRENT_WANT] = currentWant
|
||||||
preferences[LCDPetSaveKeys.PET_NAME] = petName
|
preferences[LCDPetSaveKeys.PET_NAME] = petName
|
||||||
preferences[LCDPetSaveKeys.PET_TEMPLATE_ID] = petTemplateId
|
preferences[LCDPetSaveKeys.PET_TEMPLATE_ID] = petTemplateId
|
||||||
|
|||||||
@@ -1,21 +1,8 @@
|
|||||||
package today.notfeelingit.lcdpet.ui.theme
|
package today.notfeelingit.lcdpet.ui.theme
|
||||||
|
|
||||||
import android.app.Activity
|
|
||||||
import android.os.Build
|
|
||||||
import androidx.compose.foundation.isSystemInDarkTheme
|
|
||||||
import androidx.compose.material3.MaterialTheme
|
import androidx.compose.material3.MaterialTheme
|
||||||
import androidx.compose.material3.darkColorScheme
|
|
||||||
import androidx.compose.material3.dynamicDarkColorScheme
|
|
||||||
import androidx.compose.material3.dynamicLightColorScheme
|
|
||||||
import androidx.compose.material3.lightColorScheme
|
import androidx.compose.material3.lightColorScheme
|
||||||
import androidx.compose.runtime.Composable
|
import androidx.compose.runtime.Composable
|
||||||
import androidx.compose.ui.platform.LocalContext
|
|
||||||
|
|
||||||
private val DarkColorScheme = darkColorScheme(
|
|
||||||
primary = Purple80,
|
|
||||||
secondary = PurpleGrey80,
|
|
||||||
tertiary = Pink80
|
|
||||||
)
|
|
||||||
|
|
||||||
private val LightColorScheme = lightColorScheme(
|
private val LightColorScheme = lightColorScheme(
|
||||||
primary = Purple40,
|
primary = Purple40,
|
||||||
@@ -35,23 +22,10 @@ private val LightColorScheme = lightColorScheme(
|
|||||||
|
|
||||||
@Composable
|
@Composable
|
||||||
fun LCDPetTheme(
|
fun LCDPetTheme(
|
||||||
darkTheme: Boolean = isSystemInDarkTheme(),
|
|
||||||
// Dynamic color is available on Android 12+
|
|
||||||
dynamicColor: Boolean = true,
|
|
||||||
content: @Composable () -> Unit
|
content: @Composable () -> Unit
|
||||||
) {
|
) {
|
||||||
val colorScheme = when {
|
|
||||||
dynamicColor && Build.VERSION.SDK_INT >= Build.VERSION_CODES.S -> {
|
|
||||||
val context = LocalContext.current
|
|
||||||
if (darkTheme) dynamicDarkColorScheme(context) else dynamicLightColorScheme(context)
|
|
||||||
}
|
|
||||||
|
|
||||||
darkTheme -> DarkColorScheme
|
|
||||||
else -> LightColorScheme
|
|
||||||
}
|
|
||||||
|
|
||||||
MaterialTheme(
|
MaterialTheme(
|
||||||
colorScheme = colorScheme,
|
colorScheme = LightColorScheme,
|
||||||
typography = Typography,
|
typography = Typography,
|
||||||
content = content
|
content = content
|
||||||
)
|
)
|
||||||
|
|||||||
Reference in New Issue
Block a user