Refactor "Target" -> "Threat"
This commit is contained in:
@@ -2,18 +2,18 @@ using System;
|
||||
using System.Collections.Generic;
|
||||
using UnityEngine;
|
||||
|
||||
// The assignment class is an interface for assigning a target to each missile.
|
||||
// The assignment class is an interface for assigning a threat to each missile.
|
||||
public interface IAssignment {
|
||||
// Assignment item type.
|
||||
// The first element corresponds to the missile index, and the second element
|
||||
// corresponds to the target index.
|
||||
// corresponds to the threat index.
|
||||
public struct AssignmentItem {
|
||||
public int MissileIndex;
|
||||
public int TargetIndex;
|
||||
public int ThreatIndex;
|
||||
|
||||
public AssignmentItem(int missileIndex, int targetIndex) {
|
||||
public AssignmentItem(int missileIndex, int threatIndex) {
|
||||
MissileIndex = missileIndex;
|
||||
TargetIndex = targetIndex;
|
||||
ThreatIndex = threatIndex;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -34,13 +34,13 @@ public interface IAssignment {
|
||||
}
|
||||
|
||||
// Get the list of active target indices.
|
||||
protected static List<int> GetActiveTargetIndices(List<Agent> targets) {
|
||||
List<int> activeTargetIndices = new List<int>();
|
||||
for (int targetIndex = 0; targetIndex < targets.Count; targetIndex++) {
|
||||
if (!targets[targetIndex].IsHit()) {
|
||||
activeTargetIndices.Add(targetIndex);
|
||||
protected static List<int> GetActiveThreatIndices(List<Agent> threats) {
|
||||
List<int> activeThreatIndices = new List<int>();
|
||||
for (int threatIndex = 0; threatIndex < threats.Count; threatIndex++) {
|
||||
if (!threats[threatIndex].IsHit()) {
|
||||
activeThreatIndices.Add(threatIndex);
|
||||
}
|
||||
}
|
||||
return activeTargetIndices;
|
||||
return activeThreatIndices;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -17,19 +17,19 @@ public class RoundRobinAssignment : IAssignment {
|
||||
return assignments;
|
||||
}
|
||||
|
||||
List<int> activeTargetIndices = IAssignment.GetActiveTargetIndices(targets);
|
||||
if (activeTargetIndices.Count == 0) {
|
||||
List<int> activeThreatIndices = IAssignment.GetActiveThreatIndices(targets);
|
||||
if (activeThreatIndices.Count == 0) {
|
||||
return assignments;
|
||||
}
|
||||
|
||||
foreach (int missileIndex in assignableMissileIndices) {
|
||||
int nextActiveTargetIndex = activeTargetIndices.FindIndex(index => index > prevTargetIndex);
|
||||
int nextActiveTargetIndex = activeThreatIndices.FindIndex(index => index > prevTargetIndex);
|
||||
|
||||
if (nextActiveTargetIndex == -1) {
|
||||
nextActiveTargetIndex = 0;
|
||||
}
|
||||
|
||||
int nextTargetIndex = activeTargetIndices[nextActiveTargetIndex];
|
||||
int nextTargetIndex = activeThreatIndices[nextActiveTargetIndex];
|
||||
assignments.Add(new IAssignment.AssignmentItem(missileIndex, nextTargetIndex));
|
||||
prevTargetIndex = nextTargetIndex;
|
||||
}
|
||||
|
||||
@@ -16,14 +16,14 @@ public class ThreatAssignment : IAssignment {
|
||||
return assignments;
|
||||
}
|
||||
|
||||
List<int> activeTargetIndices = IAssignment.GetActiveTargetIndices(targets);
|
||||
if (activeTargetIndices.Count == 0) {
|
||||
List<int> activeThreatIndices = IAssignment.GetActiveThreatIndices(targets);
|
||||
if (activeThreatIndices.Count == 0) {
|
||||
return assignments;
|
||||
}
|
||||
|
||||
Vector3 positionToDefend = Vector3.zero;
|
||||
List<ThreatInfo> threatInfos =
|
||||
CalculateThreatLevels(targets, activeTargetIndices, positionToDefend);
|
||||
CalculateThreatLevels(targets, activeThreatIndices, positionToDefend);
|
||||
|
||||
foreach (int missileIndex in assignableMissileIndices) {
|
||||
if (missiles[missileIndex].HasAssignedTarget())
|
||||
@@ -54,11 +54,11 @@ public class ThreatAssignment : IAssignment {
|
||||
return assignments;
|
||||
}
|
||||
|
||||
private List<ThreatInfo> CalculateThreatLevels(List<Agent> targets, List<int> activeTargetIndices,
|
||||
private List<ThreatInfo> CalculateThreatLevels(List<Agent> targets, List<int> activeThreatIndices,
|
||||
Vector3 missilesMeanPosition) {
|
||||
List<ThreatInfo> threatInfos = new List<ThreatInfo>();
|
||||
|
||||
foreach (int targetIndex in activeTargetIndices) {
|
||||
foreach (int targetIndex in activeThreatIndices) {
|
||||
Agent target = targets[targetIndex];
|
||||
float distanceToMean = Vector3.Distance(target.transform.position, missilesMeanPosition);
|
||||
float velocityMagnitude = target.GetVelocity().magnitude;
|
||||
|
||||
Reference in New Issue
Block a user