Merge branch 'develop' of http://gitea.capers.co.kr:3000/capers/CapersRepo into lmg
# Conflicts: # Assets/StreamingAssets/google-services-desktop.json.meta
76831
Assets/01.Scenes/99.T47.unity
Normal file
7
Assets/01.Scenes/99.T47.unity.meta
Normal file
@ -0,0 +1,7 @@
|
||||
fileFormatVersion: 2
|
||||
guid: eb9a8ee373c285045ab43bce1e6f7350
|
||||
DefaultImporter:
|
||||
externalObjects: {}
|
||||
userData:
|
||||
assetBundleName:
|
||||
assetBundleVariant:
|
79722
Assets/01.Scenes/99.T48.unity
Normal file
7
Assets/01.Scenes/99.T48.unity.meta
Normal file
@ -0,0 +1,7 @@
|
||||
fileFormatVersion: 2
|
||||
guid: 8a25b5aa40c3d1541a4149de5db259b6
|
||||
DefaultImporter:
|
||||
externalObjects: {}
|
||||
userData:
|
||||
assetBundleName:
|
||||
assetBundleVariant:
|
@ -24,6 +24,12 @@ namespace BlueWater.BehaviorTrees.Actions
|
||||
|
||||
public override void OnStart()
|
||||
{
|
||||
if (!_customer.CanVomit)
|
||||
{
|
||||
_canVomit = false;
|
||||
return;
|
||||
}
|
||||
|
||||
_customer.MoveMoneyCounter();
|
||||
var random = Random.Range(0f, 100f);
|
||||
if (random <= TycoonManager.Instance.TycoonStageController.StageDataSo.VomitingPercent)
|
||||
|
@ -21,7 +21,7 @@ namespace BlueWater.Npcs.Customers
|
||||
{
|
||||
public const string Idle = "Idle";
|
||||
public const string Walk = "Run";
|
||||
public const string Happy = "Happy";
|
||||
public const string Happy = "HappyIdle";
|
||||
public const string HappyRun = "HappyRun";
|
||||
public const string Upset = "Upset";
|
||||
public const string UpsetRun = "UpsetRun";
|
||||
@ -31,6 +31,30 @@ namespace BlueWater.Npcs.Customers
|
||||
public const string VomitingRun = "VomitingRun";
|
||||
}
|
||||
|
||||
public static class CatSpineAnimation
|
||||
{
|
||||
public const string Idle = "Cat/Idle";
|
||||
public const string Walk = "Cat/Run";
|
||||
public const string Happy = "Cat/HappyIdle";
|
||||
public const string HappyRun = "Cat/HappyRun";
|
||||
public const string Upset = "Cat/Upset";
|
||||
public const string UpsetRun = "Cat/UpsetRun";
|
||||
public const string Vomiting = "Cat/Vomiting";
|
||||
public const string VomitingForm = "Cat/VomitingForm";
|
||||
public const string VomitingIdle = "Cat/VomitingIdle";
|
||||
public const string VomitingRun = "Cat/VomitingRun";
|
||||
}
|
||||
|
||||
public static class WitchSpineAnimation
|
||||
{
|
||||
public const string Idle = "Witch/Idle";
|
||||
public const string Walk = "Witch/Run";
|
||||
public const string Happy = "Witch/HappyIdle";
|
||||
public const string HappyRun = "Witch/HappyRun";
|
||||
public const string Upset = "Witch/Upset";
|
||||
public const string UpsetRun = "Witch/UpsetRun";
|
||||
}
|
||||
|
||||
public enum CustomerInteractionType
|
||||
{
|
||||
None = 0,
|
||||
@ -39,8 +63,13 @@ namespace BlueWater.Npcs.Customers
|
||||
|
||||
public enum CustomerSkin
|
||||
{
|
||||
Casper = 0,
|
||||
PumkinHead = 1
|
||||
BigCat = 0,
|
||||
Casper = 1,
|
||||
CasperBlack = 2,
|
||||
Cat = 3,
|
||||
PumkinHead = 4,
|
||||
Reaper = 5,
|
||||
Witch = 6
|
||||
}
|
||||
|
||||
public class Customer : MonoBehaviour, IPlayerInteraction, ICrewInteraction
|
||||
@ -99,7 +128,6 @@ namespace BlueWater.Npcs.Customers
|
||||
[field: SerializeField]
|
||||
public string InteractionMessage { get; set; }
|
||||
|
||||
[field: Title("실시간 데이터")]
|
||||
[field: SerializeField]
|
||||
public LevelData CurrentLevelData { get; private set; }
|
||||
|
||||
@ -127,6 +155,7 @@ namespace BlueWater.Npcs.Customers
|
||||
private CustomerInteractionType _customerInteractionType;
|
||||
|
||||
public bool IsMoving { get; private set; }
|
||||
public bool CanVomit { get; private set; }
|
||||
public bool IsVomited { get; private set; }
|
||||
|
||||
[SerializeField]
|
||||
@ -148,7 +177,16 @@ namespace BlueWater.Npcs.Customers
|
||||
}
|
||||
}
|
||||
|
||||
public int CustomerSkin { get; private set; }
|
||||
[Title("스킨 연출")]
|
||||
[field: SerializeField]
|
||||
public CustomerSkin CustomerSkin { get; private set; }
|
||||
|
||||
[SerializeField]
|
||||
private Vector3 _bigSize = new(1.5f, 1.5f, 1.5f);
|
||||
|
||||
[SerializeField]
|
||||
private Vector3 _smallSize = new(0.5f, 0.5f, 0.5f);
|
||||
|
||||
public int HurryTime { get; private set; }
|
||||
|
||||
private IAstarAI _astarAi;
|
||||
@ -197,10 +235,20 @@ namespace BlueWater.Npcs.Customers
|
||||
{
|
||||
if (element.ToString().Equals(currentSkinName))
|
||||
{
|
||||
CustomerSkin = (int)element;
|
||||
return;
|
||||
CustomerSkin = element;
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
if (CustomerSkin is CustomerSkin.BigCat or CustomerSkin.Witch)
|
||||
{
|
||||
CanVomit = false;
|
||||
transform.localScale = _bigSize;
|
||||
}
|
||||
else
|
||||
{
|
||||
CanVomit = true;
|
||||
}
|
||||
}
|
||||
|
||||
private void Update()
|
||||
@ -407,14 +455,14 @@ namespace BlueWater.Npcs.Customers
|
||||
|
||||
public virtual void ShowInteractionUi()
|
||||
{
|
||||
SpineController.EnableCustomMaterial();
|
||||
//SpineController.EnableCustomMaterial();
|
||||
EventManager.InvokeShowInteractionUi(InteractionMessage);
|
||||
EventManager.InvokeHoldInteracting(0f);
|
||||
}
|
||||
|
||||
public virtual void HideInteractionUi()
|
||||
{
|
||||
SpineController.DisableCustomMaterial();
|
||||
//SpineController.DisableCustomMaterial();
|
||||
EventManager.InvokeHideInteractionUi();
|
||||
}
|
||||
|
||||
@ -485,6 +533,12 @@ namespace BlueWater.Npcs.Customers
|
||||
var gold = (int)(CurrentLevelData.Gold * TycoonManager.Instance.TycoonStatus.GoldMultiplier);
|
||||
|
||||
_moneyCounter.AddCurrentGold(gold);
|
||||
|
||||
if (!ES3.Load(SaveData.TutorialC, false))
|
||||
{
|
||||
EventManager.InvokeTutorial(TutorialName.TutorialC);
|
||||
ES3.Save(SaveData.TutorialC, true);
|
||||
}
|
||||
}
|
||||
|
||||
public void Vomit()
|
||||
@ -520,6 +574,18 @@ namespace BlueWater.Npcs.Customers
|
||||
RegisterPlayerInteraction();
|
||||
|
||||
EventManager.InvokeOrderedCocktail(this);
|
||||
|
||||
if (!ES3.Load(SaveData.TutorialB, false))
|
||||
{
|
||||
EventManager.InvokeTutorial(TutorialName.TutorialB);
|
||||
ES3.Save(SaveData.TutorialB, true);
|
||||
}
|
||||
|
||||
if (!ES3.Load(SaveData.TutorialJ, false) && OrderedCocktailData.Idx == "Cocktail006")
|
||||
{
|
||||
EventManager.InvokeTutorial(TutorialName.TutorialJ);
|
||||
ES3.Save(SaveData.TutorialJ, true);
|
||||
}
|
||||
}
|
||||
|
||||
public void MovePosition(Vector3 targetPosition)
|
||||
|
@ -5,9 +5,20 @@ namespace BlueWater.Npcs.Customers
|
||||
public class HappyState : IStateMachine<Customer>
|
||||
{
|
||||
public void EnterState(Customer character)
|
||||
{
|
||||
if (character.CustomerSkin == CustomerSkin.Cat)
|
||||
{
|
||||
character.SpineController.PlayAnimation(CatSpineAnimation.Happy, true);
|
||||
}
|
||||
else if (character.CustomerSkin == CustomerSkin.Witch)
|
||||
{
|
||||
character.SpineController.PlayAnimation(WitchSpineAnimation.Happy, true);
|
||||
}
|
||||
else
|
||||
{
|
||||
character.SpineController.PlayAnimation(CustomerSpineAnimation.Happy, true);
|
||||
}
|
||||
}
|
||||
|
||||
public void UpdateState(Customer character)
|
||||
{
|
||||
|
@ -7,24 +7,82 @@ namespace BlueWater.Npcs.Customers
|
||||
public void EnterState(Customer character)
|
||||
{
|
||||
if (character.IsVomited)
|
||||
{
|
||||
if (character.CustomerSkin == CustomerSkin.Cat)
|
||||
{
|
||||
character.SpineController.PlayAnimation(CatSpineAnimation.VomitingIdle, true);
|
||||
}
|
||||
else
|
||||
{
|
||||
character.SpineController.PlayAnimation(CustomerSpineAnimation.VomitingIdle, true);
|
||||
}
|
||||
}
|
||||
else if (character.IsReceivedItem)
|
||||
{
|
||||
character.SpineController.PlayAnimation(character.IsOrderedCorrected ?
|
||||
CustomerSpineAnimation.Happy : CustomerSpineAnimation.Upset, true);
|
||||
if (character.IsOrderedCorrected)
|
||||
{
|
||||
if (character.CustomerSkin == CustomerSkin.Cat)
|
||||
{
|
||||
character.SpineController.PlayAnimation(CatSpineAnimation.Happy, true);
|
||||
}
|
||||
else if (character.CustomerSkin == CustomerSkin.Witch)
|
||||
{
|
||||
character.SpineController.PlayAnimation(WitchSpineAnimation.Happy, true);
|
||||
}
|
||||
else
|
||||
{
|
||||
character.SpineController.PlayAnimation(CustomerSpineAnimation.Happy, true);
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
if (character.CustomerSkin == CustomerSkin.Cat)
|
||||
{
|
||||
character.SpineController.PlayAnimation(CatSpineAnimation.Upset, true);
|
||||
}
|
||||
else if (character.CustomerSkin == CustomerSkin.Witch)
|
||||
{
|
||||
character.SpineController.PlayAnimation(WitchSpineAnimation.Upset, true);
|
||||
}
|
||||
else
|
||||
{
|
||||
character.SpineController.PlayAnimation(CustomerSpineAnimation.Upset, true);
|
||||
}
|
||||
}
|
||||
}
|
||||
else if (!character.IsReceivedItem)
|
||||
{
|
||||
if (character.CustomerSkin == CustomerSkin.Cat)
|
||||
{
|
||||
character.SpineController.PlayAnimation(CatSpineAnimation.Idle, true);
|
||||
}
|
||||
else if (character.CustomerSkin == CustomerSkin.Witch)
|
||||
{
|
||||
character.SpineController.PlayAnimation(WitchSpineAnimation.Idle, true);
|
||||
}
|
||||
else
|
||||
{
|
||||
character.SpineController.PlayAnimation(CustomerSpineAnimation.Idle, true);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
public void UpdateState(Customer character)
|
||||
{
|
||||
if (character.IsMoving)
|
||||
{
|
||||
if (character.CustomerSkin == CustomerSkin.Cat)
|
||||
{
|
||||
character.SpineController.PlayAnimation(CatSpineAnimation.Idle, true);
|
||||
}
|
||||
else if (character.CustomerSkin == CustomerSkin.Witch)
|
||||
{
|
||||
character.SpineController.PlayAnimation(WitchSpineAnimation.Idle, true);
|
||||
}
|
||||
else
|
||||
{
|
||||
character.SpineController.PlayAnimation(CustomerSpineAnimation.Idle, true);
|
||||
}
|
||||
character.StateMachineController.TransitionToState(character.WalkingState, character);
|
||||
}
|
||||
}
|
||||
|
@ -5,9 +5,20 @@ namespace BlueWater.Npcs.Customers
|
||||
public class UpsetState : IStateMachine<Customer>
|
||||
{
|
||||
public void EnterState(Customer character)
|
||||
{
|
||||
if (character.CustomerSkin == CustomerSkin.Cat)
|
||||
{
|
||||
character.SpineController.PlayAnimation(CatSpineAnimation.Upset, true);
|
||||
}
|
||||
else if (character.CustomerSkin == CustomerSkin.Witch)
|
||||
{
|
||||
character.SpineController.PlayAnimation(WitchSpineAnimation.Upset, true);
|
||||
}
|
||||
else
|
||||
{
|
||||
character.SpineController.PlayAnimation(CustomerSpineAnimation.Upset, true);
|
||||
}
|
||||
}
|
||||
|
||||
public void UpdateState(Customer character)
|
||||
{
|
||||
|
@ -9,16 +9,30 @@ namespace BlueWater.Npcs.Customers
|
||||
private bool _isVomiting;
|
||||
|
||||
public void EnterState(Customer character)
|
||||
{
|
||||
if (character.CustomerSkin == CustomerSkin.Cat)
|
||||
{
|
||||
character.SpineController.PlayAnimation(CatSpineAnimation.VomitingForm, false);
|
||||
}
|
||||
else
|
||||
{
|
||||
character.SpineController.PlayAnimation(CustomerSpineAnimation.VomitingForm, false);
|
||||
}
|
||||
}
|
||||
|
||||
public void UpdateState(Customer character)
|
||||
{
|
||||
if (!_isVomiting && character.SpineController.IsAnimationComplete())
|
||||
{
|
||||
AudioManager.Instance.PlaySfx(_vomitSfxName);
|
||||
if (character.CustomerSkin == CustomerSkin.Cat)
|
||||
{
|
||||
character.SpineController.PlayAnimation(CatSpineAnimation.Vomiting, false);
|
||||
}
|
||||
else
|
||||
{
|
||||
character.SpineController.PlayAnimation(CustomerSpineAnimation.Vomiting, false);
|
||||
}
|
||||
_isVomiting = true;
|
||||
}
|
||||
|
||||
|
@ -7,19 +7,65 @@ namespace BlueWater.Npcs.Customers
|
||||
public void EnterState(Customer character)
|
||||
{
|
||||
if (character.IsVomited)
|
||||
{
|
||||
if (character.CustomerSkin == CustomerSkin.Cat)
|
||||
{
|
||||
character.SpineController.PlayAnimation(CatSpineAnimation.VomitingRun, true);
|
||||
}
|
||||
else
|
||||
{
|
||||
character.SpineController.PlayAnimation(CustomerSpineAnimation.VomitingRun, true);
|
||||
}
|
||||
}
|
||||
else if (character.IsReceivedItem)
|
||||
{
|
||||
character.SpineController.PlayAnimation(character.IsOrderedCorrected ?
|
||||
CustomerSpineAnimation.HappyRun : CustomerSpineAnimation.UpsetRun, true);
|
||||
if (character.IsOrderedCorrected)
|
||||
{
|
||||
if (character.CustomerSkin == CustomerSkin.Cat)
|
||||
{
|
||||
character.SpineController.PlayAnimation(CatSpineAnimation.HappyRun, true);
|
||||
}
|
||||
else if (character.CustomerSkin == CustomerSkin.Witch)
|
||||
{
|
||||
character.SpineController.PlayAnimation(WitchSpineAnimation.HappyRun, true);
|
||||
}
|
||||
else
|
||||
{
|
||||
character.SpineController.PlayAnimation(CustomerSpineAnimation.HappyRun, true);
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
if (character.CustomerSkin == CustomerSkin.Cat)
|
||||
{
|
||||
character.SpineController.PlayAnimation(CatSpineAnimation.UpsetRun, true);
|
||||
}
|
||||
else if (character.CustomerSkin == CustomerSkin.Witch)
|
||||
{
|
||||
character.SpineController.PlayAnimation(WitchSpineAnimation.UpsetRun, true);
|
||||
}
|
||||
else
|
||||
{
|
||||
character.SpineController.PlayAnimation(CustomerSpineAnimation.UpsetRun, true);
|
||||
}
|
||||
}
|
||||
}
|
||||
else if (!character.IsReceivedItem)
|
||||
{
|
||||
if (character.CustomerSkin == CustomerSkin.Cat)
|
||||
{
|
||||
character.SpineController.PlayAnimation(CatSpineAnimation.Walk, true);
|
||||
}
|
||||
else if (character.CustomerSkin == CustomerSkin.Witch)
|
||||
{
|
||||
character.SpineController.PlayAnimation(WitchSpineAnimation.Walk, true);
|
||||
}
|
||||
else
|
||||
{
|
||||
character.SpineController.PlayAnimation(CustomerSpineAnimation.Walk, true);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
public void UpdateState(Customer character)
|
||||
{
|
||||
|
@ -78,9 +78,11 @@ namespace BlueWater.Players.Tycoons
|
||||
|
||||
public void OnDevelopKey01(InputAction.CallbackContext context)
|
||||
{
|
||||
#if UNITY_EDITOR
|
||||
EventManager.InvokeCreateServerCrew();
|
||||
EventManager.InvokeCreateCleanerCrew();
|
||||
EventManager.InvokeCreateBartenderCrew();
|
||||
#endif
|
||||
}
|
||||
|
||||
#endregion
|
||||
|
@ -38,14 +38,14 @@ namespace BlueWater.Players.Tycoons
|
||||
|
||||
_isMoving = value;
|
||||
|
||||
if (_isMoving)
|
||||
{
|
||||
AudioManager.Instance.PlaySfx(_walkingSfxName, true);
|
||||
}
|
||||
else
|
||||
{
|
||||
AudioManager.Instance.StopSfx(_walkingSfxName);
|
||||
}
|
||||
// if (_isMoving)
|
||||
// {
|
||||
// AudioManager.Instance.PlaySfx(_walkingSfxName, true);
|
||||
// }
|
||||
// else
|
||||
// {
|
||||
// AudioManager.Instance.StopSfx(_walkingSfxName);
|
||||
// }
|
||||
}
|
||||
}
|
||||
|
||||
@ -67,6 +67,9 @@ namespace BlueWater.Players.Tycoons
|
||||
[SerializeField]
|
||||
private string _walkingSfxName = "TycoonPlayerWalking";
|
||||
|
||||
[SerializeField]
|
||||
private string _dashSfxName = "TycoonPlayerDashing";
|
||||
|
||||
public bool IsDashEnabled { get; private set; } = true;
|
||||
public bool IsDashing { get; private set; }
|
||||
|
||||
@ -242,6 +245,7 @@ namespace BlueWater.Players.Tycoons
|
||||
{
|
||||
_dashParticle.Play();
|
||||
}
|
||||
AudioManager.Instance.PlaySfx(_dashSfxName);
|
||||
|
||||
var dashDirection = _inputDirection;
|
||||
if (dashDirection == Vector3.zero)
|
||||
|
@ -232,8 +232,8 @@ namespace BlueWater
|
||||
}
|
||||
|
||||
// 손님이 퇴장하기 전에 스킨을 확인하는 이벤트
|
||||
public static Action<int> OnCheckedSkin;
|
||||
public static void InvokeCheckedSkin(int skinIndex)
|
||||
public static Action<CustomerSkin> OnCheckedSkin;
|
||||
public static void InvokeCheckedSkin(CustomerSkin skinIndex)
|
||||
{
|
||||
OnCheckedSkin?.Invoke(skinIndex);
|
||||
}
|
||||
@ -321,6 +321,13 @@ namespace BlueWater
|
||||
OnCreateMold?.Invoke();
|
||||
}
|
||||
|
||||
// 펌프 활성화 이벤트
|
||||
public static Action OnActivatePump;
|
||||
public static void InvokeActivatePump()
|
||||
{
|
||||
OnActivatePump?.Invoke();
|
||||
}
|
||||
|
||||
// 계산대 골드 자동 회수 이벤트
|
||||
public static Action<int> OnGainAutoMoneyCounter;
|
||||
public static void InvokeGainAutoMoneyCounter(int gainWaitTime)
|
||||
@ -356,6 +363,13 @@ namespace BlueWater
|
||||
OnOpenedRareRewardBox?.Invoke();
|
||||
}
|
||||
|
||||
// 튜토리얼
|
||||
public static Action<string> OnTutorial;
|
||||
public static void InvokeTutorial(string tutorialName)
|
||||
{
|
||||
OnTutorial?.Invoke(tutorialName);
|
||||
}
|
||||
|
||||
#endregion
|
||||
}
|
||||
}
|
@ -751,6 +751,33 @@
|
||||
"interactions": "",
|
||||
"initialStateCheck": false
|
||||
},
|
||||
{
|
||||
"name": "PressR",
|
||||
"type": "Button",
|
||||
"id": "e4fa5849-c9d6-4997-9b4e-90534871a42b",
|
||||
"expectedControlType": "",
|
||||
"processors": "",
|
||||
"interactions": "",
|
||||
"initialStateCheck": false
|
||||
},
|
||||
{
|
||||
"name": "PressA",
|
||||
"type": "Button",
|
||||
"id": "ba45488a-1cd7-479a-a42c-7ecf4d140eb6",
|
||||
"expectedControlType": "",
|
||||
"processors": "",
|
||||
"interactions": "",
|
||||
"initialStateCheck": false
|
||||
},
|
||||
{
|
||||
"name": "PressD",
|
||||
"type": "Button",
|
||||
"id": "8eb2dcae-c555-4f18-949a-ead8d65767f9",
|
||||
"expectedControlType": "",
|
||||
"processors": "",
|
||||
"interactions": "",
|
||||
"initialStateCheck": false
|
||||
},
|
||||
{
|
||||
"name": "PressAnyKey",
|
||||
"type": "Button",
|
||||
@ -843,10 +870,43 @@
|
||||
"path": "<Keyboard>/e",
|
||||
"interactions": "",
|
||||
"processors": "",
|
||||
"groups": "",
|
||||
"groups": ";Keyboard&Mouse",
|
||||
"action": "InteractionE",
|
||||
"isComposite": false,
|
||||
"isPartOfComposite": false
|
||||
},
|
||||
{
|
||||
"name": "",
|
||||
"id": "c8c18337-6d1f-47f7-9e88-017d311a5ece",
|
||||
"path": "<Keyboard>/r",
|
||||
"interactions": "",
|
||||
"processors": "",
|
||||
"groups": ";Keyboard&Mouse",
|
||||
"action": "PressR",
|
||||
"isComposite": false,
|
||||
"isPartOfComposite": false
|
||||
},
|
||||
{
|
||||
"name": "",
|
||||
"id": "35cbd356-f529-4281-94b8-087c7bd21859",
|
||||
"path": "<Keyboard>/a",
|
||||
"interactions": "",
|
||||
"processors": "",
|
||||
"groups": ";Keyboard&Mouse",
|
||||
"action": "PressA",
|
||||
"isComposite": false,
|
||||
"isPartOfComposite": false
|
||||
},
|
||||
{
|
||||
"name": "",
|
||||
"id": "2df367e5-1d6c-428c-b859-455392708188",
|
||||
"path": "<Keyboard>/d",
|
||||
"interactions": "",
|
||||
"processors": "",
|
||||
"groups": ";Keyboard&Mouse",
|
||||
"action": "PressD",
|
||||
"isComposite": false,
|
||||
"isPartOfComposite": false
|
||||
}
|
||||
]
|
||||
},
|
||||
|
@ -38,6 +38,9 @@ namespace BlueWater
|
||||
public const string Move = "Move";
|
||||
public const string Cancel = "Cancel";
|
||||
public const string PressQ = "PressQ";
|
||||
public const string PressR = "PressR";
|
||||
public const string PressA = "PressA";
|
||||
public const string PressD = "PressD";
|
||||
public const string PressAnyKey = "PressAnyKey";
|
||||
public const string InteractionE = "InteractionE";
|
||||
}
|
||||
|
@ -6,6 +6,11 @@ using UnityEngine;
|
||||
|
||||
namespace BlueWater.Tycoons
|
||||
{
|
||||
public static class StatueBarrelSpineAnimation
|
||||
{
|
||||
public const string Idle = "Idle";
|
||||
}
|
||||
|
||||
public static class LiquidBarrelSpineAnimation
|
||||
{
|
||||
public const string IdleLevel0 = "Empty";
|
||||
@ -68,7 +73,11 @@ namespace BlueWater.Tycoons
|
||||
|
||||
_liquidImage.sprite = IsActivated ? LiquidData.Sprite : DataManager.Instance.SpriteDataSo.BarrelLock;
|
||||
|
||||
if (!IsStatue)
|
||||
if (IsStatue)
|
||||
{
|
||||
SpineController.PlayAnimation(StatueBarrelSpineAnimation.Idle, false);
|
||||
}
|
||||
else
|
||||
{
|
||||
SpineController.PlayAnimation(LiquidBarrelSpineAnimation.IdleLevel0, false);
|
||||
}
|
||||
@ -167,31 +176,17 @@ namespace BlueWater.Tycoons
|
||||
InteractionMessage = $"{Utils.GetLocalizedString(LiquidData.Idx)} {Utils.GetLocalizedString("Pour")}";
|
||||
}
|
||||
|
||||
if (IsStatue)
|
||||
{
|
||||
base.ShowInteractionUi();
|
||||
}
|
||||
else
|
||||
{
|
||||
SpineController.EnableCustomMaterial();
|
||||
EventManager.InvokeShowInteractionUi(InteractionMessage);
|
||||
IsShowing = true;
|
||||
}
|
||||
}
|
||||
|
||||
public override void HideInteractionUi()
|
||||
{
|
||||
if (IsStatue)
|
||||
{
|
||||
base.HideInteractionUi();
|
||||
}
|
||||
else
|
||||
{
|
||||
SpineController.DisableCustomMaterial();
|
||||
EventManager.InvokeHideInteractionUi();
|
||||
IsShowing = false;
|
||||
}
|
||||
}
|
||||
|
||||
public override void Activate()
|
||||
{
|
||||
|
@ -1,4 +1,5 @@
|
||||
using System;
|
||||
using BlueWater.Audios;
|
||||
using UnityEngine;
|
||||
|
||||
namespace BlueWater.Tycoons
|
||||
@ -12,6 +13,9 @@ namespace BlueWater.Tycoons
|
||||
[SerializeField]
|
||||
private Sprite _heartSprite;
|
||||
|
||||
[SerializeField]
|
||||
private string _cleaningSfxName = "CleaningFloor";
|
||||
|
||||
private bool _isPlayerInteracting;
|
||||
|
||||
private void Update()
|
||||
@ -51,12 +55,14 @@ namespace BlueWater.Tycoons
|
||||
{
|
||||
GameManager.Instance.CurrentTycoonPlayer.IsCleaningFloor = true;
|
||||
_isPlayerInteracting = true;
|
||||
AudioManager.Instance.PlaySfx(_cleaningSfxName);
|
||||
}
|
||||
|
||||
public override void CancelInteraction()
|
||||
{
|
||||
GameManager.Instance.CurrentTycoonPlayer.IsCleaningFloor = false;
|
||||
_isPlayerInteracting = false;
|
||||
AudioManager.Instance.StopSfx(_cleaningSfxName);
|
||||
}
|
||||
|
||||
public override bool CanInteraction()
|
||||
|
@ -9,6 +9,7 @@ namespace BlueWater.Tycoons
|
||||
public static class PumpSpineAnimation
|
||||
{
|
||||
public const string Idle = "Idle";
|
||||
public const string Stop = "IdleStop";
|
||||
public const string Run = "Run";
|
||||
}
|
||||
|
||||
@ -37,11 +38,14 @@ namespace BlueWater.Tycoons
|
||||
private string _playPumpSfxName = "PlayPump";
|
||||
|
||||
private bool _isPlayerInteracting;
|
||||
private bool _isActivated;
|
||||
|
||||
protected override void Awake()
|
||||
{
|
||||
base.Awake();
|
||||
|
||||
EventManager.OnActivatePump += Activate;
|
||||
|
||||
_spineController = GetComponent<SpineController>();
|
||||
}
|
||||
|
||||
@ -49,7 +53,7 @@ namespace BlueWater.Tycoons
|
||||
{
|
||||
base.Start();
|
||||
|
||||
_spineController.PlayAnimation(PumpSpineAnimation.Idle, true);
|
||||
_spineController.PlayAnimation(PumpSpineAnimation.Stop, false);
|
||||
}
|
||||
|
||||
private void Update()
|
||||
@ -83,6 +87,11 @@ namespace BlueWater.Tycoons
|
||||
}
|
||||
}
|
||||
|
||||
private void OnDestroy()
|
||||
{
|
||||
EventManager.OnActivatePump -= Activate;
|
||||
}
|
||||
|
||||
public override void Interaction()
|
||||
{
|
||||
AudioManager.Instance.PlaySfx(_attackSfxName, true);
|
||||
@ -103,7 +112,7 @@ namespace BlueWater.Tycoons
|
||||
|
||||
public override bool CanInteraction()
|
||||
{
|
||||
return !GameManager.Instance.CurrentTycoonPlayer.TycoonPickupHandler.IsPickedUpAnything();
|
||||
return _isActivated && !GameManager.Instance.CurrentTycoonPlayer.TycoonPickupHandler.IsPickedUpAnything();
|
||||
}
|
||||
|
||||
public override void ShowInteractionUi()
|
||||
@ -119,5 +128,11 @@ namespace BlueWater.Tycoons
|
||||
EventManager.InvokeHideInteractionUi();
|
||||
IsShowing = false;
|
||||
}
|
||||
|
||||
public void Activate()
|
||||
{
|
||||
_isActivated = true;
|
||||
_spineController.PlayAnimation(PumpSpineAnimation.Idle, true);
|
||||
}
|
||||
}
|
||||
}
|
@ -76,19 +76,6 @@ namespace BlueWater.Tycoons
|
||||
private IEnumerator OpenRewardBoxCoroutine()
|
||||
{
|
||||
_isInteracting = true;
|
||||
_animationController.SetAnimationParameter("isOpened", true);
|
||||
|
||||
var animationStarted = false;
|
||||
yield return StartCoroutine(_animationController.WaitForAnimationToRun("Open",
|
||||
success => animationStarted = success));
|
||||
|
||||
if (!animationStarted)
|
||||
{
|
||||
Destroy(gameObject);
|
||||
yield break;
|
||||
}
|
||||
|
||||
yield return new WaitUntil(() => _animationController.GetCurrentAnimationNormalizedTime() >= 1f);
|
||||
|
||||
EventManager.InvokeAddedGold(-_requiredGold, false);
|
||||
|
||||
@ -104,6 +91,20 @@ namespace BlueWater.Tycoons
|
||||
throw new ArgumentOutOfRangeException();
|
||||
}
|
||||
|
||||
_animationController.SetAnimationParameter("isOpened", true);
|
||||
|
||||
var animationStarted = false;
|
||||
yield return StartCoroutine(_animationController.WaitForAnimationToRun("Open",
|
||||
success => animationStarted = success));
|
||||
|
||||
if (!animationStarted)
|
||||
{
|
||||
Destroy(gameObject);
|
||||
yield break;
|
||||
}
|
||||
|
||||
yield return new WaitUntil(() => _animationController.GetCurrentAnimationNormalizedTime() >= 1f);
|
||||
|
||||
Destroy(gameObject);
|
||||
}
|
||||
}
|
||||
|
@ -2,6 +2,7 @@ using BlueWater.Audios;
|
||||
using BlueWater.Interfaces;
|
||||
using BlueWater.Items;
|
||||
using BlueWater.Players;
|
||||
using Sirenix.OdinInspector;
|
||||
using UnityEngine;
|
||||
|
||||
namespace BlueWater.Tycoons
|
||||
@ -34,9 +35,13 @@ namespace BlueWater.Tycoons
|
||||
[SerializeField]
|
||||
private bool _isChanged;
|
||||
|
||||
[Title("사운드")]
|
||||
[SerializeField]
|
||||
private string _discardSfxName = "DiscardCocktail";
|
||||
|
||||
[SerializeField]
|
||||
private string _changeRandomBoxSfxName = "ChangeRandomBox";
|
||||
|
||||
private bool _isPlayerInteracting;
|
||||
private bool _canInteraction = true;
|
||||
|
||||
@ -121,6 +126,7 @@ namespace BlueWater.Tycoons
|
||||
{
|
||||
if (!_canRandomChange) return;
|
||||
|
||||
AudioManager.Instance.PlaySfx(_changeRandomBoxSfxName);
|
||||
_spineController.PlayAnimation(TrashCanSpineAnimation.ChangeRandomBox, false);
|
||||
_spineController.AddAnimation(TrashCanSpineAnimation.RandomBoxIdle, true);
|
||||
_isChanged = true;
|
||||
|
@ -12,5 +12,15 @@ namespace BlueWater
|
||||
public const string CompleteFirstGame = "CompleteFirstGame";
|
||||
|
||||
// 튜토리얼 데이터
|
||||
public const string TutorialA = "TutorialA";
|
||||
public const string TutorialB = "TutorialB";
|
||||
public const string TutorialC = "TutorialC";
|
||||
public const string TutorialD = "TutorialD";
|
||||
public const string TutorialE = "TutorialE";
|
||||
public const string TutorialF = "TutorialF";
|
||||
public const string TutorialG = "TutorialG";
|
||||
public const string TutorialH = "TutorialH";
|
||||
public const string TutorialI = "TutorialI";
|
||||
public const string TutorialJ = "TutorialJ";
|
||||
}
|
||||
}
|
||||
|
@ -36,4 +36,4 @@ MonoBehaviour:
|
||||
- <BgmName>k__BackingField: TycoonBgm02
|
||||
<Clip>k__BackingField: {fileID: 8300000, guid: 26776146cb587a74aa860cdac5318a39, type: 3}
|
||||
- <BgmName>k__BackingField: TycoonResult
|
||||
<Clip>k__BackingField: {fileID: 8300000, guid: 727c8fcf7bfe53744968a986ff7b43aa, type: 3}
|
||||
<Clip>k__BackingField: {fileID: 8300000, guid: e149ff3b8678af448a8e1f04cf55649c, type: 3}
|
||||
|
@ -82,7 +82,7 @@ MonoBehaviour:
|
||||
- <SfxName>k__BackingField: CleaningTable
|
||||
<Clip>k__BackingField: {fileID: 8300000, guid: 717f06a127178564ab5ea8cdf9da3ef2, type: 3}
|
||||
- <SfxName>k__BackingField: OpenManualBook
|
||||
<Clip>k__BackingField: {fileID: 8300000, guid: a324e82da09f7f84cab40d74f755c9e8, type: 3}
|
||||
<Clip>k__BackingField: {fileID: 8300000, guid: 1b87c0475bbd52b429768eeffe0b6ff5, type: 3}
|
||||
- <SfxName>k__BackingField: CloseManualBook
|
||||
<Clip>k__BackingField: {fileID: 8300000, guid: b1d132518b614a743ac3a571ac75718c, type: 3}
|
||||
- <SfxName>k__BackingField: SucceedServing
|
||||
@ -116,10 +116,20 @@ MonoBehaviour:
|
||||
- <SfxName>k__BackingField: TycoonPlayerWalking
|
||||
<Clip>k__BackingField: {fileID: 8300000, guid: 4b5f41d537a9a574b9520f50b39fb425, type: 3}
|
||||
- <SfxName>k__BackingField: SelectCard
|
||||
<Clip>k__BackingField: {fileID: 8300000, guid: 9f82d570d14d65b4a80fe00bae7bc0c0, type: 3}
|
||||
<Clip>k__BackingField: {fileID: 8300000, guid: 39e368c24fb04084ea3ba929f16a4e91, type: 3}
|
||||
- <SfxName>k__BackingField: CreateCrew
|
||||
<Clip>k__BackingField: {fileID: 8300000, guid: 557c74c78a72aac41ae6da3f8477169c, type: 3}
|
||||
<Clip>k__BackingField: {fileID: 8300000, guid: cbb6eb52c18da1c43bc2aa34def2df9c, type: 3}
|
||||
- <SfxName>k__BackingField: TycoonPlayerAttacked
|
||||
<Clip>k__BackingField: {fileID: 8300000, guid: 416cb3dc1c8801f46a4a3b14d7665d8b, type: 3}
|
||||
- <SfxName>k__BackingField: RewardBoxInteractionFailed
|
||||
<Clip>k__BackingField: {fileID: 8300000, guid: 5850aa1a011156841bed2ffc74d93bbd, type: 3}
|
||||
- <SfxName>k__BackingField: TycoonPlayerDashing
|
||||
<Clip>k__BackingField: {fileID: 8300000, guid: 595646b0d77e94543bbf73c0236ae42f, type: 3}
|
||||
- <SfxName>k__BackingField: ChangeRandomBox
|
||||
<Clip>k__BackingField: {fileID: 8300000, guid: 8fec2c602d8ae2b4ca2ab0f1c0f8a117, type: 3}
|
||||
- <SfxName>k__BackingField: Purify
|
||||
<Clip>k__BackingField: {fileID: 8300000, guid: b554c7102f4142d46aad7dd333a2616b, type: 3}
|
||||
- <SfxName>k__BackingField: CreateMoldy
|
||||
<Clip>k__BackingField: {fileID: 8300000, guid: a041f5ba1fec6304895b80091ebf431b, type: 3}
|
||||
- <SfxName>k__BackingField: RareCardOpen
|
||||
<Clip>k__BackingField: {fileID: 8300000, guid: 28272de0f0479f94691b57e097565010, type: 3}
|
||||
|
@ -30,6 +30,139 @@ MonoBehaviour:
|
||||
<PageIndex>k__BackingField: 3
|
||||
<DescriptionIdx>k__BackingField: TutorialA03
|
||||
<Sprite>k__BackingField: {fileID: 21300000, guid: 29fd4626221cc4e449047cb509a4b670, type: 3}
|
||||
- <Key>k__BackingField: TutorialB
|
||||
<Value>k__BackingField:
|
||||
<TutorialName>k__BackingField: TutorialB
|
||||
<TitleTextIdx>k__BackingField: TutorialTitleB
|
||||
<TutorialPages>k__BackingField:
|
||||
- <TutorialPageType>k__BackingField: 0
|
||||
<PageIndex>k__BackingField: 1
|
||||
<DescriptionIdx>k__BackingField: TutorialB01
|
||||
<Sprite>k__BackingField: {fileID: 21300000, guid: 3d7a8b0b4b41eac4aa4098cef0206994, type: 3}
|
||||
- <TutorialPageType>k__BackingField: 1
|
||||
<PageIndex>k__BackingField: 2
|
||||
<DescriptionIdx>k__BackingField: TutorialB02
|
||||
<Sprite>k__BackingField: {fileID: 21300000, guid: 1b6fbbe5c5df6df45b4feabedfc5d24d, type: 3}
|
||||
- <TutorialPageType>k__BackingField: 1
|
||||
<PageIndex>k__BackingField: 3
|
||||
<DescriptionIdx>k__BackingField: TutorialB03
|
||||
<Sprite>k__BackingField: {fileID: 21300000, guid: 4b752d2d5763abc4cb65b8355450cc70, type: 3}
|
||||
- <TutorialPageType>k__BackingField: 2
|
||||
<PageIndex>k__BackingField: 4
|
||||
<DescriptionIdx>k__BackingField: TutorialB04
|
||||
<Sprite>k__BackingField: {fileID: 21300000, guid: f13384a7d3bd41a48a5ef3bd2671681b, type: 3}
|
||||
- <Key>k__BackingField: TutorialC
|
||||
<Value>k__BackingField:
|
||||
<TutorialName>k__BackingField: TutorialC
|
||||
<TitleTextIdx>k__BackingField: TutorialTitleC
|
||||
<TutorialPages>k__BackingField:
|
||||
- <TutorialPageType>k__BackingField: 0
|
||||
<PageIndex>k__BackingField: 1
|
||||
<DescriptionIdx>k__BackingField: TutorialC01
|
||||
<Sprite>k__BackingField: {fileID: 21300000, guid: 4c88f781368f1354bbc3dc6d16a5e092, type: 3}
|
||||
- <TutorialPageType>k__BackingField: 2
|
||||
<PageIndex>k__BackingField: 2
|
||||
<DescriptionIdx>k__BackingField: TutorialC02
|
||||
<Sprite>k__BackingField: {fileID: 21300000, guid: c2b2347daad35824fb06639765562756, type: 3}
|
||||
- <Key>k__BackingField: TutorialD
|
||||
<Value>k__BackingField:
|
||||
<TutorialName>k__BackingField: TutorialD
|
||||
<TitleTextIdx>k__BackingField: TutorialTitleD
|
||||
<TutorialPages>k__BackingField:
|
||||
- <TutorialPageType>k__BackingField: 0
|
||||
<PageIndex>k__BackingField: 1
|
||||
<DescriptionIdx>k__BackingField: TutorialD01
|
||||
<Sprite>k__BackingField: {fileID: 21300000, guid: 498ee1d309cc40147be2fbc30f4e1f98, type: 3}
|
||||
- <TutorialPageType>k__BackingField: 2
|
||||
<PageIndex>k__BackingField: 2
|
||||
<DescriptionIdx>k__BackingField: TutorialD02
|
||||
<Sprite>k__BackingField: {fileID: 21300000, guid: 0e5d85d1988fddf4489c332411fdcd01, type: 3}
|
||||
- <Key>k__BackingField: TutorialE
|
||||
<Value>k__BackingField:
|
||||
<TutorialName>k__BackingField: TutorialE
|
||||
<TitleTextIdx>k__BackingField: TutorialTitleE
|
||||
<TutorialPages>k__BackingField:
|
||||
- <TutorialPageType>k__BackingField: 0
|
||||
<PageIndex>k__BackingField: 1
|
||||
<DescriptionIdx>k__BackingField: TutorialE01
|
||||
<Sprite>k__BackingField: {fileID: 21300000, guid: 50aa58873f7c70a4e9e852c4f85c961d, type: 3}
|
||||
- <TutorialPageType>k__BackingField: 1
|
||||
<PageIndex>k__BackingField: 2
|
||||
<DescriptionIdx>k__BackingField: TutorialE02
|
||||
<Sprite>k__BackingField: {fileID: 21300000, guid: 1df0d2dcaa205ac4896a9445e53ca20d, type: 3}
|
||||
- <TutorialPageType>k__BackingField: 1
|
||||
<PageIndex>k__BackingField: 3
|
||||
<DescriptionIdx>k__BackingField: TutorialE03
|
||||
<Sprite>k__BackingField: {fileID: 21300000, guid: e8737123e0a24884fbdee2f95b076c02, type: 3}
|
||||
- <TutorialPageType>k__BackingField: 2
|
||||
<PageIndex>k__BackingField: 4
|
||||
<DescriptionIdx>k__BackingField: TutorialE04
|
||||
<Sprite>k__BackingField: {fileID: 21300000, guid: b944272f378e723459f5b917aecea0df, type: 3}
|
||||
- <Key>k__BackingField: TutorialF
|
||||
<Value>k__BackingField:
|
||||
<TutorialName>k__BackingField: TutorialF
|
||||
<TitleTextIdx>k__BackingField: TutorialTitleF
|
||||
<TutorialPages>k__BackingField:
|
||||
- <TutorialPageType>k__BackingField: 0
|
||||
<PageIndex>k__BackingField: 1
|
||||
<DescriptionIdx>k__BackingField: TutorialF01
|
||||
<Sprite>k__BackingField: {fileID: 21300000, guid: 34afe998d81409849ac9027c92aa8298, type: 3}
|
||||
- <TutorialPageType>k__BackingField: 0
|
||||
<PageIndex>k__BackingField: 2
|
||||
<DescriptionIdx>k__BackingField: TutorialF02
|
||||
<Sprite>k__BackingField: {fileID: 21300000, guid: 314511725dea78e489cd83c8e6e7c7f4, type: 3}
|
||||
- <Key>k__BackingField: TutorialG
|
||||
<Value>k__BackingField:
|
||||
<TutorialName>k__BackingField: TutorialG
|
||||
<TitleTextIdx>k__BackingField: TutorialTitleG
|
||||
<TutorialPages>k__BackingField:
|
||||
- <TutorialPageType>k__BackingField: 0
|
||||
<PageIndex>k__BackingField: 1
|
||||
<DescriptionIdx>k__BackingField: TutorialG01
|
||||
<Sprite>k__BackingField: {fileID: 21300000, guid: a89ec2f974875f84ba47bf0ee5f6bf43, type: 3}
|
||||
- <TutorialPageType>k__BackingField: 2
|
||||
<PageIndex>k__BackingField: 2
|
||||
<DescriptionIdx>k__BackingField: TutorialG02
|
||||
<Sprite>k__BackingField: {fileID: 21300000, guid: 28a69f413a21ad548aa6e4add76be684, type: 3}
|
||||
- <Key>k__BackingField: TutorialH
|
||||
<Value>k__BackingField:
|
||||
<TutorialName>k__BackingField: TutorialH
|
||||
<TitleTextIdx>k__BackingField: TutorialTitleH
|
||||
<TutorialPages>k__BackingField:
|
||||
- <TutorialPageType>k__BackingField: 3
|
||||
<PageIndex>k__BackingField: 1
|
||||
<DescriptionIdx>k__BackingField: TutorialH01
|
||||
<Sprite>k__BackingField: {fileID: 21300000, guid: db00f49f58fded241a25b68b4ac8ff9a, type: 3}
|
||||
- <Key>k__BackingField: TutorialI
|
||||
<Value>k__BackingField:
|
||||
<TutorialName>k__BackingField: TutorialI
|
||||
<TitleTextIdx>k__BackingField: TutorialTitleI
|
||||
<TutorialPages>k__BackingField:
|
||||
- <TutorialPageType>k__BackingField: 3
|
||||
<PageIndex>k__BackingField: 1
|
||||
<DescriptionIdx>k__BackingField: TutorialI01
|
||||
<Sprite>k__BackingField: {fileID: 21300000, guid: 6758a337148c7474588128873b3695a2, type: 3}
|
||||
- <Key>k__BackingField: TutorialJ
|
||||
<Value>k__BackingField:
|
||||
<TutorialName>k__BackingField: TutorialJ
|
||||
<TitleTextIdx>k__BackingField: TutorialTitleJ
|
||||
<TutorialPages>k__BackingField:
|
||||
- <TutorialPageType>k__BackingField: 0
|
||||
<PageIndex>k__BackingField: 1
|
||||
<DescriptionIdx>k__BackingField: TutorialJ01
|
||||
<Sprite>k__BackingField: {fileID: 21300000, guid: df7a898725d87014cba236537831e17a, type: 3}
|
||||
- <TutorialPageType>k__BackingField: 1
|
||||
<PageIndex>k__BackingField: 2
|
||||
<DescriptionIdx>k__BackingField: TutorialJ02
|
||||
<Sprite>k__BackingField: {fileID: 21300000, guid: f3aded03bbc1e8345b08380f7647ffd4, type: 3}
|
||||
- <TutorialPageType>k__BackingField: 1
|
||||
<PageIndex>k__BackingField: 3
|
||||
<DescriptionIdx>k__BackingField: TutorialJ03
|
||||
<Sprite>k__BackingField: {fileID: 21300000, guid: 66cfebf11cb5b7d46bbec75addd1764e, type: 3}
|
||||
- <TutorialPageType>k__BackingField: 2
|
||||
<PageIndex>k__BackingField: 4
|
||||
<DescriptionIdx>k__BackingField: TutorialJ04
|
||||
<Sprite>k__BackingField: {fileID: 21300000, guid: 5d6455c1c94a7d44395818bc14d8a867, type: 3}
|
||||
<FirstPopup>k__BackingField: {fileID: 1581927570, guid: d881395249d9f7d43940877db16f096d, type: 3}
|
||||
<MiddlePopup>k__BackingField: {fileID: 1740845040, guid: 4eb21a9cf7ed8e44388a74756a151b20, type: 3}
|
||||
<LastPopup>k__BackingField: {fileID: -1576049482, guid: d21603cd31610504c847fd606881daba, type: 3}
|
||||
|
@ -71,6 +71,12 @@ namespace BlueWater.Tycoons
|
||||
newCrew.Initialize();
|
||||
EventManager.InvokeUpdateCrewUi(BartenderCrews.Count, ServerCrews.Count, CleanerCrews.Count);
|
||||
|
||||
if (!ES3.Load(SaveData.TutorialF, false))
|
||||
{
|
||||
EventManager.InvokeTutorial(TutorialName.TutorialF);
|
||||
ES3.Save(SaveData.TutorialF, true);
|
||||
}
|
||||
|
||||
return newCrew;
|
||||
}
|
||||
|
||||
@ -82,6 +88,12 @@ namespace BlueWater.Tycoons
|
||||
newCrew.Initialize();
|
||||
EventManager.InvokeUpdateCrewUi(BartenderCrews.Count, ServerCrews.Count, CleanerCrews.Count);
|
||||
|
||||
if (!ES3.Load(SaveData.TutorialD, false))
|
||||
{
|
||||
EventManager.InvokeTutorial(TutorialName.TutorialD);
|
||||
ES3.Save(SaveData.TutorialD, true);
|
||||
}
|
||||
|
||||
return newCrew;
|
||||
}
|
||||
|
||||
@ -98,6 +110,12 @@ namespace BlueWater.Tycoons
|
||||
newCrew.Initialize();
|
||||
EventManager.InvokeUpdateCrewUi(BartenderCrews.Count, ServerCrews.Count, CleanerCrews.Count);
|
||||
|
||||
if (!ES3.Load(SaveData.TutorialE, false))
|
||||
{
|
||||
EventManager.InvokeTutorial(TutorialName.TutorialE);
|
||||
ES3.Save(SaveData.TutorialE, true);
|
||||
}
|
||||
|
||||
return newCrew;
|
||||
}
|
||||
|
||||
|
@ -8,8 +8,9 @@ namespace BlueWater
|
||||
{
|
||||
public enum RewardBoxType
|
||||
{
|
||||
Normal = 0,
|
||||
Rare = 1
|
||||
None = 0,
|
||||
Normal = 1,
|
||||
Rare = 2
|
||||
}
|
||||
|
||||
[Serializable]
|
||||
|
@ -368,10 +368,14 @@ namespace BlueWater
|
||||
_reachedCollider.transform.position = _originalReachedPosition;
|
||||
EventManager.InvokeCocktailStarted();
|
||||
}
|
||||
else if (_instanceLiquidCount >= _maxLiquidCount)
|
||||
{
|
||||
return;
|
||||
}
|
||||
|
||||
_elapsedTime = 0f;
|
||||
_isPouring = true;
|
||||
AudioManager.Instance.PlaySfx(_pouringSfxName, loop: true);
|
||||
AudioManager.Instance.PlaySfx(_pouringSfxName);
|
||||
|
||||
// To Center 이동 코루틴이 활성화 중이지 않을 때
|
||||
if (_movePanelToCenterInstance == null)
|
||||
@ -582,7 +586,7 @@ namespace BlueWater
|
||||
float offsetY = Mathf.Lerp(_offsetY.x, _offsetY.y, t);
|
||||
var playerViewportPoint = mainCamera.WorldToViewportPoint(playerPosition);
|
||||
var panelWorldPosition = _overlayCamera.ViewportToWorldPoint(new Vector3(playerViewportPoint.x,
|
||||
playerViewportPoint.y, _overlayCamera.nearClipPlane));
|
||||
playerViewportPoint.y, playerViewportPoint.z));
|
||||
panelWorldPosition.y += offsetY;
|
||||
|
||||
var lerpTime = elapsedTime / _moveToPlayerDuration;
|
||||
@ -606,7 +610,7 @@ namespace BlueWater
|
||||
float offsetY = Mathf.Lerp(_offsetY.x, _offsetY.y, t);
|
||||
var playerViewportPoint = mainCamera.WorldToViewportPoint(playerPosition);
|
||||
var panelWorldPosition = _overlayCamera.ViewportToWorldPoint(new Vector3(playerViewportPoint.x,
|
||||
playerViewportPoint.y, _overlayCamera.nearClipPlane));
|
||||
playerViewportPoint.y, playerViewportPoint.z));
|
||||
panelWorldPosition.y += offsetY;
|
||||
|
||||
_liquidPanel.transform.position = panelWorldPosition;
|
||||
|
@ -29,6 +29,9 @@ namespace BlueWater.Tycoons
|
||||
[SerializeField]
|
||||
private string _selectCardSfxName = "SelectCard";
|
||||
|
||||
[SerializeField]
|
||||
private string _purifySfxName = "Purify";
|
||||
|
||||
private TycoonManager _tycoonManager;
|
||||
private TycoonStatus _tycoonStatus;
|
||||
|
||||
@ -135,6 +138,7 @@ namespace BlueWater.Tycoons
|
||||
break;
|
||||
case "AllCustomerPurification":
|
||||
EventManager.InvokePurifiedCustomerAll();
|
||||
AudioManager.Instance.PlaySfx(_purifySfxName);
|
||||
break;
|
||||
case "GaugeTimeUp":
|
||||
_tycoonStatus.CustomerHurryTimeIncrease += 3;
|
||||
|
@ -1,6 +1,7 @@
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Linq;
|
||||
using BlueWater.Audios;
|
||||
using BlueWater.Items;
|
||||
using Sirenix.OdinInspector;
|
||||
using UnityEngine;
|
||||
@ -33,6 +34,9 @@ namespace BlueWater.Tycoons
|
||||
|
||||
private List<Barrel> _barrels;
|
||||
|
||||
[SerializeField]
|
||||
private string _createMoldySfxName = "CreateMoldy";
|
||||
|
||||
private void Awake()
|
||||
{
|
||||
_barrels = new List<Barrel>
|
||||
@ -125,6 +129,8 @@ namespace BlueWater.Tycoons
|
||||
|
||||
int randomIndex = Random.Range(0, moldableElements.Count);
|
||||
moldableElements[randomIndex].Mold();
|
||||
|
||||
AudioManager.Instance.PlaySfx(_createMoldySfxName);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -1,5 +1,3 @@
|
||||
using System;
|
||||
using BlueWater.Audios;
|
||||
using UnityEngine;
|
||||
using Sirenix.OdinInspector;
|
||||
|
||||
@ -29,9 +27,6 @@ namespace BlueWater.Tycoons
|
||||
[field: SerializeField]
|
||||
public TycoonCardController TycoonCardController { get; private set; }
|
||||
|
||||
[SerializeField]
|
||||
private string _dailyBgm;
|
||||
|
||||
[field: Title("타이쿤 플레이어 스탯")]
|
||||
[field: SerializeField]
|
||||
public TycoonStatus TycoonStatus { get; private set; }
|
||||
@ -47,11 +42,6 @@ namespace BlueWater.Tycoons
|
||||
|
||||
private void Start()
|
||||
{
|
||||
if (!string.IsNullOrEmpty(_dailyBgm))
|
||||
{
|
||||
AudioManager.Instance.PlayBgm(_dailyBgm);
|
||||
}
|
||||
|
||||
TycoonStatus = new TycoonStatus();
|
||||
TycoonStatus.Initialize();
|
||||
}
|
||||
|
@ -156,7 +156,7 @@ namespace BlueWater.Tycoons
|
||||
[Button("노말 상자 생성")]
|
||||
public void CreateChest(LevelData levelData)
|
||||
{
|
||||
if (levelData.Idx == "1") return;
|
||||
if (levelData.Idx == "1" || levelData.RewardBoxType == RewardBoxType.None) return;
|
||||
|
||||
var spawnPosition = Utils.RandomPositionOnGraph(1);
|
||||
|
||||
|
@ -352,6 +352,7 @@ namespace BlueWater.Tycoons
|
||||
case "Upgrade1":
|
||||
tycoonManager.CustomerTableController.ShowCustomerTable(1);
|
||||
tycoonManager.TycoonIngredientController.LiquidBarrelB.Activate();
|
||||
EventManager.InvokeActivatePump();
|
||||
break;
|
||||
case "Upgrade2":
|
||||
tycoonManager.CustomerTableController.ShowCustomerTable(2);
|
||||
|
8
Assets/02.Scripts/Ui/Popup.meta
Normal file
@ -0,0 +1,8 @@
|
||||
fileFormatVersion: 2
|
||||
guid: 4b8f7337f907cdc4e893f2d0a5bc9b80
|
||||
folderAsset: yes
|
||||
DefaultImporter:
|
||||
externalObjects: {}
|
||||
userData:
|
||||
assetBundleName:
|
||||
assetBundleVariant:
|
47
Assets/02.Scripts/Ui/Popup/PausePopupUi.cs
Normal file
@ -0,0 +1,47 @@
|
||||
namespace BlueWater.Uis
|
||||
{
|
||||
public class PausePopupUi : PopupUi
|
||||
{
|
||||
public override void Open()
|
||||
{
|
||||
VisualFeedbackManager.Instance.SetBaseTimeScale(0f);
|
||||
PopupUiController.RegisterPopup(this);
|
||||
IsOpened = true;
|
||||
IsPaused = true;
|
||||
}
|
||||
|
||||
public override void Close()
|
||||
{
|
||||
PopupUiController.UnregisterPopup(this);
|
||||
IsOpened = false;
|
||||
IsPaused = false;
|
||||
|
||||
if (PopupUiController.IsPopupListEmpty() || !PopupUiController.IsPausedPopupList())
|
||||
{
|
||||
VisualFeedbackManager.Instance.ResetTimeScale();
|
||||
}
|
||||
}
|
||||
|
||||
public void OpenSwitch(InputActionMaps inputActionMaps)
|
||||
{
|
||||
VisualFeedbackManager.Instance.SetBaseTimeScale(0f);
|
||||
PopupUiController.RegisterPopup(this);
|
||||
IsOpened = true;
|
||||
IsPaused = true;
|
||||
PlayerInputKeyManager.Instance.SwitchCurrentActionMap(inputActionMaps);
|
||||
}
|
||||
|
||||
public void CloseSwitch(InputActionMaps inputActionMaps)
|
||||
{
|
||||
PopupUiController.UnregisterPopup(this);
|
||||
IsOpened = false;
|
||||
IsPaused = false;
|
||||
|
||||
if (PopupUiController.IsPopupListEmpty() || !PopupUiController.IsPausedPopupList())
|
||||
{
|
||||
VisualFeedbackManager.Instance.ResetTimeScale();
|
||||
PlayerInputKeyManager.Instance.SwitchCurrentActionMap(inputActionMaps);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
2
Assets/02.Scripts/Ui/Popup/PausePopupUi.cs.meta
Normal file
@ -0,0 +1,2 @@
|
||||
fileFormatVersion: 2
|
||||
guid: a32c3115487d6204a82e2a52229e19e7
|
@ -5,19 +5,16 @@ namespace BlueWater.Uis
|
||||
public class PopupUi : MonoBehaviour
|
||||
{
|
||||
public bool IsOpened { get; protected set; }
|
||||
public bool IsPaused { get; protected set; }
|
||||
|
||||
public virtual void Open()
|
||||
{
|
||||
// 화면의 가장 앞으로 가져오기
|
||||
// transform.SetAsLastSibling();
|
||||
gameObject.SetActive(true);
|
||||
PopupUiController.RegisterPopup(this);
|
||||
IsOpened = true;
|
||||
}
|
||||
|
||||
public virtual void Close()
|
||||
{
|
||||
gameObject.SetActive(false);
|
||||
PopupUiController.UnregisterPopup(this);
|
||||
IsOpened = false;
|
||||
}
|
@ -56,6 +56,21 @@ namespace BlueWater
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 현재 열려있는 팝업 리스트 중에 시간을 멈춘 팝업이 있는지 없는지 확인
|
||||
/// </summary>
|
||||
public static bool IsPausedPopupList()
|
||||
{
|
||||
foreach (var element in PopupUis)
|
||||
{
|
||||
if (!element.IsPaused) continue;
|
||||
|
||||
return true;
|
||||
}
|
||||
|
||||
return false;
|
||||
}
|
||||
|
||||
// Popup 목록이 비어 있는지 확인
|
||||
public static bool IsPopupListEmpty() => PopupUis.Count == 0;
|
||||
|
@ -6,12 +6,16 @@ namespace BlueWater.Uis
|
||||
{
|
||||
public override void Open()
|
||||
{
|
||||
|
||||
PopupUiController.RegisterPopup(this);
|
||||
gameObject.SetActive(true);
|
||||
IsOpened = true;
|
||||
}
|
||||
|
||||
public override void Close()
|
||||
{
|
||||
|
||||
gameObject.SetActive(false);
|
||||
PopupUiController.UnregisterPopup(this);
|
||||
IsOpened = false;
|
||||
}
|
||||
|
||||
public override void EnableInput()
|
@ -125,16 +125,14 @@ public class TitleOptions : PopupUi
|
||||
|
||||
public override void Open()
|
||||
{
|
||||
PopupUiController.RegisterPopup(this);
|
||||
base.Open();
|
||||
_panel.SetActive(true);
|
||||
IsOpened = true;
|
||||
}
|
||||
|
||||
public override void Close()
|
||||
{
|
||||
_panel.SetActive(false);
|
||||
PopupUiController.UnregisterPopup(this);
|
||||
IsOpened = false;
|
||||
base.Close();
|
||||
}
|
||||
|
||||
public override void EnableInput()
|
||||
|
@ -3,7 +3,6 @@ using BlueWater.Uis;
|
||||
using UnityEngine;
|
||||
using UnityEngine.EventSystems;
|
||||
using UnityEngine.InputSystem;
|
||||
using UnityEngine.Serialization;
|
||||
using UnityEngine.UI;
|
||||
|
||||
namespace BlueWater
|
||||
@ -19,8 +18,8 @@ namespace BlueWater
|
||||
[SerializeField]
|
||||
private Button _cancelButton;
|
||||
|
||||
[FormerlySerializedAs("_uiNavigationController")] [SerializeField]
|
||||
private UiEventsController uiEventsController;
|
||||
[SerializeField]
|
||||
private UiEventsController _uiEventsController;
|
||||
|
||||
private InputAction _interactionEAction;
|
||||
private InputAction _closeOptionsAction;
|
||||
@ -49,17 +48,16 @@ namespace BlueWater
|
||||
|
||||
public override void Open()
|
||||
{
|
||||
PopupUiController.RegisterPopup(this);
|
||||
base.Open();
|
||||
_panel.SetActive(true);
|
||||
IsOpened = true;
|
||||
EventSystem.current.SetSelectedGameObject(_cancelButton.gameObject);
|
||||
// EventSystem.current.SetSelectedGameObject(_cancelButton.gameObject);
|
||||
}
|
||||
|
||||
public override void Close()
|
||||
{
|
||||
_panel.SetActive(false);
|
||||
PopupUiController.UnregisterPopup(this);
|
||||
IsOpened = false;
|
||||
base.Close();
|
||||
EventSystem.current.SetSelectedGameObject(null);
|
||||
}
|
||||
|
||||
public override void EnableInput()
|
||||
@ -67,7 +65,7 @@ namespace BlueWater
|
||||
_interactionEAction.performed += OnInteractionE;
|
||||
_closeOptionsAction.performed += OnCloseOptions;
|
||||
|
||||
uiEventsController.EnableAutoNavigate(_cancelButton.gameObject);
|
||||
_uiEventsController.EnableAutoNavigate(_cancelButton.gameObject);
|
||||
}
|
||||
|
||||
public override void DisableInput()
|
||||
@ -75,7 +73,7 @@ namespace BlueWater
|
||||
_interactionEAction.performed -= OnInteractionE;
|
||||
_closeOptionsAction.performed -= OnCloseOptions;
|
||||
|
||||
uiEventsController.DisableAutoNavigate();
|
||||
_uiEventsController.DisableAutoNavigate();
|
||||
}
|
||||
|
||||
public void OnInteractionE(InputAction.CallbackContext context)
|
||||
|
@ -12,7 +12,7 @@ using UnityEngine.UI;
|
||||
|
||||
namespace BlueWater.Titles
|
||||
{
|
||||
public class TycoonTitle : PopupUi
|
||||
public class TycoonTitle : PausePopupUi
|
||||
{
|
||||
[SerializeField]
|
||||
private GameObject _panel;
|
||||
@ -82,6 +82,8 @@ namespace BlueWater.Titles
|
||||
_openAction = _playerInputKeyManager.GetAction(InputActionMaps.Tycoon, TycoonActions.Options);
|
||||
_closeAction = _playerInputKeyManager.GetAction(InputActionMaps.TycoonUi, TycoonUiActions.Cancel);
|
||||
|
||||
EventManager.OnTutorial += ShowTutorialUiByName;
|
||||
|
||||
if (_isTitleScene)
|
||||
{
|
||||
_startGameButton.onClick.AddListener(() => SceneController.Instance.LoadScene(SceneName.Tycoon));
|
||||
@ -89,7 +91,7 @@ namespace BlueWater.Titles
|
||||
AudioManager.Instance.PlayBgm(_dailyBgm);
|
||||
|
||||
Open();
|
||||
EventSystem.current.SetSelectedGameObject(_startGameButton.gameObject);
|
||||
// EventSystem.current.SetSelectedGameObject(_startGameButton.gameObject);
|
||||
}
|
||||
else
|
||||
{
|
||||
@ -100,6 +102,7 @@ namespace BlueWater.Titles
|
||||
|
||||
titleOptions.CloseOptions = HideSettingUi;
|
||||
titleQuitUi.CloseQuit = HideQuitUi;
|
||||
_tycoonTutorial.CloseAction = HideTutorialUi;
|
||||
_versionText.text = GetVersion();
|
||||
|
||||
inkMaterialInstance = Instantiate(_ink.material);
|
||||
@ -108,6 +111,8 @@ namespace BlueWater.Titles
|
||||
|
||||
private void OnDestroy()
|
||||
{
|
||||
EventManager.OnTutorial -= ShowTutorialUiByName;
|
||||
|
||||
if (_isTitleScene)
|
||||
{
|
||||
_startGameButton?.onClick.RemoveListener(() => SceneController.Instance?.LoadScene(SceneName.Tycoon));
|
||||
@ -138,21 +143,19 @@ namespace BlueWater.Titles
|
||||
|
||||
public override void Open()
|
||||
{
|
||||
PopupUiController.RegisterPopup(this);
|
||||
OpenSwitch(InputActionMaps.TycoonUi);
|
||||
_panel.SetActive(true);
|
||||
|
||||
if (_isTitleScene)
|
||||
{
|
||||
|
||||
}
|
||||
else
|
||||
{
|
||||
VisualFeedbackManager.Instance.SetBaseTimeScale(0.0f);
|
||||
_playerInputKeyManager.SwitchCurrentActionMap(InputActionMaps.TycoonUi);
|
||||
EventSystem.current.SetSelectedGameObject(_resumeGameButton.gameObject);
|
||||
}
|
||||
|
||||
IsOpened = true;
|
||||
// if (_isTitleScene)
|
||||
// {
|
||||
//
|
||||
// }
|
||||
// else
|
||||
// {
|
||||
// VisualFeedbackManager.Instance.SetBaseTimeScale(0f);
|
||||
// _playerInputKeyManager.SwitchCurrentActionMap(InputActionMaps.TycoonUi);
|
||||
// // EventSystem.current.SetSelectedGameObject(_resumeGameButton.gameObject);
|
||||
// }
|
||||
}
|
||||
|
||||
public void OnClose(InputAction.CallbackContext context)
|
||||
@ -162,19 +165,22 @@ namespace BlueWater.Titles
|
||||
|
||||
public override void Close()
|
||||
{
|
||||
// base.Close();
|
||||
//
|
||||
// if (_isTitleScene)
|
||||
// {
|
||||
//
|
||||
// }
|
||||
// else
|
||||
// {
|
||||
// if (PopupUiController.IsPopupListEmpty() || !PopupUiController.IsPausedPopupList())
|
||||
// {
|
||||
// VisualFeedbackManager.Instance.ResetTimeScale();
|
||||
// _playerInputKeyManager.SwitchCurrentActionMap(InputActionMaps.Tycoon);
|
||||
// }
|
||||
// }
|
||||
_panel.SetActive(false);
|
||||
PopupUiController.UnregisterPopup(this);
|
||||
IsOpened = false;
|
||||
|
||||
if (_isTitleScene)
|
||||
{
|
||||
|
||||
}
|
||||
else
|
||||
{
|
||||
_playerInputKeyManager.SwitchCurrentActionMap(InputActionMaps.Tycoon);
|
||||
VisualFeedbackManager.Instance.ResetTimeScale();
|
||||
}
|
||||
CloseSwitch(InputActionMaps.Tycoon);
|
||||
}
|
||||
|
||||
public override void EnableInput()
|
||||
@ -238,19 +244,21 @@ namespace BlueWater.Titles
|
||||
{
|
||||
_titleMenuUiPanel.SetActive(false);
|
||||
titleOptions.Open();
|
||||
EventSystem.current.SetSelectedGameObject(null);
|
||||
}
|
||||
|
||||
public void HideSettingUi()
|
||||
{
|
||||
titleOptions.Close();
|
||||
_titleMenuUiPanel.SetActive(true);
|
||||
EventSystem.current.SetSelectedGameObject(_optionsButton.gameObject);
|
||||
// EventSystem.current.SetSelectedGameObject(_optionsButton.gameObject);
|
||||
}
|
||||
|
||||
public void ShowQuitUi()
|
||||
{
|
||||
_titleMenuUiPanel.SetActive(false);
|
||||
titleQuitUi.Open();
|
||||
EventSystem.current.SetSelectedGameObject(null);
|
||||
|
||||
Utils.StartUniqueCoroutine(this, ref _inkCoroutine, MoveInkBackground(1f));
|
||||
}
|
||||
@ -259,7 +267,7 @@ namespace BlueWater.Titles
|
||||
{
|
||||
titleQuitUi.Close();
|
||||
_titleMenuUiPanel.SetActive(true);
|
||||
EventSystem.current.SetSelectedGameObject(_quitGameButton.gameObject);
|
||||
// EventSystem.current.SetSelectedGameObject(_quitGameButton.gameObject);
|
||||
|
||||
Utils.StartUniqueCoroutine(this, ref _inkCoroutine, MoveInkBackground(0.4f));
|
||||
}
|
||||
@ -267,14 +275,32 @@ namespace BlueWater.Titles
|
||||
public void ShowTutorialUi()
|
||||
{
|
||||
_titleMenuUiPanel.SetActive(false);
|
||||
_tycoonTutorial.ShowUi();
|
||||
_tycoonTutorial.ShowUi(true);
|
||||
EventSystem.current.SetSelectedGameObject(null);
|
||||
|
||||
Utils.StartUniqueCoroutine(this, ref _inkCoroutine, MoveInkBackground(1f));
|
||||
}
|
||||
|
||||
public void HideTutorialUi()
|
||||
public void HideTutorialUi(bool isMenu)
|
||||
{
|
||||
if (!isMenu)
|
||||
{
|
||||
_panel.SetActive(false);
|
||||
}
|
||||
|
||||
_titleMenuUiPanel.SetActive(true);
|
||||
_tycoonTutorial.HideUi();
|
||||
EventSystem.current.SetSelectedGameObject(_tutorialButton.gameObject);
|
||||
// EventSystem.current.SetSelectedGameObject(_tutorialButton.gameObject);
|
||||
|
||||
Utils.StartUniqueCoroutine(this, ref _inkCoroutine, MoveInkBackground(0.4f));
|
||||
}
|
||||
|
||||
public void ShowTutorialUiByName(string tutorialName)
|
||||
{
|
||||
_titleMenuUiPanel.SetActive(false);
|
||||
_tycoonTutorial.ShowUiByName(tutorialName);
|
||||
_panel.SetActive(true);
|
||||
|
||||
Utils.StartUniqueCoroutine(this, ref _inkCoroutine, MoveInkBackground(1f));
|
||||
}
|
||||
|
||||
private IEnumerator MoveInkBackground(float pos)
|
||||
|
@ -18,7 +18,7 @@ using UnityEngine.UI;
|
||||
|
||||
namespace BlueWater.Uis
|
||||
{
|
||||
public class ManualBook : PopupUi
|
||||
public class ManualBook : PausePopupUi
|
||||
{
|
||||
[SerializeField]
|
||||
private GameObject _panel;
|
||||
@ -55,7 +55,7 @@ namespace BlueWater.Uis
|
||||
|
||||
[Title("참조")]
|
||||
[SerializeField]
|
||||
private UiEventsController uiEventsController;
|
||||
private UiEventsController _uiEventsController;
|
||||
|
||||
[Title("실시간 데이터")]
|
||||
[SerializeField]
|
||||
@ -99,8 +99,7 @@ namespace BlueWater.Uis
|
||||
|
||||
_openManualBookAction.performed += OnOpen;
|
||||
|
||||
uiEventsController.SetSelectObject(_cocktailRecipeButtons[0].gameObject);
|
||||
EventSystem.current.SetSelectedGameObject(uiEventsController.SelectObject);
|
||||
_uiEventsController.SetSelectObject(_cocktailRecipeButtons[0].gameObject);
|
||||
}
|
||||
|
||||
private void OnDestroy()
|
||||
@ -145,13 +144,10 @@ namespace BlueWater.Uis
|
||||
{
|
||||
if (!PopupUiController.IsPopupListEmpty()) return;
|
||||
|
||||
VisualFeedbackManager.Instance.SetBaseTimeScale(0.0f);
|
||||
PlayerInputKeyManager.Instance.SwitchCurrentActionMap(InputActionMaps.TycoonUi);
|
||||
PopupUiController.RegisterPopup(this);
|
||||
OpenSwitch(InputActionMaps.TycoonUi);
|
||||
_panel.SetActive(true);
|
||||
IsOpened = true;
|
||||
AudioManager.Instance.PlaySfx(_openManualSfxName, ignoreTimeScale: true);
|
||||
EventSystem.current.SetSelectedGameObject(uiEventsController.SelectObject);
|
||||
EventSystem.current.SetSelectedGameObject(_uiEventsController.SelectObject);
|
||||
}
|
||||
|
||||
public void OnClose(InputAction.CallbackContext context)
|
||||
@ -163,22 +159,19 @@ namespace BlueWater.Uis
|
||||
{
|
||||
AudioManager.Instance.PlaySfx(_closeManualSfxName, ignoreTimeScale: true);
|
||||
_panel.SetActive(false);
|
||||
PopupUiController.UnregisterPopup(this);
|
||||
PlayerInputKeyManager.Instance.SwitchCurrentActionMap(InputActionMaps.Tycoon);
|
||||
IsOpened = false;
|
||||
VisualFeedbackManager.Instance.ResetTimeScale();
|
||||
CloseSwitch(InputActionMaps.Tycoon);
|
||||
}
|
||||
|
||||
public override void EnableInput()
|
||||
{
|
||||
_pressQAction.performed += OnClose;
|
||||
_cancelAction.performed += OnClose;
|
||||
uiEventsController.EnableAutoNavigate();
|
||||
_uiEventsController.EnableAutoNavigate();
|
||||
}
|
||||
|
||||
public override void DisableInput()
|
||||
{
|
||||
uiEventsController.DisableAutoNavigate();
|
||||
_uiEventsController.DisableAutoNavigate();
|
||||
_pressQAction.performed -= OnClose;
|
||||
_cancelAction.performed -= OnClose;
|
||||
}
|
||||
@ -229,7 +222,7 @@ namespace BlueWater.Uis
|
||||
public void SelectItem(CocktailRecipeButton cocktailRecipeButton)
|
||||
{
|
||||
_selectedCocktailRecipeButton = cocktailRecipeButton;
|
||||
uiEventsController.SetSelectObject(_selectedCocktailRecipeButton.gameObject);
|
||||
_uiEventsController.SetSelectObject(_selectedCocktailRecipeButton.gameObject);
|
||||
|
||||
_selectedCocktailName.text = Utils.GetLocalizedString(_selectedCocktailRecipeButton.CocktailData.Idx);
|
||||
_selectedCocktailImage.sprite = _selectedCocktailRecipeButton.CocktailData.Sprite;
|
||||
|
72
Assets/02.Scripts/Ui/Tycoon/TutorialLink.cs
Normal file
@ -0,0 +1,72 @@
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using UnityEngine;
|
||||
|
||||
namespace BlueWater
|
||||
{
|
||||
[Serializable]
|
||||
public class TutorialLink
|
||||
{
|
||||
[field: SerializeField]
|
||||
public string TutorialName { get; private set; }
|
||||
|
||||
[field: SerializeField]
|
||||
public TutorialPageToggle TutorialPageToggle { get; private set; }
|
||||
|
||||
[field: SerializeField]
|
||||
public List<TycoonTutorialPopupUi> TycoonTutorialPopupUis { get; private set; }
|
||||
|
||||
[field: SerializeField]
|
||||
public int CurrentPageIndex { get; private set; }
|
||||
|
||||
public TutorialLink(string tutorialName, TutorialPageToggle tutorialPageToggle, List<TycoonTutorialPopupUi> tycoonTutorialPopupUis)
|
||||
{
|
||||
TutorialName = tutorialName;
|
||||
TutorialPageToggle = tutorialPageToggle;
|
||||
TycoonTutorialPopupUis = tycoonTutorialPopupUis;
|
||||
}
|
||||
|
||||
public void OnToggle(bool isOn)
|
||||
{
|
||||
if (!TutorialPageToggle) return;
|
||||
|
||||
TutorialPageToggle.OnToggle(isOn);
|
||||
|
||||
if (isOn)
|
||||
{
|
||||
OpenPage(0);
|
||||
}
|
||||
else
|
||||
{
|
||||
CloseAllPage();
|
||||
}
|
||||
}
|
||||
|
||||
public void OpenPage(int pageIndex)
|
||||
{
|
||||
CurrentPageIndex = Mathf.Clamp(pageIndex, 0, TycoonTutorialPopupUis.Count - 1);
|
||||
TycoonTutorialPopupUis[CurrentPageIndex].Open();
|
||||
}
|
||||
|
||||
public void ClosePage(int pageIndex)
|
||||
{
|
||||
TycoonTutorialPopupUis[CurrentPageIndex].Close();
|
||||
}
|
||||
|
||||
public void CloseAllPage()
|
||||
{
|
||||
foreach (TycoonTutorialPopupUi tycoonTutorialPopupUi in TycoonTutorialPopupUis)
|
||||
{
|
||||
if (!tycoonTutorialPopupUi.IsOpened) continue;
|
||||
|
||||
tycoonTutorialPopupUi.Close();
|
||||
}
|
||||
}
|
||||
|
||||
public void MovePage(bool moveNext)
|
||||
{
|
||||
ClosePage(CurrentPageIndex);
|
||||
OpenPage(CurrentPageIndex + (moveNext ? 1 : -1));
|
||||
}
|
||||
}
|
||||
}
|
2
Assets/02.Scripts/Ui/Tycoon/TutorialLink.cs.meta
Normal file
@ -0,0 +1,2 @@
|
||||
fileFormatVersion: 2
|
||||
guid: ac25cbaf820aa674eb6a1539b9ac4c01
|
@ -8,7 +8,7 @@ namespace BlueWater
|
||||
First = 0,
|
||||
Middle = 1,
|
||||
Last = 2,
|
||||
Sole = 3
|
||||
Solo = 3
|
||||
}
|
||||
|
||||
[Serializable]
|
||||
|
@ -14,6 +14,9 @@ namespace BlueWater
|
||||
{
|
||||
public class TutorialPageToggle : MonoBehaviour
|
||||
{
|
||||
[field: SerializeField]
|
||||
public RectTransform Rect { get; private set; }
|
||||
|
||||
[SerializeField]
|
||||
private Toggle _toggle;
|
||||
|
||||
@ -51,14 +54,17 @@ namespace BlueWater
|
||||
LocalizationSettings.SelectedLocaleChanged += OnChangedLocale;
|
||||
}
|
||||
|
||||
private void OnEnable()
|
||||
{
|
||||
_buttonText.text = Utils.GetLocalizedString(_tutorialInfo.TitleTextIdx);
|
||||
}
|
||||
|
||||
private void OnDestroy()
|
||||
{
|
||||
LocalizationSettings.SelectedLocaleChanged -= OnChangedLocale;
|
||||
|
||||
_selectSequence.Kill();
|
||||
_deselectSequence.Kill();
|
||||
|
||||
OnToggleEvent = null;
|
||||
}
|
||||
|
||||
private void OnChangedLocale(Locale locale)
|
||||
@ -102,17 +108,22 @@ namespace BlueWater
|
||||
.SetUpdate(true)
|
||||
.SetAutoKill(false)
|
||||
.Pause();
|
||||
|
||||
_toggle.interactable = true;
|
||||
_toggle.isOn = false;
|
||||
_toggleImage.sprite = _deselectToggleSprite;
|
||||
Vector3 newPosition = _buttonText.transform.localPosition;
|
||||
newPosition.y = _buttonTextPositionY.x;
|
||||
_buttonText.transform.localPosition = newPosition;
|
||||
Vector3 newScale = _toggleImage.transform.localScale;
|
||||
newScale.y = _buttonImageScale.x;
|
||||
_toggleImage.transform.localScale = newScale;
|
||||
}
|
||||
|
||||
public void OnToggle(bool isOn)
|
||||
{
|
||||
if (_toggle.isOn)
|
||||
{
|
||||
_toggle.interactable = false;
|
||||
return;
|
||||
}
|
||||
|
||||
_toggle.interactable = true;
|
||||
_toggle.isOn = isOn;
|
||||
_toggle.interactable = !_toggle.isOn;
|
||||
|
||||
if (isOn)
|
||||
{
|
||||
@ -126,6 +137,7 @@ namespace BlueWater
|
||||
_selectSequence?.Pause();
|
||||
_deselectSequence.Restart();
|
||||
}
|
||||
|
||||
OnToggleEvent?.Invoke(isOn);
|
||||
}
|
||||
}
|
||||
|
@ -10,7 +10,7 @@ using Random = UnityEngine.Random;
|
||||
|
||||
namespace BlueWater.Uis
|
||||
{
|
||||
public class TycoonRareRewardBoxUi : PopupUi
|
||||
public class TycoonRareRewardBoxUi : PausePopupUi
|
||||
{
|
||||
[SerializeField]
|
||||
private GameObject _panel;
|
||||
@ -24,14 +24,25 @@ namespace BlueWater.Uis
|
||||
private Vector3 _cardLocalScale_4 = new(0.7f, 0.7f, 1f);
|
||||
private Vector3 _cardLocalScale_5 = new(0.65f, 0.65f, 1f);
|
||||
|
||||
[SerializeField]
|
||||
private string _openSfxName = "OpenRareRewardBox";
|
||||
|
||||
[SerializeField]
|
||||
private Button allOpenCardButton;
|
||||
[SerializeField]
|
||||
private Button closeButton;
|
||||
|
||||
[Title("사운드")]
|
||||
[SerializeField]
|
||||
private string _openSfxName = "OpenRareRewardBox";
|
||||
|
||||
[SerializeField]
|
||||
private string _cardOpenSfxName = "RareCardOpen";
|
||||
|
||||
[SerializeField]
|
||||
private string _cardOpenAllSfxName = "SelectCard";
|
||||
|
||||
[Title("참조")]
|
||||
[SerializeField]
|
||||
private UiEventsController _uiEventsController;
|
||||
|
||||
private List<TycoonCard> _tycoonCards = new(5);
|
||||
private int viewCardCount = 0;
|
||||
|
||||
@ -61,36 +72,30 @@ namespace BlueWater.Uis
|
||||
|
||||
public override void Open()
|
||||
{
|
||||
OpenSwitch(InputActionMaps.TycoonUi);
|
||||
AudioManager.Instance.PlaySfx(_openSfxName, ignoreTimeScale: true);
|
||||
VisualFeedbackManager.Instance.SetBaseTimeScale(0.0f);
|
||||
PlayerInputKeyManager.Instance.SwitchCurrentActionMap(InputActionMaps.TycoonUi);
|
||||
PopupUiController.RegisterPopup(this);
|
||||
_panel.SetActive(true);
|
||||
IsOpened = true;
|
||||
|
||||
allOpenCardButton.gameObject.SetActive(true);
|
||||
closeButton.gameObject.SetActive(false);
|
||||
_panel.SetActive(true);
|
||||
}
|
||||
|
||||
public override void Close()
|
||||
{
|
||||
AudioManager.Instance.PlaySfx(_cardOpenAllSfxName, ignoreTimeScale: true);
|
||||
CloseSwitch(InputActionMaps.Tycoon);
|
||||
_panel.SetActive(false);
|
||||
PopupUiController.UnregisterPopup(this);
|
||||
PlayerInputKeyManager.Instance.SwitchCurrentActionMap(InputActionMaps.Tycoon);
|
||||
IsOpened = false;
|
||||
VisualFeedbackManager.Instance.ResetTimeScale();
|
||||
}
|
||||
|
||||
public override void EnableInput()
|
||||
{
|
||||
_interactionEAction.performed += OnInteractionE;
|
||||
this.GetComponent<UiEventsController>().EnableAutoNavigate();
|
||||
_uiEventsController.EnableAutoNavigate();
|
||||
}
|
||||
|
||||
public override void DisableInput()
|
||||
{
|
||||
_interactionEAction.performed -= OnInteractionE;
|
||||
this.GetComponent<UiEventsController>().DisableAutoNavigate();
|
||||
_uiEventsController.DisableAutoNavigate();
|
||||
}
|
||||
|
||||
|
||||
@ -149,11 +154,12 @@ namespace BlueWater.Uis
|
||||
_tycoonCardController.SelectCard(element);
|
||||
}
|
||||
|
||||
GetComponent<UiEventsController>().SetSelectObject(_tycoonCards[(int)(_tycoonCards.Count/2)].CardArea.gameObject);
|
||||
_uiEventsController.SetSelectObject(_tycoonCards[(int)(_tycoonCards.Count/2)].CardArea.gameObject);
|
||||
}
|
||||
|
||||
private void OpenCard(TycoonCard tycoonCard)
|
||||
{
|
||||
AudioManager.Instance.PlaySfx(_cardOpenSfxName, ignoreTimeScale: true);
|
||||
tycoonCard.Rotation_Start();
|
||||
tycoonCard.SetSelectAction(null);
|
||||
viewCardCount--;
|
||||
@ -168,6 +174,7 @@ namespace BlueWater.Uis
|
||||
[Button("카드 모두 열기")]
|
||||
public void AllOpenCard()
|
||||
{
|
||||
AudioManager.Instance.PlaySfx(_cardOpenSfxName, ignoreTimeScale: true);
|
||||
viewCardCount = 0;
|
||||
//남은 카드가 열리는 연출만 추가하자
|
||||
foreach (var element in _tycoonCards)
|
||||
|
@ -2,17 +2,19 @@ using System;
|
||||
using System.Collections;
|
||||
using System.Collections.Generic;
|
||||
using BlueWater.Audios;
|
||||
using BlueWater.Npcs.Customers;
|
||||
using BlueWater.Tycoons;
|
||||
using BlueWater.Utility;
|
||||
using UnityEngine;
|
||||
using Sirenix.OdinInspector;
|
||||
using TMPro;
|
||||
using UnityEngine.InputSystem;
|
||||
using UnityEngine.Serialization;
|
||||
using UnityEngine.UI;
|
||||
|
||||
namespace BlueWater.Uis
|
||||
{
|
||||
public class TycoonResultUi : PopupUi
|
||||
public class TycoonResultUi : PausePopupUi
|
||||
{
|
||||
[Title("결과 카드")]
|
||||
[SerializeField]
|
||||
@ -64,6 +66,13 @@ namespace BlueWater.Uis
|
||||
[SerializeField]
|
||||
private GameObject _customerContents;
|
||||
|
||||
[SerializeField]
|
||||
private GameObject _bigCatPanel;
|
||||
|
||||
[SerializeField]
|
||||
private TMP_Text _bigCatText;
|
||||
private int _bigCatCount;
|
||||
|
||||
[SerializeField]
|
||||
private GameObject _casperPanel;
|
||||
|
||||
@ -71,6 +80,20 @@ namespace BlueWater.Uis
|
||||
private TMP_Text _casperText;
|
||||
private int _casperCount;
|
||||
|
||||
[SerializeField]
|
||||
private GameObject _casperBlackPanel;
|
||||
|
||||
[SerializeField]
|
||||
private TMP_Text _casperBlackText;
|
||||
private int _casperBlackCount;
|
||||
|
||||
[SerializeField]
|
||||
private GameObject _catPanel;
|
||||
|
||||
[SerializeField]
|
||||
private TMP_Text _catText;
|
||||
private int _catCount;
|
||||
|
||||
[SerializeField]
|
||||
private GameObject _pumpkinPanel;
|
||||
|
||||
@ -78,6 +101,20 @@ namespace BlueWater.Uis
|
||||
private TMP_Text _pumpkinText;
|
||||
private int _pumpkinCount;
|
||||
|
||||
[SerializeField]
|
||||
private GameObject _reaperPanel;
|
||||
|
||||
[SerializeField]
|
||||
private TMP_Text _reaperText;
|
||||
private int _reaperCount;
|
||||
|
||||
[SerializeField]
|
||||
private GameObject _witchPanel;
|
||||
|
||||
[SerializeField]
|
||||
private TMP_Text _witchText;
|
||||
private int _witchCount;
|
||||
|
||||
[Title("서비스")]
|
||||
[SerializeField]
|
||||
private GameObject _serviceTitlePanel;
|
||||
@ -196,6 +233,7 @@ namespace BlueWater.Uis
|
||||
private InputAction _pressAnyKeyAction;
|
||||
|
||||
private float _playTime;
|
||||
private bool _isSetData;
|
||||
|
||||
private void Awake()
|
||||
{
|
||||
@ -219,8 +257,13 @@ namespace BlueWater.Uis
|
||||
_mainMenuButton.onClick.AddListener(() => SceneController.Instance.LoadScene(SceneName.TycoonTile));
|
||||
_restartButton.onClick.AddListener(SceneController.Instance.RestartCurrentScene);
|
||||
|
||||
_bigCatCount = 0;
|
||||
_casperCount = 0;
|
||||
_casperBlackCount = 0;
|
||||
_catCount = 0;
|
||||
_pumpkinCount = 0;
|
||||
_reaperCount = 0;
|
||||
_witchCount = 0;
|
||||
_goodServingCount = 0;
|
||||
_failedServingCount = 0;
|
||||
_missServingCount = 0;
|
||||
@ -255,11 +298,9 @@ namespace BlueWater.Uis
|
||||
[Button("결과 연출 테스트")]
|
||||
public override void Open()
|
||||
{
|
||||
OpenSwitch(InputActionMaps.TycoonUi);
|
||||
AudioManager.Instance.StopSfx("TycoonGameOver");
|
||||
AudioManager.Instance.PlayBgm(_bgmName);
|
||||
VisualFeedbackManager.Instance.SetBaseTimeScale(0.0f);
|
||||
PlayerInputKeyManager.Instance.SwitchCurrentActionMap(InputActionMaps.TycoonUi);
|
||||
PopupUiController.RegisterPopup(this);
|
||||
IsOpened = true;
|
||||
|
||||
Utils.StartUniqueCoroutine(this, ref _showResultInstance, ShowResultCoroutine());
|
||||
}
|
||||
@ -309,8 +350,13 @@ namespace BlueWater.Uis
|
||||
_textPanel.SetActive(true);
|
||||
_customerPanel.SetActive(true);
|
||||
_customerContents.SetActive(true);
|
||||
_bigCatPanel.SetActive(true);
|
||||
_casperPanel.SetActive(true);
|
||||
_casperBlackPanel.SetActive(true);
|
||||
_catPanel.SetActive(true);
|
||||
_pumpkinPanel.SetActive(true);
|
||||
_reaperPanel.SetActive(true);
|
||||
_witchPanel.SetActive(true);
|
||||
yield return panelWaitingTime;
|
||||
|
||||
_serviceTitlePanel.SetActive(true);
|
||||
@ -373,8 +419,13 @@ namespace BlueWater.Uis
|
||||
_textPanel.SetActive(isActive);
|
||||
_customerPanel.SetActive(isActive);
|
||||
_customerContents.SetActive(isActive);
|
||||
_bigCatPanel.SetActive(isActive);
|
||||
_casperPanel.SetActive(isActive);
|
||||
_casperBlackPanel.SetActive(isActive);
|
||||
_catPanel.SetActive(isActive);
|
||||
_pumpkinPanel.SetActive(isActive);
|
||||
_reaperPanel.SetActive(isActive);
|
||||
_witchPanel.SetActive(isActive);
|
||||
_serviceTitlePanel.SetActive(isActive);
|
||||
_serviceContents.SetActive(isActive);
|
||||
_goodServingPanel.SetActive(isActive);
|
||||
@ -410,8 +461,13 @@ namespace BlueWater.Uis
|
||||
|
||||
_roundText.text = $"{Utils.GetLocalizedString("Round")} : {TycoonManager.Instance.GetCurrentLevelData().Idx}";
|
||||
_playTimeText.text = $"{Utils.GetLocalizedString("PlayTime")} : {Mathf.FloorToInt(_playTime / 60f):D2} : {Mathf.FloorToInt(_playTime % 60f):D2}";
|
||||
_bigCatText.text = _bigCatCount.ToString();
|
||||
_casperText.text = _casperCount.ToString();
|
||||
_casperBlackText.text = _casperBlackCount.ToString();
|
||||
_catText.text = _catCount.ToString();
|
||||
_pumpkinText.text = _pumpkinCount.ToString();
|
||||
_reaperText.text = _reaperCount.ToString();
|
||||
_witchText.text = _witchCount.ToString();
|
||||
_goodServingText.text = _goodServingCount.ToString();
|
||||
_failedServingText.text = _failedServingCount.ToString();
|
||||
_missServingText.text = _missServingCount.ToString();
|
||||
@ -426,7 +482,8 @@ namespace BlueWater.Uis
|
||||
int percent = Mathf.RoundToInt(endGoldMultiplier * 100);
|
||||
char sign = percent >= 0 ? '+' : '-';
|
||||
_minusPercentText.color = percent >= 0 ? Color.blue : Color.red;
|
||||
_minusPercentText.text = $"{sign} {percent}%";
|
||||
_minusPercentText.text = $"{sign} {Mathf.Abs(percent)}%";
|
||||
_isSetData = true;
|
||||
}
|
||||
|
||||
[Button("결과 즉시 테스트")]
|
||||
@ -438,21 +495,39 @@ namespace BlueWater.Uis
|
||||
_showResultInstance = null;
|
||||
}
|
||||
|
||||
if (!_isSetData)
|
||||
{
|
||||
SetResultData();
|
||||
}
|
||||
SetActiveUi(true);
|
||||
}
|
||||
|
||||
private void AddCustomerCount(int skinIndex)
|
||||
private void AddCustomerCount(CustomerSkin skinIndex)
|
||||
{
|
||||
switch (skinIndex)
|
||||
{
|
||||
case 0:
|
||||
case CustomerSkin.BigCat:
|
||||
_bigCatCount++;
|
||||
break;
|
||||
case CustomerSkin.Casper:
|
||||
_casperCount++;
|
||||
break;
|
||||
case 1:
|
||||
case CustomerSkin.CasperBlack:
|
||||
_casperBlackCount++;
|
||||
break;
|
||||
case CustomerSkin.Cat:
|
||||
_catCount++;
|
||||
break;
|
||||
case CustomerSkin.PumkinHead:
|
||||
_pumpkinCount++;
|
||||
break;
|
||||
default:;
|
||||
case CustomerSkin.Reaper:
|
||||
_reaperCount++;
|
||||
break;
|
||||
case CustomerSkin.Witch:
|
||||
_witchCount++;
|
||||
break;
|
||||
default:
|
||||
throw new Exception("손님 스킨 인덱스 오류");
|
||||
}
|
||||
}
|
||||
|
@ -1,6 +1,5 @@
|
||||
using System.Collections;
|
||||
using System.Collections.Generic;
|
||||
using System.Runtime.InteropServices;
|
||||
using BlueWater.Audios;
|
||||
using BlueWater.Tycoons;
|
||||
using Sirenix.OdinInspector;
|
||||
@ -8,11 +7,10 @@ using UnityEngine;
|
||||
using UnityEngine.EventSystems;
|
||||
using UnityEngine.InputSystem;
|
||||
using UnityEngine.UI;
|
||||
using Random = UnityEngine.Random;
|
||||
|
||||
namespace BlueWater.Uis
|
||||
{
|
||||
public class TycoonSelectCard : PopupUi
|
||||
public class TycoonSelectCard : PausePopupUi
|
||||
{
|
||||
[SerializeField]
|
||||
private GameObject _panel;
|
||||
@ -23,6 +21,10 @@ namespace BlueWater.Uis
|
||||
[SerializeField]
|
||||
private string _openSfxName = "OpenNormalRewardBox";
|
||||
|
||||
[Title("참조")]
|
||||
[SerializeField]
|
||||
private UiEventsController _uiEventsController;
|
||||
|
||||
private List<TycoonCard> _tycoonCards = new(3);
|
||||
|
||||
private LevelData _currentLevelData;
|
||||
@ -55,34 +57,27 @@ namespace BlueWater.Uis
|
||||
|
||||
public override void Open()
|
||||
{
|
||||
OpenSwitch(InputActionMaps.TycoonUi);
|
||||
AudioManager.Instance.PlaySfx(_openSfxName, ignoreTimeScale: true);
|
||||
VisualFeedbackManager.Instance.SetBaseTimeScale(0.0f);
|
||||
PlayerInputKeyManager.Instance.SwitchCurrentActionMap(InputActionMaps.TycoonUi);
|
||||
PopupUiController.RegisterPopup(this);
|
||||
_panel.SetActive(true);
|
||||
IsOpened = true;
|
||||
}
|
||||
|
||||
public override void Close()
|
||||
{
|
||||
CloseSwitch(InputActionMaps.Tycoon);
|
||||
_panel.SetActive(false);
|
||||
PopupUiController.UnregisterPopup(this);
|
||||
PlayerInputKeyManager.Instance.SwitchCurrentActionMap(InputActionMaps.Tycoon);
|
||||
IsOpened = false;
|
||||
VisualFeedbackManager.Instance.ResetTimeScale();
|
||||
}
|
||||
|
||||
|
||||
public override void EnableInput()
|
||||
{
|
||||
_interactionEAction.performed += OnInteractionE;
|
||||
this.GetComponent<UiEventsController>().EnableAutoNavigate();
|
||||
_uiEventsController.EnableAutoNavigate();
|
||||
}
|
||||
|
||||
public override void DisableInput()
|
||||
{
|
||||
_interactionEAction.performed -= OnInteractionE;
|
||||
this.GetComponent<UiEventsController>().DisableAutoNavigate();
|
||||
_uiEventsController.DisableAutoNavigate();
|
||||
}
|
||||
|
||||
public void OnInteractionE(InputAction.CallbackContext context)
|
||||
@ -139,7 +134,7 @@ namespace BlueWater.Uis
|
||||
StartCoroutine(FadeInPanel());
|
||||
}
|
||||
|
||||
this.GetComponent<UiEventsController>().SetSelectObject(_tycoonCards[0].CardArea.gameObject);
|
||||
_uiEventsController.SetSelectObject(_tycoonCards[0].CardArea.gameObject);
|
||||
}
|
||||
|
||||
private IEnumerator FadeInPanel()
|
||||
|
@ -1,4 +1,3 @@
|
||||
using System.Threading.Tasks;
|
||||
using BlueWater.Audios;
|
||||
using DG.Tweening;
|
||||
using Sirenix.OdinInspector;
|
||||
@ -27,6 +26,9 @@ namespace BlueWater.Uis
|
||||
[SerializeField]
|
||||
private Animator _closedUiAnimator;
|
||||
|
||||
[SerializeField]
|
||||
private string _dailyBgm = "TycoonBgm01";
|
||||
|
||||
[SerializeField]
|
||||
private string _gameStartSfxName = "TycoonGameStart";
|
||||
|
||||
@ -104,6 +106,16 @@ namespace BlueWater.Uis
|
||||
_panel.SetActive(false);
|
||||
PlayerInputKeyManager.Instance.EnableCurrentPlayerInput();
|
||||
PlayerInputKeyManager.Instance.SwitchCurrentActionMap(InputActionMaps.Tycoon);
|
||||
|
||||
if (!string.IsNullOrEmpty(_dailyBgm))
|
||||
{
|
||||
AudioManager.Instance.PlayBgm(_dailyBgm);
|
||||
}
|
||||
|
||||
if (!ES3.Load(SaveData.TutorialA, false))
|
||||
{
|
||||
Invoke(nameof(InvokeTutorialA), 1f);
|
||||
}
|
||||
});
|
||||
});
|
||||
});
|
||||
@ -138,6 +150,12 @@ namespace BlueWater.Uis
|
||||
});
|
||||
}
|
||||
|
||||
private void InvokeTutorialA()
|
||||
{
|
||||
EventManager.InvokeTutorial(TutorialName.TutorialA);
|
||||
ES3.Save(SaveData.TutorialA, true);
|
||||
}
|
||||
|
||||
#endregion
|
||||
}
|
||||
}
|
||||
|
@ -14,7 +14,7 @@ using UnityEngine.UI;
|
||||
|
||||
namespace BlueWater.Uis
|
||||
{
|
||||
public class TycoonStartShopUi : PopupUi
|
||||
public class TycoonStartShopUi : PausePopupUi
|
||||
{
|
||||
[SerializeField]
|
||||
private GameObject _soldOutPrefab;
|
||||
@ -58,6 +58,10 @@ namespace BlueWater.Uis
|
||||
[SerializeField]
|
||||
private int _endGold;
|
||||
|
||||
[Title("참조")]
|
||||
[SerializeField]
|
||||
private UiEventsController _uiEventsController;
|
||||
|
||||
private List<TycoonCard> _tycoonCards = new(5);
|
||||
|
||||
private TycoonManager _tycoonManager;
|
||||
@ -126,20 +130,14 @@ namespace BlueWater.Uis
|
||||
|
||||
public override void Open()
|
||||
{
|
||||
VisualFeedbackManager.Instance.SetBaseTimeScale(0.0f);
|
||||
PlayerInputKeyManager.Instance.SwitchCurrentActionMap(InputActionMaps.TycoonUi);
|
||||
PopupUiController.RegisterPopup(this);
|
||||
OpenSwitch(InputActionMaps.TycoonUi);
|
||||
_panel.SetActive(true);
|
||||
IsOpened = true;
|
||||
}
|
||||
|
||||
public override async void Close()
|
||||
{
|
||||
_panel.SetActive(false);
|
||||
PopupUiController.UnregisterPopup(this);
|
||||
PlayerInputKeyManager.Instance.SwitchCurrentActionMap(InputActionMaps.Tycoon);
|
||||
IsOpened = false;
|
||||
VisualFeedbackManager.Instance.ResetTimeScale();
|
||||
CloseSwitch(InputActionMaps.Tycoon);
|
||||
|
||||
while (!PlayerInputKeyManager.Instance.IsInitialized)
|
||||
{
|
||||
@ -152,13 +150,13 @@ namespace BlueWater.Uis
|
||||
public override void EnableInput()
|
||||
{
|
||||
_interactionEAction.performed += OnInteractionE;
|
||||
this.GetComponent<UiEventsController>().EnableAutoNavigate();
|
||||
_uiEventsController.EnableAutoNavigate();
|
||||
}
|
||||
|
||||
public override void DisableInput()
|
||||
{
|
||||
_interactionEAction.performed -= OnInteractionE;
|
||||
this.GetComponent<UiEventsController>().DisableAutoNavigate();
|
||||
_uiEventsController.DisableAutoNavigate();
|
||||
}
|
||||
|
||||
|
||||
@ -202,7 +200,7 @@ namespace BlueWater.Uis
|
||||
element.Rotation_Start();
|
||||
}
|
||||
|
||||
this.GetComponent<UiEventsController>().SetSelectObject(_tycoonCards[0].CardArea.gameObject);
|
||||
_uiEventsController.SetSelectObject(_tycoonCards[0].CardArea.gameObject);
|
||||
}
|
||||
|
||||
private void SelectedCard(TycoonCard currentTycoonCard)
|
||||
|
@ -1,61 +1,94 @@
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using BlueWater;
|
||||
using BlueWater.Uis;
|
||||
using Sirenix.OdinInspector;
|
||||
using UnityEngine;
|
||||
|
||||
public class TutorialLink
|
||||
{
|
||||
public TutorialPageToggle TutorialPageToggle { get; private set; }
|
||||
public List<TycoonTutorialPopupUi> TycoonTutorialPopupUis { get; private set; }
|
||||
|
||||
public TutorialLink(TutorialPageToggle tutorialPageToggle, List<TycoonTutorialPopupUi> tycoonTutorialPopupUis)
|
||||
{
|
||||
TutorialPageToggle = tutorialPageToggle;
|
||||
TycoonTutorialPopupUis = tycoonTutorialPopupUis;
|
||||
|
||||
TutorialPageToggle.OnToggleEvent += OnToggle;
|
||||
}
|
||||
|
||||
public void OnToggle(bool isOn)
|
||||
{
|
||||
if (isOn)
|
||||
{
|
||||
TycoonTutorialPopupUis[0].Open();
|
||||
}
|
||||
}
|
||||
}
|
||||
using UnityEngine.InputSystem;
|
||||
using UnityEngine.UI;
|
||||
|
||||
namespace BlueWater
|
||||
{
|
||||
public class TycoonTutorial : MonoBehaviour
|
||||
public static class TutorialName
|
||||
{
|
||||
public const string TutorialA = "TutorialA";
|
||||
public const string TutorialB = "TutorialB";
|
||||
public const string TutorialC = "TutorialC";
|
||||
public const string TutorialD = "TutorialD";
|
||||
public const string TutorialE = "TutorialE";
|
||||
public const string TutorialF = "TutorialF";
|
||||
public const string TutorialG = "TutorialG";
|
||||
public const string TutorialH = "TutorialH";
|
||||
public const string TutorialI = "TutorialI";
|
||||
public const string TutorialJ = "TutorialJ";
|
||||
}
|
||||
|
||||
public class TycoonTutorial : PausePopupUi
|
||||
{
|
||||
[SerializeField, Required]
|
||||
private GameObject _tutorialPanel;
|
||||
|
||||
[SerializeField]
|
||||
private Transform _buttonContents;
|
||||
[SerializeField, Required]
|
||||
private GameObject _togglePanel;
|
||||
|
||||
[SerializeField]
|
||||
[SerializeField, Required]
|
||||
private ScrollRect _scrollRect;
|
||||
|
||||
[SerializeField, Required]
|
||||
private RectTransform _buttonContents;
|
||||
|
||||
[SerializeField, Required]
|
||||
private Transform _tutorialPopupUiContents;
|
||||
|
||||
[Title("프리팹")]
|
||||
[SerializeField]
|
||||
private TutorialPageToggle _tutorialPageToggle;
|
||||
private GameObject _keyAPanel;
|
||||
|
||||
[SerializeField]
|
||||
private GameObject _keyDPanel;
|
||||
|
||||
[SerializeField]
|
||||
private GameObject _keyEPanel;
|
||||
|
||||
[Title("프리팹")]
|
||||
[SerializeField, Required]
|
||||
private TutorialPageToggle _tutorialPageToggle;
|
||||
|
||||
[SerializeField, Required]
|
||||
private TycoonTutorialPopupUi _tutorialPopupUi;
|
||||
|
||||
[Title("So")]
|
||||
[SerializeField, Required]
|
||||
private TutorialSo _tutorialSo;
|
||||
|
||||
private Dictionary<string, TutorialLink> _tutorialLinks;
|
||||
[Title("실시간 데이터")]
|
||||
[SerializeField]
|
||||
private List<TutorialLink> _tutorialLinks;
|
||||
|
||||
[SerializeField]
|
||||
private TutorialLink _currentTutorialLink;
|
||||
|
||||
private InputAction _pressQAction;
|
||||
private InputAction _pressRAction;
|
||||
private InputAction _pressAAction;
|
||||
private InputAction _pressDAction;
|
||||
private InputAction _interactionEAction;
|
||||
private InputAction _closeAction;
|
||||
private bool _isInMenu;
|
||||
private bool _isUpdatingToggle;
|
||||
|
||||
public Action<bool> CloseAction;
|
||||
|
||||
private void Start()
|
||||
{
|
||||
_pressQAction = PlayerInputKeyManager.Instance.GetAction(InputActionMaps.TycoonUi, TycoonUiActions.PressQ);
|
||||
_pressRAction = PlayerInputKeyManager.Instance.GetAction(InputActionMaps.TycoonUi, TycoonUiActions.PressR);
|
||||
_pressAAction = PlayerInputKeyManager.Instance.GetAction(InputActionMaps.TycoonUi, TycoonUiActions.PressA);
|
||||
_pressDAction = PlayerInputKeyManager.Instance.GetAction(InputActionMaps.TycoonUi, TycoonUiActions.PressD);
|
||||
_interactionEAction = PlayerInputKeyManager.Instance.GetAction(InputActionMaps.TycoonUi, TycoonUiActions.InteractionE);
|
||||
_closeAction = PlayerInputKeyManager.Instance.GetAction(InputActionMaps.TycoonUi, TycoonUiActions.Cancel);
|
||||
|
||||
HideUi();
|
||||
|
||||
foreach (Transform element in _buttonContents)
|
||||
foreach (Transform element in _buttonContents.transform)
|
||||
{
|
||||
Destroy(element.gameObject);
|
||||
}
|
||||
@ -65,7 +98,7 @@ namespace BlueWater
|
||||
Destroy(element.gameObject);
|
||||
}
|
||||
|
||||
_tutorialLinks = new Dictionary<string, TutorialLink>(_tutorialSo.GetDataCount());
|
||||
_tutorialLinks = new List<TutorialLink>(_tutorialSo.GetDataCount());
|
||||
foreach (TutorialInfo tutorialInfo in _tutorialSo.GetData().Values)
|
||||
{
|
||||
TutorialPageToggle tutorialPageToggle = Instantiate(this._tutorialPageToggle, _buttonContents);
|
||||
@ -75,25 +108,248 @@ namespace BlueWater
|
||||
for (int i = 0; i < tutorialInfo.TutorialPages.Count; i++)
|
||||
{
|
||||
TycoonTutorialPopupUi tycoonTutorialPopupUi = Instantiate(_tutorialPopupUi, _tutorialPopupUiContents);
|
||||
TutorialPageType tutorialPageType = tutorialInfo.TutorialPages[i].TutorialPageType;
|
||||
Sprite popupSprite = null;
|
||||
switch (tutorialPageType)
|
||||
{
|
||||
case TutorialPageType.First:
|
||||
popupSprite = _tutorialSo.FirstPopup;
|
||||
break;
|
||||
case TutorialPageType.Middle:
|
||||
popupSprite = _tutorialSo.MiddlePopup;
|
||||
break;
|
||||
case TutorialPageType.Last:
|
||||
popupSprite = _tutorialSo.LastPopup;
|
||||
break;
|
||||
case TutorialPageType.Solo:
|
||||
popupSprite = _tutorialSo.SoloPopup;
|
||||
break;
|
||||
default:
|
||||
throw new ArgumentOutOfRangeException();
|
||||
}
|
||||
tycoonTutorialPopupUi.Initialize(tutorialInfo, i, popupSprite);
|
||||
tycoonTutorialPopupUis.Add(tycoonTutorialPopupUi);
|
||||
}
|
||||
|
||||
_tutorialLinks.Add(tutorialInfo.TutorialName, new TutorialLink(tutorialPageToggle, tycoonTutorialPopupUis));
|
||||
TutorialLink tutorialLink = new TutorialLink(tutorialInfo.TutorialName, tutorialPageToggle, tycoonTutorialPopupUis);
|
||||
tutorialPageToggle.OnToggleEvent += isOn =>
|
||||
{
|
||||
if (_isUpdatingToggle) return; // 이벤트 중복 방지
|
||||
if (isOn)
|
||||
{
|
||||
_isUpdatingToggle = true;
|
||||
CloseKeyPanels();
|
||||
_currentTutorialLink?.OnToggle(false);
|
||||
_currentTutorialLink = tutorialLink;
|
||||
_currentTutorialLink.OnToggle(true);
|
||||
UpdateKeyPanels();
|
||||
FocusOnToggle(_currentTutorialLink.TutorialPageToggle);
|
||||
_isUpdatingToggle = false;
|
||||
}
|
||||
};
|
||||
|
||||
foreach (var element in tutorialLink.TycoonTutorialPopupUis)
|
||||
{
|
||||
element.SetupButtons(tutorialLink, OnMovePreviousPageButton, OnMoveNextPageButton);
|
||||
}
|
||||
|
||||
public void ShowUi()
|
||||
{
|
||||
if (_tutorialLinks.TryGetValue("TutorialA", out TutorialLink tutorialLink))
|
||||
{
|
||||
tutorialLink.TutorialPageToggle.OnToggle(true);
|
||||
_tutorialLinks.Add(tutorialLink);
|
||||
}
|
||||
|
||||
_currentTutorialLink = _tutorialLinks[0];
|
||||
}
|
||||
|
||||
private void OnDestroy()
|
||||
{
|
||||
_pressQAction = null;
|
||||
_pressRAction = null;
|
||||
_pressAAction = null;
|
||||
_pressDAction = null;
|
||||
_interactionEAction = null;
|
||||
_closeAction = null;
|
||||
}
|
||||
|
||||
public override void Open()
|
||||
{
|
||||
OpenSwitch(InputActionMaps.TycoonUi);
|
||||
|
||||
if (_isInMenu)
|
||||
{
|
||||
SetCurrentTutorialLink();
|
||||
_togglePanel.SetActive(true);
|
||||
UpdateKeyPanels();
|
||||
|
||||
_pressQAction.performed += OnMovePreviousToggle;
|
||||
_pressRAction.performed += OnMovNextToggle;
|
||||
_closeAction.performed += OnClose;
|
||||
}
|
||||
|
||||
_pressAAction.performed += OnMovePreviousPage;
|
||||
_pressDAction.performed += OnMoveNextPage;
|
||||
}
|
||||
|
||||
public override void Close()
|
||||
{
|
||||
_pressQAction.performed -= OnMovePreviousToggle;
|
||||
_pressRAction.performed -= OnMovNextToggle;
|
||||
_pressAAction.performed -= OnMovePreviousPage;
|
||||
_pressDAction.performed -= OnMoveNextPage;
|
||||
_interactionEAction.performed -= OnClose;
|
||||
_closeAction.performed -= OnClose;
|
||||
|
||||
_togglePanel.SetActive(false);
|
||||
_tutorialPanel.SetActive(false);
|
||||
_currentTutorialLink?.OnToggle(false);
|
||||
CloseKeyPanels();
|
||||
|
||||
CloseAction?.Invoke(_isInMenu);
|
||||
_isInMenu = false;
|
||||
|
||||
CloseSwitch(InputActionMaps.Tycoon);
|
||||
}
|
||||
|
||||
public void SetCurrentTutorialLink(string tutorialName = null)
|
||||
{
|
||||
if (tutorialName == null)
|
||||
{
|
||||
_currentTutorialLink = _tutorialLinks[0];
|
||||
}
|
||||
else
|
||||
{
|
||||
_currentTutorialLink = _tutorialLinks.Find(link => link.TutorialName == tutorialName);
|
||||
}
|
||||
_currentTutorialLink?.OnToggle(true);
|
||||
_tutorialPanel.SetActive(true);
|
||||
}
|
||||
|
||||
public void ShowUi(bool isInMenu)
|
||||
{
|
||||
_isInMenu = isInMenu;
|
||||
|
||||
Open();
|
||||
}
|
||||
|
||||
public void ShowUiByName(string tutorialName = null)
|
||||
{
|
||||
SetCurrentTutorialLink(tutorialName);
|
||||
_togglePanel.SetActive(false);
|
||||
UpdateKeyPanels();
|
||||
|
||||
ShowUi(false);
|
||||
}
|
||||
|
||||
public void HideUi()
|
||||
{
|
||||
_tutorialPanel.SetActive(false);
|
||||
Close();
|
||||
_isInMenu = false;
|
||||
}
|
||||
|
||||
private void OnMovePreviousToggle(InputAction.CallbackContext context)
|
||||
{
|
||||
MoveToggle(-1);
|
||||
}
|
||||
|
||||
private void OnMovNextToggle(InputAction.CallbackContext context)
|
||||
{
|
||||
MoveToggle(1);
|
||||
}
|
||||
|
||||
private void MoveToggle(int direction)
|
||||
{
|
||||
CloseKeyPanels();
|
||||
|
||||
int currentIndex = _tutorialLinks.IndexOf(_currentTutorialLink);
|
||||
int nextIndex = Mathf.Clamp(currentIndex + direction, 0, _tutorialLinks.Count - 1);
|
||||
|
||||
_currentTutorialLink.OnToggle(false);
|
||||
_currentTutorialLink = _tutorialLinks[nextIndex];
|
||||
_currentTutorialLink.OnToggle(true);
|
||||
UpdateKeyPanels();
|
||||
|
||||
FocusOnToggle(_currentTutorialLink.TutorialPageToggle);
|
||||
}
|
||||
|
||||
private void FocusOnToggle(TutorialPageToggle selectedToggle)
|
||||
{
|
||||
if (!selectedToggle.gameObject.activeInHierarchy) return;
|
||||
|
||||
// Viewport와 Content의 너비를 가져오기
|
||||
float contentWidth = _buttonContents.rect.width; // Content 전체 너비
|
||||
float viewportWidth = _scrollRect.viewport.rect.width; // Viewport 너비
|
||||
|
||||
// 선택된 토글의 x 위치를 Content 기준으로 가져오기
|
||||
float targetX = selectedToggle.Rect.anchoredPosition.x;
|
||||
|
||||
// Normalized Position 계산
|
||||
// (Content 기준 위치 - 뷰포트 절반) / (Content 너비 - 뷰포트 너비)
|
||||
float normalizedPosition = Mathf.Clamp01((targetX - (viewportWidth / 2)) / (contentWidth - viewportWidth));
|
||||
|
||||
// ScrollRect에 반영
|
||||
_scrollRect.horizontalNormalizedPosition = normalizedPosition;
|
||||
}
|
||||
|
||||
private void OnMovePreviousPage(InputAction.CallbackContext context)
|
||||
{
|
||||
MovePage(false);
|
||||
}
|
||||
|
||||
private void OnMoveNextPage(InputAction.CallbackContext context)
|
||||
{
|
||||
MovePage(true);
|
||||
}
|
||||
|
||||
private void MovePage(bool moveNext)
|
||||
{
|
||||
if (_currentTutorialLink == null) return;
|
||||
|
||||
_currentTutorialLink.MovePage(moveNext);
|
||||
|
||||
UpdateKeyPanels();
|
||||
}
|
||||
|
||||
public void OnMovePreviousPageButton(TutorialLink tutorialLink)
|
||||
{
|
||||
_currentTutorialLink = tutorialLink;
|
||||
|
||||
MovePage(false);
|
||||
}
|
||||
|
||||
public void OnMoveNextPageButton(TutorialLink tutorialLink)
|
||||
{
|
||||
_currentTutorialLink = tutorialLink;
|
||||
|
||||
MovePage(true);
|
||||
}
|
||||
|
||||
private void CloseKeyPanels()
|
||||
{
|
||||
_interactionEAction.performed -= OnClose;
|
||||
|
||||
_keyAPanel.SetActive(false);
|
||||
_keyDPanel.SetActive(false);
|
||||
_keyEPanel.SetActive(false);
|
||||
}
|
||||
|
||||
private void UpdateKeyPanels()
|
||||
{
|
||||
if (_currentTutorialLink == null) return;
|
||||
|
||||
int currentPageIndex = _currentTutorialLink.CurrentPageIndex;
|
||||
int lastPage = _currentTutorialLink.TycoonTutorialPopupUis.Count;
|
||||
|
||||
_keyAPanel.SetActive(currentPageIndex > 0);
|
||||
_keyDPanel.SetActive(currentPageIndex < lastPage - 1);
|
||||
|
||||
if (currentPageIndex == lastPage - 1)
|
||||
{
|
||||
_keyEPanel.SetActive(true);
|
||||
_interactionEAction.performed += OnClose;
|
||||
}
|
||||
}
|
||||
|
||||
private void OnClose(InputAction.CallbackContext context)
|
||||
{
|
||||
HideUi();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -1,6 +1,8 @@
|
||||
using System;
|
||||
using System.Collections;
|
||||
using BlueWater.Uis;
|
||||
using BlueWater.Utility;
|
||||
using Sirenix.OdinInspector;
|
||||
using TMPro;
|
||||
using UnityEngine;
|
||||
using UnityEngine.Localization;
|
||||
@ -10,30 +12,67 @@ using UnityEngine.UI;
|
||||
|
||||
namespace BlueWater
|
||||
{
|
||||
public class TycoonTutorialPopupUi : TutorialPopupUi
|
||||
public class TycoonTutorialPopupUi : PopupUi
|
||||
{
|
||||
[SerializeField]
|
||||
private Image _popupImage;
|
||||
|
||||
[SerializeField]
|
||||
private TMP_Text _titleText;
|
||||
|
||||
[SerializeField]
|
||||
private RectTransform _descriptionTextRect;
|
||||
|
||||
[SerializeField]
|
||||
private TMP_Text _descriptionText;
|
||||
|
||||
[SerializeField]
|
||||
private RectTransform _descriptionTImageRect;
|
||||
|
||||
[SerializeField]
|
||||
private Image _descriptionImage;
|
||||
|
||||
[SerializeField]
|
||||
private TMP_Text _pageText;
|
||||
|
||||
[SerializeField]
|
||||
private Button _previousButton;
|
||||
|
||||
[SerializeField]
|
||||
private Button _nextButton;
|
||||
|
||||
[Title("연출")]
|
||||
[SerializeField]
|
||||
private Vector3 _descriptionTextAnchorPositionInFirst = new(0f, -37f, 0f);
|
||||
|
||||
[SerializeField]
|
||||
private Vector3 _descriptionTextAnchorPositionExceptFirst = new(0f, -280f, 0f);
|
||||
|
||||
[SerializeField]
|
||||
private Vector3 _descriptionImageAnchorPositionInFirst = new(0f, -210f, 0f);
|
||||
|
||||
[SerializeField]
|
||||
private Vector3 _descriptionImageAnchorPositionExceptFirst = new(0f, -150f, 0f);
|
||||
|
||||
private TutorialInfo _tutorialInfo;
|
||||
private TutorialPage _tutorialPage;
|
||||
private Coroutine _changedLocaleInstance;
|
||||
private int _pageIndex;
|
||||
|
||||
private void Start()
|
||||
public Action<TutorialLink> OnPreviousPage;
|
||||
public Action<TutorialLink> OnNextPage;
|
||||
|
||||
private void Awake()
|
||||
{
|
||||
LocalizationSettings.SelectedLocaleChanged += OnChangedLocale;
|
||||
}
|
||||
|
||||
private void OnEnable()
|
||||
{
|
||||
_titleText.text = Utils.GetLocalizedString(_tutorialInfo.TitleTextIdx);
|
||||
_descriptionText.text = Utils.GetLocalizedString(_tutorialPage.DescriptionIdx);
|
||||
}
|
||||
|
||||
private void OnDestroy()
|
||||
{
|
||||
LocalizationSettings.SelectedLocaleChanged -= OnChangedLocale;
|
||||
@ -59,7 +98,19 @@ namespace BlueWater
|
||||
}
|
||||
}
|
||||
|
||||
public void Initialize(TutorialInfo tutorialInfo, int pageindex)
|
||||
public override void Open()
|
||||
{
|
||||
base.Open();
|
||||
gameObject.SetActive(true);
|
||||
}
|
||||
|
||||
public override void Close()
|
||||
{
|
||||
gameObject.SetActive(false);
|
||||
base.Close();
|
||||
}
|
||||
|
||||
public void Initialize(TutorialInfo tutorialInfo, int pageindex, Sprite popupSprite)
|
||||
{
|
||||
gameObject.SetActive(false);
|
||||
|
||||
@ -69,18 +120,50 @@ namespace BlueWater
|
||||
|
||||
gameObject.name = $"{_tutorialInfo.TutorialName}{_pageIndex + 1}";
|
||||
|
||||
if (_tutorialPage.TutorialPageType is TutorialPageType.First or TutorialPageType.Sole)
|
||||
_popupImage.sprite = popupSprite;
|
||||
|
||||
if (_tutorialPage.TutorialPageType is TutorialPageType.First or TutorialPageType.Solo)
|
||||
{
|
||||
_titleText.text = Utils.GetLocalizedString(_tutorialInfo.TitleTextIdx);
|
||||
_titleText.enabled = true;
|
||||
_descriptionTextRect.anchoredPosition = _descriptionTextAnchorPositionInFirst;
|
||||
_descriptionTImageRect.anchoredPosition = _descriptionImageAnchorPositionInFirst;
|
||||
}
|
||||
else
|
||||
{
|
||||
_titleText.enabled = false;
|
||||
_descriptionTextRect.anchoredPosition = _descriptionTextAnchorPositionExceptFirst;
|
||||
_descriptionTImageRect.anchoredPosition = _descriptionImageAnchorPositionExceptFirst;
|
||||
}
|
||||
_descriptionText.text = Utils.GetLocalizedString(_tutorialPage.DescriptionIdx);
|
||||
_descriptionImage.sprite = _tutorialPage.Sprite;
|
||||
|
||||
_pageText.text = $"{_tutorialPage.PageIndex}/{_tutorialInfo.GetPages()}";
|
||||
}
|
||||
|
||||
public void SetupButtons(TutorialLink tutorialLink, Action<TutorialLink> onMovePreviousPage, Action<TutorialLink> onMoveNextPage)
|
||||
{
|
||||
_previousButton.onClick.RemoveAllListeners();
|
||||
_nextButton.onClick.RemoveAllListeners();
|
||||
|
||||
switch (_tutorialPage.TutorialPageType)
|
||||
{
|
||||
case TutorialPageType.First:
|
||||
_nextButton.onClick.AddListener(() => onMoveNextPage?.Invoke(tutorialLink));
|
||||
break;
|
||||
|
||||
case TutorialPageType.Middle:
|
||||
_previousButton.onClick.AddListener(() => onMovePreviousPage?.Invoke(tutorialLink));
|
||||
_nextButton.onClick.AddListener(() => onMoveNextPage?.Invoke(tutorialLink));
|
||||
break;
|
||||
|
||||
case TutorialPageType.Last:
|
||||
_previousButton.onClick.AddListener(() => onMovePreviousPage?.Invoke(tutorialLink));
|
||||
break;
|
||||
|
||||
case TutorialPageType.Solo:
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -1,5 +1,6 @@
|
||||
using System.Collections;
|
||||
using BlueWater.Items;
|
||||
using BlueWater.Tycoons;
|
||||
using UnityEngine;
|
||||
using UnityEngine.UI;
|
||||
using Spine.Unity;
|
||||
@ -7,7 +8,7 @@ using UnityEngine.InputSystem;
|
||||
|
||||
namespace BlueWater.Uis
|
||||
{
|
||||
public class UpgradePopupUi : PopupUi
|
||||
public class UpgradePopupUi : PausePopupUi
|
||||
{
|
||||
[SerializeField]
|
||||
private GameObject _panel;
|
||||
@ -49,20 +50,14 @@ namespace BlueWater.Uis
|
||||
|
||||
public override void Open()
|
||||
{
|
||||
VisualFeedbackManager.Instance.SetBaseTimeScale(0.0f);
|
||||
PlayerInputKeyManager.Instance.SwitchCurrentActionMap(InputActionMaps.TycoonUi);
|
||||
PopupUiController.RegisterPopup(this);
|
||||
OpenSwitch(InputActionMaps.TycoonUi);
|
||||
_panel.SetActive(true);
|
||||
IsOpened = true;
|
||||
}
|
||||
|
||||
public override void Close()
|
||||
{
|
||||
_panel.SetActive(false);
|
||||
PopupUiController.UnregisterPopup(this);
|
||||
PlayerInputKeyManager.Instance.SwitchCurrentActionMap(InputActionMaps.Tycoon);
|
||||
IsOpened = false;
|
||||
VisualFeedbackManager.Instance.ResetTimeScale();
|
||||
CloseSwitch(InputActionMaps.Tycoon);
|
||||
}
|
||||
|
||||
public override void DisableInput()
|
||||
@ -151,7 +146,45 @@ namespace BlueWater.Uis
|
||||
_paperAnimation.AnimationState.SetAnimation(0, "Back", false).Complete += (trackEntry) =>
|
||||
{
|
||||
Close();
|
||||
|
||||
int currentLevel = int.Parse(TycoonManager.Instance.GetCurrentLevelData().Idx);
|
||||
if (currentLevel == 5)
|
||||
{
|
||||
if (!ES3.Load(SaveData.TutorialG, false))
|
||||
{
|
||||
EventManager.InvokeTutorial(TutorialName.TutorialG);
|
||||
ES3.Save(SaveData.TutorialG, true);
|
||||
}
|
||||
|
||||
if (!ES3.Load(SaveData.TutorialH, false))
|
||||
{
|
||||
Invoke(nameof(InvokeTutorialH), 0.1f);
|
||||
}
|
||||
|
||||
if (!ES3.Load(SaveData.TutorialI, false))
|
||||
{
|
||||
Invoke(nameof(InvokeTutorialI), 0.2f);
|
||||
}
|
||||
}
|
||||
};
|
||||
}
|
||||
|
||||
private void InvokeTutorialH()
|
||||
{
|
||||
if (!ES3.Load(SaveData.TutorialH, false))
|
||||
{
|
||||
EventManager.InvokeTutorial(TutorialName.TutorialH);
|
||||
ES3.Save(SaveData.TutorialH, true);
|
||||
}
|
||||
}
|
||||
|
||||
private void InvokeTutorialI()
|
||||
{
|
||||
if (!ES3.Load(SaveData.TutorialI, false))
|
||||
{
|
||||
EventManager.InvokeTutorial(TutorialName.TutorialI);
|
||||
ES3.Save(SaveData.TutorialI, true);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
Before Width: | Height: | Size: 355 KiB |
Before Width: | Height: | Size: 40 KiB |
8
Assets/03.Images/Maps/test.meta
Normal file
@ -0,0 +1,8 @@
|
||||
fileFormatVersion: 2
|
||||
guid: 7cfde1ce315dbc240b466188eca00877
|
||||
folderAsset: yes
|
||||
DefaultImporter:
|
||||
externalObjects: {}
|
||||
userData:
|
||||
assetBundleName:
|
||||
assetBundleVariant:
|
Before Width: | Height: | Size: 18 KiB |
BIN
Assets/03.Images/Maps/test/Barrel01.png
Normal file
After Width: | Height: | Size: 356 KiB |
@ -1,5 +1,5 @@
|
||||
fileFormatVersion: 2
|
||||
guid: fcbbccc0af3ecc64ea65be04537ee8d7
|
||||
guid: ea1eb29c2fa2dfb468521cc72c556c6a
|
||||
TextureImporter:
|
||||
internalIDToNameTable: []
|
||||
externalObjects: {}
|
BIN
Assets/03.Images/Maps/test/Lantern.png
Normal file
After Width: | Height: | Size: 166 KiB |
@ -1,5 +1,5 @@
|
||||
fileFormatVersion: 2
|
||||
guid: e52358c77c5bc9f45a388ab468618ba1
|
||||
guid: 494e9886cf305154c97d449a8ad2361e
|
||||
TextureImporter:
|
||||
internalIDToNameTable: []
|
||||
externalObjects: {}
|
||||
@ -48,7 +48,7 @@ TextureImporter:
|
||||
spriteMeshType: 1
|
||||
alignment: 0
|
||||
spritePivot: {x: 0.5, y: 0.5}
|
||||
spritePixelsToUnits: 256
|
||||
spritePixelsToUnits: 512
|
||||
spriteBorder: {x: 0, y: 0, z: 0, w: 0}
|
||||
spriteGenerateFallbackPhysicsShape: 1
|
||||
alphaUsage: 1
|
BIN
Assets/03.Images/Maps/test/WallBar2.png
Normal file
After Width: | Height: | Size: 201 KiB |
@ -1,5 +1,5 @@
|
||||
fileFormatVersion: 2
|
||||
guid: 7355634207a3f454e9f7b49224d4327a
|
||||
guid: 08391b26217ebb344a7bf2d72847e9ee
|
||||
TextureImporter:
|
||||
internalIDToNameTable: []
|
||||
externalObjects: {}
|
BIN
Assets/03.Images/Maps/test/Walldoor.png
Normal file
After Width: | Height: | Size: 145 KiB |
143
Assets/03.Images/Maps/test/Walldoor.png.meta
Normal file
@ -0,0 +1,143 @@
|
||||
fileFormatVersion: 2
|
||||
guid: d63a8017daee99546a808b887393dbca
|
||||
TextureImporter:
|
||||
internalIDToNameTable: []
|
||||
externalObjects: {}
|
||||
serializedVersion: 13
|
||||
mipmaps:
|
||||
mipMapMode: 0
|
||||
enableMipMap: 0
|
||||
sRGBTexture: 1
|
||||
linearTexture: 0
|
||||
fadeOut: 0
|
||||
borderMipMap: 0
|
||||
mipMapsPreserveCoverage: 0
|
||||
alphaTestReferenceValue: 0.5
|
||||
mipMapFadeDistanceStart: 1
|
||||
mipMapFadeDistanceEnd: 3
|
||||
bumpmap:
|
||||
convertToNormalMap: 0
|
||||
externalNormalMap: 0
|
||||
heightScale: 0.25
|
||||
normalMapFilter: 0
|
||||
flipGreenChannel: 0
|
||||
isReadable: 0
|
||||
streamingMipmaps: 0
|
||||
streamingMipmapsPriority: 0
|
||||
vTOnly: 0
|
||||
ignoreMipmapLimit: 0
|
||||
grayScaleToAlpha: 0
|
||||
generateCubemap: 6
|
||||
cubemapConvolution: 0
|
||||
seamlessCubemap: 0
|
||||
textureFormat: 1
|
||||
maxTextureSize: 2048
|
||||
textureSettings:
|
||||
serializedVersion: 2
|
||||
filterMode: 1
|
||||
aniso: 1
|
||||
mipBias: 0
|
||||
wrapU: 1
|
||||
wrapV: 1
|
||||
wrapW: 0
|
||||
nPOTScale: 0
|
||||
lightmap: 0
|
||||
compressionQuality: 50
|
||||
spriteMode: 1
|
||||
spriteExtrude: 1
|
||||
spriteMeshType: 1
|
||||
alignment: 7
|
||||
spritePivot: {x: 0.5, y: 0.5}
|
||||
spritePixelsToUnits: 1024
|
||||
spriteBorder: {x: 0, y: 0, z: 0, w: 0}
|
||||
spriteGenerateFallbackPhysicsShape: 1
|
||||
alphaUsage: 1
|
||||
alphaIsTransparency: 1
|
||||
spriteTessellationDetail: -1
|
||||
textureType: 8
|
||||
textureShape: 1
|
||||
singleChannelComponent: 0
|
||||
flipbookRows: 1
|
||||
flipbookColumns: 1
|
||||
maxTextureSizeSet: 0
|
||||
compressionQualitySet: 0
|
||||
textureFormatSet: 0
|
||||
ignorePngGamma: 0
|
||||
applyGammaDecoding: 0
|
||||
swizzle: 50462976
|
||||
cookieLightType: 0
|
||||
platformSettings:
|
||||
- serializedVersion: 4
|
||||
buildTarget: DefaultTexturePlatform
|
||||
maxTextureSize: 2048
|
||||
resizeAlgorithm: 0
|
||||
textureFormat: -1
|
||||
textureCompression: 1
|
||||
compressionQuality: 50
|
||||
crunchedCompression: 0
|
||||
allowsAlphaSplitting: 0
|
||||
overridden: 0
|
||||
ignorePlatformSupport: 0
|
||||
androidETC2FallbackOverride: 0
|
||||
forceMaximumCompressionQuality_BC6H_BC7: 0
|
||||
- serializedVersion: 4
|
||||
buildTarget: Standalone
|
||||
maxTextureSize: 2048
|
||||
resizeAlgorithm: 0
|
||||
textureFormat: -1
|
||||
textureCompression: 1
|
||||
compressionQuality: 50
|
||||
crunchedCompression: 0
|
||||
allowsAlphaSplitting: 0
|
||||
overridden: 0
|
||||
ignorePlatformSupport: 0
|
||||
androidETC2FallbackOverride: 0
|
||||
forceMaximumCompressionQuality_BC6H_BC7: 0
|
||||
- serializedVersion: 4
|
||||
buildTarget: Android
|
||||
maxTextureSize: 2048
|
||||
resizeAlgorithm: 0
|
||||
textureFormat: -1
|
||||
textureCompression: 1
|
||||
compressionQuality: 50
|
||||
crunchedCompression: 0
|
||||
allowsAlphaSplitting: 0
|
||||
overridden: 0
|
||||
ignorePlatformSupport: 0
|
||||
androidETC2FallbackOverride: 0
|
||||
forceMaximumCompressionQuality_BC6H_BC7: 0
|
||||
- serializedVersion: 4
|
||||
buildTarget: WindowsStoreApps
|
||||
maxTextureSize: 2048
|
||||
resizeAlgorithm: 0
|
||||
textureFormat: -1
|
||||
textureCompression: 1
|
||||
compressionQuality: 50
|
||||
crunchedCompression: 0
|
||||
allowsAlphaSplitting: 0
|
||||
overridden: 0
|
||||
ignorePlatformSupport: 0
|
||||
androidETC2FallbackOverride: 0
|
||||
forceMaximumCompressionQuality_BC6H_BC7: 0
|
||||
spriteSheet:
|
||||
serializedVersion: 2
|
||||
sprites: []
|
||||
outline: []
|
||||
customData:
|
||||
physicsShape: []
|
||||
bones: []
|
||||
spriteID: 5e97eb03825dee720800000000000000
|
||||
internalID: 0
|
||||
vertices: []
|
||||
indices:
|
||||
edges: []
|
||||
weights: []
|
||||
secondaryTextures: []
|
||||
spriteCustomMetadata:
|
||||
entries: []
|
||||
nameFileIdTable: {}
|
||||
mipmapLimitGroupName:
|
||||
pSDRemoveMatte: 0
|
||||
userData:
|
||||
assetBundleName:
|
||||
assetBundleVariant:
|
BIN
Assets/03.Images/Maps/test/Web01.png
Normal file
After Width: | Height: | Size: 52 KiB |
@ -1,5 +1,5 @@
|
||||
fileFormatVersion: 2
|
||||
guid: f62b43001c46a87439e93f884ab5e191
|
||||
guid: 9e6d665713d2c874abeba5ac3c5da830
|
||||
TextureImporter:
|
||||
internalIDToNameTable: []
|
||||
externalObjects: {}
|
||||
@ -48,7 +48,7 @@ TextureImporter:
|
||||
spriteMeshType: 1
|
||||
alignment: 0
|
||||
spritePivot: {x: 0.5, y: 0.5}
|
||||
spritePixelsToUnits: 256
|
||||
spritePixelsToUnits: 512
|
||||
spriteBorder: {x: 0, y: 0, z: 0, w: 0}
|
||||
spriteGenerateFallbackPhysicsShape: 1
|
||||
alphaUsage: 1
|
BIN
Assets/03.Images/Maps/test/Web02.png
Normal file
After Width: | Height: | Size: 65 KiB |
@ -1,5 +1,5 @@
|
||||
fileFormatVersion: 2
|
||||
guid: caf21c5f0e2ad5644ae37eff779381e4
|
||||
guid: 23b5a795c216c9745bce7fea1aa0c59a
|
||||
TextureImporter:
|
||||
internalIDToNameTable: []
|
||||
externalObjects: {}
|
||||
@ -48,7 +48,7 @@ TextureImporter:
|
||||
spriteMeshType: 1
|
||||
alignment: 0
|
||||
spritePivot: {x: 0.5, y: 0.5}
|
||||
spritePixelsToUnits: 256
|
||||
spritePixelsToUnits: 512
|
||||
spriteBorder: {x: 0, y: 0, z: 0, w: 0}
|
||||
spriteGenerateFallbackPhysicsShape: 1
|
||||
alphaUsage: 1
|
BIN
Assets/03.Images/Maps/test/Web03.png
Normal file
After Width: | Height: | Size: 30 KiB |
143
Assets/03.Images/Maps/test/Web03.png.meta
Normal file
@ -0,0 +1,143 @@
|
||||
fileFormatVersion: 2
|
||||
guid: 257f146cb79ef9544a80bff5e9dec562
|
||||
TextureImporter:
|
||||
internalIDToNameTable: []
|
||||
externalObjects: {}
|
||||
serializedVersion: 13
|
||||
mipmaps:
|
||||
mipMapMode: 0
|
||||
enableMipMap: 0
|
||||
sRGBTexture: 1
|
||||
linearTexture: 0
|
||||
fadeOut: 0
|
||||
borderMipMap: 0
|
||||
mipMapsPreserveCoverage: 0
|
||||
alphaTestReferenceValue: 0.5
|
||||
mipMapFadeDistanceStart: 1
|
||||
mipMapFadeDistanceEnd: 3
|
||||
bumpmap:
|
||||
convertToNormalMap: 0
|
||||
externalNormalMap: 0
|
||||
heightScale: 0.25
|
||||
normalMapFilter: 0
|
||||
flipGreenChannel: 0
|
||||
isReadable: 0
|
||||
streamingMipmaps: 0
|
||||
streamingMipmapsPriority: 0
|
||||
vTOnly: 0
|
||||
ignoreMipmapLimit: 0
|
||||
grayScaleToAlpha: 0
|
||||
generateCubemap: 6
|
||||
cubemapConvolution: 0
|
||||
seamlessCubemap: 0
|
||||
textureFormat: 1
|
||||
maxTextureSize: 2048
|
||||
textureSettings:
|
||||
serializedVersion: 2
|
||||
filterMode: 1
|
||||
aniso: 1
|
||||
mipBias: 0
|
||||
wrapU: 1
|
||||
wrapV: 1
|
||||
wrapW: 0
|
||||
nPOTScale: 0
|
||||
lightmap: 0
|
||||
compressionQuality: 50
|
||||
spriteMode: 1
|
||||
spriteExtrude: 1
|
||||
spriteMeshType: 1
|
||||
alignment: 0
|
||||
spritePivot: {x: 0.5, y: 0.5}
|
||||
spritePixelsToUnits: 512
|
||||
spriteBorder: {x: 0, y: 0, z: 0, w: 0}
|
||||
spriteGenerateFallbackPhysicsShape: 1
|
||||
alphaUsage: 1
|
||||
alphaIsTransparency: 1
|
||||
spriteTessellationDetail: -1
|
||||
textureType: 8
|
||||
textureShape: 1
|
||||
singleChannelComponent: 0
|
||||
flipbookRows: 1
|
||||
flipbookColumns: 1
|
||||
maxTextureSizeSet: 0
|
||||
compressionQualitySet: 0
|
||||
textureFormatSet: 0
|
||||
ignorePngGamma: 0
|
||||
applyGammaDecoding: 0
|
||||
swizzle: 50462976
|
||||
cookieLightType: 0
|
||||
platformSettings:
|
||||
- serializedVersion: 4
|
||||
buildTarget: DefaultTexturePlatform
|
||||
maxTextureSize: 2048
|
||||
resizeAlgorithm: 0
|
||||
textureFormat: -1
|
||||
textureCompression: 1
|
||||
compressionQuality: 50
|
||||
crunchedCompression: 0
|
||||
allowsAlphaSplitting: 0
|
||||
overridden: 0
|
||||
ignorePlatformSupport: 0
|
||||
androidETC2FallbackOverride: 0
|
||||
forceMaximumCompressionQuality_BC6H_BC7: 0
|
||||
- serializedVersion: 4
|
||||
buildTarget: Standalone
|
||||
maxTextureSize: 2048
|
||||
resizeAlgorithm: 0
|
||||
textureFormat: -1
|
||||
textureCompression: 1
|
||||
compressionQuality: 50
|
||||
crunchedCompression: 0
|
||||
allowsAlphaSplitting: 0
|
||||
overridden: 0
|
||||
ignorePlatformSupport: 0
|
||||
androidETC2FallbackOverride: 0
|
||||
forceMaximumCompressionQuality_BC6H_BC7: 0
|
||||
- serializedVersion: 4
|
||||
buildTarget: Android
|
||||
maxTextureSize: 2048
|
||||
resizeAlgorithm: 0
|
||||
textureFormat: -1
|
||||
textureCompression: 1
|
||||
compressionQuality: 50
|
||||
crunchedCompression: 0
|
||||
allowsAlphaSplitting: 0
|
||||
overridden: 0
|
||||
ignorePlatformSupport: 0
|
||||
androidETC2FallbackOverride: 0
|
||||
forceMaximumCompressionQuality_BC6H_BC7: 0
|
||||
- serializedVersion: 4
|
||||
buildTarget: WindowsStoreApps
|
||||
maxTextureSize: 2048
|
||||
resizeAlgorithm: 0
|
||||
textureFormat: -1
|
||||
textureCompression: 1
|
||||
compressionQuality: 50
|
||||
crunchedCompression: 0
|
||||
allowsAlphaSplitting: 0
|
||||
overridden: 0
|
||||
ignorePlatformSupport: 0
|
||||
androidETC2FallbackOverride: 0
|
||||
forceMaximumCompressionQuality_BC6H_BC7: 0
|
||||
spriteSheet:
|
||||
serializedVersion: 2
|
||||
sprites: []
|
||||
outline: []
|
||||
customData:
|
||||
physicsShape: []
|
||||
bones: []
|
||||
spriteID: 5e97eb03825dee720800000000000000
|
||||
internalID: 0
|
||||
vertices: []
|
||||
indices:
|
||||
edges: []
|
||||
weights: []
|
||||
secondaryTextures: []
|
||||
spriteCustomMetadata:
|
||||
entries: []
|
||||
nameFileIdTable: {}
|
||||
mipmapLimitGroupName:
|
||||
pSDRemoveMatte: 0
|
||||
userData:
|
||||
assetBundleName:
|
||||
assetBundleVariant:
|
BIN
Assets/03.Images/Maps/test/wall1.png
Normal file
After Width: | Height: | Size: 78 KiB |
143
Assets/03.Images/Maps/test/wall1.png.meta
Normal file
@ -0,0 +1,143 @@
|
||||
fileFormatVersion: 2
|
||||
guid: 667821a4c87008e46b8cb2c28f0ffce6
|
||||
TextureImporter:
|
||||
internalIDToNameTable: []
|
||||
externalObjects: {}
|
||||
serializedVersion: 13
|
||||
mipmaps:
|
||||
mipMapMode: 0
|
||||
enableMipMap: 0
|
||||
sRGBTexture: 1
|
||||
linearTexture: 0
|
||||
fadeOut: 0
|
||||
borderMipMap: 0
|
||||
mipMapsPreserveCoverage: 0
|
||||
alphaTestReferenceValue: 0.5
|
||||
mipMapFadeDistanceStart: 1
|
||||
mipMapFadeDistanceEnd: 3
|
||||
bumpmap:
|
||||
convertToNormalMap: 0
|
||||
externalNormalMap: 0
|
||||
heightScale: 0.25
|
||||
normalMapFilter: 0
|
||||
flipGreenChannel: 0
|
||||
isReadable: 0
|
||||
streamingMipmaps: 0
|
||||
streamingMipmapsPriority: 0
|
||||
vTOnly: 0
|
||||
ignoreMipmapLimit: 0
|
||||
grayScaleToAlpha: 0
|
||||
generateCubemap: 6
|
||||
cubemapConvolution: 0
|
||||
seamlessCubemap: 0
|
||||
textureFormat: 1
|
||||
maxTextureSize: 2048
|
||||
textureSettings:
|
||||
serializedVersion: 2
|
||||
filterMode: 1
|
||||
aniso: 1
|
||||
mipBias: 0
|
||||
wrapU: 1
|
||||
wrapV: 1
|
||||
wrapW: 0
|
||||
nPOTScale: 0
|
||||
lightmap: 0
|
||||
compressionQuality: 50
|
||||
spriteMode: 1
|
||||
spriteExtrude: 1
|
||||
spriteMeshType: 1
|
||||
alignment: 7
|
||||
spritePivot: {x: 0.5, y: 0.5}
|
||||
spritePixelsToUnits: 1024
|
||||
spriteBorder: {x: 0, y: 0, z: 0, w: 0}
|
||||
spriteGenerateFallbackPhysicsShape: 1
|
||||
alphaUsage: 1
|
||||
alphaIsTransparency: 1
|
||||
spriteTessellationDetail: -1
|
||||
textureType: 8
|
||||
textureShape: 1
|
||||
singleChannelComponent: 0
|
||||
flipbookRows: 1
|
||||
flipbookColumns: 1
|
||||
maxTextureSizeSet: 0
|
||||
compressionQualitySet: 0
|
||||
textureFormatSet: 0
|
||||
ignorePngGamma: 0
|
||||
applyGammaDecoding: 0
|
||||
swizzle: 50462976
|
||||
cookieLightType: 0
|
||||
platformSettings:
|
||||
- serializedVersion: 4
|
||||
buildTarget: DefaultTexturePlatform
|
||||
maxTextureSize: 2048
|
||||
resizeAlgorithm: 0
|
||||
textureFormat: -1
|
||||
textureCompression: 1
|
||||
compressionQuality: 50
|
||||
crunchedCompression: 0
|
||||
allowsAlphaSplitting: 0
|
||||
overridden: 0
|
||||
ignorePlatformSupport: 0
|
||||
androidETC2FallbackOverride: 0
|
||||
forceMaximumCompressionQuality_BC6H_BC7: 0
|
||||
- serializedVersion: 4
|
||||
buildTarget: Standalone
|
||||
maxTextureSize: 2048
|
||||
resizeAlgorithm: 0
|
||||
textureFormat: -1
|
||||
textureCompression: 1
|
||||
compressionQuality: 50
|
||||
crunchedCompression: 0
|
||||
allowsAlphaSplitting: 0
|
||||
overridden: 0
|
||||
ignorePlatformSupport: 0
|
||||
androidETC2FallbackOverride: 0
|
||||
forceMaximumCompressionQuality_BC6H_BC7: 0
|
||||
- serializedVersion: 4
|
||||
buildTarget: Android
|
||||
maxTextureSize: 2048
|
||||
resizeAlgorithm: 0
|
||||
textureFormat: -1
|
||||
textureCompression: 1
|
||||
compressionQuality: 50
|
||||
crunchedCompression: 0
|
||||
allowsAlphaSplitting: 0
|
||||
overridden: 0
|
||||
ignorePlatformSupport: 0
|
||||
androidETC2FallbackOverride: 0
|
||||
forceMaximumCompressionQuality_BC6H_BC7: 0
|
||||
- serializedVersion: 4
|
||||
buildTarget: WindowsStoreApps
|
||||
maxTextureSize: 2048
|
||||
resizeAlgorithm: 0
|
||||
textureFormat: -1
|
||||
textureCompression: 1
|
||||
compressionQuality: 50
|
||||
crunchedCompression: 0
|
||||
allowsAlphaSplitting: 0
|
||||
overridden: 0
|
||||
ignorePlatformSupport: 0
|
||||
androidETC2FallbackOverride: 0
|
||||
forceMaximumCompressionQuality_BC6H_BC7: 0
|
||||
spriteSheet:
|
||||
serializedVersion: 2
|
||||
sprites: []
|
||||
outline: []
|
||||
customData:
|
||||
physicsShape: []
|
||||
bones: []
|
||||
spriteID: 5e97eb03825dee720800000000000000
|
||||
internalID: 0
|
||||
vertices: []
|
||||
indices:
|
||||
edges: []
|
||||
weights: []
|
||||
secondaryTextures: []
|
||||
spriteCustomMetadata:
|
||||
entries: []
|
||||
nameFileIdTable: {}
|
||||
mipmapLimitGroupName:
|
||||
pSDRemoveMatte: 0
|
||||
userData:
|
||||
assetBundleName:
|
||||
assetBundleVariant:
|
BIN
Assets/03.Images/Maps/test/wall3.png
Normal file
After Width: | Height: | Size: 80 KiB |
143
Assets/03.Images/Maps/test/wall3.png.meta
Normal file
@ -0,0 +1,143 @@
|
||||
fileFormatVersion: 2
|
||||
guid: c76284932c3abd144a8034f18b3e6c4b
|
||||
TextureImporter:
|
||||
internalIDToNameTable: []
|
||||
externalObjects: {}
|
||||
serializedVersion: 13
|
||||
mipmaps:
|
||||
mipMapMode: 0
|
||||
enableMipMap: 0
|
||||
sRGBTexture: 1
|
||||
linearTexture: 0
|
||||
fadeOut: 0
|
||||
borderMipMap: 0
|
||||
mipMapsPreserveCoverage: 0
|
||||
alphaTestReferenceValue: 0.5
|
||||
mipMapFadeDistanceStart: 1
|
||||
mipMapFadeDistanceEnd: 3
|
||||
bumpmap:
|
||||
convertToNormalMap: 0
|
||||
externalNormalMap: 0
|
||||
heightScale: 0.25
|
||||
normalMapFilter: 0
|
||||
flipGreenChannel: 0
|
||||
isReadable: 0
|
||||
streamingMipmaps: 0
|
||||
streamingMipmapsPriority: 0
|
||||
vTOnly: 0
|
||||
ignoreMipmapLimit: 0
|
||||
grayScaleToAlpha: 0
|
||||
generateCubemap: 6
|
||||
cubemapConvolution: 0
|
||||
seamlessCubemap: 0
|
||||
textureFormat: 1
|
||||
maxTextureSize: 2048
|
||||
textureSettings:
|
||||
serializedVersion: 2
|
||||
filterMode: 1
|
||||
aniso: 1
|
||||
mipBias: 0
|
||||
wrapU: 1
|
||||
wrapV: 1
|
||||
wrapW: 0
|
||||
nPOTScale: 0
|
||||
lightmap: 0
|
||||
compressionQuality: 50
|
||||
spriteMode: 1
|
||||
spriteExtrude: 1
|
||||
spriteMeshType: 1
|
||||
alignment: 7
|
||||
spritePivot: {x: 0.5, y: 0.5}
|
||||
spritePixelsToUnits: 1024
|
||||
spriteBorder: {x: 0, y: 0, z: 0, w: 0}
|
||||
spriteGenerateFallbackPhysicsShape: 1
|
||||
alphaUsage: 1
|
||||
alphaIsTransparency: 1
|
||||
spriteTessellationDetail: -1
|
||||
textureType: 8
|
||||
textureShape: 1
|
||||
singleChannelComponent: 0
|
||||
flipbookRows: 1
|
||||
flipbookColumns: 1
|
||||
maxTextureSizeSet: 0
|
||||
compressionQualitySet: 0
|
||||
textureFormatSet: 0
|
||||
ignorePngGamma: 0
|
||||
applyGammaDecoding: 0
|
||||
swizzle: 50462976
|
||||
cookieLightType: 0
|
||||
platformSettings:
|
||||
- serializedVersion: 4
|
||||
buildTarget: DefaultTexturePlatform
|
||||
maxTextureSize: 2048
|
||||
resizeAlgorithm: 0
|
||||
textureFormat: -1
|
||||
textureCompression: 1
|
||||
compressionQuality: 50
|
||||
crunchedCompression: 0
|
||||
allowsAlphaSplitting: 0
|
||||
overridden: 0
|
||||
ignorePlatformSupport: 0
|
||||
androidETC2FallbackOverride: 0
|
||||
forceMaximumCompressionQuality_BC6H_BC7: 0
|
||||
- serializedVersion: 4
|
||||
buildTarget: Standalone
|
||||
maxTextureSize: 2048
|
||||
resizeAlgorithm: 0
|
||||
textureFormat: -1
|
||||
textureCompression: 1
|
||||
compressionQuality: 50
|
||||
crunchedCompression: 0
|
||||
allowsAlphaSplitting: 0
|
||||
overridden: 0
|
||||
ignorePlatformSupport: 0
|
||||
androidETC2FallbackOverride: 0
|
||||
forceMaximumCompressionQuality_BC6H_BC7: 0
|
||||
- serializedVersion: 4
|
||||
buildTarget: Android
|
||||
maxTextureSize: 2048
|
||||
resizeAlgorithm: 0
|
||||
textureFormat: -1
|
||||
textureCompression: 1
|
||||
compressionQuality: 50
|
||||
crunchedCompression: 0
|
||||
allowsAlphaSplitting: 0
|
||||
overridden: 0
|
||||
ignorePlatformSupport: 0
|
||||
androidETC2FallbackOverride: 0
|
||||
forceMaximumCompressionQuality_BC6H_BC7: 0
|
||||
- serializedVersion: 4
|
||||
buildTarget: WindowsStoreApps
|
||||
maxTextureSize: 2048
|
||||
resizeAlgorithm: 0
|
||||
textureFormat: -1
|
||||
textureCompression: 1
|
||||
compressionQuality: 50
|
||||
crunchedCompression: 0
|
||||
allowsAlphaSplitting: 0
|
||||
overridden: 0
|
||||
ignorePlatformSupport: 0
|
||||
androidETC2FallbackOverride: 0
|
||||
forceMaximumCompressionQuality_BC6H_BC7: 0
|
||||
spriteSheet:
|
||||
serializedVersion: 2
|
||||
sprites: []
|
||||
outline: []
|
||||
customData:
|
||||
physicsShape: []
|
||||
bones: []
|
||||
spriteID: 5e97eb03825dee720800000000000000
|
||||
internalID: 0
|
||||
vertices: []
|
||||
indices:
|
||||
edges: []
|
||||
weights: []
|
||||
secondaryTextures: []
|
||||
spriteCustomMetadata:
|
||||
entries: []
|
||||
nameFileIdTable: {}
|
||||
mipmapLimitGroupName:
|
||||
pSDRemoveMatte: 0
|
||||
userData:
|
||||
assetBundleName:
|
||||
assetBundleVariant:
|
BIN
Assets/03.Images/Maps/test/wall4.png
Normal file
After Width: | Height: | Size: 81 KiB |
143
Assets/03.Images/Maps/test/wall4.png.meta
Normal file
@ -0,0 +1,143 @@
|
||||
fileFormatVersion: 2
|
||||
guid: db1263fa7c3044d478d0b88d23c9a23b
|
||||
TextureImporter:
|
||||
internalIDToNameTable: []
|
||||
externalObjects: {}
|
||||
serializedVersion: 13
|
||||
mipmaps:
|
||||
mipMapMode: 0
|
||||
enableMipMap: 0
|
||||
sRGBTexture: 1
|
||||
linearTexture: 0
|
||||
fadeOut: 0
|
||||
borderMipMap: 0
|
||||
mipMapsPreserveCoverage: 0
|
||||
alphaTestReferenceValue: 0.5
|
||||
mipMapFadeDistanceStart: 1
|
||||
mipMapFadeDistanceEnd: 3
|
||||
bumpmap:
|
||||
convertToNormalMap: 0
|
||||
externalNormalMap: 0
|
||||
heightScale: 0.25
|
||||
normalMapFilter: 0
|
||||
flipGreenChannel: 0
|
||||
isReadable: 0
|
||||
streamingMipmaps: 0
|
||||
streamingMipmapsPriority: 0
|
||||
vTOnly: 0
|
||||
ignoreMipmapLimit: 0
|
||||
grayScaleToAlpha: 0
|
||||
generateCubemap: 6
|
||||
cubemapConvolution: 0
|
||||
seamlessCubemap: 0
|
||||
textureFormat: 1
|
||||
maxTextureSize: 2048
|
||||
textureSettings:
|
||||
serializedVersion: 2
|
||||
filterMode: 1
|
||||
aniso: 1
|
||||
mipBias: 0
|
||||
wrapU: 1
|
||||
wrapV: 1
|
||||
wrapW: 0
|
||||
nPOTScale: 0
|
||||
lightmap: 0
|
||||
compressionQuality: 50
|
||||
spriteMode: 1
|
||||
spriteExtrude: 1
|
||||
spriteMeshType: 1
|
||||
alignment: 7
|
||||
spritePivot: {x: 0.5, y: 0.5}
|
||||
spritePixelsToUnits: 1024
|
||||
spriteBorder: {x: 0, y: 0, z: 0, w: 0}
|
||||
spriteGenerateFallbackPhysicsShape: 1
|
||||
alphaUsage: 1
|
||||
alphaIsTransparency: 1
|
||||
spriteTessellationDetail: -1
|
||||
textureType: 8
|
||||
textureShape: 1
|
||||
singleChannelComponent: 0
|
||||
flipbookRows: 1
|
||||
flipbookColumns: 1
|
||||
maxTextureSizeSet: 0
|
||||
compressionQualitySet: 0
|
||||
textureFormatSet: 0
|
||||
ignorePngGamma: 0
|
||||
applyGammaDecoding: 0
|
||||
swizzle: 50462976
|
||||
cookieLightType: 0
|
||||
platformSettings:
|
||||
- serializedVersion: 4
|
||||
buildTarget: DefaultTexturePlatform
|
||||
maxTextureSize: 2048
|
||||
resizeAlgorithm: 0
|
||||
textureFormat: -1
|
||||
textureCompression: 1
|
||||
compressionQuality: 50
|
||||
crunchedCompression: 0
|
||||
allowsAlphaSplitting: 0
|
||||
overridden: 0
|
||||
ignorePlatformSupport: 0
|
||||
androidETC2FallbackOverride: 0
|
||||
forceMaximumCompressionQuality_BC6H_BC7: 0
|
||||
- serializedVersion: 4
|
||||
buildTarget: Standalone
|
||||
maxTextureSize: 2048
|
||||
resizeAlgorithm: 0
|
||||
textureFormat: -1
|
||||
textureCompression: 1
|
||||
compressionQuality: 50
|
||||
crunchedCompression: 0
|
||||
allowsAlphaSplitting: 0
|
||||
overridden: 0
|
||||
ignorePlatformSupport: 0
|
||||
androidETC2FallbackOverride: 0
|
||||
forceMaximumCompressionQuality_BC6H_BC7: 0
|
||||
- serializedVersion: 4
|
||||
buildTarget: Android
|
||||
maxTextureSize: 2048
|
||||
resizeAlgorithm: 0
|
||||
textureFormat: -1
|
||||
textureCompression: 1
|
||||
compressionQuality: 50
|
||||
crunchedCompression: 0
|
||||
allowsAlphaSplitting: 0
|
||||
overridden: 0
|
||||
ignorePlatformSupport: 0
|
||||
androidETC2FallbackOverride: 0
|
||||
forceMaximumCompressionQuality_BC6H_BC7: 0
|
||||
- serializedVersion: 4
|
||||
buildTarget: WindowsStoreApps
|
||||
maxTextureSize: 2048
|
||||
resizeAlgorithm: 0
|
||||
textureFormat: -1
|
||||
textureCompression: 1
|
||||
compressionQuality: 50
|
||||
crunchedCompression: 0
|
||||
allowsAlphaSplitting: 0
|
||||
overridden: 0
|
||||
ignorePlatformSupport: 0
|
||||
androidETC2FallbackOverride: 0
|
||||
forceMaximumCompressionQuality_BC6H_BC7: 0
|
||||
spriteSheet:
|
||||
serializedVersion: 2
|
||||
sprites: []
|
||||
outline: []
|
||||
customData:
|
||||
physicsShape: []
|
||||
bones: []
|
||||
spriteID: 5e97eb03825dee720800000000000000
|
||||
internalID: 0
|
||||
vertices: []
|
||||
indices:
|
||||
edges: []
|
||||
weights: []
|
||||
secondaryTextures: []
|
||||
spriteCustomMetadata:
|
||||
entries: []
|
||||
nameFileIdTable: {}
|
||||
mipmapLimitGroupName:
|
||||
pSDRemoveMatte: 0
|
||||
userData:
|
||||
assetBundleName:
|
||||
assetBundleVariant:
|
BIN
Assets/03.Images/Maps/test/wall5 1.png
Normal file
After Width: | Height: | Size: 27 KiB |
143
Assets/03.Images/Maps/test/wall5 1.png.meta
Normal file
@ -0,0 +1,143 @@
|
||||
fileFormatVersion: 2
|
||||
guid: 0858cb2d56f738e4f876e153f4ef4b06
|
||||
TextureImporter:
|
||||
internalIDToNameTable: []
|
||||
externalObjects: {}
|
||||
serializedVersion: 13
|
||||
mipmaps:
|
||||
mipMapMode: 0
|
||||
enableMipMap: 0
|
||||
sRGBTexture: 1
|
||||
linearTexture: 0
|
||||
fadeOut: 0
|
||||
borderMipMap: 0
|
||||
mipMapsPreserveCoverage: 0
|
||||
alphaTestReferenceValue: 0.5
|
||||
mipMapFadeDistanceStart: 1
|
||||
mipMapFadeDistanceEnd: 3
|
||||
bumpmap:
|
||||
convertToNormalMap: 0
|
||||
externalNormalMap: 0
|
||||
heightScale: 0.25
|
||||
normalMapFilter: 0
|
||||
flipGreenChannel: 0
|
||||
isReadable: 0
|
||||
streamingMipmaps: 0
|
||||
streamingMipmapsPriority: 0
|
||||
vTOnly: 0
|
||||
ignoreMipmapLimit: 0
|
||||
grayScaleToAlpha: 0
|
||||
generateCubemap: 6
|
||||
cubemapConvolution: 0
|
||||
seamlessCubemap: 0
|
||||
textureFormat: 1
|
||||
maxTextureSize: 2048
|
||||
textureSettings:
|
||||
serializedVersion: 2
|
||||
filterMode: 1
|
||||
aniso: 1
|
||||
mipBias: 0
|
||||
wrapU: 1
|
||||
wrapV: 1
|
||||
wrapW: 0
|
||||
nPOTScale: 0
|
||||
lightmap: 0
|
||||
compressionQuality: 50
|
||||
spriteMode: 1
|
||||
spriteExtrude: 1
|
||||
spriteMeshType: 1
|
||||
alignment: 7
|
||||
spritePivot: {x: 0.5, y: 0.5}
|
||||
spritePixelsToUnits: 1024
|
||||
spriteBorder: {x: 0, y: 0, z: 0, w: 0}
|
||||
spriteGenerateFallbackPhysicsShape: 1
|
||||
alphaUsage: 1
|
||||
alphaIsTransparency: 1
|
||||
spriteTessellationDetail: -1
|
||||
textureType: 8
|
||||
textureShape: 1
|
||||
singleChannelComponent: 0
|
||||
flipbookRows: 1
|
||||
flipbookColumns: 1
|
||||
maxTextureSizeSet: 0
|
||||
compressionQualitySet: 0
|
||||
textureFormatSet: 0
|
||||
ignorePngGamma: 0
|
||||
applyGammaDecoding: 0
|
||||
swizzle: 50462976
|
||||
cookieLightType: 0
|
||||
platformSettings:
|
||||
- serializedVersion: 4
|
||||
buildTarget: DefaultTexturePlatform
|
||||
maxTextureSize: 2048
|
||||
resizeAlgorithm: 0
|
||||
textureFormat: -1
|
||||
textureCompression: 1
|
||||
compressionQuality: 50
|
||||
crunchedCompression: 0
|
||||
allowsAlphaSplitting: 0
|
||||
overridden: 0
|
||||
ignorePlatformSupport: 0
|
||||
androidETC2FallbackOverride: 0
|
||||
forceMaximumCompressionQuality_BC6H_BC7: 0
|
||||
- serializedVersion: 4
|
||||
buildTarget: Standalone
|
||||
maxTextureSize: 2048
|
||||
resizeAlgorithm: 0
|
||||
textureFormat: -1
|
||||
textureCompression: 1
|
||||
compressionQuality: 50
|
||||
crunchedCompression: 0
|
||||
allowsAlphaSplitting: 0
|
||||
overridden: 0
|
||||
ignorePlatformSupport: 0
|
||||
androidETC2FallbackOverride: 0
|
||||
forceMaximumCompressionQuality_BC6H_BC7: 0
|
||||
- serializedVersion: 4
|
||||
buildTarget: Android
|
||||
maxTextureSize: 2048
|
||||
resizeAlgorithm: 0
|
||||
textureFormat: -1
|
||||
textureCompression: 1
|
||||
compressionQuality: 50
|
||||
crunchedCompression: 0
|
||||
allowsAlphaSplitting: 0
|
||||
overridden: 0
|
||||
ignorePlatformSupport: 0
|
||||
androidETC2FallbackOverride: 0
|
||||
forceMaximumCompressionQuality_BC6H_BC7: 0
|
||||
- serializedVersion: 4
|
||||
buildTarget: WindowsStoreApps
|
||||
maxTextureSize: 2048
|
||||
resizeAlgorithm: 0
|
||||
textureFormat: -1
|
||||
textureCompression: 1
|
||||
compressionQuality: 50
|
||||
crunchedCompression: 0
|
||||
allowsAlphaSplitting: 0
|
||||
overridden: 0
|
||||
ignorePlatformSupport: 0
|
||||
androidETC2FallbackOverride: 0
|
||||
forceMaximumCompressionQuality_BC6H_BC7: 0
|
||||
spriteSheet:
|
||||
serializedVersion: 2
|
||||
sprites: []
|
||||
outline: []
|
||||
customData:
|
||||
physicsShape: []
|
||||
bones: []
|
||||
spriteID: 5e97eb03825dee720800000000000000
|
||||
internalID: 0
|
||||
vertices: []
|
||||
indices:
|
||||
edges: []
|
||||
weights: []
|
||||
secondaryTextures: []
|
||||
spriteCustomMetadata:
|
||||
entries: []
|
||||
nameFileIdTable: {}
|
||||
mipmapLimitGroupName:
|
||||
pSDRemoveMatte: 0
|
||||
userData:
|
||||
assetBundleName:
|
||||
assetBundleVariant:
|
Before Width: | Height: | Size: 18 KiB |
@ -1,143 +0,0 @@
|
||||
fileFormatVersion: 2
|
||||
guid: 920ba660d9900ce459ae2bb7eb621887
|
||||
TextureImporter:
|
||||
internalIDToNameTable: []
|
||||
externalObjects: {}
|
||||
serializedVersion: 13
|
||||
mipmaps:
|
||||
mipMapMode: 0
|
||||
enableMipMap: 0
|
||||
sRGBTexture: 1
|
||||
linearTexture: 0
|
||||
fadeOut: 0
|
||||
borderMipMap: 0
|
||||
mipMapsPreserveCoverage: 0
|
||||
alphaTestReferenceValue: 0.5
|
||||
mipMapFadeDistanceStart: 1
|
||||
mipMapFadeDistanceEnd: 3
|
||||
bumpmap:
|
||||
convertToNormalMap: 0
|
||||
externalNormalMap: 0
|
||||
heightScale: 0.25
|
||||
normalMapFilter: 0
|
||||
flipGreenChannel: 0
|
||||
isReadable: 0
|
||||
streamingMipmaps: 0
|
||||
streamingMipmapsPriority: 0
|
||||
vTOnly: 0
|
||||
ignoreMipmapLimit: 0
|
||||
grayScaleToAlpha: 0
|
||||
generateCubemap: 6
|
||||
cubemapConvolution: 0
|
||||
seamlessCubemap: 0
|
||||
textureFormat: 1
|
||||
maxTextureSize: 2048
|
||||
textureSettings:
|
||||
serializedVersion: 2
|
||||
filterMode: 1
|
||||
aniso: 1
|
||||
mipBias: 0
|
||||
wrapU: 1
|
||||
wrapV: 1
|
||||
wrapW: 0
|
||||
nPOTScale: 0
|
||||
lightmap: 0
|
||||
compressionQuality: 50
|
||||
spriteMode: 1
|
||||
spriteExtrude: 1
|
||||
spriteMeshType: 1
|
||||
alignment: 0
|
||||
spritePivot: {x: 0.5, y: 0.5}
|
||||
spritePixelsToUnits: 256
|
||||
spriteBorder: {x: 0, y: 0, z: 0, w: 0}
|
||||
spriteGenerateFallbackPhysicsShape: 1
|
||||
alphaUsage: 1
|
||||
alphaIsTransparency: 1
|
||||
spriteTessellationDetail: -1
|
||||
textureType: 8
|
||||
textureShape: 1
|
||||
singleChannelComponent: 0
|
||||
flipbookRows: 1
|
||||
flipbookColumns: 1
|
||||
maxTextureSizeSet: 0
|
||||
compressionQualitySet: 0
|
||||
textureFormatSet: 0
|
||||
ignorePngGamma: 0
|
||||
applyGammaDecoding: 0
|
||||
swizzle: 50462976
|
||||
cookieLightType: 0
|
||||
platformSettings:
|
||||
- serializedVersion: 4
|
||||
buildTarget: DefaultTexturePlatform
|
||||
maxTextureSize: 2048
|
||||
resizeAlgorithm: 0
|
||||
textureFormat: -1
|
||||
textureCompression: 1
|
||||
compressionQuality: 50
|
||||
crunchedCompression: 0
|
||||
allowsAlphaSplitting: 0
|
||||
overridden: 0
|
||||
ignorePlatformSupport: 0
|
||||
androidETC2FallbackOverride: 0
|
||||
forceMaximumCompressionQuality_BC6H_BC7: 0
|
||||
- serializedVersion: 4
|
||||
buildTarget: Standalone
|
||||
maxTextureSize: 2048
|
||||
resizeAlgorithm: 0
|
||||
textureFormat: -1
|
||||
textureCompression: 1
|
||||
compressionQuality: 50
|
||||
crunchedCompression: 0
|
||||
allowsAlphaSplitting: 0
|
||||
overridden: 0
|
||||
ignorePlatformSupport: 0
|
||||
androidETC2FallbackOverride: 0
|
||||
forceMaximumCompressionQuality_BC6H_BC7: 0
|
||||
- serializedVersion: 4
|
||||
buildTarget: Android
|
||||
maxTextureSize: 2048
|
||||
resizeAlgorithm: 0
|
||||
textureFormat: -1
|
||||
textureCompression: 1
|
||||
compressionQuality: 50
|
||||
crunchedCompression: 0
|
||||
allowsAlphaSplitting: 0
|
||||
overridden: 0
|
||||
ignorePlatformSupport: 0
|
||||
androidETC2FallbackOverride: 0
|
||||
forceMaximumCompressionQuality_BC6H_BC7: 0
|
||||
- serializedVersion: 4
|
||||
buildTarget: WindowsStoreApps
|
||||
maxTextureSize: 2048
|
||||
resizeAlgorithm: 0
|
||||
textureFormat: -1
|
||||
textureCompression: 1
|
||||
compressionQuality: 50
|
||||
crunchedCompression: 0
|
||||
allowsAlphaSplitting: 0
|
||||
overridden: 0
|
||||
ignorePlatformSupport: 0
|
||||
androidETC2FallbackOverride: 0
|
||||
forceMaximumCompressionQuality_BC6H_BC7: 0
|
||||
spriteSheet:
|
||||
serializedVersion: 2
|
||||
sprites: []
|
||||
outline: []
|
||||
customData:
|
||||
physicsShape: []
|
||||
bones: []
|
||||
spriteID: 5e97eb03825dee720800000000000000
|
||||
internalID: 0
|
||||
vertices: []
|
||||
indices:
|
||||
edges: []
|
||||
weights: []
|
||||
secondaryTextures: []
|
||||
spriteCustomMetadata:
|
||||
entries: []
|
||||
nameFileIdTable: {}
|
||||
mipmapLimitGroupName:
|
||||
pSDRemoveMatte: 0
|
||||
userData:
|
||||
assetBundleName:
|
||||
assetBundleVariant:
|
Before Width: | Height: | Size: 13 KiB |
@ -1,143 +0,0 @@
|
||||
fileFormatVersion: 2
|
||||
guid: 72906c5f31b91964b9bf78b45ab5774c
|
||||
TextureImporter:
|
||||
internalIDToNameTable: []
|
||||
externalObjects: {}
|
||||
serializedVersion: 13
|
||||
mipmaps:
|
||||
mipMapMode: 0
|
||||
enableMipMap: 0
|
||||
sRGBTexture: 1
|
||||
linearTexture: 0
|
||||
fadeOut: 0
|
||||
borderMipMap: 0
|
||||
mipMapsPreserveCoverage: 0
|
||||
alphaTestReferenceValue: 0.5
|
||||
mipMapFadeDistanceStart: 1
|
||||
mipMapFadeDistanceEnd: 3
|
||||
bumpmap:
|
||||
convertToNormalMap: 0
|
||||
externalNormalMap: 0
|
||||
heightScale: 0.25
|
||||
normalMapFilter: 0
|
||||
flipGreenChannel: 0
|
||||
isReadable: 0
|
||||
streamingMipmaps: 0
|
||||
streamingMipmapsPriority: 0
|
||||
vTOnly: 0
|
||||
ignoreMipmapLimit: 0
|
||||
grayScaleToAlpha: 0
|
||||
generateCubemap: 6
|
||||
cubemapConvolution: 0
|
||||
seamlessCubemap: 0
|
||||
textureFormat: 1
|
||||
maxTextureSize: 2048
|
||||
textureSettings:
|
||||
serializedVersion: 2
|
||||
filterMode: 1
|
||||
aniso: 1
|
||||
mipBias: 0
|
||||
wrapU: 1
|
||||
wrapV: 1
|
||||
wrapW: 0
|
||||
nPOTScale: 0
|
||||
lightmap: 0
|
||||
compressionQuality: 50
|
||||
spriteMode: 1
|
||||
spriteExtrude: 1
|
||||
spriteMeshType: 1
|
||||
alignment: 0
|
||||
spritePivot: {x: 0.5, y: 0.5}
|
||||
spritePixelsToUnits: 256
|
||||
spriteBorder: {x: 0, y: 0, z: 0, w: 0}
|
||||
spriteGenerateFallbackPhysicsShape: 1
|
||||
alphaUsage: 1
|
||||
alphaIsTransparency: 1
|
||||
spriteTessellationDetail: -1
|
||||
textureType: 8
|
||||
textureShape: 1
|
||||
singleChannelComponent: 0
|
||||
flipbookRows: 1
|
||||
flipbookColumns: 1
|
||||
maxTextureSizeSet: 0
|
||||
compressionQualitySet: 0
|
||||
textureFormatSet: 0
|
||||
ignorePngGamma: 0
|
||||
applyGammaDecoding: 0
|
||||
swizzle: 50462976
|
||||
cookieLightType: 0
|
||||
platformSettings:
|
||||
- serializedVersion: 4
|
||||
buildTarget: DefaultTexturePlatform
|
||||
maxTextureSize: 2048
|
||||
resizeAlgorithm: 0
|
||||
textureFormat: -1
|
||||
textureCompression: 1
|
||||
compressionQuality: 50
|
||||
crunchedCompression: 0
|
||||
allowsAlphaSplitting: 0
|
||||
overridden: 0
|
||||
ignorePlatformSupport: 0
|
||||
androidETC2FallbackOverride: 0
|
||||
forceMaximumCompressionQuality_BC6H_BC7: 0
|
||||
- serializedVersion: 4
|
||||
buildTarget: Standalone
|
||||
maxTextureSize: 2048
|
||||
resizeAlgorithm: 0
|
||||
textureFormat: -1
|
||||
textureCompression: 1
|
||||
compressionQuality: 50
|
||||
crunchedCompression: 0
|
||||
allowsAlphaSplitting: 0
|
||||
overridden: 0
|
||||
ignorePlatformSupport: 0
|
||||
androidETC2FallbackOverride: 0
|
||||
forceMaximumCompressionQuality_BC6H_BC7: 0
|
||||
- serializedVersion: 4
|
||||
buildTarget: Android
|
||||
maxTextureSize: 2048
|
||||
resizeAlgorithm: 0
|
||||
textureFormat: -1
|
||||
textureCompression: 1
|
||||
compressionQuality: 50
|
||||
crunchedCompression: 0
|
||||
allowsAlphaSplitting: 0
|
||||
overridden: 0
|
||||
ignorePlatformSupport: 0
|
||||
androidETC2FallbackOverride: 0
|
||||
forceMaximumCompressionQuality_BC6H_BC7: 0
|
||||
- serializedVersion: 4
|
||||
buildTarget: WindowsStoreApps
|
||||
maxTextureSize: 2048
|
||||
resizeAlgorithm: 0
|
||||
textureFormat: -1
|
||||
textureCompression: 1
|
||||
compressionQuality: 50
|
||||
crunchedCompression: 0
|
||||
allowsAlphaSplitting: 0
|
||||
overridden: 0
|
||||
ignorePlatformSupport: 0
|
||||
androidETC2FallbackOverride: 0
|
||||
forceMaximumCompressionQuality_BC6H_BC7: 0
|
||||
spriteSheet:
|
||||
serializedVersion: 2
|
||||
sprites: []
|
||||
outline: []
|
||||
customData:
|
||||
physicsShape: []
|
||||
bones: []
|
||||
spriteID: 5e97eb03825dee720800000000000000
|
||||
internalID: 0
|
||||
vertices: []
|
||||
indices:
|
||||
edges: []
|
||||
weights: []
|
||||
secondaryTextures: []
|
||||
spriteCustomMetadata:
|
||||
entries: []
|
||||
nameFileIdTable: {}
|
||||
mipmapLimitGroupName:
|
||||
pSDRemoveMatte: 0
|
||||
userData:
|
||||
assetBundleName:
|
||||
assetBundleVariant:
|
Before Width: | Height: | Size: 16 KiB |
@ -1,143 +0,0 @@
|
||||
fileFormatVersion: 2
|
||||
guid: 8def3f8daad983145b8add75c21c5712
|
||||
TextureImporter:
|
||||
internalIDToNameTable: []
|
||||
externalObjects: {}
|
||||
serializedVersion: 13
|
||||
mipmaps:
|
||||
mipMapMode: 0
|
||||
enableMipMap: 0
|
||||
sRGBTexture: 1
|
||||
linearTexture: 0
|
||||
fadeOut: 0
|
||||
borderMipMap: 0
|
||||
mipMapsPreserveCoverage: 0
|
||||
alphaTestReferenceValue: 0.5
|
||||
mipMapFadeDistanceStart: 1
|
||||
mipMapFadeDistanceEnd: 3
|
||||
bumpmap:
|
||||
convertToNormalMap: 0
|
||||
externalNormalMap: 0
|
||||
heightScale: 0.25
|
||||
normalMapFilter: 0
|
||||
flipGreenChannel: 0
|
||||
isReadable: 0
|
||||
streamingMipmaps: 0
|
||||
streamingMipmapsPriority: 0
|
||||
vTOnly: 0
|
||||
ignoreMipmapLimit: 0
|
||||
grayScaleToAlpha: 0
|
||||
generateCubemap: 6
|
||||
cubemapConvolution: 0
|
||||
seamlessCubemap: 0
|
||||
textureFormat: 1
|
||||
maxTextureSize: 2048
|
||||
textureSettings:
|
||||
serializedVersion: 2
|
||||
filterMode: 1
|
||||
aniso: 1
|
||||
mipBias: 0
|
||||
wrapU: 1
|
||||
wrapV: 1
|
||||
wrapW: 0
|
||||
nPOTScale: 0
|
||||
lightmap: 0
|
||||
compressionQuality: 50
|
||||
spriteMode: 1
|
||||
spriteExtrude: 1
|
||||
spriteMeshType: 1
|
||||
alignment: 0
|
||||
spritePivot: {x: 0.5, y: 0.5}
|
||||
spritePixelsToUnits: 256
|
||||
spriteBorder: {x: 0, y: 0, z: 0, w: 0}
|
||||
spriteGenerateFallbackPhysicsShape: 1
|
||||
alphaUsage: 1
|
||||
alphaIsTransparency: 1
|
||||
spriteTessellationDetail: -1
|
||||
textureType: 8
|
||||
textureShape: 1
|
||||
singleChannelComponent: 0
|
||||
flipbookRows: 1
|
||||
flipbookColumns: 1
|
||||
maxTextureSizeSet: 0
|
||||
compressionQualitySet: 0
|
||||
textureFormatSet: 0
|
||||
ignorePngGamma: 0
|
||||
applyGammaDecoding: 0
|
||||
swizzle: 50462976
|
||||
cookieLightType: 0
|
||||
platformSettings:
|
||||
- serializedVersion: 4
|
||||
buildTarget: DefaultTexturePlatform
|
||||
maxTextureSize: 2048
|
||||
resizeAlgorithm: 0
|
||||
textureFormat: -1
|
||||
textureCompression: 1
|
||||
compressionQuality: 50
|
||||
crunchedCompression: 0
|
||||
allowsAlphaSplitting: 0
|
||||
overridden: 0
|
||||
ignorePlatformSupport: 0
|
||||
androidETC2FallbackOverride: 0
|
||||
forceMaximumCompressionQuality_BC6H_BC7: 0
|
||||
- serializedVersion: 4
|
||||
buildTarget: Standalone
|
||||
maxTextureSize: 2048
|
||||
resizeAlgorithm: 0
|
||||
textureFormat: -1
|
||||
textureCompression: 1
|
||||
compressionQuality: 50
|
||||
crunchedCompression: 0
|
||||
allowsAlphaSplitting: 0
|
||||
overridden: 0
|
||||
ignorePlatformSupport: 0
|
||||
androidETC2FallbackOverride: 0
|
||||
forceMaximumCompressionQuality_BC6H_BC7: 0
|
||||
- serializedVersion: 4
|
||||
buildTarget: Android
|
||||
maxTextureSize: 2048
|
||||
resizeAlgorithm: 0
|
||||
textureFormat: -1
|
||||
textureCompression: 1
|
||||
compressionQuality: 50
|
||||
crunchedCompression: 0
|
||||
allowsAlphaSplitting: 0
|
||||
overridden: 0
|
||||
ignorePlatformSupport: 0
|
||||
androidETC2FallbackOverride: 0
|
||||
forceMaximumCompressionQuality_BC6H_BC7: 0
|
||||
- serializedVersion: 4
|
||||
buildTarget: WindowsStoreApps
|
||||
maxTextureSize: 2048
|
||||
resizeAlgorithm: 0
|
||||
textureFormat: -1
|
||||
textureCompression: 1
|
||||
compressionQuality: 50
|
||||
crunchedCompression: 0
|
||||
allowsAlphaSplitting: 0
|
||||
overridden: 0
|
||||
ignorePlatformSupport: 0
|
||||
androidETC2FallbackOverride: 0
|
||||
forceMaximumCompressionQuality_BC6H_BC7: 0
|
||||
spriteSheet:
|
||||
serializedVersion: 2
|
||||
sprites: []
|
||||
outline: []
|
||||
customData:
|
||||
physicsShape: []
|
||||
bones: []
|
||||
spriteID: 5e97eb03825dee720800000000000000
|
||||
internalID: 0
|
||||
vertices: []
|
||||
indices:
|
||||
edges: []
|
||||
weights: []
|
||||
secondaryTextures: []
|
||||
spriteCustomMetadata:
|
||||
entries: []
|
||||
nameFileIdTable: {}
|
||||
mipmapLimitGroupName:
|
||||
pSDRemoveMatte: 0
|
||||
userData:
|
||||
assetBundleName:
|
||||
assetBundleVariant:
|
Before Width: | Height: | Size: 15 KiB |