Add duty free systems and travel stage updates
This commit is contained in:
@@ -0,0 +1,22 @@
|
||||
using System;
|
||||
|
||||
[Serializable]
|
||||
public class CourseProfile {
|
||||
public CourseStep[] openingSteps;
|
||||
public CourseStep[] loopSteps;
|
||||
|
||||
public CourseStep[] GetOpeningSteps() {
|
||||
return CourseStepFactory.CloneSteps(openingSteps);
|
||||
}
|
||||
|
||||
public CourseStep[] GetLoopSteps() {
|
||||
return CourseStepFactory.CloneSteps(loopSteps);
|
||||
}
|
||||
|
||||
public static CourseProfile Create(CourseStep[] openingSteps, CourseStep[] loopSteps) {
|
||||
return new CourseProfile {
|
||||
openingSteps = CourseStepFactory.CloneSteps(openingSteps),
|
||||
loopSteps = CourseStepFactory.CloneSteps(loopSteps)
|
||||
};
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,11 @@
|
||||
fileFormatVersion: 2
|
||||
guid: b89f600e13ac4d13a6ed5691d11e8e0d
|
||||
MonoImporter:
|
||||
externalObjects: {}
|
||||
serializedVersion: 2
|
||||
defaultReferences: []
|
||||
executionOrder: 0
|
||||
icon: {instanceID: 0}
|
||||
userData:
|
||||
assetBundleName:
|
||||
assetBundleVariant:
|
||||
@@ -6,7 +6,5 @@ public enum CourseStepKind {
|
||||
ForceHit,
|
||||
HealthItem,
|
||||
InvincibleItem,
|
||||
ShieldItem,
|
||||
SpeedItem,
|
||||
MileageCardItem
|
||||
EnergyDrinkItem
|
||||
}
|
||||
|
||||
@@ -0,0 +1,8 @@
|
||||
fileFormatVersion: 2
|
||||
guid: 29d088f4951c41a7a41a6c85a5fd94ff
|
||||
folderAsset: yes
|
||||
DefaultImporter:
|
||||
externalObjects: {}
|
||||
userData:
|
||||
assetBundleName:
|
||||
assetBundleVariant:
|
||||
@@ -0,0 +1,37 @@
|
||||
using static CourseStepFactory;
|
||||
|
||||
public static class AmericaCourseProfile {
|
||||
public static CourseProfile Create() {
|
||||
return CourseProfile.Create(
|
||||
new CourseStep[] {
|
||||
Basic(GroundY, 0.60f, Platform.MileagePattern.SafeLine),
|
||||
Jump(Platform.PlatformPattern.LowMid, 0.58f),
|
||||
Slide(SlideObstaclePattern.SlideLayout.WidePair, 0.58f),
|
||||
Basic(GroundY, 0.56f, Platform.MileagePattern.None, GameManager.TutorialGuideType.None, "", "", Platform.ItemPattern.EnergyDrink),
|
||||
Aerial(AerialY + 0.20f, 1.35f),
|
||||
Basic(GroundY, 0.58f, Platform.MileagePattern.SafeLine)
|
||||
},
|
||||
new CourseStep[] {
|
||||
Basic(GroundY, 0.56f, Platform.MileagePattern.SafeLine),
|
||||
Jump(Platform.PlatformPattern.LowLeft, 0.54f),
|
||||
Slide(SlideObstaclePattern.SlideLayout.RightPair, 0.52f),
|
||||
Basic(GroundY, 0.50f, Platform.MileagePattern.JumpArc),
|
||||
Jump(Platform.PlatformPattern.LowRight, 0.52f),
|
||||
Basic(GroundY, 0.50f, Platform.MileagePattern.None, GameManager.TutorialGuideType.None, "", "", Platform.ItemPattern.HealthSushi),
|
||||
Aerial(AerialY + 0.22f, 1.24f),
|
||||
Slide(SlideObstaclePattern.SlideLayout.WidePair, 0.50f),
|
||||
Basic(GroundY, 0.48f, Platform.MileagePattern.SlideLine),
|
||||
Jump(Platform.PlatformPattern.LowMid, 0.50f),
|
||||
Slide(SlideObstaclePattern.SlideLayout.LeftPair, 0.48f),
|
||||
Basic(GroundY, 0.50f, Platform.MileagePattern.None, GameManager.TutorialGuideType.None, "", "", Platform.ItemPattern.EnergyDrink),
|
||||
Jump(Platform.PlatformPattern.LowLeft, 0.50f),
|
||||
Jump(Platform.PlatformPattern.LowRight, 0.50f),
|
||||
Basic(GroundY, 0.52f, Platform.MileagePattern.SafeLine),
|
||||
Aerial(AerialY + 0.12f, 1.18f),
|
||||
Basic(GroundY, 0.50f, Platform.MileagePattern.None, GameManager.TutorialGuideType.None, "", "", Platform.ItemPattern.InvincibleRamen),
|
||||
Slide(SlideObstaclePattern.SlideLayout.CenterPair, 0.48f),
|
||||
Jump(Platform.PlatformPattern.LowMid, 0.50f),
|
||||
Basic(GroundY, 0.58f, Platform.MileagePattern.SafeLine)
|
||||
});
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,11 @@
|
||||
fileFormatVersion: 2
|
||||
guid: 3473696a9ce54b0cbecb0b7c3aa8aebd
|
||||
MonoImporter:
|
||||
externalObjects: {}
|
||||
serializedVersion: 2
|
||||
defaultReferences: []
|
||||
executionOrder: 0
|
||||
icon: {instanceID: 0}
|
||||
userData:
|
||||
assetBundleName:
|
||||
assetBundleVariant:
|
||||
@@ -0,0 +1,34 @@
|
||||
using static CourseStepFactory;
|
||||
|
||||
public static class ChinaCourseProfile {
|
||||
public static CourseProfile Create() {
|
||||
return CourseProfile.Create(
|
||||
new CourseStep[] {
|
||||
Basic(GroundY, 0.66f, Platform.MileagePattern.SafeLine),
|
||||
Jump(Platform.PlatformPattern.LowRight, 0.68f),
|
||||
Basic(GroundY, 0.62f, Platform.MileagePattern.None, GameManager.TutorialGuideType.None, "", "", Platform.ItemPattern.HealthSushi),
|
||||
Slide(SlideObstaclePattern.SlideLayout.LeftPair, 0.66f),
|
||||
Basic(GroundY, 0.62f, Platform.MileagePattern.SafeLine),
|
||||
Aerial(AerialY + 0.12f, 1.72f),
|
||||
Basic(GroundY, 0.66f, Platform.MileagePattern.SafeLine)
|
||||
},
|
||||
new CourseStep[] {
|
||||
Basic(GroundY, 0.62f, Platform.MileagePattern.SafeLine),
|
||||
Jump(Platform.PlatformPattern.LowLeft, 0.64f),
|
||||
Basic(GroundY, 0.58f, Platform.MileagePattern.JumpArc),
|
||||
Slide(SlideObstaclePattern.SlideLayout.RightPair, 0.62f),
|
||||
Basic(GroundY, 0.60f, Platform.MileagePattern.None, GameManager.TutorialGuideType.None, "", "", Platform.ItemPattern.EnergyDrink),
|
||||
Jump(Platform.PlatformPattern.LowRight, 0.60f),
|
||||
Basic(GroundY, 0.58f, Platform.MileagePattern.SafeLine),
|
||||
Aerial(AerialY + 0.14f, 1.55f),
|
||||
Basic(GroundY, 0.62f, Platform.MileagePattern.None, GameManager.TutorialGuideType.None, "", "", Platform.ItemPattern.InvincibleRamen),
|
||||
Slide(SlideObstaclePattern.SlideLayout.LeftPair, 0.60f),
|
||||
Basic(GroundY, 0.58f, Platform.MileagePattern.SlideLine),
|
||||
Jump(Platform.PlatformPattern.LowMid, 0.60f),
|
||||
Slide(SlideObstaclePattern.SlideLayout.CenterPair, 0.58f),
|
||||
Basic(GroundY, 0.64f, Platform.MileagePattern.None, GameManager.TutorialGuideType.None, "", "", Platform.ItemPattern.HealthSushi),
|
||||
Aerial(AerialY + 0.05f, 1.70f),
|
||||
Basic(GroundY, 0.66f, Platform.MileagePattern.SafeLine)
|
||||
});
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,11 @@
|
||||
fileFormatVersion: 2
|
||||
guid: 513d2fc410734352ab7a51ff2f8b5d9f
|
||||
MonoImporter:
|
||||
externalObjects: {}
|
||||
serializedVersion: 2
|
||||
defaultReferences: []
|
||||
executionOrder: 0
|
||||
icon: {instanceID: 0}
|
||||
userData:
|
||||
assetBundleName:
|
||||
assetBundleVariant:
|
||||
@@ -0,0 +1,55 @@
|
||||
using static CourseStepFactory;
|
||||
|
||||
public static class FallbackCourseProfile {
|
||||
public static CourseProfile CreateTutorialFallback() {
|
||||
return CourseProfile.Create(
|
||||
new CourseStep[] {
|
||||
Jump(GameManager.TutorialGuideType.Jump, "점프", "가방 장애물이 보이면 왼쪽 클릭으로 뛰어넘습니다."),
|
||||
Basic(GroundY, LandingSpacing),
|
||||
Aerial(GameManager.TutorialGuideType.DoubleJump, "2단 점프", "다음 발판이 멀리 있으면 공중에서 한 번 더 왼쪽 클릭합니다."),
|
||||
Basic(GroundY, LandingSpacing),
|
||||
Slide(GameManager.TutorialGuideType.Slide, "슬라이드", "천장 표지판이 보이면 오른쪽 클릭을 누르고 지나갑니다."),
|
||||
Basic(GroundY, LandingSpacing),
|
||||
ForceHit(GameManager.TutorialGuideType.Damage, "피격", "이번 구간은 일부러 맞아 목숨과 속도 감소를 확인합니다."),
|
||||
Basic(GroundY, LandingSpacing, Platform.MileagePattern.None, GameManager.TutorialGuideType.Items, GameplayItemCatalog.GetDisplayName(GameManager.TutorialItemType.HealthSushi, Platform.PlatformSkin.Airport), "김밥을 먹으면 잃은 목숨을 1 회복합니다.", Platform.ItemPattern.HealthSushi),
|
||||
Basic(GroundY, BasicSpacing, Platform.MileagePattern.None, GameManager.TutorialGuideType.Items, GameplayItemCatalog.GetDisplayName(GameManager.TutorialItemType.InvincibleRamen, Platform.PlatformSkin.Airport), "바나나우유를 먹고 다음 충돌을 피해 없이 지나가 봅니다.", Platform.ItemPattern.InvincibleRamen),
|
||||
ForceHit(GameManager.TutorialGuideType.None, "", ""),
|
||||
Basic(GroundY, LandingSpacing),
|
||||
Basic(GroundY, BasicSpacing),
|
||||
Basic(GroundY, BasicSpacing),
|
||||
ForceHit(GameManager.TutorialGuideType.None, "", ""),
|
||||
Basic(GroundY, BasicSpacing, Platform.MileagePattern.None, GameManager.TutorialGuideType.Items, GameplayItemCatalog.GetDisplayName(GameManager.TutorialItemType.EnergyDrink, Platform.PlatformSkin.Airport), "에너지 드링크는 속도를 조금 회복해 일정이 늦어지는 것을 줄입니다.", Platform.ItemPattern.EnergyDrink),
|
||||
Basic(GroundY, BasicSpacing),
|
||||
Basic(GroundY, BasicSpacing)
|
||||
},
|
||||
CreateGeneralFallbackLoop());
|
||||
}
|
||||
|
||||
public static CourseProfile CreateGeneralFallback() {
|
||||
return CourseProfile.Create(
|
||||
new CourseStep[] {
|
||||
Basic(),
|
||||
Basic()
|
||||
},
|
||||
CreateGeneralFallbackLoop());
|
||||
}
|
||||
|
||||
private static CourseStep[] CreateGeneralFallbackLoop() {
|
||||
return new CourseStep[] {
|
||||
Basic(),
|
||||
Jump(),
|
||||
Basic(GroundY, LandingSpacing),
|
||||
Slide(SlideObstaclePattern.SlideLayout.WidePair),
|
||||
Basic(),
|
||||
Jump(Platform.PlatformPattern.LowLeft),
|
||||
Slide(SlideObstaclePattern.SlideLayout.LeftPair),
|
||||
Basic(),
|
||||
Jump(Platform.PlatformPattern.LowRight),
|
||||
Aerial(AerialY, AerialSpacing),
|
||||
Slide(SlideObstaclePattern.SlideLayout.RightPair),
|
||||
Jump(Platform.PlatformPattern.LowMid),
|
||||
Basic(),
|
||||
Slide(SlideObstaclePattern.SlideLayout.CenterPair)
|
||||
};
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,11 @@
|
||||
fileFormatVersion: 2
|
||||
guid: c10f2b5787bb465ab16291a98eb7a51d
|
||||
MonoImporter:
|
||||
externalObjects: {}
|
||||
serializedVersion: 2
|
||||
defaultReferences: []
|
||||
executionOrder: 0
|
||||
icon: {instanceID: 0}
|
||||
userData:
|
||||
assetBundleName:
|
||||
assetBundleVariant:
|
||||
@@ -0,0 +1,34 @@
|
||||
using static CourseStepFactory;
|
||||
|
||||
public static class JapanCourseProfile {
|
||||
public static CourseProfile Create() {
|
||||
return CourseProfile.Create(
|
||||
new CourseStep[] {
|
||||
Basic(GroundY, 0.72f, Platform.MileagePattern.SafeLine),
|
||||
Basic(GroundY, 0.70f, Platform.MileagePattern.SafeLine),
|
||||
Jump(Platform.PlatformPattern.LowMid, 0.78f),
|
||||
Basic(GroundY, 0.70f, Platform.MileagePattern.None, GameManager.TutorialGuideType.None, "", "", Platform.ItemPattern.HealthSushi),
|
||||
Basic(GroundY, 0.68f, Platform.MileagePattern.SafeLine),
|
||||
Slide(SlideObstaclePattern.SlideLayout.CenterPair, 0.76f),
|
||||
Basic(GroundY, 0.70f, Platform.MileagePattern.SafeLine)
|
||||
},
|
||||
new CourseStep[] {
|
||||
Basic(GroundY, 0.68f, Platform.MileagePattern.SafeLine),
|
||||
Jump(Platform.PlatformPattern.LowMid, 0.74f),
|
||||
Basic(GroundY, 0.70f, Platform.MileagePattern.JumpArc),
|
||||
Basic(GroundY, 0.66f, Platform.MileagePattern.None, GameManager.TutorialGuideType.None, "", "", Platform.ItemPattern.HealthSushi),
|
||||
Slide(SlideObstaclePattern.SlideLayout.CenterPair, 0.74f),
|
||||
Basic(GroundY, 0.70f, Platform.MileagePattern.SlideLine),
|
||||
Aerial(AerialY, 2.05f),
|
||||
Basic(GroundY, 0.72f, Platform.MileagePattern.SafeLine),
|
||||
Jump(Platform.PlatformPattern.LowLeft, 0.72f),
|
||||
Basic(GroundY, 0.66f, Platform.MileagePattern.None, GameManager.TutorialGuideType.None, "", "", Platform.ItemPattern.InvincibleRamen),
|
||||
Basic(GroundY, 0.68f, Platform.MileagePattern.SafeLine),
|
||||
Slide(SlideObstaclePattern.SlideLayout.RightPair, 0.72f),
|
||||
Basic(GroundY, 0.66f, Platform.MileagePattern.None, GameManager.TutorialGuideType.None, "", "", Platform.ItemPattern.EnergyDrink),
|
||||
Jump(Platform.PlatformPattern.LowRight, 0.72f),
|
||||
Basic(GroundY, 0.72f, Platform.MileagePattern.SafeLine),
|
||||
Basic(GroundY, 0.76f, Platform.MileagePattern.SafeLine)
|
||||
});
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,11 @@
|
||||
fileFormatVersion: 2
|
||||
guid: 0ec45d923be242e3bf69387973545026
|
||||
MonoImporter:
|
||||
externalObjects: {}
|
||||
serializedVersion: 2
|
||||
defaultReferences: []
|
||||
executionOrder: 0
|
||||
icon: {instanceID: 0}
|
||||
userData:
|
||||
assetBundleName:
|
||||
assetBundleVariant:
|
||||
@@ -0,0 +1,37 @@
|
||||
using static CourseStepFactory;
|
||||
|
||||
public static class TutorialCourseProfile {
|
||||
public static CourseProfile Create() {
|
||||
return CourseProfile.Create(
|
||||
new CourseStep[] {
|
||||
Basic(),
|
||||
Basic(),
|
||||
Basic(GroundY, BasicSpacing),
|
||||
Jump(GameManager.TutorialGuideType.Jump, "점프 구간", "가방 장애물이 오면 왼쪽 클릭으로 뛰어넘습니다."),
|
||||
Basic(GroundY, LandingSpacing),
|
||||
Basic(GroundY, BasicSpacing),
|
||||
Aerial(GameManager.TutorialGuideType.DoubleJump, "2단 점프 구간", "다음 발판이 멀리 떨어져 있습니다.\n공중에서 왼쪽 클릭을 한 번 더 누릅니다."),
|
||||
Basic(GroundY, LandingSpacing),
|
||||
Basic(GroundY, BasicSpacing),
|
||||
Slide(GameManager.TutorialGuideType.Slide, "슬라이드 구간", "천장 장애물이 오면 오른쪽 클릭을 누르고 지나갑니다."),
|
||||
Basic(GroundY, LandingSpacing),
|
||||
Basic(GroundY, BasicSpacing),
|
||||
ForceHit(GameManager.TutorialGuideType.None, "", ""),
|
||||
Basic(GroundY, LandingSpacing, Platform.MileagePattern.None, GameManager.TutorialGuideType.Items, "김밥", "잃은 목숨을 1 회복합니다.\n방금 줄어든 목숨을 채워 봅니다.", Platform.ItemPattern.HealthSushi),
|
||||
Basic(GroundY, LandingSpacing),
|
||||
Basic(GroundY, BasicSpacing, Platform.MileagePattern.None, GameManager.TutorialGuideType.Items, "바나나우유", "잠깐 무적이 됩니다.\n먹은 뒤 다음 장애물에 일부러 부딪혀 봅니다.", Platform.ItemPattern.InvincibleRamen),
|
||||
ForceHit(GameManager.TutorialGuideType.None, "", ""),
|
||||
Basic(GroundY, LandingSpacing),
|
||||
Basic(GroundY, LandingSpacing),
|
||||
ForceHit(GameManager.TutorialGuideType.None, "", ""),
|
||||
Basic(GroundY, BasicSpacing, Platform.MileagePattern.None, GameManager.TutorialGuideType.Items, "에너지 드링크", "느려진 속도를 조금 회복합니다.\n방금 떨어진 속도를 되돌려 봅니다.", Platform.ItemPattern.EnergyDrink),
|
||||
Basic(GroundY, LandingSpacing, Platform.MileagePattern.None, GameManager.TutorialGuideType.Items, "실전 연습", "시간이 지나면 달리기 속도는 조금씩 빨라지고, 장애물에 맞으면 느려집니다.\n방금 먹은 에너지 드링크로 회복한 뒤 출국 게이트까지 달려보세요."),
|
||||
Basic(GroundY, BasicSpacing, Platform.MileagePattern.SafeLine),
|
||||
Basic(),
|
||||
Basic(),
|
||||
Basic(),
|
||||
Basic(GroundY, LandingSpacing)
|
||||
},
|
||||
CreateEasyLoop());
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,11 @@
|
||||
fileFormatVersion: 2
|
||||
guid: 755fb689f3ff4855a3193f4711b10fa5
|
||||
MonoImporter:
|
||||
externalObjects: {}
|
||||
serializedVersion: 2
|
||||
defaultReferences: []
|
||||
executionOrder: 0
|
||||
icon: {instanceID: 0}
|
||||
userData:
|
||||
assetBundleName:
|
||||
assetBundleVariant:
|
||||
Reference in New Issue
Block a user