factory pattern for zombie error

This commit is contained in:
Mausham
2025-12-31 18:23:11 -08:00
parent 8eafd8bb60
commit 3470ca4dc6
10 changed files with 152 additions and 198 deletions

View File

@@ -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();
}

View File

@@ -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();
}
}
}