factory pattern for zombie error
This commit is contained in:
@@ -4,7 +4,7 @@ using VContainer.Unity;
|
||||
|
||||
namespace Darkmatter.Domain
|
||||
{
|
||||
public class EnemyController : IStartable, ITickable
|
||||
public class EnemyController : MonoBehaviour
|
||||
{
|
||||
[Inject] EnemyStateMachine esm;
|
||||
|
||||
@@ -13,7 +13,7 @@ namespace Darkmatter.Domain
|
||||
esm.ChangeState(new PatrolState(esm));
|
||||
}
|
||||
|
||||
public void Tick()
|
||||
public void Update()
|
||||
{
|
||||
esm.Update();
|
||||
}
|
||||
|
||||
@@ -1,5 +1,6 @@
|
||||
using Darkmatter.Core;
|
||||
using System.Collections.Generic;
|
||||
using System.Linq;
|
||||
using UnityEngine;
|
||||
using VContainer;
|
||||
|
||||
@@ -12,12 +13,13 @@ namespace Darkmatter.Domain
|
||||
private readonly GameObject fatZombiePrefab;
|
||||
private readonly GameObject slimZombiePrefab;
|
||||
private readonly IObjectResolver objectResolver;
|
||||
public EnemyFactory(Transform playerTransform, List<Transform> patrolPoints, GameObject fatZombiePrefab, GameObject slimZombiePrefab)
|
||||
public EnemyFactory(Transform playerTransform, List<Transform> patrolPoints, GameObject fatZombiePrefab, GameObject slimZombiePrefab, IObjectResolver resolver)
|
||||
{
|
||||
this.playerTransform = playerTransform;
|
||||
this.patrolPoints = patrolPoints;
|
||||
this.fatZombiePrefab = fatZombiePrefab;
|
||||
this.slimZombiePrefab = slimZombiePrefab;
|
||||
this.objectResolver = resolver;
|
||||
}
|
||||
public IEnemyPawn GetEnemy(ZombieType type)
|
||||
{
|
||||
@@ -38,7 +40,7 @@ namespace Darkmatter.Domain
|
||||
}
|
||||
objectResolver.Inject(enemyObj);
|
||||
IEnemyPawn enemyPawn = enemyObj.GetComponent<IEnemyPawn>();
|
||||
|
||||
enemyPawn.InitializeFromFactory(playerTransform, GetRandomPatrolPoints(Random.Range(4, patrolPoints.Count)));
|
||||
return enemyPawn;
|
||||
}
|
||||
|
||||
@@ -46,5 +48,11 @@ namespace Darkmatter.Domain
|
||||
{
|
||||
return patrolPoints[Random.Range(0, patrolPoints.Count)].position;
|
||||
}
|
||||
|
||||
private List<Transform> GetRandomPatrolPoints(int count)
|
||||
{
|
||||
return patrolPoints.OrderBy(x=>Random.value).Take(count).ToList();
|
||||
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user