First commit for private source control. Older commits available on Github.

This commit is contained in:
2026-03-26 12:52:52 +00:00
parent a04c602626
commit 2d449c4a17
2176 changed files with 408185 additions and 0 deletions

View File

@@ -0,0 +1,3 @@
fileFormatVersion: 2
guid: fab32c0344e04eda879304b661495e65
timeCreated: 1773421109

View File

@@ -0,0 +1,3 @@
fileFormatVersion: 2
guid: 39fa1451796d4a398046bf1c12c31a3a
timeCreated: 1773421126

View File

@@ -0,0 +1,26 @@
using UnityEngine;
using UnityEngine.UI;
namespace BriarQueen.Game.Levels.ChapterOne.Workshop.Upstairs.Components
{
public class CandleImage : MonoBehaviour
{
public CanvasGroup CanvasGroup;
public Image Image;
public int Slot;
private void Awake()
{
CanvasGroup = GetComponent<CanvasGroup>();
}
public void EmptyImage()
{
if (Image != null)
Image.sprite = null;
if (CanvasGroup != null)
CanvasGroup.alpha = 0;
}
}
}

View File

@@ -0,0 +1,3 @@
fileFormatVersion: 2
guid: fa3541e6d37e44729fa46753d10d1cf9
timeCreated: 1772818740

View File

@@ -0,0 +1,90 @@
using System.Collections.Generic;
using System.Linq;
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.Workshop.Upstairs.Bag;
using Cysharp.Threading.Tasks;
using UnityEngine;
using UnityEngine.UI;
namespace BriarQueen.Game.Levels.ChapterOne.Workshop.Upstairs
{
public class WorkshopBag : BaseLevel
{
[Header("Backgrounds")]
[SerializeField]
private Image _startBackground;
[SerializeField]
private Image _holeBackground;
[Header("Items")]
[SerializeField]
private List<BaseItem> _holeItems;
[SerializeField]
private WorkshopBagBook _book;
[SerializeField]
private WorkshopBagHole _hole;
public override string LevelName => "Open Bag";
protected override UniTask PostLoadInternal()
{
CheckBackgrounds();
return UniTask.CompletedTask;
}
public void RemoveBook()
{
_hole.CanvasGroup.interactable = true;
_hole.CanvasGroup.blocksRaycasts = true;
}
public UniTask DigHole()
{
SaveManager.SetLevelFlag(LevelFlag.WorkshopBagHoleDug, true);
_startBackground.enabled = false;
_holeBackground.enabled = true;
_hole.CanvasGroup.interactable = false;
_hole.CanvasGroup.blocksRaycasts = false;
_hole.CanvasGroup.alpha = 0;
DisplayMessage();
return UniTask.CompletedTask;
}
private void DisplayMessage()
{
EventCoordinator.Publish(new DisplayInteractEvent(InteractEventIDs.Get(EnvironmentInteractKey.WorkshopBagNoItems)));
}
private void CheckBackgrounds()
{
if (SaveManager.GetLevelFlag(LevelFlag.WorkshopBagHoleDug))
{
_startBackground.enabled = false;
_holeBackground.enabled = true;
DisplayMessage();
}
else
{
_startBackground.enabled = true;
_holeBackground.enabled = false;
if (SaveManager.CurrentSave.RemovedItems.Any(x => x.UniqueIdentifier == _book.ItemData.UniqueID))
{
_hole.CanvasGroup.interactable = true;
_hole.CanvasGroup.blocksRaycasts = true;
_hole.CanvasGroup.alpha = 1;
}
}
}
}
}

View File

@@ -0,0 +1,3 @@
fileFormatVersion: 2
guid: f577c40b25aa41c5a55fefb79cb2ae0d
timeCreated: 1773495143

View File

@@ -0,0 +1,11 @@
using BriarQueen.Data.Identifiers;
using BriarQueen.Framework.Managers.Levels.Data;
namespace BriarQueen.Game.Levels.ChapterOne.Workshop.Upstairs
{
public class WorkshopPuzzleBoxOpen : BaseLevel
{
public override string LevelName => "Open Jewellery Box";
}
}

View File

@@ -0,0 +1,3 @@
fileFormatVersion: 2
guid: 69089c335b6a48738ae84a881b91abcf
timeCreated: 1773599886

View File

@@ -0,0 +1,11 @@
using BriarQueen.Data.Identifiers;
using BriarQueen.Framework.Managers.Levels.Data;
namespace BriarQueen.Game.Levels.ChapterOne.Workshop.Upstairs
{
public class WorkshopSafe : BaseLevel
{
public override string LevelName => "Inspect Safe";
}
}

View File

