summaryrefslogtreecommitdiff
path: root/Assets/Scripts/Managers/UnitManager.cs
diff options
context:
space:
mode:
Diffstat (limited to 'Assets/Scripts/Managers/UnitManager.cs')
-rw-r--r--Assets/Scripts/Managers/UnitManager.cs42
1 files changed, 41 insertions, 1 deletions
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<UnitManager>
{
public PCController pc { get; private set; }
- public List<MonsterController> monsters { get; private set; }
+ public List<MonsterController> monsters { get; private set; }
+ private Dictionary<UnitController, List<UnitSnapshot>> m_Snapshots = new Dictionary<UnitController, List<UnitSnapshot>>();
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<UnitSnapshot> 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<UnitSnapshot>(unit.unitDetail.snapshotAvatarPath);
+ if(obj)
+ {
+ snap = Object.Instantiate<UnitSnapshot>(obj);
+ snap.owner = unit;
+ }
+ return snap;
+ }
+
+ public void ReleaseSnapshot(ref UnitSnapshot snap)
+ {
+ List<UnitSnapshot> snapshots;
+ if (!m_Snapshots.TryGetValue(snap.owner, out snapshots))
+ {
+ snapshots = new List<UnitSnapshot>();
+ m_Snapshots.Add(snap.owner, snapshots);
+ }
+ snapshots.Add(snap);
+ snap = null;
+ }
+
}