서브 미션

This commit is contained in:
Ino 2025-09-06 06:40:01 +09:00
parent 2436f4bd76
commit 7a62129e89
5 changed files with 193 additions and 21 deletions

View File

@ -28,10 +28,7 @@
//////////////////////////////////////////////////////////////////////////////////////////////////// ////////////////////////////////////////////////////////////////////////////////////////////////////
서브 미션 광제 광고 제거
앨범 수집 목록 앨범 수집 목록
세이브 데이터 암호화
데이터 저장, 불러오기 (구글 플레이센터로 변경) 데이터 저장, 불러오기 (구글 플레이센터로 변경)
광고 시청 횟수는3회 (딜레이 없음)
광고 시청 3회 모두 소진할 경우, 1시간마다 1개씩 광고 기회 충전

View File

@ -4,8 +4,10 @@ using System;
using System.Collections; using System.Collections;
using System.Collections.Generic; using System.Collections.Generic;
using System.Linq; using System.Linq;
using System.Reflection;
using System.Runtime.InteropServices; using System.Runtime.InteropServices;
using UnityEngine; using UnityEngine;
using Random = UnityEngine.Random;
public class CardTypeComparer : IComparer<ECardType> public class CardTypeComparer : IComparer<ECardType>
{ {
@ -584,7 +586,7 @@ public partial class GamePanel : MonoBehaviour
MissionOpenPopup_Main.MissionCards.All(card => _lstPlayerScoreCards.Contains(card))) MissionOpenPopup_Main.MissionCards.All(card => _lstPlayerScoreCards.Contains(card)))
{ {
AddMultiplyType(EScoreMutiplyType.MainMission); AddMultiplyType(EScoreMutiplyType.MainMission);
ShowMainMissionPopup = MissionSuccessPopup.isMain = true; ShowMainMissionPopup = true;
if (m_MissionSuccessPopup == null) if (m_MissionSuccessPopup == null)
{ {
string path = ResourceManager.PREFAB_PATH + "Popups/"; 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<ECardType> 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> { 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<MissionSuccessPopup>(path + "MissionSuccessPopup"),
GameManager.UI.PopupCanvasTransform
);
}
m_MissionSuccessPopup.Set(randomCards);
AddMultiplyType(EScoreMutiplyType.SubMission);
}
} }
switch (scoreType) switch (scoreType)

View File

@ -1,4 +1,5 @@
using CodeJay.Enum; using CodeJay.Enum;
using System.Collections.Generic;
using TMPro; using TMPro;
using UnityEngine; using UnityEngine;
@ -30,4 +31,58 @@ public class MissionOpenPopup_Sub : MonoBehaviour
return ""; return "";
} }
public static List<ECardType> eSubMissionDobule3 = new List<ECardType>
{
ECardType.Dec_Double,
ECardType.Nov_Double,
ECardType.Bonus_1,
ECardType.Bonus_2,
ECardType.Bonus_3
};
public static List<ECardType> eSubMissionYulGgeut3 = new List<ECardType>
{
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<ECardType> eSubMissionDdee3 = new List<ECardType>
{
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<ECardType> eSubMissionGwang3 = new List<ECardType>
{
ECardType.Jan_Ghwang,
ECardType.Mar_Ghwang,
ECardType.Aug_Ghwang,
ECardType.Nov_Ghwang,
ECardType.Dec_Ghwang
};
public static List<ECardType> eSubMissionBe3Gwang = new List<ECardType>
{
ECardType.Jan_Ghwang,
ECardType.Mar_Ghwang,
ECardType.Aug_Ghwang,
ECardType.Nov_Ghwang,
ECardType.Dec_Ghwang
};
} }

View File

@ -1,14 +1,13 @@
using CodeJay.Enum;
using System.Collections.Generic;
public class MissionSuccessPopup_Set : uScrollViewMgr public class MissionSuccessPopup_Set : uScrollViewMgr
{ {
private void OnEnable() public void Set(List<ECardType> lst)
{ {
if (MissionSuccessPopup.isMain) if (lst != null)
{ Set_ScrollView(lst);
Set_ScrollView(MissionOpenPopup_Main.MissionCards);
}
else else
{ Set_ScrollView(MissionOpenPopup_Main.MissionCards);
CardBase_AllOff();
}
} }
} }

View File

@ -1,21 +1,23 @@
using CodeJay.Enum;
using System.Collections; using System.Collections;
using System.Collections.Generic;
using TMPro; using TMPro;
using UnityEngine; using UnityEngine;
public class MissionSuccessPopup : MonoBehaviour public class MissionSuccessPopup : MonoBehaviour
{ {
public static bool isMain;
public TextMeshProUGUI t_mission; public TextMeshProUGUI t_mission;
public void Set() public void Set(List<ECardType> cards = null)
{ {
gameObject.SetActive(true); gameObject.SetActive(true);
GameManager.Sound.PlaySFX(ESFXType.Open_Popup); GameManager.Sound.PlaySFX(ESFXType.Open_Popup);
StartCoroutine(Co_Off()); StartCoroutine(Co_Off());
t_mission.text = isMain ? $"메인미션 x{GamePanel.Instance.dic_missionRate[GamePanel.Instance.CurMission]}" : t_mission.text = cards == null ? $"메인미션 x{GamePanel.Instance.dic_missionRate[GamePanel.Instance.CurMission]}" :
$"서브미션 x{GamePanel.Instance.dic_submisstionRate[GamePanel.Instance.CurSubMission]}"; $"서브미션 x{GamePanel.Instance.dic_submisstionRate[GamePanel.Instance.CurSubMission]}";
GetComponent<MissionSuccessPopup_Set>().Set(cards);
} }
IEnumerator Co_Off() IEnumerator Co_Off()