Restructured for new direction.

This commit is contained in:
2026-05-12 12:01:09 +01:00
parent 0439b6c1d2
commit c203f836b1
1134 changed files with 125569 additions and 213519 deletions

View File

@@ -1,3 +0,0 @@
fileFormatVersion: 2
guid: be01b5741bc94861a9b41d8c8ce3b5ee
timeCreated: 1773590011

View File

@@ -1,3 +0,0 @@
fileFormatVersion: 2
guid: ae64d437e6594bf58b5512ee5ffca402
timeCreated: 1773590011

View File

@@ -1,45 +0,0 @@
using BriarQueen.Data.Identifiers;
using BriarQueen.Data.IO.Saves;
using BriarQueen.Framework.Events.UI;
using BriarQueen.Framework.Managers.Levels.Data;
using BriarQueen.Framework.Managers.Player.Data;
using BriarQueen.Framework.Managers.UI;
using Cysharp.Threading.Tasks;
namespace BriarQueen.Game.Items.Environment.ChapterOne.Pumphouse
{
public class PumpHouseWaterValve : BaseItem
{
public override string InteractableName => "Water Valve";
public override UICursorService.CursorStyle ApplicableCursorStyle => UICursorService.CursorStyle.Interact;
public override UniTask OnInteract(ItemDataSo item = null)
{
if (!CheckEmptyHands())
return UniTask.CompletedTask;
if (item != null)
{
EventCoordinator.Publish(new DisplayInteractEvent(InteractEventIDs.Get(ItemInteractKey.CantUseItem)));
return UniTask.CompletedTask;
}
if (SaveManager.GetLevelFlag(LevelFlag.PumpWaterRestored))
{
EventCoordinator.Publish(new DisplayInteractEvent(InteractEventIDs.Get(LevelInteractKey.WaterValve)));
return UniTask.CompletedTask;
}
if (!SaveManager.GetLevelFlag(LevelFlag.FountainVinesCut))
{
EventCoordinator.Publish(new DisplayInteractEvent(InteractEventIDs.Get(LevelInteractKey.ClearVinesOutside)));
return UniTask.CompletedTask;
}
// TODO : Play Water SFX
SaveManager.SetLevelFlag(LevelFlag.PumpWaterRestored, true);
return UniTask.CompletedTask;
}
}
}

View File

@@ -1,3 +0,0 @@
fileFormatVersion: 2
guid: 7ffe97b80fed45bbb7152752c4f10685
timeCreated: 1770991451

View File

@@ -1,3 +0,0 @@
fileFormatVersion: 2
guid: 3825afbb1ee941b1af18781d8f1311fa
timeCreated: 1773590034

View File

@@ -1,44 +0,0 @@
using BriarQueen.Data.Identifiers;
using BriarQueen.Data.IO.Saves;
using BriarQueen.Framework.Events.UI;
using BriarQueen.Framework.Managers.Levels.Data;
using BriarQueen.Framework.Managers.Player.Data;
using BriarQueen.Framework.Managers.UI;
using Cysharp.Threading.Tasks;
namespace BriarQueen.Game.Items.Environment.ChapterOne.Village
{
public class ChainLock : BaseItem
{
public override string InteractableName => "Locked Chain";
public override UICursorService.CursorStyle ApplicableCursorStyle => UICursorService.CursorStyle.Inspect;
public override async UniTask OnInteract(ItemDataSo item = null)
{
if (!CheckEmptyHands())
return;
if (item == null)
{
EventCoordinator.Publish(new DisplayInteractEvent(InteractEventIDs.Get(LevelInteractKey.PumphouseChain)));
return;
}
if (item.UniqueID != ItemIDs.Pickups[ItemKey.PumphouseKey])
{
EventCoordinator.Publish(new DisplayInteractEvent(InteractEventIDs.Get(ItemInteractKey.CantUseItem)));
return;
}
EventCoordinator.Publish(new DisplayInteractEvent(InteractEventIDs.Get(LevelInteractKey.UnlockedPumphouse)));
await Remove();
}
protected override UniTask OnRemoved()
{
SaveManager.SetLevelFlag(LevelFlag.PumpHouseOpened, true);
PlayerManager.RemoveItem(ItemIDs.Pickups[ItemKey.PumphouseKey]);
return UniTask.CompletedTask;
}
}
}

