Almost Final Version

This commit is contained in:
2022-05-16 01:13:50 +07:00
parent bb6aea8720
commit 150efde055
47 changed files with 1120 additions and 4707 deletions

View File

@ -38,32 +38,30 @@ public class CharacterFactory : MonoBehaviour
throw new System.ArgumentException("Can be only one human player");
for (int i = 0; i < attcNum - humanAtc; i++)
InstanciateEntity(Team.Attackers, TypeAI.D0DiskAI,
InstantiateEntity(Team.Attackers, TypeAI.D0DiskAI,
spawnPointsForAttackersTeam[Random.Range(0, spawnPointsForAttackersTeam.Count)]);
for (int i = 0; i < defNum - humanDef; i++)
InstanciateEntity(Team.Defenders, TypeAI.D0DiskAI,
InstantiateEntity(Team.Defenders, TypeAI.D0DiskAI,
spawnPointsForDefendersTeam[Random.Range(0, spawnPointsForDefendersTeam.Count)]);
if (humanAtc == 1)
InstanciateEntity(Team.Attackers, TypeAI.HumanAI,
InstantiateEntity(Team.Attackers, TypeAI.HumanAI,
spawnPointsForAttackersTeam[Random.Range(0, spawnPointsForAttackersTeam.Count)]);
if (humanDef == 1)
InstanciateEntity(Team.Defenders, TypeAI.HumanAI,
InstantiateEntity(Team.Defenders, TypeAI.HumanAI,
spawnPointsForDefendersTeam[Random.Range(0, spawnPointsForDefendersTeam.Count)]);
GameManager.OnResetScene += ResetCharacters;
}
private void InstanciateEntity(Team team, TypeAI typeAi, NavPoint spawnPoint)
private void InstantiateEntity(Team team, TypeAI typeAi, NavPoint spawnPoint)
{
var gameobject = GameObject.Instantiate(
typeAi == TypeAI.HumanAI ? PlayerPrefab : AIPrefab,
spawnPoint.Position,
Quaternion.identity);
ApplyMaterial(team, gameobject);
gameobject.SetActive(true);
if (team == Team.Attackers)
gameObject.tag = "Attacker";
else
gameObject.tag = "Defender";
gameObject.tag = team == Team.Attackers ? "Attacker" : "Defender";
if (typeAi == TypeAI.HumanAI)
{
@ -73,13 +71,35 @@ public class CharacterFactory : MonoBehaviour
else
{
var npc = gameobject.GetComponent<NPC>();
if (team == Team.Attackers)
GameManager._attackersTeam.RegisterAgent(npc);
else
{
GameManager._defendersTeam.RegisterAgent(npc);
}
npc.GetCharacter.Team = team;
npc.SetModel(team.ToString(), ScriptableObject.CreateInstance<NNModel>(), InferenceDevice.Default );
npc.SetModel(team.ToString(), null, InferenceDevice.Default );
gameobject.GetComponent<MovementController>().PointStartID = spawnPoint.PointId;
bots.Add(gameobject);
}
}
private void ApplyMaterial(Team team, GameObject go)
{
var mat = team == Team.Attackers
? SettingsReader.Instance.GetSettings.atcMaterial
: SettingsReader.Instance.GetSettings.defMaterial;
for (var i = 0; i < go.transform.childCount; i++)
{
if (go.transform.GetChild(i)
.TryGetComponent<SkinnedMeshRenderer>(out var skin))
{
skin.material = mat;
}
}
}
public void ReSpawn(ICharacter character, ref Vector3 pos, ref int startPointId)
{
character.ResetCharacter();