From 16e4a47beaf7786b63404d4a8356e45d70a393b5 Mon Sep 17 00:00:00 2001 From: chai Date: Tue, 28 Sep 2021 19:12:34 +0800 Subject: *unit lens --- Assets/Scripts/Managers/UnitManager.cs | 42 +++++++++++++++++++++++++++++++++- 1 file changed, 41 insertions(+), 1 deletion(-) (limited to 'Assets/Scripts/Managers/UnitManager.cs') diff --git a/Assets/Scripts/Managers/UnitManager.cs b/Assets/Scripts/Managers/UnitManager.cs index 62afc08b..0561abd0 100644 --- a/Assets/Scripts/Managers/UnitManager.cs +++ b/Assets/Scripts/Managers/UnitManager.cs @@ -6,11 +6,51 @@ public class UnitManager : Singleton { public PCController pc { get; private set; } - public List monsters { get; private set; } + public List monsters { get; private set; } + private Dictionary> m_Snapshots = new Dictionary>(); public void SetPlayerCharacter(PCController pc) { this.pc = pc; } + + public UnitSnapshot ClaimSnapshotSolo(UnitSnapshotInfo info) + { + UnitSnapshot snapshot = ClaimSnapshot(info.unit); + snapshot.ApplySnapshot(info); + return snapshot; + } + + public UnitSnapshot ClaimSnapshot(UnitController unit) + { + List snapshots; + UnitSnapshot snap = null; + if (m_Snapshots.TryGetValue(unit, out snapshots)) + { + snap = snapshots[snapshots.Count - 1]; + snapshots.RemoveAt(snapshots.Count - 1); + return snap; + } + var obj = ResourceManager.Instance.LoadAsset(unit.unitDetail.snapshotAvatarPath); + if(obj) + { + snap = Object.Instantiate(obj); + snap.owner = unit; + } + return snap; + } + + public void ReleaseSnapshot(ref UnitSnapshot snap) + { + List snapshots; + if (!m_Snapshots.TryGetValue(snap.owner, out snapshots)) + { + snapshots = new List(); + m_Snapshots.Add(snap.owner, snapshots); + } + snapshots.Add(snap); + snap = null; + } + } -- cgit v1.1-26-g67d0