@@ -0,0 +1,3 @@
fileFormatVersion: 2
guid: 728525259c524516b4aa00a20b5577bb
timeCreated: 1773605635

View File

@@ -0,0 +1,112 @@
using System.Collections.Generic;
using System.Linq;
using AYellowpaper.SerializedCollections;
using BriarQueen.Data.Identifiers;
using BriarQueen.Framework.Events.Save;
using BriarQueen.Framework.Events.UI;
using BriarQueen.Framework.Managers.Hints.Data;
using BriarQueen.Framework.Managers.Levels.Data;
using BriarQueen.Game.Items.Pickups.ChapterOne.Workshop;
using BriarQueen.Game.Levels.ChapterOne.Workshop.Upstairs.Components;
using Cysharp.Threading.Tasks;
using UnityEngine;
namespace BriarQueen.Game.Levels.ChapterOne.Workshop.Upstairs
{
public class WorkshopUpstairs : BaseLevel
{
private static readonly Dictionary<string, Candle.CandleColour> CandleIDToColour = new()
{
{ ItemIDs.Pickups[ItemKey.RedCandle], Candle.CandleColour.Red },
{ ItemIDs.Pickups[ItemKey.OrangeCandle], Candle.CandleColour.Orange },
{ ItemIDs.Pickups[ItemKey.YellowCandle], Candle.CandleColour.Yellow },
{ ItemIDs.Pickups[ItemKey.GreenCandle], Candle.CandleColour.Green },
{ ItemIDs.Pickups[ItemKey.BlueCandle], Candle.CandleColour.Blue },
{ ItemIDs.Pickups[ItemKey.IndigoCandle], Candle.CandleColour.Indigo },
{ ItemIDs.Pickups[ItemKey.VioletCandle], Candle.CandleColour.Violet }
};
[Header("Sprites")]
[SerializedDictionary("Candle Colour", "Sprite")]
[SerializeField]
private SerializedDictionary<Candle.CandleColour, Sprite> _candleSprites = new();
[Header("Variables")]
[SerializeField]
private List<CandleImage> _candles = new();
public override string LevelName => "Workshop Bedroom";
public override bool IsPuzzleLevel => false;
public override int CurrentLevelHintStage { get; set; }
public override Dictionary<int, BaseHint> Hints { get; } = new();
protected override UniTask PostLoadInternal()
{
HandleCandles();
return UniTask.CompletedTask;
}
protected override async UniTask PostActivateInternal()
{
await HandleTutorial();
}
private async UniTask HandleTutorial()
{
TutorialService.DisplayTutorial(TutorialPopupID.HideHUD);
}
private void HandleCandles()
{
foreach (var candleImage in _candles)
{
if (candleImage == null) continue;
candleImage.EmptyImage();
}
var persistentVariables = SaveManager.CurrentSave?.PersistentVariables;
var chapterOne = persistentVariables?.Game;
var slots = chapterOne?.WorkshopCandleSlotsFilled;
if (slots == null || slots.Count == 0)
return;
var candleBySlot = _candles
.Where(c => c != null)
.GroupBy(c => c.Slot)
.ToDictionary(g => g.Key, g => g.First());
foreach (var kvp in slots)
{
if (!candleBySlot.TryGetValue(kvp.Key, out var slotImage) || slotImage == null)
continue;
var sprite = GetCandleSprite(kvp.Value);
if (sprite == null)
continue;
Debug.Log($"[Workshop Upstairs] Setting Slot {kvp.Key} to {sprite.name}");
slotImage.Image.sprite = sprite;
slotImage.CanvasGroup.alpha = 1;
}
}
private Sprite GetCandleSprite(string candleID)
{
if (CandleIDToColour.TryGetValue(candleID, out var colour))
return GetCandleSprite(colour);
return null;
}
private Sprite GetCandleSprite(Candle.CandleColour colour)
{
return _candleSprites != null && _candleSprites.TryGetValue(colour, out var sprite) ? sprite : null;
}
}
}

View File

@@ -0,0 +1,3 @@
fileFormatVersion: 2
guid: 7f7de1d8bdd94d7191aa51b92f48623e
timeCreated: 1772743333

View File