View File

@@ -1,3 +0,0 @@
fileFormatVersion: 2
guid: bf2e55b12a3040deb4e54465336fc989
timeCreated: 1770985414

View File

@@ -1,3 +0,0 @@
fileFormatVersion: 2
guid: 45144a83888f401e8d282181328521fb
timeCreated: 1773953887

View File

@@ -1,76 +0,0 @@
using BriarQueen.Data.Identifiers;
using BriarQueen.Framework.Events.UI;
using BriarQueen.Framework.Managers.Levels.Data;
using BriarQueen.Framework.Managers.Player.Data;
using BriarQueen.Framework.Managers.UI;
using BriarQueen.Game.Levels.ChapterOne.VillageStreet;
using Cysharp.Threading.Tasks;
using UnityEngine;
namespace BriarQueen.Game.Items.Environment.ChapterOne.VillageStreet
{
public class StreetVines : BaseItem
{
[SerializeField]
private Street _owner;
public override UICursorService.CursorStyle ApplicableCursorStyle => UICursorService.CursorStyle.Inspect;
public override async UniTask OnInteract(ItemDataSo item = null)
{
if (_owner == null)
{
Debug.LogWarning("StreetVines is missing its Street owner.", this);
return;
}
if (!CanUseKnife())
{
PublishFailureMessage();
return;
}
EventCoordinator.Publish(new DisplayInteractEvent(
InteractEventIDs.Get(EnvironmentInteractKey.UsingKnife)));
await _owner.CutVines();
}
private bool CanUseKnife()
{
if (SettingsService.Game.AutoUseTools)
return PlayerManager.HasAccessToTool(ToolID.Knife);
return PlayerManager.GetEquippedTool() == ToolID.Knife;
}
private void PublishFailureMessage()
{
var autoUseTools = SettingsService != null &&
SettingsService.Game != null &&
SettingsService.Game.AutoUseTools;
var equippedTool = PlayerManager.GetEquippedTool();
string message;
if (equippedTool == ToolID.None)
{
message = InteractEventIDs.Get(LevelInteractKey.CutVines);
}
else if (autoUseTools)
{
// In auto-use mode, reaching this point means the player does not have access
// to the required tool at all, so this should still read like a generic failure.
message = InteractEventIDs.Get(LevelInteractKey.CutVines);
}
else
{
// Auto-use is disabled, and the player has some tool equipped that is not valid.
message = InteractEventIDs.Get(ItemInteractKey.WrongTool);
}
EventCoordinator.Publish(new DisplayInteractEvent(message));
}
}
}

View File

@@ -1,3 +0,0 @@
fileFormatVersion: 2
guid: 32a79fbd751c4216b83680bbc425cfa7
timeCreated: 1773954077

View File

@@ -1,3 +0,0 @@
fileFormatVersion: 2
guid: d5cf35e464ec407c81e5d29b6bf5c713
timeCreated: 1773590078

View File

@@ -1,3 +0,0 @@
fileFormatVersion: 2
guid: 8c3efb5408364c23bc9f0256bb727fb5
timeCreated: 1773609093

View File

@@ -1,20 +0,0 @@
using BriarQueen.Data.Identifiers;
using BriarQueen.Framework.Events.UI;
using BriarQueen.Framework.Managers.Levels.Data;
using BriarQueen.Framework.Managers.Player.Data;
using BriarQueen.Framework.Managers.UI;
using Cysharp.Threading.Tasks;
namespace BriarQueen.Game.Items.Environment.ChapterOne.Workshop.Downstairs
{
public class WorkshopBrokenLantern : BaseItem
{
public override UICursorService.CursorStyle ApplicableCursorStyle => UICursorService.CursorStyle.Inspect;
public override UniTask OnInteract(ItemDataSo item = null)
{
EventCoordinator.Publish(new DisplayInteractEvent(InteractEventIDs.Get(EnvironmentInteractKey.BrokenLantern)));
return UniTask.CompletedTask;
}
}
}

