void OnBecameVisible() { MutableDataWellapadTask task = WellapadMissionController.Instance.GetTask(minigameTaskId); if (task != null && task.isReward == RewardStatuses.Unclaimed) { notifier.SetActive(true); } }
/// <summary> /// Refreshs check. /// Function that checks to see if the wellapad missions /// list should be refreshed. If it should, it will /// delete the current save data. /// </summary> public void RefreshCheck() { //do not refresh wellapad task for lite version // if(VersionManager.IsLite()) return; DateTime now = LgDateTime.GetTimeNow(); TimeSpan sinceCreated = now - DataManager.Instance.GameData.Wellapad.DateMissionsCreated; // the list needs to be refreshed if it has been more than 12 hours from creation OR the creation time frame (morning/evening) // is different than the current time frame (morning/evening) DateTime dateMissionsCreated = DataManager.Instance.GameData.Wellapad.DateMissionsCreated; bool IsRefresh = sinceCreated.TotalHours >= 12 || PlayPeriodLogic.GetTimeFrame(now) != PlayPeriodLogic.GetTimeFrame(dateMissionsCreated); //bool IsRefresh = needMission; // alert...if the user has not finished the last tutorial, no matter what, don't refresh /*if(!DataManager.Instance.GameData.Tutorial.AreTutorialsFinished()) * IsRefresh = false;*/ // if we have to refresh, just delete our data...the missions list will take it from there if (IsRefresh) { //Before reseting mission. Go through current mission and send failed tasks to analytics server foreach (KeyValuePair <string, MutableDataWellapadTask> taskList in DataManager.Instance.GameData.Wellapad.CurrentTasks) { MutableDataWellapadTask _task = taskList.Value; //task is incomplete if (_task.Completed == WellapadTaskCompletionStates.Uncompleted) { Analytics.Instance.WellapadTaskEvent(Analytics.TASK_STATUS_FAIL, _task.TaskID, _task.TaskID); if (_task.TaskID == "DailyInhaler") { Analytics.Instance.DidUseInhaler(false); } } } DataManager.Instance.GameData.Wellapad.ResetMissions(); //AddDefaultMissions(); // have the screens of the wellapad refresh before we send out the event below, because we want to make sure the // missions screen is active //WellapadUIManager.Instance.RefreshScreen(); // send event if (OnMissionsRefreshed != null) { OnMissionsRefreshed(this, EventArgs.Empty); } IsRefresh = false; } }
private MiniPetRetentionPet retentionScript; // Reference to minipet logic public void InitializeContent(string taskID, MiniPetRetentionPet retentionScript) { this.retentionScript = retentionScript; rewardButton.SetActive(false); if (DataManager.Instance.GameData.Wellapad.CurrentTasks.ContainsKey("DailyInhaler")) { List <MutableDataWellapadTask> listTasks = WellapadMissionController.Instance.GetTaskGroup("TutorialPart1"); task = listTasks[0]; ImmutableDataWellapadTask missionTask = DataLoaderWellapadTasks.GetTask(task.TaskID); SetCheckboxSprite(true, slash1); task = listTasks[1]; SetCheckboxSprite(true, slash2); ImmutableDataWellapadTask missionTask2 = DataLoaderWellapadTasks.GetTask(task.TaskID); mission1Localize.text = Localization.Localize("Task_" + missionTask.GetTaskID()); mission2Localize.text = Localization.Localize("Task_" + missionTask2.GetTaskID()); mission3Localize.gameObject.SetActive(false); mission4Localize.gameObject.SetActive(false); if (WellapadMissionController.Instance.GetTaskStatus(listTasks[0]) == WellapadTaskCompletionStates.Completed && WellapadMissionController.Instance.GetTaskStatus(listTasks[1]) == WellapadTaskCompletionStates.Completed) { rewardButton.SetActive(true); GameObject peb = MiniPetManager.Instance.MiniPetTable["MiniPet0"]; rewardButton.GetComponent <Button>().onClick.AddListener(() => peb.GetComponent <MiniPetRetentionPet>().OnTurnInButton()); } } else { // Debug.Log(DataManager.Instance.GameData.Wellapad.CurrentTasks[taskID].RewardStatus); if (DataManager.Instance.GameData.Wellapad.CurrentTasks[taskID].isReward == RewardStatuses.Unclaimed || DataManager.Instance.GameData.Wellapad.CurrentTasks[taskID].isReward == RewardStatuses.Unearned) { //Debug.Log(taskID); List <MutableDataWellapadTask> listTasks = WellapadMissionController.Instance.GetTaskGroup("Critical"); task = listTasks[0]; SetCheckboxSprite(true, slash1); ImmutableDataWellapadTask missionTask = DataLoaderWellapadTasks.GetTask(task.TaskID); rewardButton.GetComponent <LgWorldButtonMessage>().target = MiniPetManager.Instance.MiniPetTable["MiniPet0"]; task = listTasks[1]; SetCheckboxSprite(true, slash2); ImmutableDataWellapadTask missionTask2 = DataLoaderWellapadTasks.GetTask(task.TaskID); task = listTasks[2]; SetCheckboxSprite(true, slash3); ImmutableDataWellapadTask missionTask3 = DataLoaderWellapadTasks.GetTask(task.TaskID); if (WellapadMissionController.Instance.GetTaskStatus(listTasks[0]) == WellapadTaskCompletionStates.Completed && WellapadMissionController.Instance.GetTaskStatus(listTasks[1]) == WellapadTaskCompletionStates.Completed && WellapadMissionController.Instance.GetTaskStatus(listTasks[2]) == WellapadTaskCompletionStates.Completed) { rewardButton.SetActive(true); } mission1Localize.text = Localization.Localize("Task_" + missionTask.GetTaskID()); mission2Localize.text = Localization.Localize("Task_" + missionTask2.GetTaskID()); mission3Localize.text = Localization.Localize("Task_" + missionTask3.GetTaskID()); mission4Localize.gameObject.SetActive(false); } } }
public void SetTask(string miniPetID, MutableDataWellapadTask Task) { if (MiniPetProgress.ContainsKey(miniPetID)) { MiniPetProgress[miniPetID].Task = Task; } else { Debug.LogError("Can not find minipet in progress dictionary " + miniPetID); } }
//--------------------------------------------------- // CreateMission() // Given a mission type, this function will add // entries to the Wellapad for the mission; the mission // reward, and tasks. //--------------------------------------------------- private void CreateMission(string missionType) { // find the available tasks for the mission and add them MutableDataWellapadTask task = WellapadMissionController.Instance.GetTask(missionType); GameObject goTask = GameObjectUtils.AddChild(goGrid, prefabTask); SetNameForGrid(goTask); // init this task UI with the task itself goTask.GetComponent <WellapadTaskUI>().Init(task); }
//--------------------------------------------------- // Init() //--------------------------------------------------- public void Init(MutableDataWellapadTask task) { // cache the task this.task = task; // set the description for this task SetDesc(); // set the checkbox sprite appropriately SetCheckboxSprite(false); // listen for various messages WellapadUIManager.Instance.OnTweenDone += OnTweenDone; // whent he ui finishes tweening }
private void TurnInMission() { if (isFinishEating) { MutableDataWellapadTask task = WellapadMissionController.Instance.GetTask(minigameTaskId); if (task != null && task.isReward == RewardStatuses.Unclaimed) { // Claim the reward MiniPetManager.Instance.IncreaseXp(minipetId); MiniPetGameMasterUIController gameMasterUI = (MiniPetGameMasterUIController)MiniPetHUDUIManager.Instance.SelectedMiniPetContentUIScript; WellapadMissionController.Instance.ClaimReward(minigameTaskId, rewardObject: gameMasterUI.GetRewardButton()); WellapadMissionController.Instance.RefreshCheck(); gameMasterUI.HideRewardButton(); } } }
private MiniPetGameMaster gameMasterScript; // Reference to minipet logic public void InitializeContent(string taskID, MinigameTypes type, MiniPetGameMaster gameMasterScript) { this.gameMasterScript = gameMasterScript; task = WellapadMissionController.Instance.GetTask(taskID); ImmutableDataWellapadTask missionTask = DataLoaderWellapadTasks.GetTask(task.TaskID); string desc = missionTask.GetText(); if (task.Amount > 0) { desc = String.Format(desc, task.Amount); } label.text = desc; spriteIcon.sprite = SpriteCacheManager.GetSprite("mapIcons" + type.ToString()); rewardButton.SetActive(false); SetCheckboxSprite(true); }
/// <summary> /// This function will return true if at least one /// mission the user has is either unclaimed or /// unearned reward. /// </summary> /// <returns><c>true</c> if this instance has active tasks; otherwise, <c>false</c>.</returns> public bool HasActiveTasks() { // start off assuming inactive bool isActive = false; // loop through all missions and check their reward status foreach (KeyValuePair <string, MutableDataWellapadTask> task in DataManager.Instance.GameData.Wellapad.CurrentTasks) { MutableDataWellapadTask thisTask = task.Value; if (thisTask.isReward == RewardStatuses.Unearned || thisTask.isReward == RewardStatuses.Unclaimed) { isActive = true; } } return(isActive); }
public override void FinishEating() { if (!isFinishEating) { base.FinishEating(); isFinishEating = true; miniPetSpeechAI.BeQuiet(); miniPetSpeechAI.ShowChallengeMsg(minigameType); minigameTaskId = PickMinigameMissionKey(minigameType); WellapadMissionController.Instance.AddTask(minigameTaskId); MutableDataWellapadTask task = WellapadMissionController.Instance.GetTask(minigameTaskId); DataManager.Instance.GameData.MiniPets.SetTask(minipetId, task); OpenGameMasterContent(); } MiniPetHUDUIManager.Instance.CheckStoreButtonPulse(); }
/// <summary> /// This function was called because some task in /// missionID was just completed, so we need to see /// if that mission's reward needs a status update. This /// is kind of heavy handed, but I'm not sure how else /// to do it at the moment. /// Note that this doesn't actually effect the UI...it /// just keeps our internal state correct. It's done /// this way because our save system needs ot save /// primitives. /// </summary> /// <param name="taskID">Mission ID.</param> private void RewardCheck(string taskID) { // do some legality checks // mission exists if (!DataManager.Instance.GameData.Wellapad.CurrentTasks.ContainsKey(taskID)) { Debug.LogError("Reward is attempted to be check for an illegal mission: " + taskID); return; } // reward is currently unearned MutableDataWellapadTask task = DataManager.Instance.GameData.Wellapad.CurrentTasks[taskID]; if (task.Category == MiniGameCategory.Critical) { foreach (KeyValuePair <string, MutableDataWellapadTask> _task in DataManager.Instance.GameData.Wellapad.CurrentTasks) { if (_task.Value.Category == MiniGameCategory.Critical) { if (_task.Value.isReward == RewardStatuses.Unearned) { return; } } } } else { if (task.isReward != RewardStatuses.Unclaimed) { Debug.LogError("Reward check revealed illegal state for reward for mission " + taskID); return; } } // if we get here it means that all tasks in the mission are complete -- the reward is now unclaimed task.isReward = RewardStatuses.Unclaimed; }
public List <MutableDataWellapadTask> GetTaskGroup(string missionID) { List <MutableDataWellapadTask> listTask = new List <MutableDataWellapadTask>(); if (missionID == "TutorialPart1") { MutableDataWellapadTask task = new MutableDataWellapadTask(DataLoaderWellapadTasks.GetTask("DailyInhaler")); listTask.Add(task); MutableDataWellapadTask task2 = new MutableDataWellapadTask(DataLoaderWellapadTasks.GetTask("FightMonster")); listTask.Add(task2); } if (missionID == "Critical") { foreach (MutableDataWellapadTask task in DataManager.Instance.GameData.Wellapad.CurrentTasks.Values) { if (task.Category == MiniGameCategory.Critical) { listTask.Add(task); } } } return(listTask); }
/// <summary> /// Gets the task status. Returns whether the user has completed the incoming /// task or not. /// </summary> /// <returns>The task status.</returns> /// <param name="task">Task.</param> public WellapadTaskCompletionStates GetTaskStatus(MutableDataWellapadTask task, bool bPop = false) { WellapadTaskCompletionStates status = WellapadTaskCompletionStates.Uncompleted; string taskID = task.TaskID; if (DataManager.Instance.GameData.Wellapad.CurrentTasks.ContainsKey(taskID) && DataManager.Instance.GameData.Wellapad.CurrentTasks.ContainsKey(taskID)) { status = DataManager.Instance.GameData.Wellapad.CurrentTasks[taskID].Completed; // if the status is recently completed and we are popping, "pop" it by setting it to just plain completed now if (bPop && status == WellapadTaskCompletionStates.RecentlyCompleted) { DataManager.Instance.GameData.Wellapad.CurrentTasks[taskID].Completed = WellapadTaskCompletionStates.Completed; } } else { Debug.LogError("Can't find task " + taskID + " in saved data"); } return(status); }