@@ -0,0 +1,55 @@
using System;
using System.Collections.Generic;
using BriarQueen.Data.Identifiers;
using BriarQueen.Data.IO.Saves;
using BriarQueen.Framework.Events.UI;
using BriarQueen.Framework.Managers.Hints.Data;
using BriarQueen.Framework.Managers.Levels.Data;
using Cysharp.Threading.Tasks;
using UnityEngine;
using UnityEngine.UI;
namespace BriarQueen.Game.Levels.ChapterOne.Workshop
{
public class Workshop : BaseLevel
{
[Header("Level")]
[SerializeField]
private Image _backgroundImage;
[Header("Variables")]
[SerializeField]
private Sprite _doorOpenSprite;
[SerializeField]
private Sprite _grindstoneRepairedSprite;
public override string LevelName => "Abandoned Workshop";
public override bool IsPuzzleLevel => false;
public override int CurrentLevelHintStage { get; set; }
public override Dictionary<int, BaseHint> Hints { get; }
protected override UniTask PostLoadInternal()
{
if (SaveManager.GetLevelFlag(LevelFlag.WorkshopGrindstoneRepaired))
_backgroundImage.sprite = _grindstoneRepairedSprite;
else if (SaveManager.GetLevelFlag(LevelFlag.WorkshopDownstairsDoorOpen))
_backgroundImage.sprite = _doorOpenSprite;
return UniTask.CompletedTask;
}
public async UniTask SetWoodenPin()
{
EventCoordinator.Publish(new FadeEvent(false, 1f));
await UniTask.Delay(TimeSpan.FromSeconds(1));
_backgroundImage.sprite = _grindstoneRepairedSprite;
PlayerManager.RemoveItem(ItemIDs.Pickups[ItemKey.GrindstoneAxlePin]);
SaveManager.SetLevelFlag(LevelFlag.WorkshopGrindstoneRepaired, true);
EventCoordinator.Publish(new FadeEvent(true, 1f));
}
}
}

View File

@@ -0,0 +1,3 @@
fileFormatVersion: 2
guid: 775883e2fe824bc8a5d296d47658c056
timeCreated: 1771012453

View File

@@ -0,0 +1,80 @@
using System.Collections.Generic;
using BriarQueen.Data.Identifiers;
using BriarQueen.Data.IO.Saves;
using BriarQueen.Framework.Managers.Levels.Data;
using BriarQueen.Game.Items.HoverZones;
using Cysharp.Threading.Tasks;
using UnityEngine;
using UnityEngine.UI;
namespace BriarQueen.Game.Levels.ChapterOne.Workshop
{
public class WorkshopDownstairs : BaseLevel
{
[Header("Specific Setup")]
[SerializeField]
private Image _background;
[SerializeField]
private Sprite _lightOffSprite;
[SerializeField]
private Sprite _lightOnSprite;
[SerializeField]
private List<BaseItem> _lightOnItems;
[SerializeField]
private InteractZone _bookZone;
public override string LevelName => "Workshop Downstairs";
[SerializeField]
public bool LightOn;
protected override UniTask PostLoadInternal()
{
LightOn = SaveManager.GetLevelFlag(LevelFlag.WorkshopDownstairsLightOn);
ApplyLightState();
return UniTask.CompletedTask;
}
protected override UniTask PostActivateInternal()
{
HandleTutorial();
return UniTask.CompletedTask;
}
private void HandleTutorial()
{
TutorialService.DisplayTutorial(TutorialPopupID.DarkRooms);
}
public void ToggleLightSwitch()
{
LightOn = !LightOn;
ApplyLightState();
SaveManager.SetLevelFlag(LevelFlag.WorkshopDownstairsLightOn, LightOn);
}
private void ApplyLightState()
{
_background.sprite = LightOn ? _lightOnSprite : _lightOffSprite;
foreach (var item in _lightOnItems)
{
item.CanvasGroup.alpha = LightOn ? 1f : 0.6f;
item.CanvasGroup.interactable = LightOn;
item.CanvasGroup.blocksRaycasts = LightOn;
}
if (_bookZone != null)
{
_bookZone.CanvasGroup.interactable = LightOn;
_bookZone.CanvasGroup.blocksRaycasts = LightOn;
_bookZone.CanvasGroup.alpha = LightOn ? 1f : 0.6f;
}
}
}
}

View File

@@ -0,0 +1,3 @@
fileFormatVersion: 2
guid: 0aa09bf77262464c8d780da94250cd22
timeCreated: 1773608254

View File

@@ -0,0 +1,16 @@
using System.Collections.Generic;
using BriarQueen.Data.Identifiers;
using BriarQueen.Framework.Managers.Hints.Data;
using BriarQueen.Framework.Managers.Levels.Data;
namespace BriarQueen.Game.Levels.ChapterOne.Workshop
{
public class WorkshopDrawer : BaseLevel
{
public override string LevelName => "Open Drawer";
public override bool IsPuzzleLevel => false;
public override int CurrentLevelHintStage { get; set; }
public override Dictionary<int, BaseHint> Hints { get; }
}
}

View File

@@ -0,0 +1,3 @@
fileFormatVersion: 2
guid: 7250337611264db1981b78673c6d8626
timeCreated: 1772631648