View File

@@ -1,3 +0,0 @@
fileFormatVersion: 2
guid: 1004a82a9b7f487180b0fcf4978a4446
timeCreated: 1773609258

View File

@@ -1,45 +0,0 @@
using BriarQueen.Data.Identifiers;
using BriarQueen.Framework.Events.UI;
using BriarQueen.Framework.Managers.Levels.Data;
using BriarQueen.Framework.Managers.Player.Data;
using BriarQueen.Framework.Managers.UI;
using BriarQueen.Game.Levels.ChapterOne.Workshop;
using Cysharp.Threading.Tasks;
using UnityEngine;
namespace BriarQueen.Game.Items.Environment.ChapterOne.Workshop.Downstairs
{
public class WorkshopDownstairsLight : BaseItem
{
[SerializeField]
private WorkshopDownstairs _workshopDownstairs;
public override UICursorService.CursorStyle ApplicableCursorStyle => UICursorService.CursorStyle.Interact;
public override string InteractableName
{
get
{
if (_workshopDownstairs.LightOn)
return "Turn off Light";
return "Turn on Light";
}
}
public override UniTask OnInteract(ItemDataSo item = null)
{
if(!CheckEmptyHands())
return UniTask.CompletedTask;
if (item != null)
{
EventCoordinator.Publish(new DisplayInteractEvent(InteractEventIDs.Get(ItemInteractKey.CantUseItem)));
return UniTask.CompletedTask;
}
_workshopDownstairs.ToggleLightSwitch();
return UniTask.CompletedTask;
}
}
}

View File

@@ -1,3 +0,0 @@
fileFormatVersion: 2
guid: 5c5889af77b0491bb18818491222520b
timeCreated: 1773609093

View File

@@ -1,20 +0,0 @@
using BriarQueen.Data.Identifiers;
using BriarQueen.Framework.Events.UI;
using BriarQueen.Framework.Managers.Levels.Data;
using BriarQueen.Framework.Managers.Player.Data;
using BriarQueen.Framework.Managers.UI;
using Cysharp.Threading.Tasks;
namespace BriarQueen.Game.Items.Environment.ChapterOne.Workshop.Downstairs
{
public class WorkshopWriting : BaseItem
{
public override UICursorService.CursorStyle ApplicableCursorStyle => UICursorService.CursorStyle.Inspect;
public override UniTask OnInteract(ItemDataSo item = null)
{
EventCoordinator.Publish(new DisplayInteractEvent(InteractEventIDs.Get(EnvironmentInteractKey.WorkshopWriting)));
return UniTask.CompletedTask;
}
}
}

View File

@@ -1,3 +0,0 @@
fileFormatVersion: 2
guid: f8ae950ec2f6412f9a05f9eb22a81004
timeCreated: 1773681035

View File

