diff --git a/Assets/Memo.txt b/Assets/Memo.txt index e0ed3b3..d4ac7b5 100644 --- a/Assets/Memo.txt +++ b/Assets/Memo.txt @@ -28,10 +28,7 @@ //////////////////////////////////////////////////////////////////////////////////////////////////// -서브 미션 +광제 광고 제거 앨범 수집 목록 -데이터 저장, 불러오기 (구글 플레이센터로 변경) - - -광고 시청 횟수는3회 (딜레이 없음) -광고 시청 3회 모두 소진할 경우, 1시간마다 1개씩 광고 기회 충전 +세이브 데이터 암호화 +데이터 저장, 불러오기 (구글 플레이센터로 변경) \ No newline at end of file diff --git a/Assets/Scripts/UI/GamePanel/GamePanel_Extension.cs b/Assets/Scripts/UI/GamePanel/GamePanel_Extension.cs index 2469371..8ed67c5 100644 --- a/Assets/Scripts/UI/GamePanel/GamePanel_Extension.cs +++ b/Assets/Scripts/UI/GamePanel/GamePanel_Extension.cs @@ -4,8 +4,10 @@ using System; using System.Collections; using System.Collections.Generic; using System.Linq; +using System.Reflection; using System.Runtime.InteropServices; using UnityEngine; +using Random = UnityEngine.Random; public class CardTypeComparer : IComparer { @@ -584,7 +586,7 @@ public partial class GamePanel : MonoBehaviour MissionOpenPopup_Main.MissionCards.All(card => _lstPlayerScoreCards.Contains(card))) { AddMultiplyType(EScoreMutiplyType.MainMission); - ShowMainMissionPopup = MissionSuccessPopup.isMain = true; + ShowMainMissionPopup = true; if (m_MissionSuccessPopup == null) { string path = ResourceManager.PREFAB_PATH + "Popups/"; @@ -594,8 +596,125 @@ public partial class GamePanel : MonoBehaviour } } // 서브 미션 체크 - if (CurSubMission != eSubMission.Max) + if (CurSubMission != eSubMission.Max && !ShowSubMissionPopup) { + List randomCards = null; + bool success = false; + + switch (CurSubMission) + { + case eSubMission.Dobule3: + if (_lstPlayerScoreCards.Count(card => MissionOpenPopup_Sub.eSubMissionDobule3.Contains(card)) >= 3) + { + success = true; + + // 교집합 구하기 + var validCards = _lstPlayerScoreCards + .Where(card => MissionOpenPopup_Sub.eSubMissionDobule3.Contains(card)) + .ToList(); + + // 랜덤으로 3개 뽑기 + randomCards = validCards + .OrderBy(c => Random.value) + .Take(3) + .ToList(); + } + break; + + case eSubMission.YulGgeut3: + if (_lstPlayerScoreCards.Count(card => MissionOpenPopup_Sub.eSubMissionYulGgeut3.Contains(card)) >= 3) + { + success = true; + + var validCards = _lstPlayerScoreCards + .Where(card => MissionOpenPopup_Sub.eSubMissionYulGgeut3.Contains(card)) + .ToList(); + + randomCards = validCards + .OrderBy(c => Random.value) + .Take(3) + .ToList(); + } + break; + + case eSubMission.Ddee3: + if (_lstPlayerScoreCards.Count(card => MissionOpenPopup_Sub.eSubMissionDdee3.Contains(card)) >= 3) + { + success = true; + + var validCards = _lstPlayerScoreCards + .Where(card => MissionOpenPopup_Sub.eSubMissionDdee3.Contains(card)) + .ToList(); + + randomCards = validCards + .OrderBy(c => Random.value) + .Take(3) + .ToList(); + } + break; + + case eSubMission.Gwang3: + if (_lstPlayerScoreCards.Count(card => MissionOpenPopup_Sub.eSubMissionGwang3.Contains(card)) >= 3) + { + success = true; + + var validCards = _lstPlayerScoreCards + .Where(card => MissionOpenPopup_Sub.eSubMissionGwang3.Contains(card)) + .ToList(); + + randomCards = validCards + .OrderBy(c => Random.value) + .Take(3) + .ToList(); + } + break; + + case eSubMission.Be3Gwang: + bool hasDec = _lstPlayerScoreCards.Contains(ECardType.Dec_Ghwang); + if (hasDec) + { + int otherCount = _lstPlayerScoreCards + .Count(c => MissionOpenPopup_Sub.eSubMissionBe3Gwang.Contains(c) && c != ECardType.Dec_Ghwang); + + if (otherCount >= 2) + { + success = true; + + var validCards = _lstPlayerScoreCards + .Where(c => MissionOpenPopup_Sub.eSubMissionBe3Gwang.Contains(c)) + .ToList(); + + // 반드시 Dec_Ghwang 포함 + 나머지 2개 랜덤 + var decCard = new List { ECardType.Dec_Ghwang }; + var others = validCards + .Where(c => c != ECardType.Dec_Ghwang) + .OrderBy(c => Random.value) + .Take(2) + .ToList(); + + randomCards = decCard.Concat(others).ToList(); + } + } + break; + } + + // 성공 처리 공통부 + if (success) + { + ShowSubMissionPopup = true; + + if (m_MissionSuccessPopup == null) + { + string path = ResourceManager.PREFAB_PATH + "Popups/"; + m_MissionSuccessPopup = Instantiate( + Resources.Load(path + "MissionSuccessPopup"), + GameManager.UI.PopupCanvasTransform + ); + } + + m_MissionSuccessPopup.Set(randomCards); + AddMultiplyType(EScoreMutiplyType.SubMission); + } } switch (scoreType) diff --git a/Assets/Scripts/UI/Popup/Mission/MissionOpenPopup_Sub.cs b/Assets/Scripts/UI/Popup/Mission/MissionOpenPopup_Sub.cs index e187264..a298e2d 100644 --- a/Assets/Scripts/UI/Popup/Mission/MissionOpenPopup_Sub.cs +++ b/Assets/Scripts/UI/Popup/Mission/MissionOpenPopup_Sub.cs @@ -1,4 +1,5 @@ using CodeJay.Enum; +using System.Collections.Generic; using TMPro; using UnityEngine; @@ -30,4 +31,58 @@ public class MissionOpenPopup_Sub : MonoBehaviour return ""; } + + public static List eSubMissionDobule3 = new List + { + ECardType.Dec_Double, + ECardType.Nov_Double, + ECardType.Bonus_1, + ECardType.Bonus_2, + ECardType.Bonus_3 + }; + + public static List eSubMissionYulGgeut3 = new List + { + ECardType.Feb_Bird, + ECardType.Apr_Bird, + ECardType.May_Yulkkeut, + ECardType.Jun_Yulkkeut, + ECardType.Jul_Yulkkeut, + ECardType.Aug_Bird, + ECardType.Sep_Yulkkeut, + ECardType.Oct_Yulkkeut, + ECardType.Nov_Yulgget + }; + + public static List eSubMissionDdee3 = new List + { + ECardType.Jan_Hongdan, + ECardType.Feb_Hongdan, + ECardType.Mar_Hongdan, + ECardType.Apr_Chodan, + ECardType.May_Chodan, + ECardType.Jun_Chungdan, + ECardType.Jul_Chodan, + ECardType.Sep_Chungdan, + ECardType.Oct_Chungdan, + ECardType.Nov_Tee, + }; + + public static List eSubMissionGwang3 = new List + { + ECardType.Jan_Ghwang, + ECardType.Mar_Ghwang, + ECardType.Aug_Ghwang, + ECardType.Nov_Ghwang, + ECardType.Dec_Ghwang + }; + + public static List eSubMissionBe3Gwang = new List + { + ECardType.Jan_Ghwang, + ECardType.Mar_Ghwang, + ECardType.Aug_Ghwang, + ECardType.Nov_Ghwang, + ECardType.Dec_Ghwang + }; } \ No newline at end of file diff --git a/Assets/Scripts/UI/Popup/Mission/MissionSuccessPopup_Set.cs b/Assets/Scripts/UI/Popup/Mission/MissionSuccessPopup_Set.cs index 5cd17c6..84e86d2 100644 --- a/Assets/Scripts/UI/Popup/Mission/MissionSuccessPopup_Set.cs +++ b/Assets/Scripts/UI/Popup/Mission/MissionSuccessPopup_Set.cs @@ -1,14 +1,13 @@ +using CodeJay.Enum; +using System.Collections.Generic; + public class MissionSuccessPopup_Set : uScrollViewMgr { - private void OnEnable() + public void Set(List lst) { - if (MissionSuccessPopup.isMain) - { - Set_ScrollView(MissionOpenPopup_Main.MissionCards); - } + if (lst != null) + Set_ScrollView(lst); else - { - CardBase_AllOff(); - } + Set_ScrollView(MissionOpenPopup_Main.MissionCards); } } \ No newline at end of file diff --git a/Assets/Scripts/UI/Popup/MissionSuccessPopup.cs b/Assets/Scripts/UI/Popup/MissionSuccessPopup.cs index 3435c68..3d8777c 100644 --- a/Assets/Scripts/UI/Popup/MissionSuccessPopup.cs +++ b/Assets/Scripts/UI/Popup/MissionSuccessPopup.cs @@ -1,21 +1,23 @@ +using CodeJay.Enum; using System.Collections; +using System.Collections.Generic; using TMPro; using UnityEngine; public class MissionSuccessPopup : MonoBehaviour { - public static bool isMain; - public TextMeshProUGUI t_mission; - public void Set() + public void Set(List cards = null) { gameObject.SetActive(true); GameManager.Sound.PlaySFX(ESFXType.Open_Popup); StartCoroutine(Co_Off()); - t_mission.text = isMain ? $"메인미션 x{GamePanel.Instance.dic_missionRate[GamePanel.Instance.CurMission]}" : - $"서브미션 x{GamePanel.Instance.dic_submisstionRate[GamePanel.Instance.CurSubMission]}"; + t_mission.text = cards == null ? $"메인미션 x{GamePanel.Instance.dic_missionRate[GamePanel.Instance.CurMission]}" : + $"서브미션 x{GamePanel.Instance.dic_submisstionRate[GamePanel.Instance.CurSubMission]}"; + + GetComponent().Set(cards); } IEnumerator Co_Off()