35ed59b247
Use pathfinding algorithm
104 lines
3.4 KiB
C#
104 lines
3.4 KiB
C#
using System.Collections;
|
|
using System.Collections.Generic;
|
|
using UnityEngine;
|
|
using System;
|
|
|
|
[Serializable]
|
|
public class ThugModel
|
|
{
|
|
[SerializeField]
|
|
public string name;
|
|
|
|
[SerializeField]
|
|
public Vector3 position;
|
|
|
|
public ThugModel(string _name, Vector3 _position)
|
|
{
|
|
name = _name;
|
|
position = _position;
|
|
}
|
|
}
|
|
|
|
|
|
public class NPCManager : MonoBehaviour
|
|
{
|
|
GameObject NPCCollection;
|
|
public List<ThugModel> thugs;
|
|
|
|
public ThugModel bossThug;
|
|
|
|
// Start is called before the first frame update
|
|
void Start()
|
|
{
|
|
|
|
}
|
|
|
|
// Update is called once per frame
|
|
void Update()
|
|
{
|
|
|
|
}
|
|
|
|
void Awake()
|
|
{
|
|
NPCCollection = GameObject.FindGameObjectWithTag("NPCCollection");
|
|
if (NPCCollection == null)
|
|
{
|
|
throw new Exception("Object not found");
|
|
}
|
|
CreateThugs();
|
|
CreateBossThug();
|
|
}
|
|
|
|
private void CreateThugs()
|
|
{
|
|
var model = Resources.Load("SampleScene/Enemies/Thug") as GameObject;
|
|
|
|
foreach (var thug in thugs)
|
|
{
|
|
var ThugClone = GameObject.Instantiate(model, thug.position, Quaternion.identity, NPCCollection.transform);
|
|
|
|
ThugClone.name = thug.name;
|
|
ThugClone.transform.SetParent(NPCCollection.transform);
|
|
|
|
//Debug.Log("Thug Name: " + ThugClone.name + " Positions: " + ThugClone.transform.position.x + " + " + ThugClone.transform.position.y + " + " + ThugClone.transform.position.z);
|
|
//Debug.Log("Thug Name: " + ThugClone.name + " Local Positions: " + ThugClone.transform.localPosition.x + " + " + ThugClone.transform.localPosition.y + " + " + ThugClone.transform.localPosition.z);
|
|
|
|
ThugClone.GetComponent<NPC>().Name = thug.name;
|
|
|
|
ThugClone.GetComponent<Enemy>().enemyName = thug.name; //delete and set in the controller todo?
|
|
ThugClone.GetComponent<Enemy>().MinionName = "Thug";
|
|
ThugClone.GetComponent<Enemy>().isKilled = PlayerPrefs.HasKey(thug.name + "-S") ? PlayerPrefs.GetInt(thug.name + "-S") : 0;
|
|
|
|
|
|
if (PlayerPrefs.HasKey(thug.name + "-S.health"))
|
|
{
|
|
ThugClone.GetComponent<Enemy>().health = PlayerPrefs.GetFloat(thug.name + "-S.health");
|
|
}
|
|
|
|
// Dont set up it manually, let allow logic in Following Enemy scriptmanage avaible itself
|
|
//ThugClone.SetActive(PlayerPrefs.HasKey(thug.name + "-S") ? !Convert.ToBoolean(PlayerPrefs.GetInt(thug.name + "-S")) : true);
|
|
}
|
|
}
|
|
|
|
private void CreateBossThug()
|
|
{
|
|
var modelBossThug = Resources.Load("SampleScene/Enemies/BossThug") as GameObject;
|
|
|
|
var BossThugClone = GameObject.Instantiate(modelBossThug, bossThug.position, Quaternion.identity, NPCCollection.transform);
|
|
|
|
BossThugClone.name = bossThug.name;
|
|
BossThugClone.transform.SetParent(NPCCollection.transform);
|
|
|
|
BossThugClone.GetComponent<NPC>().Name = bossThug.name;
|
|
|
|
BossThugClone.GetComponent<FollowingEnemy>().enemyName = bossThug.name; //delete and set in the controller todo?
|
|
BossThugClone.GetComponent<FollowingEnemy>().MinionName = "Thug";
|
|
|
|
BossThugClone.SetActive(PlayerPrefs.HasKey(bossThug.name + "-S") ? !Convert.ToBoolean(PlayerPrefs.GetInt(bossThug.name + "-S")) : true);
|
|
|
|
BossThugClone.GetComponent<FollowingEnemy>().isPanelEnabled = false;
|
|
}
|
|
|
|
}
|