@@ -1,74 +0,0 @@
using System;
using BriarQueen.Data.Identifiers;
using BriarQueen.Data.IO.Saves;
using BriarQueen.Framework.Events.Gameplay;
using BriarQueen.Framework.Events.UI;
using BriarQueen.Framework.Managers.Levels.Data;
using BriarQueen.Framework.Managers.Player.Data;
using BriarQueen.Framework.Managers.UI;
using Cysharp.Threading.Tasks;
using UnityEngine;
namespace BriarQueen.Game.Items.Environment.ChapterOne.Workshop
{
public class GrindingStone : BaseItem
{
[SerializeField]
private Levels.ChapterOne.Workshop.Workshop _workshop;
public override string InteractableName => "Grinding Stone";
public override UICursorService.CursorStyle ApplicableCursorStyle => UICursorService.CursorStyle.Interact;
public override async UniTask OnInteract(ItemDataSo item = null)
{
if (!CheckEmptyHands())
return;
if (!SaveManager.GetLevelFlag(LevelFlag.WorkshopGrindstoneRepaired))
{
if (item == null)
{
EventCoordinator.Publish(
new DisplayInteractEvent(InteractEventIDs.Get(ItemInteractKey.SomethingMissing)));
return;
}
if (item.UniqueID != ItemIDs.Get(ItemKey.GrindstoneAxlePin))
{
EventCoordinator.Publish(new DisplayInteractEvent(InteractEventIDs.Get(ItemInteractKey.CantUseItem)));
return;
}
await _workshop.SetWoodenPin();
return;
}
if (item == null)
{
EventCoordinator.Publish(new DisplayInteractEvent(InteractEventIDs.Get(EnvironmentInteractKey.UseGrindstone)));
return;
}
if (item.UniqueID != ItemIDs.Get(ItemKey.RustedKnife))
{
EventCoordinator.Publish(new DisplayInteractEvent(InteractEventIDs.Get(ItemInteractKey.CantUseItem)));
return;
}
// TODO - Animations, SFX, etc
EventCoordinator.Publish(new FadeEvent(false, 0.6f));
await UniTask.Delay(TimeSpan.FromSeconds(1.2f));
AudioManager.Play(AudioNameIdentifiers.Get(SFXKey.SharpenKnife));
EventCoordinator.Publish(new FadeEvent(true, 0.6f));
await UniTask.Delay(TimeSpan.FromSeconds(0.8f));
PlayerManager.UnlockTool(ToolID.Knife);
TutorialService.DisplayTutorial(TutorialPopupID.Tools);
PlayerManager.RemoveItem(ItemIDs.Get(ItemKey.RustedKnife));
EventCoordinator.Publish(new SelectedItemChangedEvent(null));
}
}
}

View File

@@ -1,3 +0,0 @@
fileFormatVersion: 2
guid: 7af3243d1b3240a5bb86ba7cd0b2e9b8
timeCreated: 1771003747

View File

@@ -1,3 +0,0 @@
fileFormatVersion: 2
guid: 09d6091451f64822a55575f3ab2b6b68
timeCreated: 1773590204

View File

@@ -1,3 +0,0 @@
fileFormatVersion: 2
guid: b57d4daa04964b28b6c24a1e41fb4d6a
timeCreated: 1773590204

View File

@@ -1,40 +0,0 @@
using BriarQueen.Data.Identifiers;
using BriarQueen.Framework.Events.UI;
using BriarQueen.Framework.Managers.Levels.Data;
using BriarQueen.Framework.Managers.Player.Data;
using BriarQueen.Game.Levels.ChapterOne.Workshop.Upstairs;
using Cysharp.Threading.Tasks;
using UnityEngine;
namespace BriarQueen.Game.Items.Environment.ChapterOne.Workshop.Upstairs.Bag
{
public class WorkshopBagBook : BaseItem
{
[Header("Internal")]
[SerializeField]
private WorkshopBag _bag;
public override string InteractableName => "Damaged Book";
public override async UniTask OnInteract(ItemDataSo item = null)
{
if(!CheckEmptyHands())
return;
if (item != null)
{
EventCoordinator.Publish(new DisplayInteractEvent(InteractEventIDs.Get(ItemInteractKey.CantUseItem)));
return;
}
EventCoordinator.Publish(new DisplayInteractEvent(InteractEventIDs.Get(EnvironmentInteractKey.WorkshopBookDisintegrating)));
await Remove();
}
protected override UniTask OnRemoved()
{
_bag.RemoveBook();
return UniTask.CompletedTask;
}
}
}

View File

@@ -1,3 +0,0 @@
fileFormatVersion: 2
guid: a482fd71d48d4edaaceec7a7038a72a2
timeCreated: 1773496524

View File

