using System.Collections;
using System.Collections.Generic;
using UnityEngine;
{
public class Squad : MonoBehaviour
{
[ExposeMember]
public bool computerControlled;
[ExposeMember]
public List<Soldier> squadMembers;
[ExposeMember]
public Soldier leader;
[SerializeField]
private SquadController squadControllerReference;
[ExposeMember(conditionalDisplayMemberName = "computerControlled",offerCreationFunctionWhenNull ="CreateNPCController")]
SquadNPCAI npcAIReference
{
get
{
if (!computerControlled) return null;
if (squadControllerReference != null && squadControllerReference.GetType() == typeof(SquadNPCAI))
return (SquadNPCAI)squadControllerReference;
squadControllerReference = GetComponent<SquadNPCAI>();
return (SquadNPCAI)squadControllerReference;
}
set {
if (computerControlled)
if (value.GetType() == typeof(SquadNPCAI))
squadControllerReference = value;
}
}
[ExposeMember(conditionalDisplayMemberName = "!computerControlled", offerCreationFunctionWhenNull = "CreatePlayerController")]
SquadPCController playerControllerReference
{
get
{
if (computerControlled) return null;
if (squadControllerReference != null && squadControllerReference.GetType() == typeof(SquadPCController))
return (SquadPCController)squadControllerReference;
squadControllerReference = GetComponent<SquadPCController>();
return (SquadPCController)squadControllerReference;
}
set
{
if (!computerControlled)
if (value==null || value.GetType() == typeof(SquadPCController))
squadControllerReference = value;
}
}
bool AIRefOK()
{
if (!computerControlled) return false;
return npcAIReference != null;
}
[ExposeMember(conditionalDisplayMemberName = "AIRefOK")]
int AILevel
{
get {
if (npcAIReference == null) return 0;
return npcAIReference.
AIlevel; }
set
{
if (npcAIReference == null) return;
npcAIReference.AIlevel=value;
}
}
void CreateNPCController()
{
npcAIReference = gameObject.AddComponent<SquadNPCAI>();
}
void CreatePlayerController()
{
playerControllerReference = gameObject.AddComponent<SquadPCController>();
}
private void Update()
{
if (leader != null)
{
leader.Backstory = Time.realtimeSinceStartup.ToString();
leader.favoriteWeaponType.range = Time.realtimeSinceStartup;
}
}
}
}