Add duty free systems and travel stage updates
This commit is contained in:
@@ -0,0 +1,178 @@
|
||||
using TMPro;
|
||||
using UnityEngine;
|
||||
using UnityEngine.UI;
|
||||
|
||||
public partial class GameFlowManager {
|
||||
#if UNITY_EDITOR || DEVELOPMENT_BUILD
|
||||
private void ShowDebugMenu() {
|
||||
EnsureDebugPreviewData();
|
||||
|
||||
gameplayActive = false;
|
||||
pendingStartGameplay = false;
|
||||
currentScreen = FlowScreen.DebugMenu;
|
||||
|
||||
EnsureOverlay();
|
||||
ClearOverlay();
|
||||
SetOverlayVisible(true);
|
||||
SetDefaultOverlayBackground();
|
||||
|
||||
AddTitle("디버그 메뉴");
|
||||
AddBody("기본 화면과 실전맵을 바로 확인합니다.\n단축키: 1~0, F1/F2");
|
||||
|
||||
AddDebugButton("1. 인트로", ShowDebugIntroPreview, new Vector2(-235f, -32f));
|
||||
AddDebugButton("2. 현재 맵 시작", ShowDebugGameStartPreview, new Vector2(-235f, -74f));
|
||||
AddDebugButton("3. 현재 출국 실패", delegate { ShowDebugResultPreview(false); }, new Vector2(-235f, -116f));
|
||||
AddDebugButton("4. 현재 출국 성공", delegate { ShowDebugResultPreview(true); }, new Vector2(-235f, -158f));
|
||||
AddDebugButton("5. 면세점", ShowDebugDutyFreeShopPreview, new Vector2(-235f, -200f));
|
||||
AddDebugButton("6. 지도", ShowDebugMapPreview, new Vector2(-235f, -242f));
|
||||
|
||||
AddDebugButton("7. 일본 게임시작", delegate { ShowDebugMapGameStartPreview(MapId.Japan); }, new Vector2(235f, -32f));
|
||||
AddDebugButton("8. 일본 출국성공", delegate { ShowDebugMapResultPreview(MapId.Japan, true); }, new Vector2(235f, -74f));
|
||||
AddDebugButton("9. 중국 게임시작", delegate { ShowDebugMapGameStartPreview(MapId.China); }, new Vector2(235f, -116f));
|
||||
AddDebugButton("0. 중국 출국성공", delegate { ShowDebugMapResultPreview(MapId.China, true); }, new Vector2(235f, -158f));
|
||||
AddDebugButton("F1. 미국 게임시작", delegate { ShowDebugMapGameStartPreview(MapId.America); }, new Vector2(235f, -200f));
|
||||
AddDebugButton("F2. 미국 출국성공", delegate { ShowDebugMapResultPreview(MapId.America, true); }, new Vector2(235f, -242f));
|
||||
}
|
||||
|
||||
private void AddDebugButton(string label, UnityEngine.Events.UnityAction action, Vector2 position) {
|
||||
GameObject buttonObject = CreateUiObject("Debug Button " + label, overlayRoot, typeof(Image), typeof(Button));
|
||||
RectTransform buttonRect = buttonObject.GetComponent<RectTransform>();
|
||||
buttonRect.anchorMin = new Vector2(0.5f, 0.5f);
|
||||
buttonRect.anchorMax = new Vector2(0.5f, 0.5f);
|
||||
buttonRect.pivot = new Vector2(0.5f, 0.5f);
|
||||
buttonRect.anchoredPosition = position;
|
||||
buttonRect.sizeDelta = new Vector2(310f, 34f);
|
||||
|
||||
Image buttonImage = buttonObject.GetComponent<Image>();
|
||||
buttonImage.color = new Color(0.92f, 0.96f, 1f, 0.94f);
|
||||
buttonImage.raycastTarget = true;
|
||||
|
||||
Button button = buttonObject.GetComponent<Button>();
|
||||
button.targetGraphic = buttonImage;
|
||||
button.navigation = new Navigation {
|
||||
mode = Navigation.Mode.None
|
||||
};
|
||||
button.onClick.AddListener(action);
|
||||
|
||||
TextMeshProUGUI buttonText = AddTextTo(buttonObject.transform, "Label", label, 14f, FontStyles.Bold);
|
||||
RectTransform textRect = buttonText.rectTransform;
|
||||
textRect.anchorMin = Vector2.zero;
|
||||
textRect.anchorMax = Vector2.one;
|
||||
textRect.offsetMin = Vector2.zero;
|
||||
textRect.offsetMax = Vector2.zero;
|
||||
buttonText.color = new Color(0.04f, 0.07f, 0.09f, 1f);
|
||||
}
|
||||
|
||||
private void ShowDebugIntroPreview() {
|
||||
ShowIntro();
|
||||
}
|
||||
|
||||
private void ShowDebugGameStartPreview() {
|
||||
EnsureDebugPreviewData();
|
||||
LoadGameSceneForCurrentMap();
|
||||
}
|
||||
|
||||
private void ShowDebugMapGameStartPreview(MapId mapId) {
|
||||
SetDebugCurrentMap(mapId);
|
||||
LoadGameSceneForCurrentMap();
|
||||
}
|
||||
|
||||
private void ShowDebugResultPreview(bool cleared) {
|
||||
EnsureDebugPreviewData();
|
||||
|
||||
gameplayActive = false;
|
||||
pendingStartGameplay = false;
|
||||
currentScreen = FlowScreen.Result;
|
||||
completedMap = currentMap;
|
||||
lastResultCleared = cleared;
|
||||
lastResultScore = cleared ? 12800 : 7200;
|
||||
lastResultMileage = cleared ? 263 : 84;
|
||||
lastResultTime = cleared ? 23.9f : 38.4f;
|
||||
lastResultDistance = completedMap != null
|
||||
? (cleared ? completedMap.targetDistance : completedMap.targetDistance * 0.62f)
|
||||
: 380f;
|
||||
|
||||
if(saveData != null)
|
||||
{
|
||||
saveData.totalMileage = Mathf.Max(saveData.totalMileage, 4120);
|
||||
}
|
||||
|
||||
ShowResult();
|
||||
}
|
||||
|
||||
private void ShowDebugMapResultPreview(MapId mapId, bool cleared) {
|
||||
SetDebugCurrentMap(mapId);
|
||||
|
||||
gameplayActive = false;
|
||||
pendingStartGameplay = false;
|
||||
currentScreen = FlowScreen.Result;
|
||||
completedMap = currentMap;
|
||||
lastResultCleared = cleared;
|
||||
|
||||
int mapIndex = MapDatabase.GetIndex(mapId);
|
||||
lastResultScore = cleared ? 12800 + (mapIndex * 2200) : 7200 + (mapIndex * 900);
|
||||
lastResultMileage = cleared ? 190 + (mapIndex * 70) : 84;
|
||||
lastResultTime = currentMap != null
|
||||
? Mathf.Max(10f, currentMap.timeLimit * (cleared ? 0.78f : 1.08f))
|
||||
: cleared ? 23.9f : 38.4f;
|
||||
lastResultDistance = currentMap != null
|
||||
? (cleared ? currentMap.targetDistance : currentMap.targetDistance * 0.62f)
|
||||
: 380f;
|
||||
|
||||
if(saveData != null)
|
||||
{
|
||||
saveData.totalMileage = Mathf.Max(saveData.totalMileage, 4120);
|
||||
}
|
||||
|
||||
ShowResult();
|
||||
}
|
||||
|
||||
private void ShowDebugDutyFreeShopPreview() {
|
||||
EnsureDebugPreviewData();
|
||||
|
||||
if(saveData != null)
|
||||
{
|
||||
saveData.totalMileage = Mathf.Max(saveData.totalMileage, 4120);
|
||||
}
|
||||
|
||||
ShowDutyFreeShop();
|
||||
}
|
||||
|
||||
private void ShowDebugMapPreview() {
|
||||
EnsureDebugPreviewData();
|
||||
ShowMapPreview();
|
||||
}
|
||||
|
||||
private void SetDebugCurrentMap(MapId mapId) {
|
||||
EnsureDebugPreviewData();
|
||||
currentMap = MapDatabase.GetMap(mapId);
|
||||
|
||||
if(saveData == null)
|
||||
{
|
||||
return;
|
||||
}
|
||||
|
||||
int mapIndex = MapDatabase.GetIndex(mapId);
|
||||
saveData.currentMapIndex = mapIndex;
|
||||
saveData.unlockedMapIndex = Mathf.Max(saveData.unlockedMapIndex, mapIndex);
|
||||
GameSaveManager.Save(saveData);
|
||||
}
|
||||
|
||||
private void EnsureDebugPreviewData() {
|
||||
if(saveData == null)
|
||||
{
|
||||
saveData = GameSaveManager.Load();
|
||||
}
|
||||
|
||||
if(currentMap == null)
|
||||
{
|
||||
currentMap = MapDatabase.GetMapByIndex(saveData != null ? saveData.currentMapIndex : 0);
|
||||
}
|
||||
|
||||
if(currentMap == null)
|
||||
{
|
||||
currentMap = MapDatabase.GetMapByIndex(0);
|
||||
}
|
||||
}
|
||||
#endif
|
||||
}
|
||||
Reference in New Issue
Block a user