/// <summary> /// Creates a matrix of valid Hold Points and Supply Points (I think) only used for endless? /// By default, just generates a matrix that is false on diagonals. /// </summary> private TNH_SafePositionMatrix GenerateTestMatrix() { TNH_SafePositionMatrix maxMatrix = ScriptableObject.CreateInstance <TNH_SafePositionMatrix>(); maxMatrix.Entries_HoldPoints = new List <TNH_SafePositionMatrix.PositionEntry>(); maxMatrix.Entries_SupplyPoints = new List <TNH_SafePositionMatrix.PositionEntry>(); int effectiveHoldCount = _tnhManager.HoldPoints.Count; int effectiveSupplyCount = _tnhManager.SupplyPoints.Where(x => x.GetComponent <ForcedSpawn>() == null || x.GetComponent <ForcedSpawn>().spawnOnly == false).Count(); //int effectiveSupplyCount = _tnhManager.SupplyPoints.Count; for (int ii = 0; ii < effectiveHoldCount; ii++) { TNH_SafePositionMatrix.PositionEntry entry = new TNH_SafePositionMatrix.PositionEntry(); entry.SafePositions_HoldPoints = new List <bool>(); for (int jj = 0; jj < effectiveHoldCount; jj++) { entry.SafePositions_HoldPoints.Add(ii != jj); } entry.SafePositions_SupplyPoints = new List <bool>(); for (int jj = 0; jj < effectiveSupplyCount; jj++) { entry.SafePositions_SupplyPoints.Add(true); } maxMatrix.Entries_HoldPoints.Add(entry); } for (int ii = 0; ii < effectiveSupplyCount; ii++) { TNH_SafePositionMatrix.PositionEntry entry = new TNH_SafePositionMatrix.PositionEntry(); entry.SafePositions_HoldPoints = new List <bool>(); for (int jj = 0; jj < effectiveHoldCount; jj++) { entry.SafePositions_HoldPoints.Add(true); } entry.SafePositions_SupplyPoints = new List <bool>(); for (int jj = 0; jj < effectiveSupplyCount; jj++) { entry.SafePositions_SupplyPoints.Add(ii != jj); } maxMatrix.Entries_SupplyPoints.Add(entry); } return(maxMatrix); }
/// <summary> /// Base function for setting up the TNH Manager object to handle a custom level. /// </summary> public override void Resolve() { _tnhManager = ObjectReferences.ManagerDonor; // Hold points need to be set. _tnhManager.HoldPoints = LevelRoot.GetComponentsInChildren <TNH_HoldPoint>(true).ToList(); // Supply points need to be set. _tnhManager.SupplyPoints = LevelRoot.GetComponentsInChildren <TNH_SupplyPoint>(true).ToList(); // Possible Sequences need to be generated at random. if (LevelRoot.ExtraData == null || LevelRoot.ExtraData[0].Value == "") { _tnhManager.PossibleSequnces = GenerateRandomPointSequences(1); } // Safe Pos Matrix needs to be set. Diagonal for now. TNH_SafePositionMatrix maxMatrix = GenerateTestMatrix(); _tnhManager.SafePosMatrix = maxMatrix; }