From d98d34ec3f985a46283d9f74610bcf7cee786eef Mon Sep 17 00:00:00 2001 From: fretuks Date: Fri, 3 Jul 2026 13:14:36 +0200 Subject: [PATCH] Implement basic structure for combat system and refactor code --- Assets/Art.meta | 8 + Assets/Art/.gitkeep | 1 + Assets/Data.meta | 8 + Assets/Data/.gitkeep | 1 + Assets/Prefabs.meta | 8 + Assets/Prefabs/.gitkeep | 1 + Assets/Scripts.meta | 8 + Assets/Scripts/Combat.meta | 8 + Assets/Scripts/Combat/CardInstance.cs | 20 +++ Assets/Scripts/Combat/CardInstance.cs.meta | 2 + Assets/Scripts/Combat/CombatContext.cs | 21 +++ Assets/Scripts/Combat/CombatContext.cs.meta | 2 + Assets/Scripts/Combat/CombatManager.cs | 56 ++++++ Assets/Scripts/Combat/CombatManager.cs.meta | 2 + Assets/Scripts/Combat/CombatantState.cs | 28 +++ Assets/Scripts/Combat/CombatantState.cs.meta | 2 + Assets/Scripts/Combat/DeckController.cs | 49 ++++++ Assets/Scripts/Combat/DeckController.cs.meta | 2 + Assets/Scripts/Combat/HandController.cs | 41 +++++ Assets/Scripts/Combat/HandController.cs.meta | 2 + Assets/Scripts/Combat/ICardEffect.cs | 10 ++ Assets/Scripts/Combat/ICardEffect.cs.meta | 2 + Assets/Scripts/Combat/IResolutionTrack.cs | 11 ++ .../Scripts/Combat/IResolutionTrack.cs.meta | 2 + Assets/Scripts/Combat/InterpreterQueue.cs | 30 ++++ .../Scripts/Combat/InterpreterQueue.cs.meta | 2 + Assets/Scripts/Combat/LazyStack.cs | 30 ++++ Assets/Scripts/Combat/LazyStack.cs.meta | 2 + Assets/Scripts/Combat/NativeTrack.cs | 20 +++ Assets/Scripts/Combat/NativeTrack.cs.meta | 2 + .../Scripts/Combat/StatusEffectController.cs | 26 +++ .../Combat/StatusEffectController.cs.meta | 2 + Assets/Scripts/Core.meta | 8 + Assets/Scripts/Core/GameEvents.cs | 140 +++++++++++++++ Assets/Scripts/Core/GameEvents.cs.meta | 2 + Assets/Scripts/Core/Language.cs | 21 +++ Assets/Scripts/Core/Language.cs.meta | 2 + Assets/Scripts/Core/Rarity.cs | 13 ++ Assets/Scripts/Core/Rarity.cs.meta | 2 + Assets/Scripts/Core/ResolutionTrack.cs | 12 ++ Assets/Scripts/Core/ResolutionTrack.cs.meta | 2 + Assets/Scripts/Core/StatusType.cs | 15 ++ Assets/Scripts/Core/StatusType.cs.meta | 2 + Assets/Scripts/Core/TurnPhase.cs | 15 ++ Assets/Scripts/Core/TurnPhase.cs.meta | 2 + Assets/Scripts/Data.meta | 8 + Assets/Scripts/Data/CardDefinition.cs | 34 ++++ Assets/Scripts/Data/CardDefinition.cs.meta | 2 + Assets/Scripts/Data/CardEffectDefinition.cs | 13 ++ .../Scripts/Data/CardEffectDefinition.cs.meta | 2 + Assets/Scripts/Data/DistroDefinition.cs | 30 ++++ Assets/Scripts/Data/DistroDefinition.cs.meta | 2 + Assets/Scripts/Data/EnemyDefinition.cs | 26 +++ Assets/Scripts/Data/EnemyDefinition.cs.meta | 2 + Assets/Scripts/Data/StatusEffectDefinition.cs | 17 ++ .../Data/StatusEffectDefinition.cs.meta | 2 + Assets/Scripts/KernelPanic.Runtime.asmdef | 14 ++ .../Scripts/KernelPanic.Runtime.asmdef.meta | 7 + Assets/Scripts/Meta.meta | 8 + Assets/Scripts/Meta/EntropyWallet.cs | 26 +++ Assets/Scripts/Meta/EntropyWallet.cs.meta | 2 + Assets/Scripts/Meta/GachaService.cs | 30 ++++ Assets/Scripts/Meta/GachaService.cs.meta | 2 + Assets/Scripts/Meta/SaveService.cs | 28 +++ Assets/Scripts/Meta/SaveService.cs.meta | 2 + Assets/Scripts/Run.meta | 8 + Assets/Scripts/Run/RewardService.cs | 42 +++++ Assets/Scripts/Run/RewardService.cs.meta | 2 + Assets/Scripts/Run/RunConfig.cs | 25 +++ Assets/Scripts/Run/RunConfig.cs.meta | 2 + Assets/Scripts/Run/RunManager.cs | 56 ++++++ Assets/Scripts/Run/RunManager.cs.meta | 2 + Assets/Settings/UniversalRP.asset | 14 +- ...niversalRenderPipelineGlobalSettings.asset | 160 +++++++++++++++++- ProjectSettings/GraphicsSettings.asset | 2 + ProjectSettings/ProjectSettings.asset | 6 +- ProjectSettings/ShaderGraphSettings.asset | 1 + ProjectSettings/URPProjectSettings.asset | 3 +- 78 files changed, 1212 insertions(+), 13 deletions(-) create mode 100644 Assets/Art.meta create mode 100644 Assets/Art/.gitkeep create mode 100644 Assets/Data.meta create mode 100644 Assets/Data/.gitkeep create mode 100644 Assets/Prefabs.meta create mode 100644 Assets/Prefabs/.gitkeep create mode 100644 Assets/Scripts.meta create mode 100644 Assets/Scripts/Combat.meta create mode 100644 Assets/Scripts/Combat/CardInstance.cs create mode 100644 Assets/Scripts/Combat/CardInstance.cs.meta create mode 100644 Assets/Scripts/Combat/CombatContext.cs create mode 100644 Assets/Scripts/Combat/CombatContext.cs.meta create mode 100644 Assets/Scripts/Combat/CombatManager.cs create mode 100644 Assets/Scripts/Combat/CombatManager.cs.meta create mode 100644 Assets/Scripts/Combat/CombatantState.cs create mode 100644 Assets/Scripts/Combat/CombatantState.cs.meta create mode 100644 Assets/Scripts/Combat/DeckController.cs create mode 100644 Assets/Scripts/Combat/DeckController.cs.meta create mode 100644 Assets/Scripts/Combat/HandController.cs create mode 100644 Assets/Scripts/Combat/HandController.cs.meta create mode 100644 Assets/Scripts/Combat/ICardEffect.cs create mode 100644 Assets/Scripts/Combat/ICardEffect.cs.meta create mode 100644 Assets/Scripts/Combat/IResolutionTrack.cs create mode 100644 Assets/Scripts/Combat/IResolutionTrack.cs.meta create mode 100644 Assets/Scripts/Combat/InterpreterQueue.cs create mode 100644 Assets/Scripts/Combat/InterpreterQueue.cs.meta create mode 100644 Assets/Scripts/Combat/LazyStack.cs create mode 100644 Assets/Scripts/Combat/LazyStack.cs.meta create mode 100644 Assets/Scripts/Combat/NativeTrack.cs create mode 100644 Assets/Scripts/Combat/NativeTrack.cs.meta create mode 100644 Assets/Scripts/Combat/StatusEffectController.cs create mode 100644 Assets/Scripts/Combat/StatusEffectController.cs.meta create mode 100644 Assets/Scripts/Core.meta create mode 100644 Assets/Scripts/Core/GameEvents.cs create mode 100644 Assets/Scripts/Core/GameEvents.cs.meta create mode 100644 Assets/Scripts/Core/Language.cs create mode 100644 Assets/Scripts/Core/Language.cs.meta create mode 100644 Assets/Scripts/Core/Rarity.cs create mode 100644 Assets/Scripts/Core/Rarity.cs.meta create mode 100644 Assets/Scripts/Core/ResolutionTrack.cs create mode 100644 Assets/Scripts/Core/ResolutionTrack.cs.meta create mode 100644 Assets/Scripts/Core/StatusType.cs create mode 100644 Assets/Scripts/Core/StatusType.cs.meta create mode 100644 Assets/Scripts/Core/TurnPhase.cs create mode 100644 Assets/Scripts/Core/TurnPhase.cs.meta create mode 100644 Assets/Scripts/Data.meta create mode 100644 Assets/Scripts/Data/CardDefinition.cs create mode 100644 Assets/Scripts/Data/CardDefinition.cs.meta create mode 100644 Assets/Scripts/Data/CardEffectDefinition.cs create mode 100644 Assets/Scripts/Data/CardEffectDefinition.cs.meta create mode 100644 Assets/Scripts/Data/DistroDefinition.cs create mode 100644 Assets/Scripts/Data/DistroDefinition.cs.meta create mode 100644 Assets/Scripts/Data/EnemyDefinition.cs create mode 100644 Assets/Scripts/Data/EnemyDefinition.cs.meta create mode 100644 Assets/Scripts/Data/StatusEffectDefinition.cs create mode 100644 Assets/Scripts/Data/StatusEffectDefinition.cs.meta create mode 100644 Assets/Scripts/KernelPanic.Runtime.asmdef create mode 100644 Assets/Scripts/KernelPanic.Runtime.asmdef.meta create mode 100644 Assets/Scripts/Meta.meta create mode 100644 Assets/Scripts/Meta/EntropyWallet.cs create mode 100644 Assets/Scripts/Meta/EntropyWallet.cs.meta create mode 100644 Assets/Scripts/Meta/GachaService.cs create mode 100644 Assets/Scripts/Meta/GachaService.cs.meta create mode 100644 Assets/Scripts/Meta/SaveService.cs create mode 100644 Assets/Scripts/Meta/SaveService.cs.meta create mode 100644 Assets/Scripts/Run.meta create mode 100644 Assets/Scripts/Run/RewardService.cs create mode 100644 Assets/Scripts/Run/RewardService.cs.meta create mode 100644 Assets/Scripts/Run/RunConfig.cs create mode 100644 Assets/Scripts/Run/RunConfig.cs.meta create mode 100644 Assets/Scripts/Run/RunManager.cs create mode 100644 Assets/Scripts/Run/RunManager.cs.meta diff --git a/Assets/Art.meta b/Assets/Art.meta new file mode 100644 index 0000000..68e0e03 --- /dev/null +++ b/Assets/Art.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 7b840cced864976439f43974b1e498d3 +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Art/.gitkeep b/Assets/Art/.gitkeep new file mode 100644 index 0000000..8b13789 --- /dev/null +++ b/Assets/Art/.gitkeep @@ -0,0 +1 @@ + diff --git a/Assets/Data.meta b/Assets/Data.meta new file mode 100644 index 0000000..3ef0d3d --- /dev/null +++ b/Assets/Data.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 7ec233d275778bf44b6acde2fd9a0cc2 +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Data/.gitkeep b/Assets/Data/.gitkeep new file mode 100644 index 0000000..8b13789 --- /dev/null +++ b/Assets/Data/.gitkeep @@ -0,0 +1 @@ + diff --git a/Assets/Prefabs.meta b/Assets/Prefabs.meta new file mode 100644 index 0000000..44ef5d3 --- /dev/null +++ b/Assets/Prefabs.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: e9c67aa99a5854f4f9d58ccc64ed036c +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Prefabs/.gitkeep b/Assets/Prefabs/.gitkeep new file mode 100644 index 0000000..8b13789 --- /dev/null +++ b/Assets/Prefabs/.gitkeep @@ -0,0 +1 @@ + diff --git a/Assets/Scripts.meta b/Assets/Scripts.meta new file mode 100644 index 0000000..a5599af --- /dev/null +++ b/Assets/Scripts.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: c51fb03ac0aab7a4aa1e2b0a87f051a9 +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Scripts/Combat.meta b/Assets/Scripts/Combat.meta new file mode 100644 index 0000000..2ffcdf2 --- /dev/null +++ b/Assets/Scripts/Combat.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 59b9870361cbdec4b9419c57a3ff71df +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Scripts/Combat/CardInstance.cs b/Assets/Scripts/Combat/CardInstance.cs new file mode 100644 index 0000000..60c7857 --- /dev/null +++ b/Assets/Scripts/Combat/CardInstance.cs @@ -0,0 +1,20 @@ +using KernelPanic.Data; + +namespace KernelPanic.Combat +{ + /// + /// Represents one runtime card and its per-combat mutable state. + /// + public sealed class CardInstance + { + public CardInstance(CardDefinition definition) + { + Definition = definition; + } + + public CardDefinition Definition { get; } + public int TemporaryCostDelta { get; set; } + public bool IsBroken { get; set; } + public bool IsLocked { get; set; } + } +} diff --git a/Assets/Scripts/Combat/CardInstance.cs.meta b/Assets/Scripts/Combat/CardInstance.cs.meta new file mode 100644 index 0000000..5d67f10 --- /dev/null +++ b/Assets/Scripts/Combat/CardInstance.cs.meta @@ -0,0 +1,2 @@ +fileFormatVersion: 2 +guid: c05e61a09404ee046a6771f8ac75803c \ No newline at end of file diff --git a/Assets/Scripts/Combat/CombatContext.cs b/Assets/Scripts/Combat/CombatContext.cs new file mode 100644 index 0000000..5b09b79 --- /dev/null +++ b/Assets/Scripts/Combat/CombatContext.cs @@ -0,0 +1,21 @@ +using System.Collections.Generic; + +namespace KernelPanic.Combat +{ + /// + /// Carries runtime combat references needed by card effects during resolution. + /// + public sealed class CombatContext + { + public CombatContext(CombatantState source, IReadOnlyList targets, CombatManager combatManager) + { + Source = source; + Targets = targets; + CombatManager = combatManager; + } + + public CombatantState Source { get; } + public IReadOnlyList Targets { get; } + public CombatManager CombatManager { get; } + } +} diff --git a/Assets/Scripts/Combat/CombatContext.cs.meta b/Assets/Scripts/Combat/CombatContext.cs.meta new file mode 100644 index 0000000..089a01f --- /dev/null +++ b/Assets/Scripts/Combat/CombatContext.cs.meta @@ -0,0 +1,2 @@ +fileFormatVersion: 2 +guid: 2eed81ad20b42a447858691a49666804 \ No newline at end of file diff --git a/Assets/Scripts/Combat/CombatManager.cs b/Assets/Scripts/Combat/CombatManager.cs new file mode 100644 index 0000000..0ffd48a --- /dev/null +++ b/Assets/Scripts/Combat/CombatManager.cs @@ -0,0 +1,56 @@ +using KernelPanic.Core; +using UnityEngine; + +namespace KernelPanic.Combat +{ + /// + /// Owns the combat turn phase state machine and coordinates combat lifecycle transitions. + /// + public sealed class CombatManager : MonoBehaviour + { + [SerializeField] private TurnPhase currentPhase = TurnPhase.Boot; + + public TurnPhase CurrentPhase => currentPhase; + + public void StartCombat() + { + SetPhase(TurnPhase.Boot); + } + + public void AdvancePhase() + { + TurnPhase nextPhase = GetNextPhase(currentPhase); + SetPhase(nextPhase); + } + + public void EndPlayerTurn() + { + SetPhase(TurnPhase.Interpret); + } + + private void SetPhase(TurnPhase nextPhase) + { + TurnPhase previousPhase = currentPhase; + currentPhase = nextPhase; + GameEvents.RaisePhaseChanged(new PhaseChangedEvent(previousPhase, nextPhase)); + EnterPhase(nextPhase); + } + + private static TurnPhase GetNextPhase(TurnPhase phase) + { + return phase switch + { + TurnPhase.Boot => TurnPhase.Allocate, + TurnPhase.Allocate => TurnPhase.Execute, + TurnPhase.Execute => TurnPhase.Interpret, + TurnPhase.Interpret => TurnPhase.EnemyProcess, + TurnPhase.EnemyProcess => TurnPhase.GarbageCollection, + _ => TurnPhase.Allocate + }; + } + + private void EnterPhase(TurnPhase phase) + { + } + } +} diff --git a/Assets/Scripts/Combat/CombatManager.cs.meta b/Assets/Scripts/Combat/CombatManager.cs.meta new file mode 100644 index 0000000..65792ef --- /dev/null +++ b/Assets/Scripts/Combat/CombatManager.cs.meta @@ -0,0 +1,2 @@ +fileFormatVersion: 2 +guid: 9f87432412de1ee46bf7d4c9c530d4c6 \ No newline at end of file diff --git a/Assets/Scripts/Combat/CombatantState.cs b/Assets/Scripts/Combat/CombatantState.cs new file mode 100644 index 0000000..0da3b16 --- /dev/null +++ b/Assets/Scripts/Combat/CombatantState.cs @@ -0,0 +1,28 @@ +using System.Collections.Generic; +using KernelPanic.Core; + +namespace KernelPanic.Combat +{ + /// + /// Stores mutable combat stats and statuses for a player or enemy. + /// + public sealed class CombatantState + { + private readonly Dictionary activeStatuses = new(); + + public CombatantState(int maxUptime, int ram, int cycles) + { + MaxUptime = maxUptime; + CurrentUptime = maxUptime; + Ram = ram; + Cycles = cycles; + } + + public int CurrentUptime { get; set; } + public int MaxUptime { get; set; } + public int Shield { get; set; } + public int Ram { get; set; } + public int Cycles { get; set; } + public IReadOnlyDictionary ActiveStatuses => activeStatuses; + } +} diff --git a/Assets/Scripts/Combat/CombatantState.cs.meta b/Assets/Scripts/Combat/CombatantState.cs.meta new file mode 100644 index 0000000..6ce8109 --- /dev/null +++ b/Assets/Scripts/Combat/CombatantState.cs.meta @@ -0,0 +1,2 @@ +fileFormatVersion: 2 +guid: 93b1080022652b542903e204d36a64f8 \ No newline at end of file diff --git a/Assets/Scripts/Combat/DeckController.cs b/Assets/Scripts/Combat/DeckController.cs new file mode 100644 index 0000000..b64e029 --- /dev/null +++ b/Assets/Scripts/Combat/DeckController.cs @@ -0,0 +1,49 @@ +using System; +using System.Collections.Generic; + +namespace KernelPanic.Combat +{ + /// + /// Manages draw, discard, and exhaust piles for a combat deck. + /// + public sealed class DeckController + { + private readonly List drawPile = new(); + private readonly List discardPile = new(); + private readonly List exhaustPile = new(); + + public IReadOnlyList DrawPile => drawPile; + public IReadOnlyList DiscardPile => discardPile; + public IReadOnlyList ExhaustPile => exhaustPile; + + public void Initialize(IEnumerable cards) + { + throw new NotImplementedException(); + } + + public IReadOnlyList Draw(int count) + { + throw new NotImplementedException(); + } + + public void Discard(CardInstance card) + { + throw new NotImplementedException(); + } + + public void Exhaust(CardInstance card) + { + throw new NotImplementedException(); + } + + public void ShuffleDrawPile() + { + throw new NotImplementedException(); + } + + public void ReshuffleDiscardIntoDraw() + { + throw new NotImplementedException(); + } + } +} diff --git a/Assets/Scripts/Combat/DeckController.cs.meta b/Assets/Scripts/Combat/DeckController.cs.meta new file mode 100644 index 0000000..c2f9ee8 --- /dev/null +++ b/Assets/Scripts/Combat/DeckController.cs.meta @@ -0,0 +1,2 @@ +fileFormatVersion: 2 +guid: 6683933e853af334ba19e658b13c878d \ No newline at end of file diff --git a/Assets/Scripts/Combat/HandController.cs b/Assets/Scripts/Combat/HandController.cs new file mode 100644 index 0000000..e299a7d --- /dev/null +++ b/Assets/Scripts/Combat/HandController.cs @@ -0,0 +1,41 @@ +using System; +using System.Collections.Generic; + +namespace KernelPanic.Combat +{ + /// + /// Manages cards currently held in hand with a RAM-based capacity. + /// + public sealed class HandController + { + private readonly List cards = new(); + + public HandController(int ramCapacity) + { + RamCapacity = ramCapacity; + } + + public int RamCapacity { get; private set; } + public IReadOnlyList Cards => cards; + + public bool CanAdd(CardInstance card) + { + throw new NotImplementedException(); + } + + public void Add(CardInstance card) + { + throw new NotImplementedException(); + } + + public bool Remove(CardInstance card) + { + throw new NotImplementedException(); + } + + public void Clear() + { + throw new NotImplementedException(); + } + } +} diff --git a/Assets/Scripts/Combat/HandController.cs.meta b/Assets/Scripts/Combat/HandController.cs.meta new file mode 100644 index 0000000..bae4241 --- /dev/null +++ b/Assets/Scripts/Combat/HandController.cs.meta @@ -0,0 +1,2 @@ +fileFormatVersion: 2 +guid: bece1c6fddc2c63489bf129bf6295a31 \ No newline at end of file diff --git a/Assets/Scripts/Combat/ICardEffect.cs b/Assets/Scripts/Combat/ICardEffect.cs new file mode 100644 index 0000000..dba76d3 --- /dev/null +++ b/Assets/Scripts/Combat/ICardEffect.cs @@ -0,0 +1,10 @@ +namespace KernelPanic.Combat +{ + /// + /// Represents a runtime card effect that can apply itself to a combat context. + /// + public interface ICardEffect + { + void Execute(CombatContext context); + } +} diff --git a/Assets/Scripts/Combat/ICardEffect.cs.meta b/Assets/Scripts/Combat/ICardEffect.cs.meta new file mode 100644 index 0000000..743b679 --- /dev/null +++ b/Assets/Scripts/Combat/ICardEffect.cs.meta @@ -0,0 +1,2 @@ +fileFormatVersion: 2 +guid: 886be8d59396e5e488eea3ea58445fb4 \ No newline at end of file diff --git a/Assets/Scripts/Combat/IResolutionTrack.cs b/Assets/Scripts/Combat/IResolutionTrack.cs new file mode 100644 index 0000000..b88d81a --- /dev/null +++ b/Assets/Scripts/Combat/IResolutionTrack.cs @@ -0,0 +1,11 @@ +namespace KernelPanic.Combat +{ + /// + /// Provides a common contract for card resolution tracks. + /// + public interface IResolutionTrack + { + void Enqueue(CardInstance card); + void Resolve(CombatContext context); + } +} diff --git a/Assets/Scripts/Combat/IResolutionTrack.cs.meta b/Assets/Scripts/Combat/IResolutionTrack.cs.meta new file mode 100644 index 0000000..401a2f9 --- /dev/null +++ b/Assets/Scripts/Combat/IResolutionTrack.cs.meta @@ -0,0 +1,2 @@ +fileFormatVersion: 2 +guid: 5d296d1160df6d747adaeec9ef68c710 \ No newline at end of file diff --git a/Assets/Scripts/Combat/InterpreterQueue.cs b/Assets/Scripts/Combat/InterpreterQueue.cs new file mode 100644 index 0000000..3cf2d60 --- /dev/null +++ b/Assets/Scripts/Combat/InterpreterQueue.cs @@ -0,0 +1,30 @@ +using System; +using System.Collections.Generic; + +namespace KernelPanic.Combat +{ + /// + /// Stores played cards in FIFO order for resolution during the Interpret phase. + /// + public sealed class InterpreterQueue : IResolutionTrack + { + private readonly Queue queuedCards = new(); + + public int Count => queuedCards.Count; + + public void Enqueue(CardInstance card) + { + throw new NotImplementedException(); + } + + public void Resolve(CombatContext context) + { + throw new NotImplementedException(); + } + + public void Clear() + { + throw new NotImplementedException(); + } + } +} diff --git a/Assets/Scripts/Combat/InterpreterQueue.cs.meta b/Assets/Scripts/Combat/InterpreterQueue.cs.meta new file mode 100644 index 0000000..20fff14 --- /dev/null +++ b/Assets/Scripts/Combat/InterpreterQueue.cs.meta @@ -0,0 +1,2 @@ +fileFormatVersion: 2 +guid: 13c99cf765e7e8b48a58afbacc8a5440 \ No newline at end of file diff --git a/Assets/Scripts/Combat/LazyStack.cs b/Assets/Scripts/Combat/LazyStack.cs new file mode 100644 index 0000000..a99a5e6 --- /dev/null +++ b/Assets/Scripts/Combat/LazyStack.cs @@ -0,0 +1,30 @@ +using System; +using System.Collections.Generic; + +namespace KernelPanic.Combat +{ + /// + /// Stores played cards in LIFO order until explicitly force-evaluated. + /// + public sealed class LazyStack : IResolutionTrack + { + private readonly Stack stackedCards = new(); + + public int Count => stackedCards.Count; + + public void Enqueue(CardInstance card) + { + throw new NotImplementedException(); + } + + public void Resolve(CombatContext context) + { + throw new NotImplementedException(); + } + + public void ForceEvaluate(CombatContext context) + { + throw new NotImplementedException(); + } + } +} diff --git a/Assets/Scripts/Combat/LazyStack.cs.meta b/Assets/Scripts/Combat/LazyStack.cs.meta new file mode 100644 index 0000000..a7e65da --- /dev/null +++ b/Assets/Scripts/Combat/LazyStack.cs.meta @@ -0,0 +1,2 @@ +fileFormatVersion: 2 +guid: 556859e6fac10a24bb4a60165fd82157 \ No newline at end of file diff --git a/Assets/Scripts/Combat/NativeTrack.cs b/Assets/Scripts/Combat/NativeTrack.cs new file mode 100644 index 0000000..a3ed407 --- /dev/null +++ b/Assets/Scripts/Combat/NativeTrack.cs @@ -0,0 +1,20 @@ +using System; + +namespace KernelPanic.Combat +{ + /// + /// Resolves cards immediately when they are added to the native track. + /// + public sealed class NativeTrack : IResolutionTrack + { + public void Enqueue(CardInstance card) + { + throw new NotImplementedException(); + } + + public void Resolve(CombatContext context) + { + throw new NotImplementedException(); + } + } +} diff --git a/Assets/Scripts/Combat/NativeTrack.cs.meta b/Assets/Scripts/Combat/NativeTrack.cs.meta new file mode 100644 index 0000000..d15e847 --- /dev/null +++ b/Assets/Scripts/Combat/NativeTrack.cs.meta @@ -0,0 +1,2 @@ +fileFormatVersion: 2 +guid: b662e4e1a38b1554084a063fd3d415e2 \ No newline at end of file diff --git a/Assets/Scripts/Combat/StatusEffectController.cs b/Assets/Scripts/Combat/StatusEffectController.cs new file mode 100644 index 0000000..b0290ee --- /dev/null +++ b/Assets/Scripts/Combat/StatusEffectController.cs @@ -0,0 +1,26 @@ +using System; +using KernelPanic.Core; + +namespace KernelPanic.Combat +{ + /// + /// Applies, ticks, and expires status effects on a combatant. + /// + public sealed class StatusEffectController + { + public void Apply(CombatantState target, StatusType statusType, int stacks) + { + throw new NotImplementedException(); + } + + public void Tick(CombatantState target) + { + throw new NotImplementedException(); + } + + public void Expire(CombatantState target, StatusType statusType) + { + throw new NotImplementedException(); + } + } +} diff --git a/Assets/Scripts/Combat/StatusEffectController.cs.meta b/Assets/Scripts/Combat/StatusEffectController.cs.meta new file mode 100644 index 0000000..55dcde8 --- /dev/null +++ b/Assets/Scripts/Combat/StatusEffectController.cs.meta @@ -0,0 +1,2 @@ +fileFormatVersion: 2 +guid: 5f91b8d9171889f4996bb3106d97f1f6 \ No newline at end of file diff --git a/Assets/Scripts/Core.meta b/Assets/Scripts/Core.meta new file mode 100644 index 0000000..ac449c1 --- /dev/null +++ b/Assets/Scripts/Core.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: d51c41fa71b1068438855f64f946cc57 +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Scripts/Core/GameEvents.cs b/Assets/Scripts/Core/GameEvents.cs new file mode 100644 index 0000000..66050b5 --- /dev/null +++ b/Assets/Scripts/Core/GameEvents.cs @@ -0,0 +1,140 @@ +using System; +using KernelPanic.Combat; + +namespace KernelPanic.Core +{ + /// + /// Provides runtime events for gameplay systems that need to observe combat and run milestones. + /// + public static class GameEvents + { + public static event Action CardPlayed; + public static event Action CardResolved; + public static event Action PhaseChanged; + public static event Action DamageDealt; + public static event Action WaveCleared; + public static event Action RunEnded; + + public static void RaiseCardPlayed(CardPlayedEvent payload) + { + CardPlayed?.Invoke(payload); + } + + public static void RaiseCardResolved(CardResolvedEvent payload) + { + CardResolved?.Invoke(payload); + } + + public static void RaisePhaseChanged(PhaseChangedEvent payload) + { + PhaseChanged?.Invoke(payload); + } + + public static void RaiseDamageDealt(DamageDealtEvent payload) + { + DamageDealt?.Invoke(payload); + } + + public static void RaiseWaveCleared(WaveClearedEvent payload) + { + WaveCleared?.Invoke(payload); + } + + public static void RaiseRunEnded(RunEndedEvent payload) + { + RunEnded?.Invoke(payload); + } + } + + /// + /// Describes a card that entered a resolution track. + /// + public readonly struct CardPlayedEvent + { + public CardPlayedEvent(CardInstance card, ResolutionTrack track) + { + Card = card; + Track = track; + } + + public CardInstance Card { get; } + public ResolutionTrack Track { get; } + } + + /// + /// Describes a card whose effects finished resolving. + /// + public readonly struct CardResolvedEvent + { + public CardResolvedEvent(CardInstance card, ResolutionTrack track) + { + Card = card; + Track = track; + } + + public CardInstance Card { get; } + public ResolutionTrack Track { get; } + } + + /// + /// Describes a transition between combat phases. + /// + public readonly struct PhaseChangedEvent + { + public PhaseChangedEvent(TurnPhase previousPhase, TurnPhase nextPhase) + { + PreviousPhase = previousPhase; + NextPhase = nextPhase; + } + + public TurnPhase PreviousPhase { get; } + public TurnPhase NextPhase { get; } + } + + /// + /// Describes damage applied from one combatant to another. + /// + public readonly struct DamageDealtEvent + { + public DamageDealtEvent(CombatantState source, CombatantState target, int amount, Language language) + { + Source = source; + Target = target; + Amount = amount; + Language = language; + } + + public CombatantState Source { get; } + public CombatantState Target { get; } + public int Amount { get; } + public Language Language { get; } + } + + /// + /// Describes a completed enemy wave. + /// + public readonly struct WaveClearedEvent + { + public WaveClearedEvent(int waveNumber) + { + WaveNumber = waveNumber; + } + + public int WaveNumber { get; } + } + + /// + /// Describes the end of a run and its earned meta currency. + /// + public readonly struct RunEndedEvent + { + public RunEndedEvent(bool playerDied, int entropyEarned) + { + PlayerDied = playerDied; + EntropyEarned = entropyEarned; + } + + public bool PlayerDied { get; } + public int EntropyEarned { get; } + } +} diff --git a/Assets/Scripts/Core/GameEvents.cs.meta b/Assets/Scripts/Core/GameEvents.cs.meta new file mode 100644 index 0000000..a0e6246 --- /dev/null +++ b/Assets/Scripts/Core/GameEvents.cs.meta @@ -0,0 +1,2 @@ +fileFormatVersion: 2 +guid: cf446c6fd7627294c9e2aa23c9b576e7 \ No newline at end of file diff --git a/Assets/Scripts/Core/Language.cs b/Assets/Scripts/Core/Language.cs new file mode 100644 index 0000000..55cdd08 --- /dev/null +++ b/Assets/Scripts/Core/Language.cs @@ -0,0 +1,21 @@ +namespace KernelPanic.Core +{ + /// + /// Identifies a programming language used as a card damage type. + /// + public enum Language + { + C, + CPlusPlus, + Rust, + Python, + JavaScript, + TypeScript, + Haskell, + Assembly, + Java, + Go, + Ruby, + PHP + } +} diff --git a/Assets/Scripts/Core/Language.cs.meta b/Assets/Scripts/Core/Language.cs.meta new file mode 100644 index 0000000..03d1951 --- /dev/null +++ b/Assets/Scripts/Core/Language.cs.meta @@ -0,0 +1,2 @@ +fileFormatVersion: 2 +guid: c06078e18f184c84cab3579c0e562dbe \ No newline at end of file diff --git a/Assets/Scripts/Core/Rarity.cs b/Assets/Scripts/Core/Rarity.cs new file mode 100644 index 0000000..45ff11f --- /dev/null +++ b/Assets/Scripts/Core/Rarity.cs @@ -0,0 +1,13 @@ +namespace KernelPanic.Core +{ + /// + /// Describes the rarity tier of cards and rewards. + /// + public enum Rarity + { + Common, + Rare, + Epic, + Legendary + } +} diff --git a/Assets/Scripts/Core/Rarity.cs.meta b/Assets/Scripts/Core/Rarity.cs.meta new file mode 100644 index 0000000..c324b28 --- /dev/null +++ b/Assets/Scripts/Core/Rarity.cs.meta @@ -0,0 +1,2 @@ +fileFormatVersion: 2 +guid: 542a3f97e8074ed428fd7019177f221b \ No newline at end of file diff --git a/Assets/Scripts/Core/ResolutionTrack.cs b/Assets/Scripts/Core/ResolutionTrack.cs new file mode 100644 index 0000000..fdd750d --- /dev/null +++ b/Assets/Scripts/Core/ResolutionTrack.cs @@ -0,0 +1,12 @@ +namespace KernelPanic.Core +{ + /// + /// Identifies the combat resolution track a card uses when played. + /// + public enum ResolutionTrack + { + Native, + InterpreterQueue, + LazyStack + } +} diff --git a/Assets/Scripts/Core/ResolutionTrack.cs.meta b/Assets/Scripts/Core/ResolutionTrack.cs.meta new file mode 100644 index 0000000..0560194 --- /dev/null +++ b/Assets/Scripts/Core/ResolutionTrack.cs.meta @@ -0,0 +1,2 @@ +fileFormatVersion: 2 +guid: 3b76dcac6b8cae447bb9079460692238 \ No newline at end of file diff --git a/Assets/Scripts/Core/StatusType.cs b/Assets/Scripts/Core/StatusType.cs new file mode 100644 index 0000000..f8a4dfb --- /dev/null +++ b/Assets/Scripts/Core/StatusType.cs @@ -0,0 +1,15 @@ +namespace KernelPanic.Core +{ + /// + /// Identifies a combat status effect category. + /// + public enum StatusType + { + Segfault, + MemoryLeak, + RaceCondition, + Deprecated, + DependencyError, + Deadlock + } +} diff --git a/Assets/Scripts/Core/StatusType.cs.meta b/Assets/Scripts/Core/StatusType.cs.meta new file mode 100644 index 0000000..4304e27 --- /dev/null +++ b/Assets/Scripts/Core/StatusType.cs.meta @@ -0,0 +1,2 @@ +fileFormatVersion: 2 +guid: cbdd46dffec613346ae6191f18a94225 \ No newline at end of file diff --git a/Assets/Scripts/Core/TurnPhase.cs b/Assets/Scripts/Core/TurnPhase.cs new file mode 100644 index 0000000..605b060 --- /dev/null +++ b/Assets/Scripts/Core/TurnPhase.cs @@ -0,0 +1,15 @@ +namespace KernelPanic.Core +{ + /// + /// Describes the high-level phases of one combat turn. + /// + public enum TurnPhase + { + Boot, + Allocate, + Execute, + Interpret, + EnemyProcess, + GarbageCollection + } +} diff --git a/Assets/Scripts/Core/TurnPhase.cs.meta b/Assets/Scripts/Core/TurnPhase.cs.meta new file mode 100644 index 0000000..0289dec --- /dev/null +++ b/Assets/Scripts/Core/TurnPhase.cs.meta @@ -0,0 +1,2 @@ +fileFormatVersion: 2 +guid: e1974726f936d0640943801549b4574e \ No newline at end of file diff --git a/Assets/Scripts/Data.meta b/Assets/Scripts/Data.meta new file mode 100644 index 0000000..ede1e85 --- /dev/null +++ b/Assets/Scripts/Data.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: e0a39b97df9ee0641b2bbadf5bca417c +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Scripts/Data/CardDefinition.cs b/Assets/Scripts/Data/CardDefinition.cs new file mode 100644 index 0000000..e7a8a77 --- /dev/null +++ b/Assets/Scripts/Data/CardDefinition.cs @@ -0,0 +1,34 @@ +using System.Collections.Generic; +using KernelPanic.Core; +using UnityEngine; + +namespace KernelPanic.Data +{ + /// + /// Defines immutable card data used to create runtime card instances. + /// + public sealed class CardDefinition : ScriptableObject + { + [SerializeField] private string id; + [SerializeField] private string displayName; + [SerializeField] private string description; + [SerializeField] private Language language; + [SerializeField] private Rarity rarity; + [SerializeField] private int cycleCost; + [SerializeField] private ResolutionTrack resolutionTrack; + [SerializeField] private bool distroExclusive; + [SerializeField] private CardDefinition upgradeTarget; + [SerializeField] private List effects = new(); + + public string Id => id; + public string DisplayName => displayName; + public string Description => description; + public Language Language => language; + public Rarity Rarity => rarity; + public int CycleCost => cycleCost; + public ResolutionTrack ResolutionTrack => resolutionTrack; + public bool DistroExclusive => distroExclusive; + public CardDefinition UpgradeTarget => upgradeTarget; + public IReadOnlyList Effects => effects; + } +} diff --git a/Assets/Scripts/Data/CardDefinition.cs.meta b/Assets/Scripts/Data/CardDefinition.cs.meta new file mode 100644 index 0000000..ade0308 --- /dev/null +++ b/Assets/Scripts/Data/CardDefinition.cs.meta @@ -0,0 +1,2 @@ +fileFormatVersion: 2 +guid: 5178747fac4dbfc448ff15d8a687e03c \ No newline at end of file diff --git a/Assets/Scripts/Data/CardEffectDefinition.cs b/Assets/Scripts/Data/CardEffectDefinition.cs new file mode 100644 index 0000000..23dd6d1 --- /dev/null +++ b/Assets/Scripts/Data/CardEffectDefinition.cs @@ -0,0 +1,13 @@ +using KernelPanic.Combat; +using UnityEngine; + +namespace KernelPanic.Data +{ + /// + /// Defines serialized card effect data that can create a runtime effect. + /// + public abstract class CardEffectDefinition : ScriptableObject + { + public abstract ICardEffect CreateRuntimeEffect(); + } +} diff --git a/Assets/Scripts/Data/CardEffectDefinition.cs.meta b/Assets/Scripts/Data/CardEffectDefinition.cs.meta new file mode 100644 index 0000000..d01f83e --- /dev/null +++ b/Assets/Scripts/Data/CardEffectDefinition.cs.meta @@ -0,0 +1,2 @@ +fileFormatVersion: 2 +guid: fdb3d58d94b76834598e408448e19d2a \ No newline at end of file diff --git a/Assets/Scripts/Data/DistroDefinition.cs b/Assets/Scripts/Data/DistroDefinition.cs new file mode 100644 index 0000000..43e0a83 --- /dev/null +++ b/Assets/Scripts/Data/DistroDefinition.cs @@ -0,0 +1,30 @@ +using System.Collections.Generic; +using KernelPanic.Core; +using UnityEngine; + +namespace KernelPanic.Data +{ + /// + /// Defines a playable distro character and its starting combat constraints. + /// + public sealed class DistroDefinition : ScriptableObject + { + [SerializeField] private string id; + [SerializeField] private string displayName; + [SerializeField] private Language primaryLanguage; + [SerializeField] private Language secondaryLanguage; + [SerializeField] private int baseUptime; + [SerializeField] private int baseRam; + [SerializeField] private int baseCyclesPerTurn; + [SerializeField] private List exclusiveCards = new(); + + public string Id => id; + public string DisplayName => displayName; + public Language PrimaryLanguage => primaryLanguage; + public Language SecondaryLanguage => secondaryLanguage; + public int BaseUptime => baseUptime; + public int BaseRam => baseRam; + public int BaseCyclesPerTurn => baseCyclesPerTurn; + public IReadOnlyList ExclusiveCards => exclusiveCards; + } +} diff --git a/Assets/Scripts/Data/DistroDefinition.cs.meta b/Assets/Scripts/Data/DistroDefinition.cs.meta new file mode 100644 index 0000000..e8037bd --- /dev/null +++ b/Assets/Scripts/Data/DistroDefinition.cs.meta @@ -0,0 +1,2 @@ +fileFormatVersion: 2 +guid: bd550368fd0c75d43a53aa4fb3b6541e \ No newline at end of file diff --git a/Assets/Scripts/Data/EnemyDefinition.cs b/Assets/Scripts/Data/EnemyDefinition.cs new file mode 100644 index 0000000..c14cea0 --- /dev/null +++ b/Assets/Scripts/Data/EnemyDefinition.cs @@ -0,0 +1,26 @@ +using System.Collections.Generic; +using KernelPanic.Core; +using UnityEngine; + +namespace KernelPanic.Data +{ + /// + /// Defines enemy stats and language affinities for runtime combat setup. + /// + public sealed class EnemyDefinition : ScriptableObject + { + [SerializeField] private string id; + [SerializeField] private string displayName; + [SerializeField] private int baseUptime; + [SerializeField] private List resistedLanguages = new(); + [SerializeField] private List weakLanguages = new(); + + public string Id => id; + public string DisplayName => displayName; + public int BaseUptime => baseUptime; + public IReadOnlyList ResistedLanguages => resistedLanguages; + public IReadOnlyList WeakLanguages => weakLanguages; + + // TODO: Model enemy intents once combat actions are defined. + } +} diff --git a/Assets/Scripts/Data/EnemyDefinition.cs.meta b/Assets/Scripts/Data/EnemyDefinition.cs.meta new file mode 100644 index 0000000..9c557ab --- /dev/null +++ b/Assets/Scripts/Data/EnemyDefinition.cs.meta @@ -0,0 +1,2 @@ +fileFormatVersion: 2 +guid: 8b5b43b43c697c142b33fbfc5160cf90 \ No newline at end of file diff --git a/Assets/Scripts/Data/StatusEffectDefinition.cs b/Assets/Scripts/Data/StatusEffectDefinition.cs new file mode 100644 index 0000000..d45d0f6 --- /dev/null +++ b/Assets/Scripts/Data/StatusEffectDefinition.cs @@ -0,0 +1,17 @@ +using KernelPanic.Core; +using UnityEngine; + +namespace KernelPanic.Data +{ + /// + /// Defines serialized status effect metadata and future stacking behavior. + /// + public sealed class StatusEffectDefinition : ScriptableObject + { + [SerializeField] private StatusType statusType; + [SerializeField] private string stackingBehavior; + + public StatusType StatusType => statusType; + public string StackingBehavior => stackingBehavior; + } +} diff --git a/Assets/Scripts/Data/StatusEffectDefinition.cs.meta b/Assets/Scripts/Data/StatusEffectDefinition.cs.meta new file mode 100644 index 0000000..150a317 --- /dev/null +++ b/Assets/Scripts/Data/StatusEffectDefinition.cs.meta @@ -0,0 +1,2 @@ +fileFormatVersion: 2 +guid: 1470a223647d6514f9439de7ded702c9 \ No newline at end of file diff --git a/Assets/Scripts/KernelPanic.Runtime.asmdef b/Assets/Scripts/KernelPanic.Runtime.asmdef new file mode 100644 index 0000000..0483c65 --- /dev/null +++ b/Assets/Scripts/KernelPanic.Runtime.asmdef @@ -0,0 +1,14 @@ +{ + "name": "KernelPanic.Runtime", + "rootNamespace": "KernelPanic", + "references": [], + "includePlatforms": [], + "excludePlatforms": [], + "allowUnsafeCode": false, + "overrideReferences": false, + "precompiledReferences": [], + "autoReferenced": true, + "defineConstraints": [], + "versionDefines": [], + "noEngineReferences": false +} diff --git a/Assets/Scripts/KernelPanic.Runtime.asmdef.meta b/Assets/Scripts/KernelPanic.Runtime.asmdef.meta new file mode 100644 index 0000000..667deb9 --- /dev/null +++ b/Assets/Scripts/KernelPanic.Runtime.asmdef.meta @@ -0,0 +1,7 @@ +fileFormatVersion: 2 +guid: 6aad857173769044f861a0c6b1318032 +AssemblyDefinitionImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Scripts/Meta.meta b/Assets/Scripts/Meta.meta new file mode 100644 index 0000000..05e8c60 --- /dev/null +++ b/Assets/Scripts/Meta.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: ae19044bbccbb074da1d5e38b61e5657 +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Scripts/Meta/EntropyWallet.cs b/Assets/Scripts/Meta/EntropyWallet.cs new file mode 100644 index 0000000..83aa4db --- /dev/null +++ b/Assets/Scripts/Meta/EntropyWallet.cs @@ -0,0 +1,26 @@ +namespace KernelPanic.Meta +{ + /// + /// Tracks the player's persistent entropy currency balance. + /// + public sealed class EntropyWallet + { + public int Balance { get; private set; } + + public void Add(int amount) + { + Balance += amount; + } + + public bool Spend(int amount) + { + if (Balance < amount) + { + return false; + } + + Balance -= amount; + return true; + } + } +} diff --git a/Assets/Scripts/Meta/EntropyWallet.cs.meta b/Assets/Scripts/Meta/EntropyWallet.cs.meta new file mode 100644 index 0000000..fc4c673 --- /dev/null +++ b/Assets/Scripts/Meta/EntropyWallet.cs.meta @@ -0,0 +1,2 @@ +fileFormatVersion: 2 +guid: 8b77d0de67282ca4181a7c53feec4343 \ No newline at end of file diff --git a/Assets/Scripts/Meta/GachaService.cs b/Assets/Scripts/Meta/GachaService.cs new file mode 100644 index 0000000..ced3450 --- /dev/null +++ b/Assets/Scripts/Meta/GachaService.cs @@ -0,0 +1,30 @@ +using System; + +namespace KernelPanic.Meta +{ + /// + /// Provides the contract for spending entropy on persistent unlock pulls. + /// + public sealed class GachaService + { + public GachaPullResult PerformPull(EntropyWallet wallet, int cost) + { + throw new NotImplementedException(); + } + } + + /// + /// Represents the result of a persistent unlock pull. + /// + public readonly struct GachaPullResult + { + public GachaPullResult(bool success, string unlockId) + { + Success = success; + UnlockId = unlockId; + } + + public bool Success { get; } + public string UnlockId { get; } + } +} diff --git a/Assets/Scripts/Meta/GachaService.cs.meta b/Assets/Scripts/Meta/GachaService.cs.meta new file mode 100644 index 0000000..098ee49 --- /dev/null +++ b/Assets/Scripts/Meta/GachaService.cs.meta @@ -0,0 +1,2 @@ +fileFormatVersion: 2 +guid: f62e697e985a8a44ca26ccb8e853ee66 \ No newline at end of file diff --git a/Assets/Scripts/Meta/SaveService.cs b/Assets/Scripts/Meta/SaveService.cs new file mode 100644 index 0000000..76fc6cf --- /dev/null +++ b/Assets/Scripts/Meta/SaveService.cs @@ -0,0 +1,28 @@ +using System; + +namespace KernelPanic.Meta +{ + /// + /// Provides save and load contracts for persistent meta progression. + /// + public sealed class SaveService + { + public void Save(SaveData data) + { + throw new NotImplementedException(); + } + + public SaveData Load() + { + throw new NotImplementedException(); + } + } + + /// + /// Stores persistent progression data for serialization. + /// + public sealed class SaveData + { + public int EntropyBalance { get; set; } + } +} diff --git a/Assets/Scripts/Meta/SaveService.cs.meta b/Assets/Scripts/Meta/SaveService.cs.meta new file mode 100644 index 0000000..aa82016 --- /dev/null +++ b/Assets/Scripts/Meta/SaveService.cs.meta @@ -0,0 +1,2 @@ +fileFormatVersion: 2 +guid: 752a83f338afd024b8e728a1921e38ee \ No newline at end of file diff --git a/Assets/Scripts/Run.meta b/Assets/Scripts/Run.meta new file mode 100644 index 0000000..c0ea1d4 --- /dev/null +++ b/Assets/Scripts/Run.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 9ae21840b594d4147a8f5497c992b4fa +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Scripts/Run/RewardService.cs b/Assets/Scripts/Run/RewardService.cs new file mode 100644 index 0000000..b96deb4 --- /dev/null +++ b/Assets/Scripts/Run/RewardService.cs @@ -0,0 +1,42 @@ +using System; +using System.Collections.Generic; +using KernelPanic.Data; + +namespace KernelPanic.Run +{ + /// + /// Provides post-wave reward choice generation contracts. + /// + public sealed class RewardService + { + public IReadOnlyList GeneratePostWaveChoices(RunConfig runConfig, int waveNumber) + { + throw new NotImplementedException(); + } + } + + /// + /// Represents one selectable reward option after clearing a wave. + /// + public readonly struct RewardChoice + { + public RewardChoice(RewardChoiceType type, CardDefinition card) + { + Type = type; + Card = card; + } + + public RewardChoiceType Type { get; } + public CardDefinition Card { get; } + } + + /// + /// Identifies the type of reward choice offered after a wave. + /// + public enum RewardChoiceType + { + AddCard, + UpgradeCard, + Skip + } +} diff --git a/Assets/Scripts/Run/RewardService.cs.meta b/Assets/Scripts/Run/RewardService.cs.meta new file mode 100644 index 0000000..7277a39 --- /dev/null +++ b/Assets/Scripts/Run/RewardService.cs.meta @@ -0,0 +1,2 @@ +fileFormatVersion: 2 +guid: a06eada6fbafd6e44ae1d21238a64750 \ No newline at end of file diff --git a/Assets/Scripts/Run/RunConfig.cs b/Assets/Scripts/Run/RunConfig.cs new file mode 100644 index 0000000..2edc5e8 --- /dev/null +++ b/Assets/Scripts/Run/RunConfig.cs @@ -0,0 +1,25 @@ +using System.Collections.Generic; +using KernelPanic.Core; +using KernelPanic.Data; + +namespace KernelPanic.Run +{ + /// + /// Describes the player choices and starting deck used to begin a run. + /// + public sealed class RunConfig + { + public RunConfig(DistroDefinition distro, Language primaryLanguage, Language secondaryLanguage, IReadOnlyList startingDeck) + { + Distro = distro; + PrimaryLanguage = primaryLanguage; + SecondaryLanguage = secondaryLanguage; + StartingDeck = startingDeck; + } + + public DistroDefinition Distro { get; } + public Language PrimaryLanguage { get; } + public Language SecondaryLanguage { get; } + public IReadOnlyList StartingDeck { get; } + } +} diff --git a/Assets/Scripts/Run/RunConfig.cs.meta b/Assets/Scripts/Run/RunConfig.cs.meta new file mode 100644 index 0000000..c8b050b --- /dev/null +++ b/Assets/Scripts/Run/RunConfig.cs.meta @@ -0,0 +1,2 @@ +fileFormatVersion: 2 +guid: 0c3d34a2ce0e53b4b8f9a77feb60fb95 \ No newline at end of file diff --git a/Assets/Scripts/Run/RunManager.cs b/Assets/Scripts/Run/RunManager.cs new file mode 100644 index 0000000..8de8559 --- /dev/null +++ b/Assets/Scripts/Run/RunManager.cs @@ -0,0 +1,56 @@ +using KernelPanic.Combat; +using KernelPanic.Core; +using UnityEngine; + +namespace KernelPanic.Run +{ + /// + /// Coordinates run lifecycle, wave progression, and run-level event handling. + /// + public sealed class RunManager : MonoBehaviour + { + [SerializeField] private CombatManager combatManager; + [SerializeField] private int currentWaveNumber; + [SerializeField] private bool isRunActive; + [SerializeField] private bool isPlayerDead; + + public int CurrentWaveNumber => currentWaveNumber; + public bool IsRunActive => isRunActive; + public bool IsPlayerDead => isPlayerDead; + + private void OnEnable() + { + GameEvents.WaveCleared += HandleWaveCleared; + GameEvents.RunEnded += HandleRunEnded; + } + + private void OnDisable() + { + GameEvents.WaveCleared -= HandleWaveCleared; + GameEvents.RunEnded -= HandleRunEnded; + } + + public void StartRun(RunConfig config) + { + isRunActive = true; + isPlayerDead = false; + currentWaveNumber = 1; + StartCombat(); + } + + public void StartCombat() + { + combatManager?.StartCombat(); + } + + private void HandleWaveCleared(WaveClearedEvent payload) + { + } + + private void HandleRunEnded(RunEndedEvent payload) + { + isRunActive = false; + isPlayerDead = payload.PlayerDied; + } + } +} diff --git a/Assets/Scripts/Run/RunManager.cs.meta b/Assets/Scripts/Run/RunManager.cs.meta new file mode 100644 index 0000000..304b6b9 --- /dev/null +++ b/Assets/Scripts/Run/RunManager.cs.meta @@ -0,0 +1,2 @@ +fileFormatVersion: 2 +guid: 234cc6c5ca577b64ea44020f5514cebe \ No newline at end of file diff --git a/Assets/Settings/UniversalRP.asset b/Assets/Settings/UniversalRP.asset index fccfdda..898a05e 100644 --- a/Assets/Settings/UniversalRP.asset +++ b/Assets/Settings/UniversalRP.asset @@ -12,8 +12,8 @@ MonoBehaviour: m_Script: {fileID: 11500000, guid: bf2edee5c58d82540a51f03df9d42094, type: 3} m_Name: UniversalRP m_EditorClassIdentifier: - k_AssetVersion: 12 - k_AssetPreviousVersion: 12 + k_AssetVersion: 13 + k_AssetPreviousVersion: 13 m_RendererType: 1 m_RendererData: {fileID: 0} m_RendererDataList: @@ -53,6 +53,7 @@ MonoBehaviour: m_AdditionalLightsShadowResolutionTierHigh: 2048 m_ReflectionProbeBlending: 0 m_ReflectionProbeBoxProjection: 0 + m_ReflectionProbeAtlas: 1 m_ShadowDistance: 50 m_ShadowCascadeCount: 1 m_Cascade2Split: 0.25 @@ -78,6 +79,7 @@ MonoBehaviour: m_UseAdaptivePerformance: 1 m_ColorGradingMode: 0 m_ColorGradingLutSize: 32 + m_AllowPostProcessAlphaOutput: 0 m_UseFastSRGBLinearConversion: 0 m_SupportDataDrivenLensFlare: 1 m_SupportScreenSpaceLensFlare: 1 @@ -108,6 +110,7 @@ MonoBehaviour: m_PrefilterDebugKeywords: 0 m_PrefilterWriteRenderingLayers: 0 m_PrefilterHDROutput: 0 + m_PrefilterAlphaOutput: 0 m_PrefilterSSAODepthNormals: 0 m_PrefilterSSAOSourceDepthLow: 0 m_PrefilterSSAOSourceDepthMedium: 0 @@ -125,8 +128,15 @@ MonoBehaviour: m_PrefilterSoftShadowsQualityHigh: 0 m_PrefilterSoftShadows: 0 m_PrefilterScreenCoord: 0 + m_PrefilterScreenSpaceIrradiance: 0 m_PrefilterNativeRenderPass: 0 m_PrefilterUseLegacyLightmaps: 0 + m_PrefilterBicubicLightmapSampling: 0 + m_PrefilterReflectionProbeRotation: 0 + m_PrefilterReflectionProbeBlending: 0 + m_PrefilterReflectionProbeBoxProjection: 0 + m_PrefilterReflectionProbeAtlas: 0 + m_PrefilterPointSamplingUpsampling: 0 m_ShaderVariantLogLevel: 0 m_ShadowCascades: 0 m_Textures: diff --git a/Assets/UniversalRenderPipelineGlobalSettings.asset b/Assets/UniversalRenderPipelineGlobalSettings.asset index 7c1f633..f3ba00c 100644 --- a/Assets/UniversalRenderPipelineGlobalSettings.asset +++ b/Assets/UniversalRenderPipelineGlobalSettings.asset @@ -29,7 +29,6 @@ MonoBehaviour: m_StripUnusedVariants: 1 m_StripScreenCoordOverrideVariants: 1 supportRuntimeDebugDisplay: 0 - m_EnableRenderGraph: 0 m_Settings: m_SettingsList: m_List: @@ -57,9 +56,20 @@ MonoBehaviour: - rid: 3114554777721110528 - rid: 3114554777721110529 - rid: 3114554777721110530 + - rid: 8545822260705886208 + - rid: 8545822260705886209 + - rid: 8545822260705886210 + - rid: 8545822260705886211 + - rid: 8545822260705886212 + - rid: 8545822260705886213 + - rid: 8545822260705886214 + - rid: 8545822260705886215 + - rid: 8545822260705886216 + - rid: 8545822260705886217 + - rid: 8545822260705886218 m_RuntimeSettings: m_List: [] - m_AssetVersion: 8 + m_AssetVersion: 10 m_ObsoleteDefaultVolumeProfile: {fileID: 0} m_RenderingLayerNames: - Default @@ -135,20 +145,17 @@ MonoBehaviour: m_SpriteUnshadowShader: {fileID: 4800000, guid: de02b375720b5c445afe83cd483bedf3, type: 3} m_GeometryShadowShader: {fileID: 4800000, guid: 19349a0f9a7ed4c48a27445bcf92e5e1, type: 3} m_GeometryUnshadowShader: {fileID: 4800000, guid: 77774d9009bb81447b048c907d4c6273, type: 3} - m_FallOffLookup: {fileID: 2800000, guid: 5688ab254e4c0634f8d6c8e0792331ca, type: 3} m_CopyDepthPS: {fileID: 4800000, guid: d6dae50ee9e1bfa4db75f19f99355220, type: 3} m_DefaultLitMaterial: {fileID: 2100000, guid: a97c105638bdf8b4a8650670310a4cd3, type: 2} m_DefaultUnlitMaterial: {fileID: 2100000, guid: 9dfc825aed78fcd4ba02077103263b40, type: 2} m_DefaultMaskMaterial: {fileID: 2100000, guid: 15d0c3709176029428a0da2f8cecf0b5, type: 2} + m_DefaultMesh2DLitMaterial: {fileID: 2100000, guid: 9452ae1262a74094f8a68013fbcd1834, type: 2} - rid: 7752762179098771458 type: {class: UniversalRenderPipelineEditorShaders, ns: UnityEngine.Rendering.Universal, asm: Unity.RenderPipelines.Universal.Runtime} data: m_AutodeskInteractive: {fileID: 4800000, guid: 0e9d5a909a1f7e84882a534d0d11e49f, type: 3} m_AutodeskInteractiveTransparent: {fileID: 4800000, guid: 5c81372d981403744adbdda4433c9c11, type: 3} m_AutodeskInteractiveMasked: {fileID: 4800000, guid: 80aa867ac363ac043847b06ad71604cd, type: 3} - m_TerrainDetailLit: {fileID: 4800000, guid: f6783ab646d374f94b199774402a5144, type: 3} - m_TerrainDetailGrassBillboard: {fileID: 4800000, guid: 29868e73b638e48ca99a19ea58c48d90, type: 3} - m_TerrainDetailGrass: {fileID: 4800000, guid: e507fdfead5ca47e8b9a768b51c291a1, type: 3} m_DefaultSpeedTree7Shader: {fileID: 4800000, guid: 0f4122b9a743b744abe2fb6a0a88868b, type: 3} m_DefaultSpeedTree8Shader: {fileID: -6465566751694194690, guid: 9920c1f1781549a46ba081a2a15a16ec, type: 3} m_DefaultSpeedTree9Shader: {fileID: -6465566751694194690, guid: cbd3e1cc4ae141c42a30e33b4d666a61, type: 3} @@ -168,7 +175,6 @@ MonoBehaviour: type: {class: RenderGraphSettings, ns: UnityEngine.Rendering.Universal, asm: Unity.RenderPipelines.Universal.Runtime} data: m_Version: 0 - m_EnableRenderCompatibilityMode: 0 - rid: 7752762179098771462 type: {class: UniversalRenderPipelineDebugShaders, ns: UnityEngine.Rendering.Universal, asm: Unity.RenderPipelines.Universal.Runtime} data: @@ -209,6 +215,9 @@ MonoBehaviour: m_CoreBlitPS: {fileID: 4800000, guid: 93446b5c5339d4f00b85c159e1159b7c, type: 3} m_CoreBlitColorAndDepthPS: {fileID: 4800000, guid: d104b2fc1ca6445babb8e90b0758136b, type: 3} m_SamplingPS: {fileID: 4800000, guid: 04c410c9937594faa893a11dceb85f7e, type: 3} + m_TerrainDetailLit: {fileID: 0} + m_TerrainDetailGrassBillboard: {fileID: 0} + m_TerrainDetailGrass: {fileID: 0} - rid: 7752762179098771467 type: {class: GPUResidentDrawerResources, ns: UnityEngine.Rendering, asm: Unity.RenderPipelines.GPUDriven.Runtime} data: @@ -288,3 +297,140 @@ MonoBehaviour: m_ExportShaderVariants: 1 m_ShaderVariantLogLevel: 0 m_StripRuntimeDebugShaders: 1 + - rid: 8545822260705886208 + type: {class: RayTracingRenderPipelineResources, ns: UnityEngine.Rendering.UnifiedRayTracing, asm: Unity.UnifiedRayTracing.Runtime} + data: + m_Version: 1 + m_GeometryPoolKernels: {fileID: 7200000, guid: 98e3d58cae7210c4786f67f504c9e899, type: 3} + m_CopyBuffer: {fileID: 7200000, guid: 1b95b5dcf48d1914c9e1e7405c7660e3, type: 3} + m_CopyPositions: {fileID: 7200000, guid: 1ad53a96b58d3c3488dde4f14db1aaeb, type: 3} + m_BitHistogram: {fileID: 7200000, guid: 8670f7ce4b60cef43bed36148aa1b0a2, type: 3} + m_BlockReducePart: {fileID: 7200000, guid: 4e034cc8ea2635c4e9f063e5ddc7ea7a, type: 3} + m_BlockScan: {fileID: 7200000, guid: 4d6d5de35fa45ef4a92119397a045cc9, type: 3} + m_BuildHlbvh: {fileID: 7200000, guid: 2d70cd6be91bd7843a39a54b51c15b13, type: 3} + m_RestructureBvh: {fileID: 7200000, guid: 56641cb88dcb31a4398a4997ef7a7a8c, type: 3} + m_Scatter: {fileID: 7200000, guid: a2eaeefdac4637a44b734e85b7be9186, type: 3} + - rid: 8545822260705886209 + type: {class: PostProcessData/ShaderResources, ns: UnityEngine.Rendering.Universal, asm: Unity.RenderPipelines.Universal.Runtime} + data: + stopNanPS: {fileID: 4800000, guid: 1121bb4e615ca3c48b214e79e841e823, type: 3} + subpixelMorphologicalAntialiasingPS: {fileID: 4800000, guid: 63eaba0ebfb82cc43bde059b4a8c65f6, type: 3} + gaussianDepthOfFieldPS: {fileID: 4800000, guid: 5e7134d6e63e0bc47a1dd2669cedb379, type: 3} + bokehDepthOfFieldPS: {fileID: 4800000, guid: 2aed67ad60045d54ba3a00c91e2d2631, type: 3} + cameraMotionBlurPS: {fileID: 4800000, guid: 1edcd131364091c46a17cbff0b1de97a, type: 3} + paniniProjectionPS: {fileID: 4800000, guid: a15b78cf8ca26ca4fb2090293153c62c, type: 3} + lutBuilderLdrPS: {fileID: 4800000, guid: 65df88701913c224d95fc554db28381a, type: 3} + lutBuilderHdrPS: {fileID: 4800000, guid: ec9fec698a3456d4fb18cf8bacb7a2bc, type: 3} + bloomPS: {fileID: 4800000, guid: 5f1864addb451f54bae8c86d230f736e, type: 3} + temporalAntialiasingPS: {fileID: 4800000, guid: 9c70c1a35ff15f340b38ea84842358bf, type: 3} + LensFlareDataDrivenPS: {fileID: 4800000, guid: 6cda457ac28612740adb23da5d39ea92, type: 3} + LensFlareScreenSpacePS: {fileID: 4800000, guid: 701880fecb344ea4c9cd0db3407ab287, type: 3} + scalingSetupPS: {fileID: 4800000, guid: e8ee25143a34b8c4388709ea947055d1, type: 3} + easuPS: {fileID: 4800000, guid: 562b7ae4f629f144aa97780546fce7c6, type: 3} + uberPostPS: {fileID: 4800000, guid: e7857e9d0c934dc4f83f270f8447b006, type: 3} + finalPostPassPS: {fileID: 4800000, guid: c49e63ed1bbcb334780a3bd19dfed403, type: 3} + m_ShaderResourcesVersion: 0 + - rid: 8545822260705886210 + type: {class: PostProcessData/TextureResources, ns: UnityEngine.Rendering.Universal, asm: Unity.RenderPipelines.Universal.Runtime} + data: + blueNoise16LTex: + - {fileID: 2800000, guid: 81200413a40918d4d8702e94db29911c, type: 3} + - {fileID: 2800000, guid: d50c5e07c9911a74982bddf7f3075e7b, type: 3} + - {fileID: 2800000, guid: 1134690bf9216164dbc75050e35b7900, type: 3} + - {fileID: 2800000, guid: 7ce2118f74614a94aa8a0cdf2e6062c3, type: 3} + - {fileID: 2800000, guid: 2ca97df9d1801e84a8a8f2c53cb744f0, type: 3} + - {fileID: 2800000, guid: e63eef8f54aa9dc4da9a5ac094b503b5, type: 3} + - {fileID: 2800000, guid: 39451254daebd6d40b52899c1f1c0c1b, type: 3} + - {fileID: 2800000, guid: c94ad916058dff743b0f1c969ddbe660, type: 3} + - {fileID: 2800000, guid: ed5ea7ce59ca8ec4f9f14bf470a30f35, type: 3} + - {fileID: 2800000, guid: 071e954febf155243a6c81e48f452644, type: 3} + - {fileID: 2800000, guid: 96aaab9cc247d0b4c98132159688c1af, type: 3} + - {fileID: 2800000, guid: fc3fa8f108657e14486697c9a84ccfc5, type: 3} + - {fileID: 2800000, guid: bfed3e498947fcb4890b7f40f54d85b9, type: 3} + - {fileID: 2800000, guid: d512512f4af60a442ab3458489412954, type: 3} + - {fileID: 2800000, guid: 47a45908f6db0cb44a0d5e961143afec, type: 3} + - {fileID: 2800000, guid: 4dcc0502f8586f941b5c4a66717205e8, type: 3} + - {fileID: 2800000, guid: 9d92991794bb5864c8085468b97aa067, type: 3} + - {fileID: 2800000, guid: 14381521ff11cb74abe3fe65401c23be, type: 3} + - {fileID: 2800000, guid: d36f0fe53425e08499a2333cf423634c, type: 3} + - {fileID: 2800000, guid: d4044ea2490d63b43aa1765f8efbf8a9, type: 3} + - {fileID: 2800000, guid: c9bd74624d8070f429e3f46d161f9204, type: 3} + - {fileID: 2800000, guid: d5c9b274310e5524ebe32a4e4da3df1f, type: 3} + - {fileID: 2800000, guid: f69770e54f2823f43badf77916acad83, type: 3} + - {fileID: 2800000, guid: 10b6c6d22e73dea46a8ab36b6eebd629, type: 3} + - {fileID: 2800000, guid: a2ec5cbf5a9b64345ad3fab0912ddf7b, type: 3} + - {fileID: 2800000, guid: 1c3c6d69a645b804fa232004b96b7ad3, type: 3} + - {fileID: 2800000, guid: d18a24d7b4ed50f4387993566d9d3ae2, type: 3} + - {fileID: 2800000, guid: c989e1ed85cf7154caa922fec53e6af6, type: 3} + - {fileID: 2800000, guid: ff47e5a0f105eb34883b973e51f4db62, type: 3} + - {fileID: 2800000, guid: fa042edbfc40fbd4bad0ab9d505b1223, type: 3} + - {fileID: 2800000, guid: 896d9004736809c4fb5973b7c12eb8b9, type: 3} + - {fileID: 2800000, guid: 179f794063d2a66478e6e726f84a65bc, type: 3} + filmGrainTex: + - {fileID: 2800000, guid: 654c582f7f8a5a14dbd7d119cbde215d, type: 3} + - {fileID: 2800000, guid: dd77ffd079630404e879388999033049, type: 3} + - {fileID: 2800000, guid: 1097e90e1306e26439701489f391a6c0, type: 3} + - {fileID: 2800000, guid: f0b67500f7fad3b4c9f2b13e8f41ba6e, type: 3} + - {fileID: 2800000, guid: 9930fb4528622b34687b00bbe6883de7, type: 3} + - {fileID: 2800000, guid: bd9e8c758250ef449a4b4bfaad7a2133, type: 3} + - {fileID: 2800000, guid: 510a2f57334933e4a8dbabe4c30204e4, type: 3} + - {fileID: 2800000, guid: b4db8180660810945bf8d55ab44352ad, type: 3} + - {fileID: 2800000, guid: fd2fd78b392986e42a12df2177d3b89c, type: 3} + - {fileID: 2800000, guid: 5cdee82a77d13994f83b8fdabed7c301, type: 3} + smaaAreaTex: {fileID: 2800000, guid: d1f1048909d55cd4fa1126ab998f617e, type: 3} + smaaSearchTex: {fileID: 2800000, guid: 51eee22c2a633ef4aada830eed57c3fd, type: 3} + m_TexturesResourcesVersion: 0 + - rid: 8545822260705886211 + type: {class: OnTilePostProcessResource, ns: UnityEngine.Rendering.Universal, asm: Unity.RenderPipelines.Universal.Runtime} + data: + m_Version: 0 + m_UberPostShader: {fileID: 4800000, guid: fe4f13c1004a07d4ea1e30bfd0326d9e, type: 3} + - rid: 8545822260705886212 + type: {class: UniversalRenderPipelineRuntimeTerrainShaders, ns: UnityEngine.Rendering.Universal, asm: Unity.RenderPipelines.Universal.Runtime} + data: + m_Version: 0 + m_TerrainDetailLit: {fileID: 4800000, guid: f6783ab646d374f94b199774402a5144, type: 3} + m_TerrainDetailGrassBillboard: {fileID: 4800000, guid: 29868e73b638e48ca99a19ea58c48d90, type: 3} + m_TerrainDetailGrass: {fileID: 4800000, guid: e507fdfead5ca47e8b9a768b51c291a1, type: 3} + - rid: 8545822260705886213 + type: {class: URPReflectionProbeSettings, ns: UnityEngine.Rendering, asm: Unity.RenderPipelines.Universal.Runtime} + data: + version: 1 + useReflectionProbeRotation: 0 + - rid: 8545822260705886214 + type: {class: ScreenSpaceAmbientOcclusionDynamicResources, ns: UnityEngine.Rendering.Universal, asm: Unity.RenderPipelines.Universal.Runtime} + data: + m_BlueNoise256Textures: + - {fileID: 2800000, guid: 36f118343fc974119bee3d09e2111500, type: 3} + - {fileID: 2800000, guid: 4b7b083e6b6734e8bb2838b0b50a0bc8, type: 3} + - {fileID: 2800000, guid: c06cc21c692f94f5fb5206247191eeee, type: 3} + - {fileID: 2800000, guid: cb76dd40fa7654f9587f6a344f125c9a, type: 3} + - {fileID: 2800000, guid: e32226222ff144b24bf3a5a451de54bc, type: 3} + - {fileID: 2800000, guid: 3302065f671a8450b82c9ddf07426f3a, type: 3} + - {fileID: 2800000, guid: 56a77a3e8d64f47b6afe9e3c95cb57d5, type: 3} + m_Version: 0 + - rid: 8545822260705886215 + type: {class: ScreenSpaceAmbientOcclusionPersistentResources, ns: UnityEngine.Rendering.Universal, asm: Unity.RenderPipelines.Universal.Runtime} + data: + m_Shader: {fileID: 4800000, guid: 0849e84e3d62649e8882e9d6f056a017, type: 3} + m_Version: 0 + - rid: 8545822260705886216 + type: {class: URPTerrainShaderSetting, ns: UnityEngine.Rendering.Universal, asm: Unity.RenderPipelines.Universal.Runtime} + data: + m_Version: 0 + m_IncludeTerrainShaders: 1 + - rid: 8545822260705886217 + type: {class: RenderingDebuggerRuntimeResources, ns: UnityEngine.Rendering, asm: Unity.RenderPipelines.Core.Runtime} + data: + m_version: 0 + - rid: 8545822260705886218 + type: {class: WorldRenderPipelineResources, ns: UnityEngine.PathTracing.Core, asm: Unity.PathTracing.Runtime} + data: + _version: 3 + _blitCubemap: {fileID: 7200000, guid: 5a992812cb320d146a66cc600200cce7, type: 3} + _blitGrayScaleCookie: {fileID: 7200000, guid: 557fa399e33bf7647bda5697c5c158df, type: 3} + _setAlphaChannelShader: {fileID: 7200000, guid: 5efaea0e81c66334aa9d062d6573e6fd, type: 3} + _environmentImportanceSamplingBuild: {fileID: 7200000, guid: 5bb2534d2411d344cbc54f880232640f, type: 3} + _skyBoxMesh: {fileID: 4300000, guid: 0529e6c5f6dea8c4a8c2835ed7de57cb, type: 2} + _sixFaceSkyBoxMesh: {fileID: 4300000, guid: a80925ceebd011741b42509226cefc74, type: 2} + _buildLightGridShader: {fileID: 7200000, guid: 16e47c1641bd0104e92b624601457bb0, type: 3} diff --git a/ProjectSettings/GraphicsSettings.asset b/ProjectSettings/GraphicsSettings.asset index 37ed363..573e08b 100644 --- a/ProjectSettings/GraphicsSettings.asset +++ b/ProjectSettings/GraphicsSettings.asset @@ -59,6 +59,8 @@ GraphicsSettings: m_AlbedoSwatchInfos: [] m_RenderPipelineGlobalSettingsMap: UnityEngine.Rendering.Universal.UniversalRenderPipeline: {fileID: 11400000, guid: 93b439a37f63240aca3dd4e01d978a9f, type: 2} + m_ShaderBuildSettings: + keywordDeclarationOverrides: [] m_LightsUseLinearIntensity: 1 m_LightsUseColorTemperature: 1 m_LogWhenShaderIsCompiled: 0 diff --git a/ProjectSettings/ProjectSettings.asset b/ProjectSettings/ProjectSettings.asset index 9648f4b..1c256ee 100644 --- a/ProjectSettings/ProjectSettings.asset +++ b/ProjectSettings/ProjectSettings.asset @@ -681,11 +681,11 @@ PlayerSettings: activeInputHandler: 1 windowsGamepadBackendHint: 0 enableDirectStorage: 0 - cloudProjectId: + cloudProjectId: f53bdd3c-833a-46a8-ad19-0180dc4af0dd framebufferDepthMemorylessMode: 0 qualitySettingsNames: [] - projectName: - organizationId: + projectName: My project 2026-07-03_09-07-05 + organizationId: daefee08 cloudEnabled: 0 legacyClampBlendShapeWeights: 0 hmiLoadingImage: {fileID: 0} diff --git a/ProjectSettings/ShaderGraphSettings.asset b/ProjectSettings/ShaderGraphSettings.asset index 10b82f0..0421697 100644 --- a/ProjectSettings/ShaderGraphSettings.asset +++ b/ProjectSettings/ShaderGraphSettings.asset @@ -13,6 +13,7 @@ MonoBehaviour: m_Name: m_EditorClassIdentifier: shaderVariantLimit: 128 + overrideShaderVariantLimit: 0 customInterpolatorErrorThreshold: 32 customInterpolatorWarningThreshold: 16 customHeatmapValues: {fileID: 0} diff --git a/ProjectSettings/URPProjectSettings.asset b/ProjectSettings/URPProjectSettings.asset index 08faf03..6ad5631 100644 --- a/ProjectSettings/URPProjectSettings.asset +++ b/ProjectSettings/URPProjectSettings.asset @@ -12,4 +12,5 @@ MonoBehaviour: m_Script: {fileID: 11500000, guid: 247994e1f5a72c2419c26a37e9334c01, type: 3} m_Name: m_EditorClassIdentifier: - m_LastMaterialVersion: 9 + m_LastMaterialVersion: 10 + m_ProjectSettingFolderPath: URPDefaultResources