@@ -1,48 +0,0 @@
using System;
using BriarQueen.Data.Identifiers;
using BriarQueen.Data.IO.Saves;
using BriarQueen.Framework.Events.UI;
using BriarQueen.Framework.Managers.Levels.Data;
using BriarQueen.Framework.Managers.Player.Data;
using BriarQueen.Game.Levels.ChapterOne.Workshop.Upstairs;
using Cysharp.Threading.Tasks;
using UnityEngine;
namespace BriarQueen.Game.Items.Environment.ChapterOne.Workshop.Upstairs.Bag
{
public class WorkshopBagHole : BaseItem
{
[Header("Workshop Bag")]
[SerializeField]
private WorkshopBag _workshopBag;
public override string InteractableName => "Dig";
public override async UniTask OnInteract(ItemDataSo item = null)
{
if(!CheckEmptyHands())
return;
if (SaveManager.GetLevelFlag(LevelFlag.WorkshopBagHoleDug))
{
EventCoordinator.Publish(new DisplayInteractEvent(
InteractEventIDs.Get(EnvironmentInteractKey.WorkshopBagNoItems)));
return;
}
if (item != null)
{
EventCoordinator.Publish(new DisplayInteractEvent(InteractEventIDs.Get(ItemInteractKey.CantUseItem)));
return;
}
EventCoordinator.Publish(new FadeEvent(false, 1f));
await UniTask.Delay(TimeSpan.FromSeconds(1));
await _workshopBag.DigHole();
await UniTask.Delay(TimeSpan.FromSeconds(1));
EventCoordinator.Publish(new FadeEvent(true, 1f));
}
}
}

View File

@@ -1,3 +0,0 @@
fileFormatVersion: 2
guid: d8e8a954a6d04904b15e4e1b50db8615
timeCreated: 1773494920

View File

@@ -19,7 +19,7 @@ namespace BriarQueen.Game.Items.Environment.General.Book
private AssetItemKey _bookAssetID;
[SerializeField]
private BookEntryID _bookEntryID;
private DocumentEntryID _documentEntryID;
[Header("Book Interface")]
[SerializeField]
@@ -58,7 +58,11 @@ namespace BriarQueen.Game.Items.Environment.General.Book
if (bookObj == null) return;
_bookInterface = bookObj.GetComponent<BookInterface>();
if (_bookInterface == null) return;
if (_bookInterface == null)
{
await DestructionService.Destroy(bookObj);
return;
}
_bookInterface.CanvasGroup.alpha = 0f;
_bookInterface.CanvasGroup.blocksRaycasts = false;
@@ -99,7 +103,7 @@ namespace BriarQueen.Game.Items.Environment.General.Book
private void UnlockCodexEntry()
{
PlayerManager.UnlockCodexEntry(CodexEntryIDs.Get(_bookEntryID));
PlayerManager.UnlockCodexEntry(CodexEntryIDs.Get(_documentEntryID));
}
public async UniTask CloseBookInterface()
@@ -144,4 +148,4 @@ namespace BriarQueen.Game.Items.Environment.General.Book
_displayCts = null;
}
}
}
}

View File

@@ -18,6 +18,7 @@ namespace BriarQueen.Game.Items.Environment.General
private bool _removeTrigger;
public override UICursorService.CursorStyle ApplicableCursorStyle => UICursorService.CursorStyle.Inspect;
public override string InteractableName => InteractableTooltip;
public override async UniTask OnInteract(ItemDataSo item = null)
{
@@ -30,4 +31,4 @@ namespace BriarQueen.Game.Items.Environment.General
await Remove();
}
}
}
}

View File

