First commit for private source control. Older commits available on Github.
This commit is contained in:
@@ -0,0 +1,99 @@
|
||||
using System;
|
||||
using BriarQueen.Data.Identifiers;
|
||||
using BriarQueen.Data.IO.Saves;
|
||||
using BriarQueen.Framework.Events.UI;
|
||||
using BriarQueen.Framework.Managers.Levels.Data;
|
||||
using BriarQueen.Game.Items.Environment.ChapterOne.VillageStreet;
|
||||
using BriarQueen.Game.Items.HoverZones;
|
||||
using Cysharp.Threading.Tasks;
|
||||
using UnityEngine;
|
||||
using UnityEngine.UI;
|
||||
|
||||
namespace BriarQueen.Game.Levels.ChapterOne.VillageStreet
|
||||
{
|
||||
public class Street : BaseLevel
|
||||
{
|
||||
[Header("Level Setup")]
|
||||
[SerializeField]
|
||||
private Image _background;
|
||||
|
||||
[SerializeField]
|
||||
private Sprite _vinesCutSprite;
|
||||
|
||||
[SerializeField]
|
||||
private Sprite _gateOpenSprite;
|
||||
|
||||
[Header("Zones")]
|
||||
[SerializeField]
|
||||
private StreetVines _vinesZone;
|
||||
[SerializeField]
|
||||
private InteractZone _plaqueZone;
|
||||
|
||||
[SerializeField]
|
||||
private InteractZone _gateZone;
|
||||
|
||||
|
||||
protected override UniTask PostLoadInternal()
|
||||
{
|
||||
bool gateOpen = SaveManager.GetLevelFlag(LevelFlag.StreetGateOpen);
|
||||
bool vinesCut = SaveManager.GetLevelFlag(LevelFlag.StreetVinesCut) || gateOpen;
|
||||
|
||||
if (gateOpen)
|
||||
{
|
||||
_background.sprite = _gateOpenSprite;
|
||||
}
|
||||
else if (vinesCut)
|
||||
{
|
||||
_background.sprite = _vinesCutSprite;
|
||||
}
|
||||
|
||||
ApplyZones(vinesCut, gateOpen);
|
||||
return UniTask.CompletedTask;
|
||||
}
|
||||
|
||||
public async UniTask CutVines()
|
||||
{
|
||||
EventCoordinator.Publish(new DisplayInteractEvent(InteractEventIDs.Get(EnvironmentInteractKey.UsingKnife)));
|
||||
await UniTask.Delay(TimeSpan.FromSeconds(1));
|
||||
EventCoordinator.Publish(new FadeEvent(false, 0.8f));
|
||||
await UniTask.Delay(TimeSpan.FromSeconds(0.8f));
|
||||
|
||||
_background.sprite = _vinesCutSprite;
|
||||
SetZoneState(_plaqueZone, true);
|
||||
|
||||
SaveManager.SetLevelFlag(LevelFlag.StreetVinesCut, true);
|
||||
EventCoordinator.Publish(new FadeEvent(true, 0.8f));
|
||||
}
|
||||
|
||||
private void ApplyZones(bool vinesCut, bool gateOpen)
|
||||
{
|
||||
SetZoneState(_plaqueZone, vinesCut);
|
||||
SetZoneState(_gateZone, gateOpen);
|
||||
|
||||
if(vinesCut)
|
||||
DeactivateVines();
|
||||
}
|
||||
|
||||
private void SetZoneState(InteractZone zone, bool active)
|
||||
{
|
||||
if (zone == null || zone.CanvasGroup == null)
|
||||
return;
|
||||
|
||||
zone.CanvasGroup.alpha = active ? 1 : 0;
|
||||
zone.CanvasGroup.blocksRaycasts = active;
|
||||
zone.CanvasGroup.interactable = active;
|
||||
}
|
||||
|
||||
private void DeactivateVines()
|
||||
{
|
||||
var canvasGroup = _vinesZone.CanvasGroup;
|
||||
|
||||
if (!canvasGroup)
|
||||
return;
|
||||
|
||||
canvasGroup.alpha = 0;
|
||||
canvasGroup.blocksRaycasts = false;
|
||||
canvasGroup.interactable = false;
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,3 @@
|
||||
fileFormatVersion: 2
|
||||
guid: 48395629807046b69b42b1cf8f8ffb75
|
||||
timeCreated: 1773952163
|
||||
Reference in New Issue
Block a user