74 lines
2.3 KiB
C#
74 lines
2.3 KiB
C#
using System.Collections;
|
|
using System.Collections.Generic;
|
|
using UnityEngine;
|
|
using UnityEngine.UI;
|
|
using Passer.Humanoid;
|
|
|
|
namespace Passer {
|
|
|
|
public class PossessionDetailsUI : MonoBehaviour {
|
|
|
|
public PossessionsUI pawnPossessionsUI;
|
|
|
|
public Text nameUI;
|
|
public Text countUI;
|
|
public Socket socket;
|
|
|
|
public HumanoidControl humanoid;
|
|
public VisitorPossessions humanoidPossessions;
|
|
|
|
protected VisitorPossessions.Possession possession;
|
|
|
|
public void SetPossesion(VisitorPossessions.Possession possession) {
|
|
this.possession = possession;
|
|
}
|
|
|
|
public void RetrievePossession(VisitorPossessions.Possession possession) {
|
|
this.possession = possession;
|
|
RetrievePossession();
|
|
}
|
|
|
|
public void RetrievePossession() {
|
|
if (possession == null)
|
|
return;
|
|
|
|
humanoid = GetComponentInParent<HumanoidControl>();
|
|
|
|
if (possession.type == Possessable.Type.Avatar) {
|
|
// make the humanoid change to the avatar directly?
|
|
SiteNavigator.instance.StartCoroutine(VisitorPossessions.RetrievePossessionAsync(possession, ChangeAvatar));
|
|
}
|
|
else {
|
|
|
|
nameUI.text = possession.name;
|
|
countUI.text = "";
|
|
|
|
SiteNavigator.instance.StartCoroutine(VisitorPossessions.RetrievePossessionAsync(possession, AttachToSocket));
|
|
}
|
|
}
|
|
|
|
private void OnDestroy() {
|
|
VisitorPossessions.UnloadPossession();
|
|
}
|
|
|
|
private void AttachToSocket(GameObject prefab) {
|
|
humanoidPossessions = humanoid.GetComponentInChildren<VisitorPossessions>();
|
|
|
|
humanoidPossessions.DeletePossession(possession);
|
|
GameObject possessionObj = Object.Instantiate(prefab);
|
|
possessionObj.name = prefab.name;
|
|
|
|
socket.Attach(possessionObj);
|
|
}
|
|
|
|
private void ChangeAvatar(GameObject avatarObj) {
|
|
humanoid.ChangeAvatar(avatarObj);
|
|
//this.gameObject.SetActive(false);
|
|
//pawnPossessionsUI.gameObject.SetActive(false);
|
|
|
|
Canvas canvas = GetComponentInParent<Canvas>();
|
|
if (canvas != null)
|
|
canvas.gameObject.SetActive(false);
|
|
}
|
|
}
|
|
} |