using System; using System.Globalization; using System.Collections; using System.Collections.Generic; using UnityEngine; using UnityEngine.UI; using System.Text; //Pretty much a copy of GetData... namespace PedometerU.Tests { public class GetGoals : MonoBehaviour { public Image background; private string[] items = { "circle_eye", "crazy_hair", "circle_head", "gap_mouth", "pig_nose", "crown" }; public Text goalText; public string currentDayStr = System.DateTime.Now.ToString("MM/dd/yyyy"); public string goalDayStr = System.DateTime.Now.ToString("MM/dd/yyyy"); public string prefKey; //Progress Bar... public float barDisplay; //current progress private Vector2 barPos; private Vector2 barSize = new Vector2(725, 39); //Pedometer private Pedometer pedometer; int userSteps; int userPoints; double userDistance; int stepsGoal = 100; public Text stepText; public Text pointsText; private int savedSteps; private int savedPoints; void OnStep (int steps, double distance) { userDistance = (distance * 3.28084); userSteps = steps + savedSteps; PlayerPrefs.SetInt("currentSteps",userSteps); stepText.text = userSteps.ToString () + "/" + stepsGoal.ToString(); userPoints = steps*5 + savedPoints; PlayerPrefs.SetInt("totalPoints",userPoints); pointsText.text = "Points: " + userPoints.ToString (); } private void OnDisable () { // Release the pedometer pedometer.Dispose(); pedometer = null; } //saved value from last session loads in on START //write usersteps + saved val to pref in ONSTEP void Start () { savedSteps = PlayerPrefs.GetInt("currentSteps"); savedPoints = PlayerPrefs.GetInt("totalPoints"); // Create a new pedometer pedometer = new Pedometer(OnStep); // Reset UI stepText.text = savedSteps.ToString () + "/" + stepsGoal.ToString(); if(PlayerPrefs.HasKey("totalPoints")) { pointsText.text = "Points: " + PlayerPrefs.GetInt("totalPoints").ToString (); } else { PlayerPrefs.SetInt("totalPoints", 0); pointsText.text = "Points: " + PlayerPrefs.GetInt("totalPoints").ToString (); } userSteps = savedSteps; userPoints = savedPoints; //OnStep(savedSteps, 0); Debug.Log(savedSteps); //goalText.text = prefKey; goalText.color = new Color(0f, 0f, 0f); Debug.Log(background.rectTransform.anchoredPosition.x.ToString() + " " + background.rectTransform.anchoredPosition.y.ToString()); barPos = new Vector2(background.transform.position.x, 2135 - background.transform.position.y); currentDayStr = System.DateTime.Now.ToString("MM/dd/yyyy"); goalDayStr = System.DateTime.Now.ToString("MM/dd/yyyy"); Debug.Log(goalDayStr); if(prefKey == "daily") savePersistantGoalDate("daily"); } //Texture the progress bar using these parameters public Texture2D emptyTex; public Texture2D fullTex; //on a button press? begin a goal? void startGoal() { } void savePersistantGoalDate(string key) { PlayerPrefs.SetString(key, goalDayStr); } bool checkNewDay(string key) { string checkDay = PlayerPrefs.GetString(key); if(checkDay == currentDayStr) return false; return true; } // void OnGUI() { //draw the background: GUI.BeginGroup(new Rect(barPos.x, barPos.y, barSize.x, barSize.y)); GUI.Box(new Rect(0,0, barSize.x, barSize.y), emptyTex); //draw the filled-in part: GUI.BeginGroup(new Rect(0,0, barSize.x * barDisplay, barSize.y)); GUI.Box(new Rect(0,0, barSize.x, barSize.y), fullTex); GUI.EndGroup(); GUI.EndGroup(); } void Update() { //needs current points counting toward this goal (daily?) //needs the total required points for this goal currentDayStr = System.DateTime.Now.ToString("MM/dd/yyyy"); //barDisplay = Time.time*0.05f; //put actual progress here (current/total) barDisplay = (float)userSteps/(float)stepsGoal; //failed to complete goal if(currentDayStr != goalDayStr) { Debug.Log(currentDayStr); Debug.Log(goalDayStr); Debug.Log("DAY HAS PASSED!!"); //make it so user dismisses the goal instead! //Destroy(this); //destroy the goal and set a new one? } //goal complete if(barDisplay >= 1.0f) { Debug.Log("Goal complete! +100pts!"); userSteps = 0; PlayerPrefs.SetInt("currentSteps", userSteps); savedSteps = 0; //OnStep(0,0); stepText.text = userSteps.ToString () + "/" + stepsGoal.ToString(); //destroy the goal and set a new one? savedPoints += stepsGoal*10; PlayerPrefs.SetInt("totalPoints", savedPoints); pointsText.text = "Points: " + PlayerPrefs.GetInt("totalPoints").ToString (); //Random item StringBuilder invList = new StringBuilder (); invList.Append(PlayerPrefs.GetString ("inventory")); invList.Append(items[(int)Math.Round(UnityEngine.Random.value*6.0f)]).Append(" "); PlayerPrefs.SetString ("inventory", invList.ToString()); } //only applies if "daily" goal if(prefKey == "daily") { if(checkNewDay(prefKey)) { Debug.Log("You failed your goal"); //not true if progress is actually complete! goalDayStr = currentDayStr; savePersistantGoalDate("daily"); } } } } }