@@ -1,75 +0,0 @@
using BriarQueen.Data.Identifiers;
using BriarQueen.Data.IO.Saves;
using BriarQueen.Framework.Events.UI;
using BriarQueen.Framework.Managers.Levels.Data;
using BriarQueen.Framework.Managers.Player.Data;
using BriarQueen.Framework.Managers.UI;
using Cysharp.Threading.Tasks;
using UnityEngine;
namespace BriarQueen.Game.Items.Environment.General
{
public class Fire : BaseItem
{
[Header("Flags")]
[SerializeField]
private LevelFlag _levelFlag;
public override UICursorService.CursorStyle ApplicableCursorStyle => UICursorService.CursorStyle.Interact;
public override async UniTask OnInteract(ItemDataSo item = null)
{
if (item != null)
{
EventCoordinator.Publish(new DisplayInteractEvent(InteractEventIDs.Get(ItemInteractKey.CantUseItem)));
return;
}
if (!PlayerManager.CanUseTool(ToolID.EndlessGoblet))
{
PublishFailureMessage();
return;
}
EventCoordinator.Publish(new DisplayInteractEvent(InteractEventIDs.Get(EnvironmentInteractKey.ExtinguishFire)));
await Remove();
}
protected override UniTask OnRemoved()
{
SaveManager.SetLevelFlag(_levelFlag, true);
return UniTask.CompletedTask;
}
private void PublishFailureMessage()
{
var autoUseTools = SettingsService != null &&
SettingsService.Game != null &&
SettingsService.Game.AutoUseTools;
var equippedTool = PlayerManager.GetEquippedTool();
string message;
if (equippedTool == ToolID.None)
{
message = InteractEventIDs.Get(EnvironmentInteractKey.FireHot);
}
else if (autoUseTools)
{
// In auto-use mode, reaching this point means the player does not have access
// to the required tool at all, so this should still read like a generic failure.
message = InteractEventIDs.Get(EnvironmentInteractKey.FireHot);
}
else
{
// Auto-use is disabled, and the player has some tool equipped that is not valid.
message = InteractEventIDs.Get(ItemInteractKey.WrongTool);
}
EventCoordinator.Publish(new DisplayInteractEvent(message));
}
}
}

View File

@@ -1,3 +0,0 @@
fileFormatVersion: 2
guid: 559782186ce043e8b38b0f4517dfbddc
timeCreated: 1774552750

View File

@@ -1,82 +0,0 @@
using BriarQueen.Data.Identifiers;
using BriarQueen.Data.IO.Saves;
using BriarQueen.Framework.Events.UI;
using BriarQueen.Framework.Managers.Levels.Data;
using BriarQueen.Framework.Managers.Player.Data;
using BriarQueen.Framework.Managers.UI;
using Cysharp.Threading.Tasks;
using UnityEngine;
namespace BriarQueen.Game.Items.Environment.General
{
public class TwistingVines : BaseItem
{
[Header("Flags")]
[SerializeField]
private LevelFlag _levelFlag;
public override string InteractableName => "Twisting Vines";
public override UICursorService.CursorStyle ApplicableCursorStyle => UICursorService.CursorStyle.Inspect;
public override async UniTask OnInteract(ItemDataSo item = null)
{
if (item != null)
{
EventCoordinator.Publish(
new DisplayInteractEvent(InteractEventIDs.Get(ItemInteractKey.CantUseItem)));
return;
}
if (!CanUseKnife())
{
PublishFailureMessage();
return;
}
EventCoordinator.Publish(
new DisplayInteractEvent(InteractEventIDs.Get(EnvironmentInteractKey.UsingKnife)));
await Remove();
}
protected override UniTask OnRemoved()
{
SaveManager.SetLevelFlag(_levelFlag, true);
return UniTask.CompletedTask;
}
private bool CanUseKnife()
{
return PlayerManager.CanUseTool(ToolID.Knife);
}
private void PublishFailureMessage()
{
var autoUseTools = SettingsService != null &&
SettingsService.Game != null &&
SettingsService.Game.AutoUseTools;
var equippedTool = PlayerManager.GetEquippedTool();
string message;
if (equippedTool == ToolID.None)
{
message = InteractEventIDs.Get(LevelInteractKey.CutVines);
}
else if (autoUseTools)
{
// In auto-use mode, reaching this point means the player does not have access
// to the required tool at all, so this should still read like a generic failure.
message = InteractEventIDs.Get(LevelInteractKey.CutVines);
}
else
{
// Auto-use is disabled, and the player has some tool equipped that is not valid.
message = InteractEventIDs.Get(ItemInteractKey.WrongTool);
}
EventCoordinator.Publish(new DisplayInteractEvent(message));
}
}
}

View File

@@ -1,3 +0,0 @@
fileFormatVersion: 2
guid: 716b29e16fd1452b87eaf8903c0275a0
timeCreated: 1770982267