diff --git a/ShakeAndCraft/app/build.gradle b/ShakeAndCraft/app/build.gradle index f67c62b..1f4959e 100644 --- a/ShakeAndCraft/app/build.gradle +++ b/ShakeAndCraft/app/build.gradle @@ -53,10 +53,9 @@ dependencies { androidTestImplementation 'androidx.test.ext:junit:1.1.5' androidTestImplementation 'androidx.test.espresso:espresso-core:3.5.1' implementation 'androidx.vectordrawable:vectordrawable:1.1.0' - - implementation "androidx.room:room-ktx:2.5.1" + implementation "androidx.room:room-runtime:2.5.1" kapt "androidx.room:room-compiler:2.5.1" - androidTestImplementation "androidx.room:room-testing:2.5.1" + implementation "androidx.room:room-ktx:2.5.1" //Retrofit implementation "com.squareup.retrofit2:retrofit:2.9.0" diff --git a/ShakeAndCraft/app/src/main/java/com/example/shakecraft/HomeFragment.kt b/ShakeAndCraft/app/src/main/java/com/example/shakecraft/HomeFragment.kt index 3725263..20265f2 100644 --- a/ShakeAndCraft/app/src/main/java/com/example/shakecraft/HomeFragment.kt +++ b/ShakeAndCraft/app/src/main/java/com/example/shakecraft/HomeFragment.kt @@ -1,10 +1,12 @@ package com.example.shakecraft - import android.os.Bundle +import android.text.Editable +import android.text.TextWatcher import androidx.fragment.app.Fragment import android.view.LayoutInflater import android.view.View import android.view.ViewGroup +import android.widget.EditText import android.widget.ImageView import android.widget.ProgressBar import android.widget.TextView @@ -14,9 +16,8 @@ import androidx.navigation.fragment.findNavController import com.example.shakecraft.model.Player - class HomeFragment : Fragment() { - private lateinit var pseudo : TextView + private lateinit var pseudoEditText : EditText private lateinit var progressbar : ProgressBar private lateinit var level : TextView private lateinit var rank : TextView @@ -27,20 +28,23 @@ class HomeFragment : Fragment() { private lateinit var buttonForge : ConstraintLayout private lateinit var playermage : ImageView private lateinit var equipeditem: ImageView + private lateinit var eventFishing: ImageView override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) } + override fun onCreateView( inflater: LayoutInflater, container: ViewGroup?, savedInstanceState: Bundle? ): View? { val currentPlayer = (activity as MainActivity).currentPlayer + val isRaining = (activity as MainActivity).isRaining val view = inflater.inflate(R.layout.fragment_home,container,false) // Initialize views - initializeViews(view, currentPlayer) + initializeViews(view, currentPlayer, isRaining) return view } @@ -50,8 +54,7 @@ class HomeFragment : Fragment() { val } }*/ - private fun initializeViews(view: View, currentPlayer : Player) { - pseudo = view.findViewById(R.id.pseudoTextView) + private fun initializeViews(view: View, currentPlayer : Player, isRaining : Boolean) { progressbar = view.findViewById(R.id.levelProgressBar) level = view.findViewById(R.id.levelTextView) rank = view.findViewById(R.id.rankTextView) @@ -60,6 +63,7 @@ class HomeFragment : Fragment() { playermage = view.findViewById(R.id.playerImage) buttonCollect = view.findViewById(R.id.buttonCollect) equipeditem = view.findViewById(R.id.equipedItemAttack) + eventFishing = view.findViewById(R.id.buttonFishing) buttonCollect.setOnClickListener{ findNavController().navigate(R.id.action_homeFragment_to_collectFragment, null, NavOptions.Builder().setPopUpTo(R.id.homeFragment, false).build()) } @@ -71,7 +75,6 @@ class HomeFragment : Fragment() { buttonForge.setOnClickListener{ findNavController().navigate(R.id.action_homeFragment_to_forgeFragment, null, NavOptions.Builder().setPopUpTo(R.id.homeFragment, false).build()) } - pseudo.text = currentPlayer.pseudo level.text = currentPlayer.level.toString() rank.text = currentPlayer.rank xp.text = currentPlayer.xp.toString() @@ -81,6 +84,32 @@ class HomeFragment : Fragment() { playermage.setImageResource(currentPlayer.image) if(currentPlayer.equipedItem?.type?.image != null) equipeditem.setImageResource( currentPlayer.equipedItem!!.type.image) + if(isRaining == true){ + eventFishing.visibility = View.VISIBLE + + } + + + pseudoEditText = view.findViewById(R.id.pseudoEditText) + + pseudoEditText.setText(currentPlayer.pseudo) + pseudoEditText.addTextChangedListener(object : TextWatcher { + override fun beforeTextChanged(s: CharSequence?, start: Int, count: Int, after: Int) { + /* + do nothing + */ + } + + override fun onTextChanged(s: CharSequence?, start: Int, before: Int, count: Int) { + /* + do nothing + */ + } + + override fun afterTextChanged(s: Editable?) { + currentPlayer.pseudo = s.toString() + } + }) } diff --git a/ShakeAndCraft/app/src/main/java/com/example/shakecraft/MainActivity.kt b/ShakeAndCraft/app/src/main/java/com/example/shakecraft/MainActivity.kt index 20c6e76..de17953 100644 --- a/ShakeAndCraft/app/src/main/java/com/example/shakecraft/MainActivity.kt +++ b/ShakeAndCraft/app/src/main/java/com/example/shakecraft/MainActivity.kt @@ -12,12 +12,20 @@ import androidx.navigation.findNavController import androidx.navigation.ui.NavigationUI import androidx.navigation.ui.setupWithNavController import com.example.shakecraft.data.Stub +import com.example.shakecraft.services.OpenWeatherMapService import com.google.android.material.bottomnavigation.BottomNavigationView +import kotlinx.coroutines.Dispatchers +import kotlinx.coroutines.GlobalScope +import kotlinx.coroutines.launch +import kotlinx.coroutines.withContext +import retrofit2.Retrofit +import retrofit2.converter.gson.GsonConverterFactory class MainActivity: AppCompatActivity() { var currentPlayer = Stub().load() + var isRaining = false @RequiresApi(Build.VERSION_CODES.R) @@ -40,6 +48,26 @@ class MainActivity: AppCompatActivity() { hideSystemUI() setContentView(R.layout.activity_main) + val apiKey = "85a2724ad38b3994c2b7ebe1d239bbff" + val cityName = "Clermont-Ferrand" + + val retrofit = Retrofit.Builder() + .baseUrl("https://api.openweathermap.org/data/2.5/") + .addConverterFactory(GsonConverterFactory.create()) + .build() + + val openWeatherMapService = retrofit.create(OpenWeatherMapService::class.java) + + GlobalScope.launch(Dispatchers.Main) { + val weatherResponse = withContext(Dispatchers.IO) { + openWeatherMapService.getCurrentWeather(cityName, apiKey) + } + + isRaining = + weatherResponse.weather.any { it.main.contains("rain", ignoreCase = true) } + + println(isRaining) + } bottomNav = findViewById(R.id.bottomNavigationView) val navController = findNavController(R.id.fragment) @@ -56,9 +84,12 @@ class MainActivity: AppCompatActivity() { } + } + + override fun onResume() { super.onResume() diff --git a/ShakeAndCraft/app/src/main/java/com/example/shakecraft/data/WeatherResponse.kt b/ShakeAndCraft/app/src/main/java/com/example/shakecraft/data/WeatherResponse.kt new file mode 100644 index 0000000..131320e --- /dev/null +++ b/ShakeAndCraft/app/src/main/java/com/example/shakecraft/data/WeatherResponse.kt @@ -0,0 +1,19 @@ +package com.example.shakecraft.data + +data class WeatherResponse( + val weather: List, + val info: Info +) + +data class Weather( + val id: Int, + val main: String, + val description: String, + val icon: String +) + +data class Info( + val temp: Double, + val feelsLike: Double, + val humidity: Int +) \ No newline at end of file diff --git a/ShakeAndCraft/app/src/main/java/com/example/shakecraft/model/Player.kt b/ShakeAndCraft/app/src/main/java/com/example/shakecraft/model/Player.kt index 3b6332e..2babcdf 100644 --- a/ShakeAndCraft/app/src/main/java/com/example/shakecraft/model/Player.kt +++ b/ShakeAndCraft/app/src/main/java/com/example/shakecraft/model/Player.kt @@ -2,7 +2,7 @@ package com.example.shakecraft.model import com.example.shakecraft.R -class Player(val pseudo: String, var xp: Int = 0) { +class Player(var pseudo: String, var xp: Int = 0) { var level: Int = 1 val image: Int = R.drawable.player_image var items: MutableList = mutableListOf() diff --git a/ShakeAndCraft/app/src/main/java/com/example/shakecraft/services/OpenWeatherMapService.kt b/ShakeAndCraft/app/src/main/java/com/example/shakecraft/services/OpenWeatherMapService.kt new file mode 100644 index 0000000..3298cb9 --- /dev/null +++ b/ShakeAndCraft/app/src/main/java/com/example/shakecraft/services/OpenWeatherMapService.kt @@ -0,0 +1,12 @@ +package com.example.shakecraft.services +import com.example.shakecraft.data.WeatherResponse +import retrofit2.http.GET +import retrofit2.http.Query + +interface OpenWeatherMapService { + @GET("weather") + suspend fun getCurrentWeather( + @Query("q") cityName: String, + @Query("appid") apiKey: String + ): WeatherResponse +} \ No newline at end of file diff --git a/ShakeAndCraft/app/src/main/res/drawable/event_message.png b/ShakeAndCraft/app/src/main/res/drawable/event_message.png new file mode 100644 index 0000000..b6f5047 Binary files /dev/null and b/ShakeAndCraft/app/src/main/res/drawable/event_message.png differ diff --git a/ShakeAndCraft/app/src/main/res/drawable/fishing_event.png b/ShakeAndCraft/app/src/main/res/drawable/fishing_event.png new file mode 100644 index 0000000..e60c749 Binary files /dev/null and b/ShakeAndCraft/app/src/main/res/drawable/fishing_event.png differ diff --git a/ShakeAndCraft/app/src/main/res/layout-land/fragment_home.xml b/ShakeAndCraft/app/src/main/res/layout-land/fragment_home.xml new file mode 100644 index 0000000..bf8a2c0 --- /dev/null +++ b/ShakeAndCraft/app/src/main/res/layout-land/fragment_home.xml @@ -0,0 +1,450 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/ShakeAndCraft/app/src/main/res/layout/activity_main.xml b/ShakeAndCraft/app/src/main/res/layout/activity_main.xml index 76dd3d8..86e0c84 100644 --- a/ShakeAndCraft/app/src/main/res/layout/activity_main.xml +++ b/ShakeAndCraft/app/src/main/res/layout/activity_main.xml @@ -27,7 +27,8 @@ android:id="@+id/fragment" android:name="androidx.navigation.fragment.NavHostFragment" android:layout_width="match_parent" - android:layout_height="725dp" + android:layout_height="match_parent" + android:layout_marginBottom="63dp" app:defaultNavHost="true" app:layout_constraintEnd_toEndOf="parent" app:layout_constraintStart_toStartOf="parent" diff --git a/ShakeAndCraft/app/src/main/res/layout/fragment_forge.xml b/ShakeAndCraft/app/src/main/res/layout/fragment_forge.xml index 3185d63..3230d29 100644 --- a/ShakeAndCraft/app/src/main/res/layout/fragment_forge.xml +++ b/ShakeAndCraft/app/src/main/res/layout/fragment_forge.xml @@ -14,20 +14,20 @@ android:layout_height="wrap_content" android:gravity="center" android:paddingTop="50dp" - android:paddingBottom="20dp" + android:paddingBottom="30dp" app:layout_constraintEnd_toEndOf="parent" app:layout_constraintStart_toStartOf="parent" app:layout_constraintTop_toTopOf="parent" - android:layout_marginBottom="20dp"> + app:layout_constraintBottom_toTopOf="@id/RecipeScroll"> - + app:layout_constraintBottom_toBottomOf="parent" + > + + - + + - + android:textSize="17sp" + android:textStyle="bold" /> + + + + - + + android:textSize="17sp" + android:textStyle="bold" /> + + android:layout_marginHorizontal="20dp" + android:overScrollMode="never" + tools:itemCount="3" + tools:listitem="@layout/list_recipe" /> + + + android:textSize="17sp" + android:textStyle="bold" /> + + android:layout_marginHorizontal="20dp" + android:overScrollMode="never" + tools:itemCount="3" + tools:listitem="@layout/list_recipe"/> @@ -149,7 +161,6 @@ - - + \ No newline at end of file diff --git a/ShakeAndCraft/app/src/main/res/layout/fragment_home.xml b/ShakeAndCraft/app/src/main/res/layout/fragment_home.xml index 0ac34be..e1be004 100644 --- a/ShakeAndCraft/app/src/main/res/layout/fragment_home.xml +++ b/ShakeAndCraft/app/src/main/res/layout/fragment_home.xml @@ -66,12 +66,11 @@ - @@ -357,7 +356,7 @@ android:id="@+id/textView5" android:layout_width="wrap_content" android:layout_height="wrap_content" - android:text="Craft ever more powerful tools." + android:text="Defeat boss to gain Mystic rewards." android:textColor="@color/grey_300" android:textSize="11sp" /> @@ -365,6 +364,51 @@ + + + + + + + + + + + + + + + + +