Files
DeviantMobile-Rohan/Assets/Scripts/Screens/ProfileScreen.cs

78 lines
2.4 KiB
C#

using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.UI;
using TMPro;
public class ProfileScreen : MonoBehaviour
{
public LevelSystem levelSystem;
public TextMeshProUGUI levelText;
public TextMeshProUGUI xpText;
public Image profilePhoto;
public Button changePhotoButton;
public Slider xpSlider;
private void Start()
{
UpdateLevelDisplay();
changePhotoButton.onClick.AddListener(ChangePhotoButtonClick);
LoadProfilePhoto();
}
private void UpdateLevelDisplay()
{
int currentLevel = levelSystem.GetCurrentLevel();
int currentXP = levelSystem.GetCurrentXP();
int totalXP = levelSystem.GetTotalXPNeededForLevel(currentLevel);
RankSystem rankSystem = new RankSystem();
rankSystem.GetRank(currentLevel);
Debug.Log("Player Rank: " + rankSystem.GetRank(currentLevel));
levelText.text = "Level " + currentLevel.ToString();
xpText.text = currentXP.ToString() + "/" + totalXP.ToString();
xpSlider.maxValue = totalXP;
xpSlider.value = currentXP;
}
public void ChangePhotoButtonClick()
{
// Open a file browser to let the user select an image file
#if UNITY_EDITOR
string path = UnityEditor.EditorUtility.OpenFilePanel("Select Profile Photo", "", "png,jpg,jpeg");
// Load the image into a texture
byte[] fileData = System.IO.File.ReadAllBytes(path);
Texture2D texture = new Texture2D(2, 2);
texture.LoadImage(fileData);
// Set the profile photo to the loaded texture
profilePhoto.sprite = Sprite.Create(texture, new Rect(0, 0, texture.width, texture.height), new Vector2(0.5f, 0.5f));
// Save the image to a file on disk
string savePath = Application.persistentDataPath + "/profile_photo.png";
System.IO.File.WriteAllBytes(savePath, fileData);
#endif
}
private void LoadProfilePhoto()
{
string path = Application.persistentDataPath + "/profile_photo.png";
if (System.IO.File.Exists(path))
{
byte[] fileData = System.IO.File.ReadAllBytes(path);
Texture2D texture = new Texture2D(2, 2);
texture.LoadImage(fileData);
profilePhoto.sprite = Sprite.Create(texture, new Rect(0, 0, texture.width, texture.height), new Vector2(0.5f, 0.5f));
}
}
}