서브 미션

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.Generic;
using System.Linq;
using System.Reflection;
using System.Runtime.InteropServices;
using UnityEngine;
using Random = UnityEngine.Random;
public class CardTypeComparer : IComparer<ECardType>
{
@ -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<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)

View File

@ -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<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
{
private void OnEnable()
{
if (MissionSuccessPopup.isMain)
public void Set(List<ECardType> lst)
{
if (lst != null)
Set_ScrollView(lst);
else
Set_ScrollView(MissionOpenPopup_Main.MissionCards);
}
else
{
CardBase_AllOff();
}
}
}

View File

@ -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<ECardType> 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]}" :
t_mission.text = cards == null ? $"메인미션 x{GamePanel.Instance.dic_missionRate[GamePanel.Instance.CurMission]}" :
$"서브미션 x{GamePanel.Instance.dic_submisstionRate[GamePanel.Instance.CurSubMission]}";
GetComponent<MissionSuccessPopup_Set>().Set(cards);
}
IEnumerator Co_Off()